달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'전체 보기'에 해당되는 글 215건

  1. 2018.06.12 Samba를 이용하여 Raspberry Pi 3와 Windows간 파일 공유하기 ( 설정 방법 )[펌]
  2. 2018.06.12 라즈베리파이에 iptime samba 폴더 마운트 시키기
  3. 2018.06.11 samba 설정
  4. 2018.05.14 apache VirtualHost proxy ssl 적용
  5. 2018.05.14 (windows)apache SSL인증서 적용 15
  6. 2018.05.14 서버클라우드에 무료 SSL인증서를 발급하기 [ Windows ][펌]
  7. 2018.03.23 리눅스 깨진 파일명 및 디렉토리 복구&삭제
  8. 2018.03.23 Ubuntu Minimal (Server) 에 VNC 원격 접속하기(펌)
  9. 2018.03.21 트랜스미션 재시작 에러날 경우
  10. 2018.03.20 OMV 설치후 파티션 용량 확장
  11. 2018.03.20 오드로이드 XU4 + OMV 로 NAS 구축 순서 예시 - README !(펌) 2
  12. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - Wordpress + 도메인/SSL(펌)
  13. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - Wordpress(펌)
  14. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - SMTP (이메일 알림)(펌)
  15. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - Rsync(펌)
  16. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - WebDAV(펌)
  17. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - SSL 적용하기(펌)
  18. 2018.03.20 오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - 도메인 적용하기(펌)
  19. 2018.03.09 kodi 폰트와 스킨 경로
  20. 2018.03.05 OSMC (samba,transmission,telegram,tvheadend)
  21. 2018.02.27 라즈베리파이 kodi 자동실행
  22. 2018.02.27 ODROID-XU4 자동 로그인(펌)
  23. 2018.02.14 오드로이드 XU4 사용시 설치 목록 내용
  24. 2018.02.06 Tvheadend 자동 인코딩(펌)
  25. 2018.02.06 FFMPEG로 인코딩(펌)
  26. 2018.02.02 오드로이드 XU4 외장 하드 연결
  27. 2018.02.02 오드로이드 XU4 웹서버 설치(apache2+mysql+php5.6)
  28. 2018.02.02 오드로이드 XU4 TvHeadEnd 설치
  29. 2018.02.02 DLNA 서비스를 이용해 거실 TV 활용하기 - Serviio(펌)
  30. 2018.02.02 오드로이드 XU4 를 개인 클라우드 서버로 - 10. 무료 SSL(펌)

Raspbian이 설치된  Raspberry Pi 3와 Windows 10이 설치된 컴퓨터 간 파일 공유를 위해 삼바 설정 하는 방법을 설명합니다.





1. 윈도우 컴퓨터 준비


2. Raspberry Pi 준비


3. 윈도우에서 Raspberry Pi의 공유폴더 접근


4. Raspberry Pi에서 윈도우의 공유 폴더 접근


5. Raspberry Pi 데스크탑 환경에서 윈도우의 공유폴더 접근





1. 윈도우 컴퓨터 준비

윈도우에서 해야하는 네트워크 설정 및 공유폴더 생성 방법에 대해서 설명합니다.


1. 윈도우 키 + R을 누르고 다음 명령을 입력하여 실행합니다.


control /name Microsoft.NetworkAndSharingCenter





2. 고급 공유 설정 변경을 선택합니다.





3.  네트워크 검색 켜기파일 및 프린터 공유 켜기를 체크합니다.





아래 화면처럼 선택하고 변경 내용 저장을 클릭합니다.





4. 공유할 폴더를 선택하고 마우스 우클릭 후, 메뉴에서 속성을 선택합니다.

공유 탭을 선택하고 고급 공유를 클릭합니다.





5. 선택한 폴더 공유를 체크하고 권한을 클릭합니다.





6. 추가를 클릭합니다.





7. 선택할 개체 이름에 라즈베리파이에서 공유폴더에 접근시 사용할 윈도우에 등록된 사용자 이름을 적어주고 확인을 클릭합니다.





8. 방금 추가된 사용자를 선택하고 모든 권한의 허용을 체크해줍니다.  





9. 추가한 사용자외에 다른 사람들은 공유폴더에 접근할 수 없도록 Everyone을 선택하고 제거를 클릭합니다.





10. 파일 공유시 방어벽이 문제가 안되도록 설정을 변경해줘야 합니다.

제어판에서 시스템 및 보안 > Windows 방어벽에서 앱 허용을 선택합니다.






11. 설정 변경을 클릭합니다.





12. 목록에서 파일 및 프린터 공유를 찾아서 개인 항목을 체크하고 확인을 클릭합니다.





2. Raspberry Pi 준비

라즈베리파이에서 해야하는 네트워크 설정 및 공유 폴더 생성방법에 대해 설명합니다.



1. Samba를 위해 필요한 패키지를 설치합니다.


$ sudo apt-get install samba samba-common




2. 공유폴더를 생성합니다.


pi@raspberrypi:~ $ sudo mkdir /media/pi
pi@raspberrypi:~ $ sudo chmod 777 /media/pi




3. /etc/samba/smb.conf 파일을 수정합니다.


pi@raspberrypi:~ $ sudo nano /etc/samba/smb.conf



3-1. 노란줄을 추가합니다.


[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
  workgroup = WORKGROUP

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no
wins support = yes




3-2. 파일 끝부분에 추가합니다.

  

[raspberrypi]
path=/media/pi
browseable=Yes
writeable=Yes
only guest=no
guest ok = no
create mask=0777
directory mask=0777
public=no




4. 설정을 적용하기 위해 samba 데몬을 재시작합니다.


pi@raspberrypi:~ $ sudo /etc/init.d/samba restart
[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.




삼바 계정 패스워드를 생성합니다.


pi@raspberrypi:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.





3. 윈도우에서 Raspberry Pi의 공유폴더 접근

1. 라즈베리파이에서 공유한 폴더에 파일을 하나 생성해둡니다.


pi@raspberrypi:~ $ touch /media/pi/test




2. 윈도우 컴퓨터에서 네트워크를 열어보면 RASPBERRYPI라고 보입니다.





보이지 않는 경우 상단에 보이는 입력란에 \\raspberrypi를 입력합니다.





3. 삼바에서 설정한 raspberrypi 폴더를 선택합니다.




4. 라즈베리파이에서 생성했던 파일이 보이게 됩니다.




5. 이 폴더에 파일을 하나 생성해보면





라즈베리파이에서 해당 파일이 보입니다.





4. Raspberry Pi에서 윈도우의 공유 폴더 접근


1. smbclient 패키지를 설치해야 합니다.


pi@raspberrypi:~ $ sudo apt-get install smbclient




공유 폴더를 마운트할 디렉토리도 생성해줍니다.


pi@raspberrypi:~ $ sudo mkdir /media/windows




2. -L 다음에 윈도우 컴퓨터의 이름을 적고, -U 다음에 윈도우 컴퓨터 사용자 계정 이름을 적습니다.

다음처럼 “protocol negotiation failed: NT_STATUS_CONNECTION_RESET” 에러가 나는 경우 추가 옵션을 적어줘야 합니다.

( https://www.novell.com/support/kb/doc.php?id=7019892 )


pi@raspberrypi:~ $ sudo smbclient -L webnautes-pc -U webnautes
WARNING: The "syslog" option is deprecated
Enter webnautes's password:
protocol negotiation failed: NT_STATUS_CONNECTION_RESET




추가로 -m SMB2라고 적어주면 윈도우에서 공유중인 목록이 보입니다.

Enter 사용자이름’s password : 에서 윈도우 사용자의 비밀번호를 입력해줘야 합니다.


pi@raspberrypi:~ $ sudo smbclient -L webnautes-pc -U webnautes -m SMB2
WARNING: The "syslog" option is deprecated
Enter webnautes's password:

Domain=[WEBNAUTES-PC] OS=[] Server=[]


       Sharename       Type      Comment

       ---------       ----      -------

       ADMIN$          Disk      원격 관리

       C$              Disk      기본 공유

       D$              Disk      기본 공유

       IPC$            IPC       원격 IPC

       공유폴더         Disk

Domain=[WEBNAUTES-PC] OS=[] Server=[]


       Server               Comment

       ---------            -------


       Workgroup            Master

       ---------            -------




3.  앞에서 찾은 윈도우의 공유 폴더를 마운트하려면 cifs-utils 패키지가 필요합니다.


pi@raspberrypi:~ $ sudo apt-get install cifs-utils




4. 윈도우 컴퓨터 이름을 사용해서 마운트하려고 하면 다음처럼 주소를 찾을수 없다고 에러가 나기 때문에 윈도우 컴퓨터의 아이피 주소를 사용해야 합니다.


pi@raspberrypi:~ $ sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //webnautes-pc/공유폴더 /media/windows
mount error: could not resolve address for webnautes-pc: Unknown error




윈도우 10의 경우 SMB 1.0을 디폴트로 지원하지 않기 때문에 다음과 같은 에러가 발생합니다.


pi@raspberrypi:~ $  sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //192.168.35.109/공유폴더 /media/windows
Password for webnautes@//192.168.35.109/webnautes:  **************
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)




5. 다음처럼 vers=2.0이라고 사용할 SMB 버전을 지정해주면 해결됩니다.( https://serverfault.com/a/842686 )


pi@raspberrypi:~ $ sudo mount -t cifs -o user=webnautes,file_mode=0777,dir_mode=0777 //192.168.35.109/공유폴더 /media/windows -o vers=2.0
Password for webnautes@//192.168.35.109/공유폴더:  **************




또는 윈도우 기능 중에   SMB 1.0/CIFS 서버를 체크해서 활성화 시켜주면  “-o vers=2.0”를 적어주지 않아도 됩니다.

윈도우를 재부팅해야 적용이 됩니다.





6. 파일을 생성해주고

pi@raspberrypi:~ $ touch /media/windows/테스트




윈도우에서 확인해보면 해당 파일이 보입니다.





다음 명령으로 마운트를 해제합니다.


pi@raspberrypi:~ $ sudo umount /media/windows   



5. Raspberry Pi 데스크탑 환경에서 윈도우의 공유폴더 접근


1. 앞에서도 언급했던 윈도우 기능  SMB 1.0/CIFS 서버를 체크해서 활성화 시켜주어야 합니다.

윈도우를 재부팅해야 적용이 됩니다.





2. 파일 매니저를 실행하고 메뉴에서 Go > Network를 선택합니다.





3. 같은 네트워크에 있는 윈도우가 설치된 컴퓨터가 보입니다.  





4. 해당 컴퓨터로 접속하려고 하면 다음과 같은 창이 보입니다.

윈도우 사용자 정보를 입력해주고 Remember password until you logout을 체크한 후, Connect를 클릭합니다.





5. 리스트에서 윈도우에서 공유했던 폴더를 선택하면





앞에서 봤던 창이 한번 더 보이는데 똑같이 입력해줍니다.





6. 이제 윈도우에서 공유된 파일들이 보이고 새로운 파일 생성도 가능한 상태입니다.





출처 : http://webnautes.tistory.com/721

Posted by 타카스 류지
|


pi@raspberrypi:~ $ sudo apt-get install smbclient cifs-utils


pi@raspberrypi:~ $ sudo smbclient -L 192.168.0.1 -U 사용자ID -m SMB2

WARNING: The "syslog" option is deprecated

Enter mobile's password: 암호



Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.26]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       IPC Service (cjbox)
        HDD1            Disk   
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.26]

        Server               Comment
        ---------            -------
        CJBOX                cjbox

        Workgroup            Master
        ---------            -------
        WORKGROUP


pi@raspberrypi:~ $ sudo mkdir /media/exHDD
pi@raspberrypi:~ $ chmod 777 /media/exHDD

username <-> user
password <-> pass

마운트 시키기 1 : sudo mount -t cifs -o user=아이디,pass=암호 //192.168.0.1/HDD1 /media/exHDD -o vers=1.0

마운트 시키기 2 : sudo mount -t cifs //192.168.0.1/HDD1 /media/exHDD -o user=아이디,pass=암호,vers=1.0

마운트 시키기 3 : sudo mount -t cifs //CJBOX/HDD1 /media/exHDD -o user=아이디,pass=암호,workgroup=WORKGROUP,ip=192.168.0.1,iocharset=utf8,vers=1.0



■ 자동 마운팅 부분

/etc/fstab 이나 /etc/rc.local 에 등록해도 자동 마운팅이 안됨 -_- 왕 짜증



그래서 자동마운트 스크립트 작성함


간혹 마운트용 디렉토리를 만들었는데 사라지는 경우가 종종 발견됨 ;;;이유는 모르겠음 ;;;


automount.sh



--------------------------------------------------------------------------------------------

#!/bin/sh


# samba configuration

SAMBA_PATH='//192.168.0.1/HDD1' #<--IPTIME 공유기

MOUNT_PATH='/media/exHDD'     # <-- 마운트할 경로

USER="iptime"

PASS="1234"

#Remove [vers=1.0] from option when not connected  <- 연결안될시 vers=1.0 부분 삭제하거나 2.0 으로 변경

OPTION="user=$USER,password=$PASS,vers=1.0"


if mountpoint -q $MOUNT_PATH; then

    #echo "The folder is mounted. Path : $MOUNT_PATH"

else

    #echo "The folder is not mounted."

    

    if [ -d "$MOUNT_PATH" ]; then

        #echo "Directory exists."    

        mount -t cifs $SAMBA_PATH $MOUNT_PATH -o $OPTION

        #echo "Folder mounted. Path : $MOUNT_PATH"

    else

        #디렉토리가 없을시 생성해줌

        #echo "Directory does not exist."

        mkdir $MOUNT_PATH

        #echo "Create Directory."

        chmod 777 $MOUNT_PATH

        #echo "Permission settings."

        mount -t cifs $SAMBA_PATH $MOUNT_PATH -o $OPTION

        #echo "Folder mounted. Path : $MOUNT_PATH"

    fi

fi


exit 0

--------------------------------------------------------------------------------------------


sudo crontab -e

*/1 * * * * /root/sambamount.sh  1분에 한번씩 작동



끝!!



설정값모음 : sudo mount -t cifs -o username=계정이름,password=암호,uid=자신의uid,gid=자신의gid,,file_mode=0777,dir_mode=0777,iocharset=utf8,codepage=cp949 //컴퓨터이름(혹은 주소)/공유이름 /공유할/디렉토리


 하단 내용은 참고로 퍼온 겁니다.






설치

일단 smbclient 가 설치되어 있지 않으면 설치한다.

sudo apt-get install smbclient cifs-utils

사전조사

아래 명령어로 연결할 컴퓨터를 조사해본다. 주소는 접속할 컴퓨터의 주소.

smbclient -L 192.168.0.111 -U%   
Domain=[VASLORNET] OS=[Unix] Server=[Samba 4.1.18]

        Sharename       Type      Comment
        ---------       ----      -------
        music           Disk      System default shared folder
        photo           Disk      System default shared folder
        video           Disk      System default shared folder
        web             Disk      System default shared folder
        IPC$            IPC       IPC Service ()
Domain=[VASLORNET] OS=[Unix] Server=[Samba 4.1.18]

        Server               Comment
        ---------            -------
        BOX
        VASLOR               Sam

        Workgroup            Master
        ---------            -------
        VASLORNET            VASLOR

이와 비슷하게 나온다.

연결

아래 명령어로 마운트 할 수 있다.

sudo mount -t cifs //컴퓨터이름(혹은 주소)/공유이름 /공유할/디렉토리

공유할 디렉토리는 미리 만들어 놔야 한다.

  sudo mkdir /mnt/share 

하지만 몇 가지 문제가 있을 수 있다.

암호

아이디와 암호를 입력해야하는 공유 폴더라면 username 과 password 옵션을 추가해줘라.

    -o username=계정이름,password=암호

코드페이지

서버쪽이 Utf-8이 아니라서 한글이 깨져 나온다면 다음 옵션을 추가한다.

  -o iocharset=utf8,codepage=cp949

권한

폴더는 공유가 되었지만 마운트한 디렉토리는 root권한으로 접근이 가능하다면 다음 옵션을 추가한다.

    -o uid=자신의uid,gid=자신의gid

자신의 uid 와 gid 는 아래의 방법으로 알 수 있다. 아래 결과의 1000 1000 부분이 uid 와 gid 임.

cd ~
ls -n
합계 4
-rwxr-xr-x 1 1000 1000 125 2006-02-11 15:48 smbmount.sh

홈으로 가서 자신이 만든 파일들의 uid,gid를 보는 것이다.

최종

sudo mount -t cifs -o username=계정이름,password=암호,uid=자신의uid,gid=자신의gid,iocharset=utf8,codepage=cp949 //컴퓨터이름(혹은 주소)/공유이름 /공유할/디렉토리



출처 : https://openwiki.kr/tech/mount_cifs

Posted by 타카스 류지
|

samba 설정

오드로이드/XU4 2018. 6. 11. 17:59

[global]


   strict allocate = Yes

   allocation roundup size = 4096

   read raw = Yes

   server signing = No

   write raw = Yes

   strict locking = No

   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072

   min receivefile size = 16384

   use sendfile = Yes

   aio read size = 16384

   aio write size = 16384


   workgroup = WORKGROUP

   dns proxy = no

   log file = /var/log/samba/log.%m

   max log size = 1000

   syslog = 0

   panic action = /usr/share/samba/panic-action %d

   server role = standalone server

   passdb backend = tdbsam

   obey pam restrictions = yes

   unix password sync = yes

   passwd program = /usr/bin/passwd %u

   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

   pam password change = yes

   map to guest = bad user

   

   load printers = no

   show add printer wizard = no

   printcap name=/dev/null



#======================= Share Definitions =======================

#[homes]
#   comment = Home Directories
#   browseable = no
#   read only = yes
#   create mask = 0700
#   directory mask = 0700
#   valid users = %S

[Contents]
 read list = odroid
 write list = root
 path = /media/exHDD
 comment = Contents
 write cache size = 524288
 getwd cache = yes
 use sendfile = yes
 min receivefile size = 16384
 socket options = TCP_NODELAY IPTOS_LOWDELAY


















Posted by 타카스 류지
|

간단하게 기록


■ 메인 - httpd.conf

Listen 80


LoadModule mime_module modules/mod_mime.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_html_module modules/mod_proxy_html.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule ssl_module modules/mod_ssl.so


ServerName localhost:80


Include conf/extra/httpd-vhosts.conf


Include conf/extra/httpd-ssl.conf



■ 메인 - httpd-ssl.conf


Listen 443

SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

SSLHonorCipherOrder on 

SSLProtocol all -SSLv3

SSLProxyProtocol all -SSLv3

SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:C:/APM/Apache24/logs/ssl_scache(512000)"

SSLSessionCacheTimeout  300


■ 메인 - httpd-vhosts.conf

<VirtualHost *:80>

    ProxyPreserveHost On

    ProxyRequests Off

    ServerName [HostName]

    ProxyPass / http://127.0.0.1:81/ retry=1 acquire=3000 timeout=600 Keepalive=On

    ProxyPassReverse / http://127.0.0.1:81/

</VirtualHost>


<VirtualHost *:443>

ServerName [HostName]


SSLEngine on

SSLCertificateFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/[HostName]-crt.pem"

SSLCertificateKeyFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/[HostName]-key.pem"

SSLCertificateChainFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/ca-[HostName]-crt.pem"


ProxyPreserveHost On

SSLProxyEngine On

ProxyRequests Off

RequestHeader set Front-End-Https "On"

<Location /> 

  Order allow,deny

  Allow from all

  ProxyPass https://127.0.0.1:444/  retry=1 acquire=3000 timeout=600 Keepalive=On

  ProxyPassReverse https://127.0.0.1:444/

</Location>

</VirtualHost>



※ 위 메인 서버 설정은 단순 분기용 입니다.

1 : N 방식으로 멀티 도메인으로 접속 시킬때 도메인은 80으로 접속하지만

ServerName  으로 나누는 방식입니다.

여러개 도메인으로 접속할려면 복붙 해서 이름만 나누면 되겠죠 0-0





하단은 나머지 서브 도메인으로 만들 아니면 다른 도메인으로 접근할때

포트 번호가 서로 충돌 나지 않게 해주시면 됩니다.



■■ 서브 - httpd.conf

Listen 81


LoadModule ssl_module modules/mod_ssl.so


ServerName localhost:81


DocumentRoot "c:/webservice/subsite"


<Directory "c:/webservice/subsite">

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>


Include conf/extra/httpd-ssl-subsite.conf




■■ 서브 - httpd-ssl-subsite.conf


Listen 444

SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

SSLHonorCipherOrder on 

SSLProtocol all -SSLv3

SSLProxyProtocol all -SSLv3

SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:C:/logs/subsite_ssl_scache(512000)"

SSLSessionCacheTimeout  300



<VirtualHost *:444>


DocumentRoot "C:/webservice/subsite"

ServerName localhost


SSLEngine on

SSLCertificateFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/[HostName]-crt.pem"

SSLCertificateKeyFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/[HostName]-key.pem"

SSLCertificateChainFile "C:/ProgramData/win-acme/httpsacme-v01.api.letsencrypt.org/ca-[HostName]-crt.pem"


<FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

</FilesMatch>

<Directory "C:/APM/Apache24/cgi-bin">

SSLOptions +StdEnvVars

</Directory>


BrowserMatch "MSIE [2-5]" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0


CustomLog "C:/APM/Apache24/logs/ssl_request.log" \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


</VirtualHost> 




대충 이정도 0-0

이상입니다.



Posted by 타카스 류지
|

SSL 인증서를 먼저 발급을 받아야 합니다. 밑 글을 참조하여 받으시면 됩니다.


win-acme.v1.9.10.1.zip


2018/05/14 - [라즈베리파이3] - 서버클라우드에 무료 SSL인증서를 발급하기 [ Windows ][펌]


[무료 SSL 발급 사이트]

https://www.sslforfree.com/

https://zerossl.com/

https://letsencrypt.org  -> https://github.com/Lone-Coder/letsencrypt-win-simple/releases



아래 설명에 사용한 도메인은 예를 들어서 한것이니 참고 바랍니다.


간단한 발급 과정 [windows 로컬 서버경우]


letsencrypt.exe 실행


▶ M: Create new certificate with advanced options


▶ 1: Manually input host names


▶ Enter comma-separated list of host names, starting with the primary one:  


인증받을 도메인을 한개 이상 적으면 됨 

하나이면 : blog.cjbox.kr

두개이면 : blog.cjbox.kr,cjbox.tistory.com

( , )구분자로 구분


▶ 3: [http-01] Save file on local (network) path    <- 로컬일 경우

▶ 5: [http-01] Upload verification file to FTP(S) server <- 원격일 경우


저는 3번 입니다.


▶ Enter a site path (the web root of the host for http authentication):  <- 루트 경로를 적어 주시면 됩니다.


보통 xampp 경우  C:\xampp\htdocs 되겠죠


▶ 1: Do not run any installation steps


----------------------------------------------------------------------------------------------------

 [INFO] Authorize identifier: blog.cjbox.kr

 [INFO] Cached authorization result: valid

 [INFO] Requesting certificate blog.cjbox.kr 2018-5-14 11:56:52 오전

 [INFO] Saving certificate to C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org

 [INFO] Installing certificate in the certificate store

 [INFO] Adding certificate blog.cjbox.kr 2018-5-14 11:56:52 오전 to store My

 [INFO] Uninstalling certificate from the certificate store

 [INFO] Removing certificate blog.cjbox.kr 2018-5-11 13:23:05 오후 from store My


 Do you want to replace the existing task? (y/n):

----------------------------------------------------------------------------------------------------

위처럼 나오면 정상적으로 생성 된겁니다.


N 를 누르고 이제 종료 하시면됩니다.


C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org  경로로 가보시면


파일이 여러개가 생성 되어있는데 여기서 사용할 인증서 파일들은


blog.cjbox.kr-crt.pem

blog.cjbox.kr-key.pem

ca-blog.cjbox.kr-crt.pem

이렇게 3개가 됩니다.



인증서 생성 파일이 있습니다.

적당한곳에 옴겨서 하셔도 되고

그대로 두고 사용하셔도 됩니다.


httpd-ssl.conf 파일을 열어서 수정할 부분은


<VirtualHost *:443>

DocumentRoot "C:/xampp/htdocs"

ServerName localhost


SSLEngine on

SSLCertificateFile "C:/webservice/cert/blog.cjbox.kr-crt.pem"

SSLCertificateKeyFile "C:/webservice/cert/blog.cjbox.kr-key.pem"

SSLCertificateChainFile "C:/webservice/cert/ca-blog.cjbox.kr-crt.pem"


</VirtualHost> 


위 내용에 SSL 시작한 구문 4줄이 가장 중요 합니다.

추가 시키고 저장하신후에

conf/httpd.conf 파일에

밑에 내용 두개 주석 해제 시킵니다.

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf


저장하고 서버 재기동 하면 됩니다.





----------ps-----------


http - > https 리다이렉트


<VirtualHost *:80>

    ServerName 도메인

    RewriteEngine on

    RewriteCond %{HTTPS} off

    RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

</VirtualHost>






httpd.conf, httpd-vhosts.conf,  httpd-ssl 셋팅 파일 올려 드립니다.  참조하시면 될것 같습니다.


APM 환경 설정.zip


아파치 사용시 서비스 등록방법(위 환경설정을 토대로 작성한 내용입니다


cd C:\APM\Apache24\bin


(서비스 등록)

httpd.exe -k install -n "Apache2.4-Main" -f "C:\APM\Apache24\conf\httpd.conf"

httpd.exe -k install -n "Apache2.4-server_php5" -f "C:\APM\Apache24\conf\httpd_server_php5.conf"

httpd.exe -k install -n "Apache2.4-server_php7" -f "C:\APM\Apache24\conf\httpd_server_php7.conf"



(서비스 제거)

httpd.exe -k uninstall -n "Apache2.4-Main"

httpd.exe -k uninstall -n "Apache2.4-server_php5"

httpd.exe -k uninstall -n "Apache2.4-server_php7"



(서비스 설정파일 검사)

httpd.exe -n "Apache2.4-Main" -t

httpd.exe -n "Apache2.4-server_php5" -t

httpd.exe -n "Apache2.4-server_php7" -t



서비스 등록할때 에러가 나면은 아래 파일 설치하세요.

vcredist_x64.exe

vcredist_x86.exe





-------------------------------------------------------------------

APM 서비스 구축시 어려운 부분이 있어 정리하면서 샘플로 만들어논 자료입니다.


아파치,PHP5,PHP7 포함되어있습니다.


APM.zip

APM.z01

APM.z02

APM.z03

APM.z04



Posted by 타카스 류지
|

본 메뉴얼은 Let's Encrypt FreeSSL/TLS 무료인증서에 대하여 설명한다.

 

Let's Encrypt FreeSSL/TLS은 Mozilla, Cisco, Akamai, EFF, id entrust 등이 모여서 ISRG(Internet Security Research Group)라는

SSL 인증기관을 만들어 SSL을 무료로 제공하고 있으며, 최근에는 Facebook, 워드프레스를 만드는 Automattic, shopify 등 많은 회사가 스폰서로 참여하고 있다.

IWINV 는 "서버클라우드" 이용시 Let's Encrypt FreeSSL/TLS 무료 인증서의 발급/갱신 절차를 "기술지원 서비스"를 통해  제공한다. [ 기술지원 요청에 따른 작업비용 별도 ]

 

SSL 간단한 동작 과정


SSL(Secure Socket Layer)은 웹사이트의 전송 데이터를 https 프로토콜을 사용하여 암호화 통신하며, 웹사이트 전체 또는 개인정보 등의 데이터 전송시

암호화여 안전한 데이터 전송이 가능하게 해주는 기술이다.

 

1. 웹브라우저에서 https://도메인 입력으로 SSL로 암호화된 페이지를 요청.
2. 웹서버에서 Public Key를 인증서와 함께 전송.
3. 웹브라우저에서 인증서가 자신이 신용있다고 판단한 CA(일반적으로 trusted root CA라고 불림)로부터 서명된 것인지 확인.
4. 웹브라우저에서 Public Key를 사용해서 랜덤 대칭 암호화키(Random symmetric encryption key)를 비롯한 URL, http 데이터들을 암호화해서 전송.
5. 웹서버의 Private Key를 이용해서 랜덤 대칭 암호화키와 URL, http 데이터를 복호화.
6. 웹서버는 요청받은 URL에 대한 응답을 웹브라우저로부터 받은 랜덤 대칭 암호화키를 이용하여 암호화해서 브라우저로 전송.
7. 웹브라우저에서 대칭 키를 이용해서 http 데이터와 html문서를 복호화하고, 화면에 표시.

 

 

Let's Encrypt - 무료 SSL 설치 방법 [ WINDOWS ]

※  IIS에서 사이트(도메인)에 대한 기본설정이 완료 된 후 진행 하여야 합니다.
※  기본 요구사항
    – IIS 7.5 이하에서 여러 도메인(사이트)에 대해 SSL을 사용하려면 모두 동일한 IP 주소로 바인드 해야 한다.
    – V 1.9이후 부터 최대 100개 도메인(사이트)까지 SAN 인증서를 생성합니다
    – IIS 8로 업그레이드 +
    – 와일드 카드 인증서를 지원하지 않는다.
    – 최소 .NET 버전 4.5이상을 설치되어 있어야 한다.

 

▶ Let’s Encrypt-win-simple 다운로드
다운로드 URL : https://github.com/Lone-Coder/letsencrypt-win-simple/releases
[ 위 URL 에서 다운로드 받은 후 적절한 위치에 다운로드 후 압축 해제 ]

 

▶ Let's Encrypt 인증서 발행
     letsencrypt.exe 실행 만으로 인증서 설치 과정이 진행된다.

 IIS의 사이트 설정 내용을 확인 후 발급을 원하는 도메인 항목 선택하면 다음과 같이 인증서가 발급 된다.

 

 

▶ 인증서 설치 경로 확인

( Windows에서 APACHE 웹서버를 운영하는 경우 아래의 인증서 경로를 참조. )

Saving Certificate to 
C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\xxxx.xxxx.com-crt.der

Saving Issuer Certificate to 
C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\ca-0A0141420000015385736A0B85ECA708-crt.pem

Saving Certificate to
C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\xxxx.xxxx.com-all.pfx

마지막으로 유저 생성 및 비밀번호에 대해 추가할 것인지 확인. ( y/n )
Do you want to specify the user the task will run as? (y/n)  ----  "n" 입력후 Enter

 

▶ 특정 사이트(도메인)에 대한 인증서 발급

설정되어 있는 사이트 목록을 선택하는 과정을 생략할 수 있다.

형식 : letsencrypt.exe --manualhost --webroot 
예문 : letsencrypt.exe --accepttos --manualhost packet10.ssgstar.com --webroot C:\www\packet10    


인증서 발급이 완료 되면 인증서 설정 및 ssl 인증서 관련 IIS 설정이 완료 된 것을 다음 메뉴에서 확인 할 수 있다.

 

아래와 같이 인증서가 IIS에 추가되어 있음을 확인 할 수 있다.

 

SSL 통신에 필요한 포트(443) 설정 확인 및 사이트 접속 확인.

 

▶ Let's Encrypt 인증서 갱신
 배치 파일을 만들어 갱신할 수 있으며 명령어를 직접 입력하여 갱신도 가능하다.

인증서 갱신을 하게 되면 다음과 같이 진행된다.

 

인증서 갱신된 스케줄러 등록을 통해 정기적인 자동 갱신을 반영할 수 있다.
SCHTASKS /Create /SC MONTHLY /TN letsencrypt /TR "letsencrypt.exe --accepttos --manualhost 도메인 --webroot C:\경로"

※ 참고사항으로 Let's Encrypt SSL 인증서 갱신과 관련하여 linux에서는 발급 후 1일 이후 부터 갱신이 가능하지만 Windows의 letsencrypt.exe 로는 갱신이 되지 않고 있다.
     ( --renew 옵션이 존재하나 모든 인증서의 갱신이 아닌 갱신이 필요한 인증서의 갱신 체크만 진행 된다. )
     때문에 실재 인증서 갱신은 인증서 발급명령과 동일하게 진행하여야 되며, 추후 letsencrypt-win-simple 의 업데이트시 갱신 관련 옵션의 추가를 확인해 볼 필요가 있다.


▶ Let's Encrypt 인증서 삭제
Windows 의 경우 2017년 3월 기준으로 인증서 삭제 옵션을 제공되지 않고 있다. 따라서 저장된 인증서 경로에서 해당 도메인의 폴더를 삭제하고, 
SSL 설정을 수정해 주어야 하는 번거로움이 있으니 주의하여야 한다.

 

 무료 인증서 사용시 주의사항


1. 인증서 관련 피해 발생시 손해보험사의 보상을 받을 수 없다.
2. Windows XP SP3 이하 이용자는 정상적인 SSL 통신이 되지 않는다.
3. 일부 브라우저의 경우 호환성 문제가 발생할 수 있다.
4. 인증서의 만료일은 90일이다. 

※ "온라인 기술지원" 서비스를 통해 IWINV 에서 Let'sencrypt 인증서 발급시 자동 갱신 프로세스가 제공됨 

 

▶ 호환성


Compatible

Incompatible

Mozilla Firefox >= v2.0

Google Chrome

Internet Explorer on Windows XP SP3 and higher

Microsoft Edge

Android OS >= v2.3.6

Safari >= v4.0 on macOS

Safari on iOS >= v3.1

Debian Linux >= v6

Ubuntu Linux >= v12.04

NSS Library >= v3.11.9

Amazon FireOS (Silk Browser)

Cyanogen > v10

Jolla Sailfish OS > v1.1.2.16

Kindle > v3.4.1

Java 7 >= 7u111

Java 8 >= 8u101

Blackberry OS v10, v7, & v6

Android < v2.3.6

Nintendo 3DS

Windows XP prior to SP3

cannot handle SHA-2 signed certificates

Java 7 < 7u111

Java 8 < 8u101

Windows Live Mail (2012 mail client, not webmail)

cannot handle certificates without a CRL

 

▶ Let's Encrypt FreeSSL/TLS Major Sponsors



출처 : https://help.iwinv.kr/manual/read.html?idx=460

Posted by 타카스 류지
|

이것저것 파일 생성하다가 ??????ȣ(???纻)_542ȸ.zip 이런 파일로 

만들어져 버릴때가 있었습니다. ;;;

뭐 답이 없더라구요..ㅎㅎ


찾아보니 삭제 방법이 있더군요


명령어는 ls -i


root@odroid:/var/www/html# ls -i


141720 ??????ȣ(???纻)_542ȸ.zip  141709 comic.php     133889 index.html         141717 pclzip.lib.php

271354 542                      141705 download.php  141711 json.scraping.php  141719 view.php

141718 Snoopy.class.php         271329 files         141714 manga.inf


쳐보시면 위 처럼 파일명 앞에 숫자가 있죠?


그 숫자는 유니크 해서 저걸이용해서 지운다고 하네요


ls -i 또는 ls -ali 으로 inum을 확인


깨진 파일 삭제

find ./ -inum 141720 -exec rm -f {} \;


깨진파일을 1.txt로 변경

find ./ -inum 141720 -exec mv {} 1.txt \; 




Posted by 타카스 류지
|
VNC


VNC(Virtual Network Computing) 는 가상 네트워크 컴퓨팅의 준말입니다. RFB(Remote Frame Buffer protocol)을 이용해 원격으로 다른 컴퓨터를 제어하는 기술이에요.

이런 거 많이 보셨죠? 많이들 쓰시는 팀뷰어같은 겁니다. 요샌 크롬 브라우저의 확장기능으로도 있는 것 같구요.

근데 우분투 서버 이미지는 데스크탑 환경이 없습니다. 서버용이라 굳이 메모리를 많이 차지하는 GUI 데스크탑 환경이 필요가 없어요. 그래서 VNC 설정이 의미가 없어요, 해도 터미널 환경이 나타날 거예요.

하지만 가끔 편의를 위해서든 특수한 용도 때문이든 GUI 활용이 필요할 때가 있죠.

이미 여러 설정을 마친 우분투 서버 이미지에 VNC 접속이 필요하다, 근데 너무 어렵다 하는 분들을 위해 간단한 가이드를 적어드리겠습니다.

우분투 서버 이미지가 아닌 일반적인 우분투 이미지로 설치하신 분들은 훨씬 쉬워요 :) 우분투 서버 이미지로 설치하신 분들만 해당됩니다.


필수 패키지 설치


먼저 서버에 SSH 접속한 다음 아래 필수 패키지들을 설치해줍시다. 데스크탑 환경으로는 가장 가볍다고 생각되는 Mate로 할게요.

sudo apt update
sudo apt install x11vnc lightdm mate-core mate-desktop-environment
Bash

용량도 많고 꽤 오래 걸릴 거예요. 게임 한 판 하고 옵니다. 전 요새 디아블로 3 시즌 13이 나와서 다시 하는데, 분기마다 새 시즌을 즐기니까 또 재밌네요.

설치가 끝나면 재부팅해줍니다.

sudo reboot
Bash

끝났어요. 실행하시면 됩니다 :)

x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -forever
Bash

명령어가 좀 긴데, 마지막의 -forever 부분이 없으면 어떤 연결이 되었다가 끊길 때 자동으로 종료됩니다. 만약 있으면 계속 Listen 상태를 유지하고 있게 되구요.


윈도우에서 접속


윈도우에 원격 데스크탑 연결 프로그램이 내장되어 있는데, 이걸로는 VNC 접속이 안 돼요.

TigerVNC라는 프로그램을 설치해야 합니다. 같이 설치되는 VNC viewer를 사용합시다.

여기 사이트에 접속해 최신 TigerVNC를 설치해주세요: https://github.com/TigerVNC/tigervnc/releases

그리고 VNC Viewer를 실행해 서버 IP를 적고 접속해줍니다.

보통 데스크탑 사용하듯 로그인하시면 돼요.


리눅스에서 접속


리눅스에도 보통 VNC Viewer가 설치되어 있지 않아요. TigerVNC를 설치해줍니다.

sudo apt install tigervnc-viewer
Bash

vncviewer를 통해 실행해주세요.

vncviewer 192.168.0.16
Bash

아니면, 최소 우분투에는 Remmina라는 내장 앱이 있어서 사용할 수 있네요 :) 화질 설정도 가능하니 좋군요.


맥에서 접속


곧 업데이트 됩니다 :)


Opt. 부팅 시 자동 실행


근데 언제 어디서나 접속할 수 있게 계속 실행시켜두고 싶다면 이렇게 하시면 됩니다. 시스템 서비스로 하나 만들어주세요.

sudo vi /etc/systemd/system/x11vnc.service
Bash

아래 내용을 넣어줍니다.

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target
Bash

서비스를 시스템에 등록하고 실행시켜 주세요.

systemctl daemon-reload
systemctl enable x11vnc
service x11vnc start
Bash

이제 재부팅하셔도 따로 실행할 필요가 없습니다 :)


Opt. 해상도 변경


기본 해상도가 조금 작습니다. 800 x 600? 스러운 느낌이에요. 정확하진 않아요.

파일 하나를 수정해 해상도를 바꾸실 수 있습니다.

sudo vi /etc/X11/xorg.conf
Bash

파일 맨 마지막에 아래 내용을 넣어주세요.

Section "Screen"
        Identifier      "Default Screen"
        Device          "Mali-Fbdev"
        DefaultDepth    24
        SubSection "Display"
                Virtual 1920 1080
        EndSubSection
EndSection
Bash

재부팅 후 다시 접속해볼게요.

위의 설정은 화질이 너무 좋기 때문에 부하량도 많고, 특히 인터넷 환경이 안 좋으면 너무 느릴 수 있어요. 적당한 값을 찾아 적용해주세요. 제가 Mate를 선택한 이유도 그렇게 화려하지 않아서.. :)

도움이 되셨으면 좋겠습니다 :)


참고




출처 : http://awesometic.tistory.com/127

Posted by 타카스 류지
|

토렌트 가동시 에러를 뿜고 더이상 시작하지 않을 때가 있습니다.


그럴때 보통


kill $(ps -ef | grep 'transmission-daemon -g /etc/transmission-daemon' | grep root |awk '/transmission-daemon/ {print $2}')


이렇게 강제종료 시키고


transmission-daemon -g /etc/transmission-daemon


위 명령어로 시작하는데 안될경우는 깔끔하게 삭제하고 다시 설치하시는게 좋습니다.


삭제하고

apt-get purge transmission*


청소하고

apt-get autoclean && sudo apt-get autoremove


다시 설치

apt-get install transmission-daemon

Posted by 타카스 류지
|

웹 접속

admin / openmediavault


메뉴 - 서비스 - SSH - 루트 로그인을 허용합니다. 설정 저장


SSH 접속

root / openmediavault


-$ df -h


-$ fdisk /dev/mmcblk1


p [enter]

d [enter]

3 [enter]

d [enter]

2 [enter]

n [enter]

p [enter]

2 [enter]

139264 [enter]

[enter]

p [enter]

w [enter]


-$ partprobe

-$ btrfs filesystem resize max /

-$ sync

-$ reboot


파티션 용량 확인

-$ df -h

Posted by 타카스 류지
|

최초작성일: 170808 16:59

오드로이드 XU4와 외장하드를 이용해 NAS를 구축하는 건 나름 가성비가 좋습니다. 저도 계속 사용하고 있구요.

OMV로 개인 NAS를 구축하실 때, 누구나 쉽게 구축할 수 있도록 나름 대로 가이드를 올렸는데요,

글 제목에 순서를 나타내는 번호가 있지만 사실 하다보니 큰 의미가 없어졌습니다.

따라가기 어렵기도 해요. 어디까지가 초보자용이지? 어디까지 리눅스를 몰라도 할 수 있지?

그래서 여기선 일단 번호를 지우고, 제가 포스팅한 자료를 이용해 나름의 구축 순서를 제안하려고 합니다.


* 이 순서대로 하셔도, 이상한 게 있을 수 있어요. 예를 들어, 그렇진 않지만 초급 5단계를 하는데 중급 1단계 지식이 필요하다던가.. 오타도 있을 수 있겠구요. 이상한 게 발견되면 바로 댓글로 알려주세요 :) 




초급

* 초급 단계에서는 리눅스에 대한 지식이 없어도 됩니다. 터미널 환경을 사용하지도 않아요.
* Samba까진 Local(집 안에서만) 사용을 위함이고, FTP부턴 외부에서 포트포워딩을 통해 사용하실 수 있습니다.

1. 개요
2. OMV 설치 / 설정
3. Samba
---------- 
4. FTP
5. WebDAV
6. Transmission
7. 포트포워딩 이란? / 포트포워딩 적용하기

중급

* Nginx/MySQL 설치가 필요하기 전과 후로 나누었습니다. Seafile, Wordpress는 Nginx/MySQL 설정이 필요합니다.
* OMV_3_0_88_Odroidxu4_4.9.46 버전 이상을 설치하셨다면 OMV 웹 - SSH 메뉴에서 "루트 로그인 허용" 을 활성화해주셔야 SSH 접속이 가능합니다.
* OMV 의 초기 접속 계정 정보는 root / openmediavault 입니다.

1. NAS 기본 지식 - 리눅스
2. Rsync
3. Plex Media Server
4. Serviio (DLNA)
---------- 
5. Nginx / MySQL
6. Seafile
7. Wordpress
8. OMV 이메일 알림

고급

* 도메인과 SSL에 대해서 다룹니다. 어려울 수 있지만, 잘 따라가시면 누구나 하실 수 있을 거라 믿어요.
* 간단히 사용할 때 꼭 필요한 단계는 아닙니다.
* 아직 리눅스나 NAS에 대한 지식이 부족한 분들로부터 이거 따라하는데 잘 안 된다 하는 피드백이 많이 없기 때문에, 적극적으로 물어봐주세요. 바로 반영하도록 하겠습니다.

1. 도메인
--- a. 도메인 (내도메인.한국)
--- b. DDNS (DuckDNS) (추천)
2. SSL
3. Wordpress + 도메인/SSL

기타

* 구축에 대한 게 아닌 여러 사용 관련 팁들을 올리고 있습니다.
* 괜찮은 걸 알아갈 때마다 계속 추가하고 있어요.

- SBC를 이용한 자작 NAS 장비 선택
- NAS를 위한 하드디스크와 백업
- OMV에서 HDD 파일 시스템 새로 만드는 방법
- 오드로이드 XU4 UAS 해제하기
- nPlayer 를 이용해 FTP, WebDAV, Samba, DLNA 동영상 스트리밍하기
- Seafile 에 업로드 한 파일 찾기 - Seaf-fuse
- Seafile 에 SMTP 설정으로 이메일 관련 기능 활성화 + 파일 공유하기
- NAS - 트랜스미션(Transmission) 토렌트 완료 시 자동으로 분류/삭제 스크립트
- NAS - 트랜스미션(Transmission) + Flexget, 매주 자동으로 예능 드라마 받기
- VPN 개념 / OpenVPN 서버 구축 가이드


출처 : http://awesometic.tistory.com/74?category=964085

Posted by 타카스 류지
|

이번엔 설치한 Wordpress에 도메인과 SSL을 입혀보겠습니다.

Wordpress에 대한 도메인은 이미 받았다고 가정할게요. 잘 모르시는 분들은,

오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - 도메인 적용하기 또는
NAS에 DDNS 적용하기 - DuckDNS

를 참고하시면 되겠습니다.




1. 도메인 적용하기

앞서 말했듯 도메인을 발급받은 상태라고 가정하겠습니다.

1) Nginx 설정 변경

OMV Nginx 메뉴 - 서버 탭으로 가서

이렇게 Wordpress에 대한 서버를 누른 후 편집 버튼을 누릅니다.

포트 기반으로 8001 번 포트로 했었는데, 다시 80번으로 바꿔주고 이름-기반, 적절한 도메인 이름을 적어줍니다.

그리고 저장/적용해주세요.


2) Wordpress 설정 변경

SSH로 접속하신 뒤 아래 명령어를 입력해주세요. Wordpress가 /var/www/wordpress 경로에 설치되어 있다고 가정합니다. {도메인} 부분에 자신의 도메인을 입력해주세요.

# http:// 를 포함해 적어주세요.
WP_DOMAIN='http://wordpress.example.com'
echo -e "\ndefine('WP_HOME', '"$WP_DOMAIN"');\ndefine('WP_SITEURL', '"$WP_DOMAIN"');" >> /var/www/wordpress/wp-config.php
Bash

그리고 자신의 워드프레스 도메인을 통해 접속해봅니다.

잘 됩니다.



2. SSL 적용하기

도메인이 있으니 SSL을 적용해봅시다. 요새는 네트워크 대역폭 최대치를 찍어야만 하는 서비스가 아니라면 SSL이 필수인 것 같습니다.

사용하던 대로 Let's Encrypt를 이용해봅시다.

1) Nginx에서 Wordpress 서버 설정 변경

가이드라인을 따라오신 분들은 임시로 디렉토리를 만들고 그 곳을 Webroot로 해서 SSL 인증서를 발급받는 걸 해보셨을 겁니다. 근데 Wordpress는 저희가 소스 파일을 가지고 돌리는 거라, 임시 디렉토리가 필요가 없어요. Nginx에도 이미 Wordpress에 대한 서버가 있죠. OMV Nginx 메뉴에서  Wordpress 서버를 편집합시다.

밑에 추가 옵션 부분에 아래 내용을 추가만 추가해주세요.

location ^~ /.well-known/acme-challenge/ {
    allow all;
    default_type "text/plain";
}
nginx

아래 스크린샷처럼 될 겁니다.

그리고 저장/적용합시다.

인증서를 발급받을 준비가 다 된 겁니다.


2) SSL 인증서 발급받기

이젠 정말 발급을 받으셔야 합니다. SSH 로 접속합니다.

그리고 아래 명령어를 입력해줍니다.

# http:// 부분을 뺀 도메인만을 example.com 대신 적습니다.
WP_DOMAIN='wordpress.example.com'
certbot certonly --webroot -w /var/www/wordpress -d $WP_DOMAIN
Bash

이러면 제 경우엔,

WP_DOMAIN='wordpress.awesometic-test.kro.kr'
certbot certonly --webroot -w /var/www/wordpress -d $WP_DOMAIN
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for wordpress.awesometic-test.kro.kr
Using the webroot path /var/www/wordpress for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0005_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0005_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/wordpress.awesometic-test.kro.kr/fullchain.pem.
   Your cert will expire on 2017-11-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
Bash

기가 막히게 잘 됩니다.


3) SSL 인증서, OMV Web UI에 불러와 적용하기

새로 발급 받은 인증서를 OMV에 불러와봅시다. 그래야 OMV 안에서 쓸 수 있거든요.

OMV 인증 메뉴 - SSL 탭으로 갑니다. 그리고 추가 버튼 - 불러오기를 눌러줍니다.

여기서 저번에 하셨던 것처럼 개인 키와 인증 정보를 복붙해줍니다. 개인 키는 /etc/letsencypt/live/{도메인}/privkey.pem, 인증은 fullcahin.pem 입니다.

그러면,

이렇게 될텐데, 저장/적용해줍니다.

그리고 OMV Nginx 메뉴 - 서버 탭으로 가 다시 Wordpress 서버 편집을 합니다.

이런 식으로 적용해주시고 저장/적용해주세요.


4) Wordpress 도메인 설정 변경하기

마지막 단계입니다. Wordpress는 지가 어느 도메인인지 알고 있어야 해요. 그걸 변경해줍시다.

아래 명령어를 입력합니다.

# http:// 부분을 뺀 도메인만을 example.com 대신 적습니다.
WP_DOMAIN='wordpress.example.com'
sed --in-place=.bak 's,http://'$WP_DOMAIN',https://'$WP_DOMAIN',g' /var/www/wordpress/wp-config.php
Bash

다 됐습니다 :)


5) 접속 테스트

SSL이 잘 씌워졌는 지 접속해봅시다.

잘 됩니다 :)


출처 : http://awesometic.tistory.com/72?category=964085

Posted by 타카스 류지
|

오드로이드 NAS를 개인 블로그 호스팅 장비로 사용해봅시다. 간단한 블로그, 웹사이트, 포트폴리오 사이트 등 어느 걸로도 활용될 수 있어요. Wordpress를 사용해 간단하게 보기 좋은 사이트를 구축하실 수 있습니다.

Wordpress 설치 과정은 조금 까다로울 수 있습니다만, 잘 따라오시면 누구나 충분히 하실 수 있어요. 옛날엔 OMV의 플러그인으로 쉽게 설치하실 수 있었는데, 요새는 귀찮아졌네요.




0. Nginx, MySQL 설치

사전에 Nginx와 MySQL 플러그인이 설치되어 있어야 합니다.

오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - 4. Nginx
오드로이드 XU4 + OMV 로 자작 NAS 구축하기 - 5. MySQL



1. MySQL에 워드프레스용 데이터베이스 생성

워드프레스는 데이터베이스를 굉장히 많이 활용합니다. 그래서 자신의 DBMS(MySQL 등)에 워드프레스용 데이터베이스를 만들어줘야 해요. OMV를 쓰니까, 쉽게 하실 수 있습니다.

OMV MySQL 메뉴로 갑니다.

그리고 아래에 SQL 관리 사이트를 활성화시키신 후 저장/적용 해주세요. 그럼 위에

버튼들 중에 보이기 버튼이 활성화가 될 겁니다. 이 버튼을 눌러줍니다.

이런 관리 사이트 접속 화면이 뜹니다. root 계정으로 로그인할게요.

이런 화면이 뜰텐데, 여기서 왼쪽 위 메뉴 중 데이터베이스-새로 만들기 를 클릭해줍니다.

이런 식으로 작성해주세요. 그리고 데이터베이스를 만듭니다.

만드신 후 다시 메뉴에서 도구-사용자 관리 를 클릭하시면,

이런 창이 뜹니다. 사용자 추가 버튼을 누르셔서,

이런 식으로 적어넣어 줍니다. 그리고 사용자 추가.

위의 Select a User가 살아났을 겁니다. 여기서 새로 만든 사용자를 클릭하시고, 데이터베이스 권한 탭으로 가셔서 새로 만든 워드프레스용 데이터베이스에 대한 권한을 모두 줍니다. 그리고 업데이트 사용자 버튼을 누릅니다.

워드프레스를 위한 데이터베이스 준비가 완료되었습니다.



2. Wordpress 설치

wget으로 최신 워드프레스를 받아둡시다. 지금은 4.8.1 이지만, 사이트에 접속해 최신 버전을 확인해주세요. 어차피 자체 업데이트가 가능하니 상관은 없습니다.

SSH 로 오드로이드 NAS에 접속한 뒤 아래 명령어를 입력해줍니다.

wget https://ko.wordpress.org/wordpress-4.8.1-ko_KR.zip
Bash

다운이 다 되면 압축을 풀어줍니다. /var/www 아래에 풀겠습니다.

unzip -d /var/www/ wordpress-4.8.1-ko_KR.zip
rm wordpress-4.8.1-ko_KR.zip
Bash

그리고 텍스트 에디터를 사용해 워드프레스 설정 파일을 편집해주세요. vi, nano 중 편한 걸 쓰시면 됩니다.

cd /var/www/wordpress
# vi wp-config-sample.php
nano wp-config-sample.php
Bash

파일을 열고, 아래 내용들을 찾아 수정해주세요.

...

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress-db'); // 생성한 워드프레스용 데이터베이스 이름

/** MySQL database username */
define('DB_USER', 'wordpress'); // 생성한 새로운 데이터베이스 사용자 이름

/** MySQL database password */
define('DB_PASSWORD', 'wordpress); // 새로운 사용자의 비밀번호

...

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
/* 아래 나온 내용을 모두 지운 후 링크로 가셔서 그대로 아래 내용을 대신하게끔 복붙합니다. */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');
PHP

주석의 설명을 따라주세요.

그리고 -sample.php 이 없는 이름으로 복사해줍시다.

cp wp-config-sample.php wp-config.php
Bash

마지막으로 권한 설정을 위해 새로운 파일을 하나 만들어줍니다.

touch fix-wordpress-permission.sh
Bash

텍스트 에디터로 새로 만든 파일을 열어주신 후, 아래 내용을 복사해 넣고 저장합니다.

#!/bin/bash
#
# This script configures WordPress file permissions based on recommendations
# from http://codex.wordpress.org/Hardening_WordPress#File_permissions
#
# Author: Michael Conigliaro 
#
WP_OWNER=www-data # <-- wordpress owner
WP_GROUP=www-data # <-- wordpress group
WP_ROOT=$1 # <-- wordpress root directory
WS_GROUP=www-data # <-- webserver group

# reset to safe defaults
find ${WP_ROOT} -exec chown ${WP_OWNER}:${WP_GROUP} {} \;
find ${WP_ROOT} -type d -exec chmod 755 {} \;
find ${WP_ROOT} -type f -exec chmod 644 {} \;

# allow wordpress to manage wp-config.php (but prevent world access)
chgrp ${WS_GROUP} ${WP_ROOT}/wp-config.php
chmod 660 ${WP_ROOT}/wp-config.php

# allow wordpress to manage wp-content
find ${WP_ROOT}/wp-content -exec chgrp ${WS_GROUP} {} \;
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \;
Bash

저장하고 빠져 나오신 후 실행 권한을 부여해 실행합니다.

chmod 755 fix-wordpress-permission.sh
./fix-wordpress-permission.sh /var/www/wordpress
Bash



3. Nginx 설정

Wordpress 사이트로 접속하기 위해 웹서버 Nginx 를 설정하셔야 합니다.

단일 파일 최대 업로드 크기를 늘리기 위해 /etc/nginx/nginx.conf 파일을 수정해줍시다. http 블럭 안에

client_max_body_size 100M;
Bash

위의 내용을 추가해주겠습니다. 클라이언트가 최대 100MB 정도의 파일을 업로드할 수 있습니다. 어차피 사진 등만 업로드하지 그리 큰 파일은 업로드를 안 하기 때문에 100MB면 충분합니다. 부족하신 분들은 늘려주세요. 최대 2048MB까진 될 겁니다.

그리고 OMV Nginx 메뉴에서 Pools(풀) 탭으로 갑니다.

추가 버튼을 누르셔서,

이런 식으로 채워주시고 저장/적용 해줍니다.

그리고 서버 탭으로 가셔서 또 추가 버튼을 누르신 뒤,

이렇게 채워주시고, 추가옵션에는

root /var/www/wordpress/;
client_max_body_size 100M;

location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

location / {
    # This is cool because no php is touched for static content.
    # include the "?$args" part so non-default permalinks doesn't break when using query string
    try_files $uri $uri/ /index.php?$args;
    client_max_body_size 100M;
}

 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
     expires max;
     log_not_found off;
}
nginx

그리고 아직 도메인을 받지 않았다는 가정 하에 8001 번 포트로 하겠습니다. 저장/적용 해줍니다.



4. 접속 후 설정

해당 포트로 접속해봅시다.

바로 설정 페이지가 뜹니다. 적절히 넣으시고 설치하기 버튼을 누르면,

성공합니다.

로그인하면 이런 화면이 뜹니다. 

이제 워드프레스를 꾸미실 수 있어요.


* 도메인, SSL 관련 포스팅은 따로 진행됩니다.


출처 : http://awesometic.tistory.com/70?category=964085

Posted by 타카스 류지
|

OMV 같은 NAS는 한 번 구축해놓으면 시스템에 신경을 잘 안 쓰게 됩니다. 밥은 먹고 다니나 종종 궁금해지긴 하는데, 살다보면 막상 접속해보거나 그러진 않아요. Samba로 데이터나 잘 넣고 Plex나 FTP로 동영상이나 잘 보면 되죠.

근데 얘도 시간이 지나면 지날수록 한 두 군데 나사가 풀리고 맛이 갈 겁니다. 저흰 얘가 죽어가는 와중에도 Samba나 Plex나 이상이 없어 힘힘들어하는지 뭔지 모를 거에요.

때문에 OMV는 알림 기능이 있습니다. 이메일 SMTP서버를 설정해 두면, 알아서 저한테 힘든 일이 있거나 어디 하드디스크 하나가 맛이 가려고 할 때 등등 여러 가지를 알려줍니다. 필요하죠.

설정하러 갑시다.




0. 준비

저희 시스템이 메일 서버가 되는 게 아닙니다. 그냥 다른 서버를 빌려서 메일을 보내는 거에요. 그래서 다른 서버에, "날 사용해도 좋다" 하는 걸 설정해놔야 합니다.

Google Gmail로 할 겁니다. 다음이나 네이버도 될 것 같은데, 제가 해본 결과 일단 다음은 잘 안 되더라구요. Gmail이 확실합니다.



1. Gmail 앱용 비밀번호 생성

먼저 Gmail로 접속합니다.

그리고 이렇게 오른쪽 위에 저걸 눌러 내 계정 버튼을 눌러줍니다.

왼쪽 중간쯤에 이런 게 있어요. Google에 로그인 을 눌러줍니다.

이런 부분을 찾아야 해요. 그리고 2단계 인증을 만드셔야 합니다. 2단계 인증이 좀 귀찮은데 이걸 만들어야만 해요. 만드는 건 쉬우니 만드시고 나면, 아래에 앱 비밀번호 란을 눌러줍니다.

없대요. 원래 있었는데 보여드릴려고 지웠습니다. 생성할 앱 및 기기 선택에서 앱 선택-기타 를 누르면, 이름을 아무렇게나 지정할 수 있게 돼요. 적절한 이름을 넣은 뒤 생성 버튼을 눌러줍니다.

생성이 완료되면 이런 창이 뜹니다. 기기용 앱 비밀번호, 저 노란 부분에 있는 글자들을 복사해두세요. 지금 아니면 다시 보려고 해도 못 봅니다.

타 앱에서 SMTP를 위한 기초 작업이 완료되었습니다.



2. SMTP 활성화

OMV 알림 메뉴로 가서,

이런 식으로 채워주세요. SMTP 서버, 포트, SSL/TLS, 등등 전부 위 스크린샷처럼 맞게 써주시면 됩니다. 송신자 전자우편은 제가 아무렇게나 쓴 건데, 이게 먹히진 않더라구요. 저게 왜 있는 지 모르겠어요.

사용자 이름에는 앱 비밀번호를 생성한 Gmail 주소, 그리고 암호에는 생성해서 복사해놨던 앱 비밀번호를 써줍니다.

밑에 수신자의 주 전자우편으로 OMV 알림을 받을 메일 주소를 써주세요.

그리고, 저장/적용하신 뒤 위의 시험용 전자우편 발송 버튼을 눌러 테스트해봅시다.

확인해보면,

이렇게 아주 잘 와 있네요!



* 호스트/도메인 이름 설정

메일 앞에 [odroidxu4] 라고 쓰여있습니다. 얘가 지금 오드로이드 NAS의 호스트 이름인데, 바꿔줄 수 있어요.

OMV 네트워크 메뉴로 갑시다.

이렇게 있죠, 여기에 적은 내용들이 메일 제목 앞에 붙어서 오게 됩니다.

도메인 이름이 만약 example.com 이면,

odroidxu4.example.com 이런 형식으로 오게 돼요. 멋있게 적절히 알아서 잘 넣어줍시다.


* 알림 항목 설정

모든 일에 대해서 알림을 받기 좀 귀찮을 때가 있습니다. 다 받을 만하지만, 그래도 거르고 싶은 게 있다면 이메일로 알릴 항목을 선택해줄 수 있어요.

OMV 알림 메뉴에서 알림 탭으로 갑시다.

거를 거 걸러주시고, 저장/적용 해주세요.


출처 : http://awesometic.tistory.com/68?category=964085

Posted by 타카스 류지
|

Rsync는 로컬이나 원격의 다른 컴퓨터 시스템에 대해 파일 전송과 동기화 기능을 제공하는 유틸리티입니다. CLI 기반이기 때문에 단순히 명령어 하나 만으로 다른 곳과 파일을 동기화할 수 있어요. 굉장히 편리합니다.

Ubuntu나 다른 리눅스 기준이라면 복잡해 보이는 명령어를 막 입력해야 하겠지만, OMV이기 때문에 간단하게 사용법을 적어보려고 합니다.

참고로 OMV의 경우 활성화 시 자동으로 Rsync가 스케줄링 되는데, 그러니까 매번 특정 시간이나 매 시간, 이런 기준에 따라 자동으로 실행돼서 파일이 목적 위치와 동기화된단 말이죠. 한 번만 여유있는 다른 곳의 하드디스크로 설정해 놓으시면 2차 백업에 대해선 걱정 없으실 겁니다.

NAS를 구축하셨지만 RAID를 구성하지 못하신 분에게는 더 필요한 솔루션인 것 같습니다. 하드디스크는 생각보다 쉽게 고장나요. 또 한 번 고장나면 보통 물리적 고장이기 때문에 전문 장비 없이는 살리기가 어렵습니다. 백업을 항상 중요시하세요. 뭐든지 일이 저질러지기 전에 예방하는 것이 먼저잖아요.

요새는 Rsync에서 파일을 전송할 때 SSH 프로토콜을 이용한다고 하네요. SSH 는 기본적으로 암호화가 목적이기 때문에 Rsnyc로 파일을 전송할 때도 암호화해 보안성이 높아집니다.

여기선 로컬 시스템에서 원격 시스템으로의 NAS 백업을 중점으로 쓰겠습니다.


참고: https://www.joinc.co.kr/w/Site/Tip/Rsync
참고 2: https://www.digitalocean.com/community/tutorials/how-to-copy-files-with-rsync-over-ssh
참고 3: https://forum.openmediavault.org/index.php/Thread/7143-Rsync-two-OMV-machines/?postID=65611#post65611
참고 4: https://forum.openmediavault.org/index.php/Thread/18586-RSYNC-SSH-help-needed/



0. 준비

당연한 말이지만, NAS 백업이기 때문에 NAS에 사용되는 HDD보다 더 큰 HDD가 필요합니다. NAS에서 3TB를 사용한다면, 백업할 장소는 3TB 이상이어야 하죠. 물론 3TB 전부 다 중요하진 않고 거기서 쥐똥만큼인 30GB가 진짜진짜 중요한 데이터다 싶으시면 그 곳만 백업하면 되니 상관 없습니다.

그리고 Rsync로 데이터를 받을 시스템 또한 Rsync가 필요합니다. 하지만 Rsync는 거의 필수 패키지라 대부분의 리눅스 배포판엔 이미 포함되어 있으니 신경 안 쓰셔도 됩니다. 로컬과 원격에서 조금만 손 봐주면 바로 사용하실 수 있습니다.

Rsync는 "나" 가 로컬이고 "상대" 가 원격입니다. 나는 상대에게 파일을 줄 수도 있고, 상대로부터 파일을 받을 수도 있습니다. 또한 나를 기준으로 상대의 파일과 디렉토리들을 동기화시킬 수 있고, 내가 상대의 기준으로 동기화할 수도 있습니다. 다른 시스템에 접속만 하면 다 돼요.

 

1. 로컬 시스템에서 SSH 인증 키 생성

인증할 때 비밀번호를 치는 게 아닌 SSH 키를 사용합니다. 비밀번호를 매번 입력하거나 비밀번호 그대로 저장해 둘 필요가 없어 편리하지만, 그 SSH 인증 키만 있다면 어떤 시스템에서도 해당 계정으로 로그인이 가능하단 단점이 있어요. 잘 간수하셔야 합니다. 이게 싫으면 Rsync 서버를 열어야 하는데, Rsync는 암호화가 적용이 안 되기 때문에 입맛에 맞춰 하시면 되겠습니다. 

먼저 로컬 시스템 OMV 인증 메뉴 - SSH 탭으로 갑니다.

그리고 추가-생성 버튼을 눌러 SSH 인증 키를 하나 생성해줍시다. 묻는 게 별로 없어요, 그냥 설명 간단하게 채워주시면 됩니다.

전 이렇게 했어요. 다 됐습니다.

그리고 새로 생긴 애를 누른 후 편집을 눌러줍니다.

RSA 공개 키라는 부분이 있고, 오른쪽에 파일이랑 종이 그려진 아이콘이 있는데 그 아이콘을 눌러 복사해 둡니다.



2. 원격 시스템 설정

원격 시스템에선 SSH 접속이 필요합니다.

먼저 Rsync가 설치되어 있는 지 확인합니다. 안 되어있으면 설치하도록 바로 install을 때리겠습니다.

sudo apt-get install -y rsync
Bash

Rsync가 설치가 되어 있다면, SSH에 접속한 뒤 로컬에서 생성한 공개 키를 ~/.ssh/authorized_keys 경로에 저장합니다.

{공개키} 부분에 방금 복사한 공개키를 입력해주세요.

PUB_KEY='{공개키}'
echo $PUB_KEY > ~/.ssh/authorized_keys
Bash

그리고 Rsync로 동기화 할 디렉토리를 생성하겠습니다.

경로는 각자 적절한 위치로 해주세요. 전 외장하드가 연결된 곳으로 하겠습니다.

sudo mkdir /media/hdd/ext1/rsync
Bash



3. Rsync 테스트

다시 로컬 시스템(OMV)으로 오겠습니다.  

OMV Rsync 메뉴로 갑시다.

여기서 추가 버튼을 눌러줍니다.

그리고 이런 식으로 채워줍니다. 대상 서버에 {계정@IP}:{경로} 포맷으로 적어주심 됩니다. 그리고 인증을 공개 키로 설정, SSH 포트는 보통 22번일 거고 인증서는 처음에 만든 SSH 인증서를 선택해줍니다. OMV NAS의 파일을 원격 시스템으로 보내는 것이기 때문에 밀어넣기 로 설정하겠습니다.

이번에도 그렇고 OMV 번역이 좀 종종 미묘한데, 그냥 Push 라고 영어로 쓰여 있음 더 좋았을 것 같네요.

해당 Rsync 작업을 반복하고 싶으시면 매 N분/시간/일 마다를 체크해주시고, 시간을 지정해 주시면 됩니다. * 일 경우는 잘 모르겠군요, cron이라면 매분, 매시간, 이런 건데 말이죠. 설정에 1 도 있어서 * 이랑 1 이랑 뭐가 다른진 모르겠네요.

저장/적용 하시면,

이렇게 됩니다.

10분에 한번 동기화를 하는 걸로 설정했는데, 기다리기 미묘하니 대충 테스트 해봅시다.

Samba로 동기화하고자 하는 폴더에 아무 거나 넣어봤습니다.

이런 느낌으로요. 그리고 OMV Rsync 메뉴에서, 위 스크린샷에도 있는 실행 버튼을 눌러 테스트해봤습니다.

되게 error 이런 말 뜨면서 뭐라고 하는데, 막상 확인해 보니

아주 잘 들어가 있네요. 기똥찹니다.

백업하세요.


* 여유가 된다면 우분투 시스템에서 Rsync 하는 법을 포스팅하겠습니다.


출처 : http://awesometic.tistory.com/67?category=964085

Posted by 타카스 류지
|

WebDAV는 완전히 인터넷(www) 기반의 디렉토리, 문서 편집/관리 도구입니다. 보통 웹은 "읽기"만 가능한 환경이었는데, 여기에 "쓰기"까지 가능하게 한다는 것이 WebDAV의 기본 목적인 것 같습니다.

NAS 사용자 입장에서는, NAS의 하드디스크를 마치 내 컴퓨터의 디스크인냥 들락날락 하고 싶은 욕망이 있죠. 그래야 관리가 편하거든요. Samba가 그것을 가능하게 해주지만, Samba의 목적 자체가 내부 네트워크 용이라는 점에서 한계가 있습니다. 예를 들어, 집에서 자신의 노트북에 NAS Samba에 대한 드라이브를 하나 만들어놔도, 카페에 가면 그 드라이브에 접근할 수가 없어요.

WebDAV는 웹으로 접근하는 것이기 때문에 그것이 가능합니다. 그러면서도 웹이기 때문에 SSL을 적용할 수 있어 보안성도 높아요. 뜻 자체가 웹 분산 저작 및 버전 관리라는 뜻인데, 그 말 뜻처럼 실시간 파일 편집에 강하고 여러 사람이 하나의 파일을 동시에 건들일 수 없도록 보호해준다네요. 단일 파일 최대 전송 용량이 어느 정도 한계가 있다는 게 아쉽지만, 그런 건 눈감아 줄 수 있는 괜찮은 서비스죠. 

저도 잘 안 써서 몰랐지만, 동영상 스트리밍도 WebDAV로 많이 한다더라구요.

OMV를 이용해 WebDAV 서비스를 열고, 내 컴퓨터에 등록까지 해봅시다.


참고: http://yaruki0318.tistory.com/entry/%EC%B0%A8%EC%84%B8%EB%8C%80-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-WebDAV-%EA%B0%80%EB%8A%A5%EC%84%B1
참고 2: https://www.qnap.com/ko-kr/how-to/tutorial/article/webdav%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-qnap-%EC%9B%90%EA%B2%A9-%EC%95%A1%EC%84%B8%EC%8A%A4




1. WebDAV 설치/활성화

OMV 플러그인에서 WebDAV 를 검색해 설치합니다.

그리고 페이지가 새로고침되면 OMV에 WebDAV 메뉴가 생겼을 거에요. 가봅시다.

굉장히 생각보다 더 단순하네요. 

여기서 공유폴더를 지정할 때 빨간 글씨로 경고가 뜰 겁니다. 그 경고를 없애주러 OMV 공유 폴더 메뉴로 갑시다.

그리고 WebDAV 접속 시 사용하고자 하는 공유폴더를 클릭하고 위의 접근 제어 목록(ACL) 버튼을 클릭하면, 아래와 같은 창이 뜹니다. 

위의 사진처럼 webdav와 webdav-users에 대해 읽기/쓰기 권한을 줍시다. 재귀적으로도 활성화하신 뒤 적용합니다.

그리고 OMV 사용자 메뉴로 가서 WebDAV 접속에 사용하고자 하는 계정을 누르신 뒤, 편집 버튼을 누르세요.

그리고 그룹 탭으로 가셔서,

이런 식으로, 원래는 users만 체크가 되어있을텐데 webdav-users도 체크해줍니다.

그리고 저장하시게 되면,

그룹에 users와 webdav-users가 있게 됩니다.

다시 OMV WebDAV 메뉴로 갑시다.

그리고 이렇게 고쳐주세요. FileSize upload limit을 4095로 지정하겠습니다. 4GB를 노린 건데, 원래는 4096MB이지만 너무 딱 맞춰서 넣으면 정신을 못 차릴까봐 1MB 빼고 갈게요. 저장/적용 해줍니다.

마지막으로 활성화된 위의 보이기 버튼을 누르면,

이렇게 딱 뜨는 것을 보실 수 있습니다. 



2. 내 컴퓨터에 드라이브로 등록하기

원래는 Samba처럼 익스플로러의 자체 기능을 통해 등록할 수 있습니다만,

왠지 어떻게 해도 안 되더라구요. 레지스트리도 변경해보고 뭐 이것 저것 다 해봤어요. OMV 때문인 지 뭔진 몰라도 결국 써드 파티 프로그램을 사용하게 됐습니다.

NetDrive가 이런 FTP, WebDAV로 열린 서버를 내 컴퓨터에 드라이브로 등록하는 프로그램인데, 굉장히 유명해요. 하지만 기간의 제한이 있는 트라이얼 버전이라, 유료를 사지 않으면 한 때 무료였던 엄청 구버전을 사용해야 합니다. 해도 좋지만, 저희는 얼마전 새로 나왔다던 국산 프로그램인 RaiDrive를 사용할게요.

링크를 통해 다운로드 받아 설치합니다. 설치는 굉장히 단순해서 따로 설명드리진 않겠습니다.

그리고 실행하게 되면,

시작해보자고 제안하네요.

추가 버튼을 눌러서,

위 스크린샷처럼 채워줍니다. WebDAV, 드라이브 알파뱃은 가능한 한 제일 마지막 것으로, 주소와 계정정보 등등.. SSL이 아니신 분들은 주소의 체크를 해제해주세요.

그리고 확인 버튼을 누르면,

이렇게 생기게 됩니다. 내 컴퓨터의 하드디스크인냥 돌아다닐 수 있어요. 다만 이래 보여도 웹에 연결하는 거라, 대용량 파일의 경우 웹에 업로드가 오래걸릴 수 있습니다. 물론 집에선 내부 네트워크니까 속도가 빠를 거에요. 관련해서 업로드 중이다, 속도는 어떻고 얼마나 남았다 하는 정보도 뜨면 좋겠는데 그런 건 아직 안 뜨더라구요. 새로 나온 서비스니 기다려 봅시다.

WebDAV는 간단한 문서작업, 대학 과제, 사진 업로드 등에 적합해 보입니다.

여담으로 디자인을 마이크로소프트 Visual Studio 에서 따온 것 같네요. 설치부터 마소 냄새가 확 납니다. 느낌은 조금 다르지만 보기 좋아요.


출처 : http://awesometic.tistory.com/64?category=964085

Posted by 타카스 류지
|

* SSL 적용은 옵션입니다.

* SSL 적용 시 20~30%, 많게는 50% 이상 속도가 저하될 수 있습니다. 통신 패킷 암호화 때문인 것 같은데, FTP로 고화질 동영상 스트리밍 등 빠른 전송 속도를 위해선 SSL이 없는 상태로 접속해 사용하세요. 중요한 파일을 다루거나, 중요한 파일로 접근할 수 있는 계정을 사용할 때 카페 등 공용 인터넷이 불안하시다면 SSL을 사용하시면 되겠습니다. 대부분의 720p나 TV 예능 정도의 1080p 동영상 스트리밍에는 문제가 없을 겁니다.

SSL은 TLS(Transport Layer Security)라고도 불리는 보안 소켓 레이어입니다. 전송 계층 보안이라는 의미의 TLS가 더 받아들이기 쉬운 이름인 것 같네요.

원래 인터넷은 전부 패킷의 이동입니다. 패킷은 데이터 조각이라고 보시면 되는데, 머리부분에 출발지와 도착지의 정보를 포함한 여러 정보가, 몸통 부분에 보내고 받고자 하는 필요한 데이터들이 들어 있어요. 이런 수없이 많은 패킷이 인터넷 세상에 뿌려져 도착지까지 잘 이동하는 겁니다.

근데 몸통부분에 데이터를 넣을 때 암호화하지 않으면, 패킷의 이동 경로에 있는 누구나 그 데이터를 볼 수 있어요. 요새는 대표적으로 공유기인데, 카페나 식당 등에서 제공되는 무료 와이파이가 그래서 위험합니다. 경로상의 패킷을 잡아내는 프로그램이 있어요. 이런 프로그램과 여러 다른 툴들을 잘 섞어 쓰면 내가 어느 사이트에 어떤 계정과 비밀번호로 로그인하는 지도 알아낼 수 있습니다. 살짝 네트워크 + 웹 해킹을 조금 공부한 적이 있었는데, 거의 대부분의 웹 사이트는 사실 굉장히 취약해요.

그래서 여러 유명 웹사이트 관리자들은 이런 보안 문제를 중요하게 생각해왔습니다. 결국 SSL이 탄생했어요.

SSL은 간단하게 인증서 + 공개키 + 대칭키 암호화 방식으로 암호화를 진행하는 겁니다. 자세한 건 모르셔도 되지만(저도 잘 모르지만), 아무튼 엄청나게 암호화시키고 놉니다. 인증서도 빼고 간략하게 한 버전이 제가 예전에 다룬 Node.js 와 Android 간 RSA + AES 암호화 방식이겠네요. 이렇게 되면 중간에 누군가 패킷을 가로채더라도 복호화 키가 없어 어떤 데이터인지 알아볼 수 없어요.

참고로 SSL은 데이터 통신 그 자체에만 보안이 좋을 뿐이지, 악성 코드를 SSL 방식으로 보내거나 하는 건 가능하기 때문에 약간 다르게 보셔야 합니다.

아무튼 SSL의 중요성이 점점 높아지는 추세인 걸로 보입니다. 예전엔 인증서를 얻기도 어려웠는데, 이젠 누구나 간단하게 인증서를 얻을 수 있어요. 간단하게 얻으러 갑시다.


* Let's Encrypt를 사용하지 않더라도 자체 인증서를 생성할 수 있습니다. 하지만 이럴 경우 사이트 접속 시마다 인증서의 인증 기관이 신뢰받지 않았다는 이유로 경고창이 매번 보여집니다. 따라서 조금 어렵더라도 Let's Encrypt 사용을 권장합니다.




0. 포트포워딩

80번, 443번이 오드로이드 NAS로 포트포워딩 되어 있어야 합니다.



1. OMV Let's Encrypt 설치

OMV 플러그인 메뉴에서 Let's Encrypt 검색 후 설치합니다.




2. Let's Encrpyt 로 인증서 발급

여기선 OMV 관리자 페이지에 대한 SSL 인증서를 발급받아 사용해보겠습니다.

OMV의 Let's Encrypt 메뉴로 갑시다.

뭔가 어려워보입니다. 얘를,

이런 식으로 바꿔 넣어 줍시다. OMV 관리자 페이지에 대한 도메인 주소를 넣고, 전자우편에는 자신이 정말로 사용하는 이메일 주소를 넣습니다. 그리고 Schedule Refresh를 활성화한 후 저장/적용 합니다.

저 이메일 주소에 SSL 인증서 재발급, 만료 알림이 보내질 겁니다.

그 다음 Generate Certificate 버튼을 누르면,

이렇게 축하해줍니다.

그리고 왠지 변경된 설정을 적용하라는 알림이 뜰 텐데요, 적용 해줍시다. 그러고 나면 곳곳에 추가된 게 있을 거에요.

일단 OMV 인증 메뉴 - SSL을 가봅시다.

새롭게 발급 받은 인증서가 추가된 걸 보실 수 있습니다.

그리고 OMV 예약된 작업 메뉴로 가봅시다.

작업이 하나 생겨 있네요, 매월 수행되는 작업이고, omv-letsencrypt 명령을 실행하나 봅니다. 설명을 보니 Let's Encrypt 플러그인으로 받은 인증서를 계속 최신화 시켜주는 작업이며, 여기서 삭제하면 안 되고 플러그인을 통해 비활성화 시키라네요.



3. 적용

성공적으로 인증서를 발급받았으니 바로 적용해 봅시다. OMV 일반 설정 메뉴로 갑시다.

보안 연결 관련 설정이 있어요. 얘를 활성화시켜주고, 인증에 방금 발급받은 인증서를 선택해 줍니다.

이렇게요. 그리고 저장, 적용하시면 됩니다.

그리고 https://{도메인} 으로 가봅시다! 전 https://omv.awesometic-test.kro.kr/ 이네요. 도메인 때문에 다들 접속하실 수 있을 듯 :)


이랬던 애가,


이렇게 바뀌었습니다. 누가 봐도 안전해졌네요!

지금은 강제 SSL/TLS 옵션이 꺼져 있기 때문에 SSL이 없는 http:// 로도 접속이 가능합니다. 저 옵션을 켜주시면 SSL(https)로만 접속이 가능해져요.



* OMV의 Let's Encrypt로 발급받으려는 인증서가 2개 이상일 때

OMV 에서는 Let's Encrypt 플러그인을 통한 인증서가 최대 하나밖에 지원이 안 됩니다. 하나를 더 생성하면, 생성이 되더라도 OMV SSL 인증서 목록에 가장 최근에 생성한 하나만 떠요. 아니면 그냥 에러가 나버립니다.

그래서 만약 위의 예시처럼 내가 이미 OMV 관리자 페이지를 위한 인증서를 하나 발급받았는데, 한 개 더 Seafile에 쓰일 인증서로 발급받고 싶다! 하셔서 플러그인을 통해 발급을 받는다 해도 기존의 OMV 도메인에 대한 인증서는 없어집니다.

사실 굉장히 불편하고 이상하게 만들어졌어요.

그래서 제 나름대로 인증서는 터미널에서 발급받고, OMV SSL 인증서 목록에 직접 추가해주는 방법을 생각해냈습니다. 이렇게 해도 플러그인으로 발급받은 인증서와 함께 매월 갱신 될 것 같아요. => 실제로 갱신되는 지 확인해 봐야 합니다.

어려워 보이지만, 사실 한 두번 해보면 굉장히 쉽습니다.

0) Nginx에 새로운 서버 추가/설정

Webroot 플러그인을 이용한 SSL 인증서를 받기 위해 Nginx 서버들의 설정을 바꿔줘야 합니다. 자세한 내용은 바로 다음 단계에서 진행됩니다.

인증서를 발급해주기 전 Nginx 에 서버가 등록되어 있어야 합니다. 도메인을 사용할 경우 Nginx에서 그 도메인에 대해 필요한 서비스로 들어가게끔 해줘야 하거든요.

가이드를 처음부터 따라오셔서 도메인도 추가하신 분은 추가 옵션 맨 밑에 아래 내용만 넣어주시면 됩니다.

Nginx가 웹 사이트 소스에 직접 접근한다면 root 부분을 주석처리 해주세요. 그게 아니라면 root 부분에 해당하는 디렉토리를 만들고 진행해야 합니다. 다음 단계에서 설명됩니다.

location ^~ /.well-known/acme-challenge/ {
    root /var/www/sub.example.com;
    allow all;
    default_type "text/plain";
}
nginx

이렇게 될 겁니다.

* FTP의 경우 새로 만드셔서 추가 옵션에 저 내용만 넣으시면 될 것 같습니다만, 아직 테스트 중입니다. 기본적으로 Nginx는 HTTP 서버지 FTP서버가 아니기 때문에, HTTP 서버에 임시로 저렇게 해서 인증서를 발급받아도 FTP에 사용할 수 있는 지 테스트해보고 업데이트 하겠습니다.


1) SSH 접속 후 인증서 발급

지금까지 강좌를 잘 따라오신 분들이라면, 터미널에 Putty 프로그램을 이용해 SSH로 접속하는 건 이미 익숙해졌을 겁니다.

접속해 들어갑니다.

SSL 인증서 발급에는, OMV로 하실 때 보셨는 지 모르겠지만 Webroot 플러그인을 사용해서 발급하셨을 겁니다. OMV 에선 필수인데, 사실 필수는 아니고 플러그인 형식으로 명령어의 옵션을 통해 주입해서 사용하는 거에요. Webroot를 사용하지 않는 Standalone 방식도 있습니다.

Webroot 플러그인을 사용할 경우 인증서 갱신이나 인증서 관련 문제들을 해결할 때 서버를 멈추지 않아도 되기 때문에 요새 대부분의 서버에서 인증서를 발급받을 때 해당 플러그인을 사용한다고 합니다.

Webroot 플러그인은 서버 내에 해당 웹 사이트 소스 파일 경로가 존재하는 지 유효성을 판단합니다. Web root는 그 웹 사이트 소스의 경로라고 생각하시면 돼요. 플러그인을 사용할 때 웹 사이트 소스 경로를 지정하며, 사용할 경우 사이트 소스 파일 경로에 임시 디렉토리와 임시 파일이 생겨 인증 기관에서 도메인을 통해 직접 그 파일에 접근해 비교함으로써 유효성이 판단됩니다.

위의 설정을 한 이유도 그것 때문입니다. 임시로 디렉토리를 만들어 그 곳에 접근하는데, example.com/.well-known/acme-challenge 도메인으로 들어와 임시로 만들어진 파일을 읽습니다. 그래서 Nginx 설정에 해당 경로로 들어오는 건 모두 허용해 줘라 설정해 주는 것입니다. root는 웹 사이트 소스가 없는 페이지의 경우(Reverse proxy 서버로 사용할 경우) 해당 디렉토리를 못 찾을테니 임시로 지정해준 겁니다.

저희는 그런 Webroot 플러그인을 사용한다고 가정하겠습니다.

여기서 두 가지로 나눠집니다.

Wordpress 등 소스 파일을 받아서 열거나, 직접 웹사이트 소스를 작성해 여는 경우)

이럴 경우엔 보통 /var/www/wordpress/ 경로 아래에 index.html나 index.php 등이 있을 겁니다. Nginx가 그 index 파일을 찾아서 클라이언트한테 보내주는 거에요. 그렇기 때문에 Webroot 플러그인을 사용할 때 해당 웹 사이트 소스 파일 경로로 지정해주시면 됩니다.

아래의 명령어를 입력해줍시다. {경로} 에는 웹 사이트 소스의 절대 경로를, {도메인} 에는 자신의 해당 웹사이트에 SSL로 접근하고자 하는 도메인을 적어주세요.

WEBROOT_PATH='{경로}'
WEBROOT_DOMAIN='{도메인}'
certbot certonly --webroot -w $WEBROOT_PATH -d $WEBROOT_DOMAIN
Bash

예시입니다.

certbot certonly --webroot -w /var/www/wordpress/ -d wordpress.example.com
Bash

이러면 축하해주면서 인증서도 줄 겁니다.


Seafile이나 Transmission등을 도메인 접속을 위해 Nginx를 Reverse proxy 서버로 쓰는 경우)

이럴 경우엔 /var/www/ 아래에 해당 웹사이트에 대한 경로가 없습니다. 알아서 구축이 되어 있기 때문에, 그 웹사이트 경로를 찾기도 어렵고 찾아도 미묘해요.

그래서 일단 SSL 인증 기관에게 "그래도 얘는 내 서버에서 돌고 있다"는 걸 알려만 주면 되기 때문에 명시적으로 디렉토리를 만들어주면 됩니다.

아래의 명령어를 입력해줍시다. 역시 {경로} 에는 웹 사이트 소스의 절대 경로를, {도메인} 에는 자신의 해당 웹사이트에 SSL로 접근하고자 하는 도메인을 적어주세요.

명시적인 디렉토리를 먼저 만들고 그 디렉토리를 이용해서 인증서를 발급받겠습니다.

WEBROOT_PATH='{경로}'
WEBROOT_DOMAIN='{도메인}'
mkdir -p /var/www/$WEBROOT_DOMAIN
certbot certonly --webroot -w $WEBROOT_PATH -d $WEBROOT_DOMAIN
Bash

예시입니다.

mkdir -p /var/www/seafile.example.com
certbot certonly --webroot -w /var/www/seafile.example.com/ -d seafile.example.com
Bash

가이드를 따라오신 분들도 이 방법으로 진행하시면 됩니다. FTP, Seafile, Transmission 모두 인증서를 받아주세요.

잘 입력하시면 역시 축하해주면서 인증서를 발급해줍니다.

인증서가 잘 받급되었나 보시고 싶으시면 아래 명령어를 입력해주세요.

ls -al /etc/letsencrypt/live/
total 16
drwxrwxrwx 2 root root 4096 Jul 26 16:46 omv.awesometic-test.kro.kr
drwxr-xr-x 2 root root 4096 Jul 27 17:48 seafile.awesometic-test.kro.kr
drwxr-xr-x 2 root root 4096 Jul 27 17:48 transmission.awesometic-test.kro.kr
Bash


2) OMV에 인증서 등록

발급받은 인증서를 OMV 인증 - SSL 메뉴에 등록해주셔야 합니다.

OMV 인증 - SSL 으로 갑시다.

아직 인증서가 하나밖에 없습니다. 왼쪽 위 추가 - 불러오기 를 눌러줍시다.

불러오기 좋은 창이 하나 듭니다. 쉬워요. 복붙만 하시면 됩니다.

Putty로 연결한 터미널에서 아래 명령어를 쳐줍니다. {도메인} 부분에 자신한테 맞는 도메인만 적어주시면 됩니다.

개인 키에는 아래 명령어의 결과를 적습니다. -----BEGIN~ 부터 END CERTIFICATE----- 까지 전부 복사/붙여넣기 하셔야 합니다.

WEBROOT_DOMAIN='{도메인}'
cat /etc/letsencrypt/live/$WEBROOT_DOMAIN/privkey.pem
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDjlFCISt815m0f
...
hLCV6C3rlO1rKEF1sqLP0nRBsA==
-----END PRIVATE KEY-----
Bash

인증에는 아래 명령어의 결과를 적습니다.

cat /etc/letsencrypt/live/$WEBROOT_DOMAIN/fullchain.pem
-----BEGIN CERTIFICATE-----
MIIFHzCCBAegAwIBAgISAxT89JsCCNDJ7SvlEAYQ+6fJMA0GCSqGSIb3DQEBCwUA
...
JhXpMMZWNLytB4qjuzd6s5thHA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
...
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
Bash

설명엔 적절한 설명을 적어줍시다. 전 Let's Encrypt - example.com 이라고 적겠습니다. 물론 example.com 대신 적절한 도메인을 적어주세요.

그럼 이렇게 됩니다.

이렇게 하나씩 넣어주시면 됩니다.. :) 그리고 저장/적용 해주세요.

그리고 Seafile과 Transmission에 적용해보겠습니다.


* Seafile, Transmission에 적용

이런 식으로 인증서들이 준비되었을 겁니다. Seafile 부터 적용해봅시다.

OMV Nginx - 서버 에서 Seafile 부분을 누르신 후 편집 버튼을 눌러줍니다.

SSL 활성화 옵션이 있습니다. 활성화해준 다음 인증에서 Seafile 인증서를 클릭해주세요.

그럼 이렇게 될 겁니다. Only use SSL 을 활성화해주세요.

그리고 밑으로 내려 추가옵션 쪽으로 가 내용을 지우고 아래 내용을 복사/붙여넣기 해줍시다. 마지막에 location ^~ /.well-known... 블럭 안에 root 부분만 자신한테 맞는 경로로 설정해주세요.

proxy_set_header X-Forwarded-For $remote_addr;

location / {
    fastcgi_pass    127.0.0.1:8000;
    fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
    fastcgi_param   PATH_INFO           $fastcgi_script_name;

    fastcgi_param    SERVER_PROTOCOL        $server_protocol;
    fastcgi_param   QUERY_STRING        $query_string;
    fastcgi_param   REQUEST_METHOD      $request_method;
    fastcgi_param   CONTENT_TYPE        $content_type;
    fastcgi_param   CONTENT_LENGTH      $content_length;
    fastcgi_param    SERVER_ADDR        $server_addr;
    fastcgi_param    SERVER_PORT        $server_port;
    fastcgi_param    SERVER_NAME        $server_name;
    fastcgi_param   REMOTE_ADDR         $remote_addr;
    fastcgi_param   HTTPS               on;
    fastcgi_param   HTTP_SCHEME         https;

    access_log      /var/log/nginx/seahub.access.log;
    error_log       /var/log/nginx/seahub.error.log;
    fastcgi_read_timeout 36000;
    client_max_body_size 0;
}

location /seafhttp {
    rewrite ^/seafhttp(.*)$ $1 break;
    proxy_pass http://127.0.0.1:8082;
    client_max_body_size 0;
    proxy_connect_timeout  36000s;
    proxy_read_timeout  36000s;
    proxy_send_timeout  36000s;
    send_timeout  36000s;
}

location /media {
    root /var/www/seafile/seafile-server-latest/seahub;
}

location ^~ /.well-known/acme-challenge/ {
    root {seafile 임시 디렉토리 경로};
    allow all;
    default_type "text/plain";
}
nginx

이런 식으로 됩니다.

저장 및 적용 해줍니다.

Transmission의 경우 같은 방법으로 하시는데, 추가 옵션을 아래 내용으로 바꿔주시면 됩니다. Only use SSL도 활성화해줍니다. 마지막에 location ^~ /.well-known... 블럭 안에 root 부분만 자신한테 맞는 경로로 설정해주세요.

location / {
    return 301 https://$server_name/transmission/;
}
      
location ^~ /transmission {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass_header X-Transmission-Session-Id;
    add_header Front-End-Https on;
      
    location /transmission/rpc {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/web/ {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/upload {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/web/style/ {
        alias /usr/share/transmission/web/style/;
    }
      
    location /transmission/web/javascript/ {
        alias /usr/share/transmission/web/javascript/;
    }
      
    location /transmission/web/images/ {
        alias /usr/share/transmission/web/images/;
    }
          
    location /transmission/ {
        return 301 https://$server_name/transmission/web;
    }
}

location ^~ /.well-known/acme-challenge/ {
    root {transmission 임시 디렉토리 경로};
    allow all;
    default_type "text/plain";
}
nginx

그러고 저장 및 적용하시면, 아래처럼 될 겁니다.

새로운 https 도메인으로 접속해봅니다.


Seafile과 Transmission 모두 잘 되네요 :) 모바일에서도 물론 잘 들어가집니다. Seafile은 안드로이드 스마트폰에서 자동 업로드 테스트해본 결과에요.

만약 Seafile 웹사이트에 파일 업로드가 안 될 경우 관리자 설정 - 설정에 가셔서 URL들을 SSL이 적용된 https로 바꿔보세요. 아마 이미 바뀌어 있을 겁니다.


* FTP에 적용

FTP는 Nginx 를 거치는 것이 아니라 더 쉽습니다. 인증서만 임시로 받기 위해 /var/www/ 밑에 디렉토리를 생성하고 OMV Nginx에 ftp 서브도메인에 대해 해당 디렉토리를 사용하도록 서버를 추가한 뒤 발급받아 주시고, OMV SSL 메뉴에 넣고, 마우스 클릭 몇 번과 21번 포트만 오드로이드 NAS로 포트포워딩 되어 있으면 돼요. 간단한거지만 간단하기만 한 절차는 아니네요 :(

윗부분의 내용을 참고해 인증서도 받고, OMV에 불러오기도 하셨다면 OMV FTP 메뉴 - SSL/TLS 탭으로 갑니다.

이렇게 SSL/TLS 활성화 및 인증에 ftp 관련 인증서를 선택해주시고, 저장/적용 하시면 됩니다.

Filezilla로 테스트해보겠습니다.

OMV FTP에서 SSL을 설정하셨으면, 설정한 도메인을 호스트에 넣어줍니다. 그리고 계정은 OMV의 사용자 계정으로 해줍시다.

빠른 연결 버튼을 누르시게 되면,

알 수 없는 인증서라면서 겁을 줍니다. 원래 인증 기관 정보는 클라이언트 프로그램에 저장이 되어 있다더군요, 크롬 등 여러 인터넷 브라우저에선 Let's Encrypt 발급자를 이미 믿고 있는데 Filezilla FTP 클라이언트에선 얘가 믿을 만한 애인 지 모르는 모양입니다.

아무튼 확인을 눌러 넘어갑시다. 그러면,

연결이 되었네요! 파일 주고 받는 것도 잘 됩니다 :)

안드로이드 ES 파일 탐색기에서 FTP 접속하실 땐 주소에 SSL 인증서를 받은 도메인 주소를 넣어주세요. 그러면 인증이 됩니다. ES 파일 탐색기에서 새로 만들기 - FTPS 는 동작하지 않아요. 아래처럼 해주시면 됩니다.



* ipTIME DDNS

참고로 ipTIME DDNS(*.iptime.org)에 대해선 발급을 해주지 않나 봅니다. 된다는 분들도 계시는 것 같은데, 최근에 해보니까 iptime.org 에 대해 너무 많은 요청이 있다는 비슷한 메세지를 뿌리며 발급을 해주질 않네요. 다른 공유기의 DDNS 서비스에 대해선 잘 모르겠습니다. 참고하세요.


출처 : http://awesometic.tistory.com/60?category=964085

Posted by 타카스 류지
|

도메인 적용은 옵션입니다. 꼭 해주시지 않아도 됩니다. 하지만 보안 등의 이유로 SSL을 원하신다면 SSL의 선행과정으로 꼭 하셔야 합니다.

도메인은 IP가 사람이 외우기 어렵기 때문에 탄생했습니다. 네이버도 naver.com 이 아니라 23.42.168.102 라면 매번 접속하는 게 굉장히 불편하겠죠. 그래서 도메인 관리 기관에 naver.com 은 23.42.168.102 라고 저장시켜 놓고 우린 숫자가 아닌 naver.com 을 입력하는 것 만으로도 네이버에 접속할 수 있게 된 겁니다.

우리가 사용하는 오드로이드 NAS도 똑같습니다. 이름이 없으니 집의 공인 IP를 외워서 사용해야 합니다. 가족끼리만 사용한다면 하나만 외우면 되니까, 한 번만 설정해두면 되니까 괜찮긴 합니다만 블로그 호스팅 등 사용자의 범위를 넓힌다면 도메인이 필요하게 됩니다.

또한 SSL을 적용하려면 도메인이 꼭 필요합니다. SSL 인증서를 발급할 때 도메인이 포함된 웹 사이트의 호스트 헤더를 기준으로 발급한다고 합니다. IP로는 발급할 수가 없어요.

도메인이 있다면 서브 도메인을 통해 각종 서비스에 쉽게 접근하실 수 있습니다. 만약 내 도메인이 example.com이고, OMV 관리자 페이지, Seafile, Wordpress을 서브 도메인을 통해 제공한다고 합시다. 그럼 omv.example.com, seafile.example.com, wordpress.example.com 등으로 접근할 수가 있어 IP를 외우지 않아도 돼 편리합니다.

도메인을 얻고, 적용해 보겠습니다.


* DDNS 를 적용하고 싶으신 분은 
2017/08/02 - [오드로이드 XU4/Misc] - NAS에 DDNS 적용하기 - DuckDNS
를 참고하세요!


* 도메인 관련 Nginx 설정에 문제가 있는 것 같으니 가이드를 다시 검토해보겠습니다. 해당 문서를 보시는 분들은 직접 적용하시진 말아주세요! - 누락/오탈자 수정 및 추가 설명 보충했습니다.

* Seafile 관련 문제가 있는 것 같습니다. 적용하지 말아주세요!

* 180309 현재 OMV3 + Nginx 플러그인 조합에 오류가 있습니다! 서버 추가 시 Nginx가 먹통이 되네요. 이 게시글을 참고해주세요: http://awesometic.tistory.com/121




1. 내도메인.한국 에서 도메인 얻기

* 테스트용이므로 바로 도메인을 해지했습니다.

무료로 도메인을 제공해주는 사이트는 많습니다만, 지금은 내도메인.한국이 가장 안정적이고 깔끔하게 무료로 도메인을 제공해주는 것 같습니다. 사이트에 접속해 가입하고, 위의 "도메인 등록" 메뉴를 클릭합니다.

그럼 위의 도메인 검색 화면이 뜹니다. 일반 도메인 검색에 awesometic-test 라고 타이핑해 검색해보니 아래의 도메인들을 등록할 수가 있네요. kro.kr 로 등록해보겠습니다. 마음에 드는 도메인 옆의 파란색 "등록하기" 글자를 누르면 보안코드를 입력하라고 합니다. 보안코드를 입력하면 바로 도메인 발급이 완료됩니다. 

도메인 발급이 완료되면 아래와 같은 설정 페이지가 뜹니다.

여러 가지 옵션이 있지만, 저희는 "고급설정 (DNS)" 에서 "IP연결(A)" 만 사용할 겁니다.

"IP연결(A)" 를 체크해주신 후, 원하는 서브 도메인 이름과 오드로이드 NAS의 외부 IP 주소를 입력합니다.

위 스크린샷과 같이 할 수 있겠죠. 완료되셨으면 보안코드 입력 후 아래 "수정하기" 버튼을 눌러 적용합니다.

이제 사용할 수 있는 서브 도메인 4개가 생겼습니다.

저희는 오드로이드 NAS의 Nginx 를 이용해 도메인 별로 다른 서비스를 제공하도록 할 겁니다. Nginx는 웹 서버, 즉 80번(+ SSL 445번) 포트만 이용하므로 이 작업이 잘 끝나면 FTP의 21, Seafile의 8000, 8082 포트와 Transmission의 9091 포트에 대한 포트포워딩 규칙을 삭제하셔도 됩니다.



2. Nginx에 적용하기

일단 서브 도메인을 사용하게 되면, 모든 접근이 서버의 웹 서버 프로그램으로 몰려야 이 웹 서버 프로그램이 각 서브 도메인 이름별로 나눠줍니다. 때문에 저희는 OMV에서 지원하는 Nginx로 다 몰고, Nginx에서 나눠줍시다.

OMV Nginx 메뉴로 가서, "서버" 탭으로 갑니다.

아무 것도 없을텐데, 위의 "추가" 버튼을 누르면,

이런 대화 상자가 나타납니다. 저희는 Nginx를 통해 Seafile과 Transmission을 제공할 겁니다. FTP 접속은 알아서 21번 포트로 보내주는 것 같습니다. Seafile과 Transmission 은 저희가 웹 사이트를 직접 구축해 연다던가, Wordpress처럼 웹 사이트 소스를 가져와 연다던가 하는 것이 아니기 때문에, 해당 도메인 이름으로 접속하는 정보를 다른 곳에 열려있는 Seafile과 Transmission 으로 넘겨줘야 합니다. Nginx를 프록시 서버로 사용하는 겁니다.

* 기본 서버 활성화는 하지 마세요.

1) Seafile 적용

OMV Nginx 서버 추가에서 호스트 유형을 이름-기반 으로 바꿔 Seafile로 접근하고자 하는 도메인을 입력합니다.

그리고 PHP, Index 항목들을 전부 비활성화하신 뒤 헤더 버퍼 크기를 32K로 맞춰줍시다.

마지막으로 추가 옵션에 아래 내용을 넣습니다.

proxy_set_header X-Forwarded-For $remote_addr;

location / {
    fastcgi_pass    127.0.0.1:8000;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   PATH_INFO          $fastcgi_script_name;

    fastcgi_param   SERVER_PROTOCOL    $server_protocol;
    fastcgi_param   QUERY_STRING       $query_string;
    fastcgi_param   REQUEST_METHOD     $request_method;
    fastcgi_param   ONTENT_TYPE        $content_type;
    fastcgi_param   CONTENT_LENGTH     $content_length;
    fastcgi_param   SERVER_ADDR        $server_addr;
    fastcgi_param   SERVER_PORT        $server_port;
    fastcgi_param   SERVER_NAME        $server_name;
    fastcgi_param   REMOTE_ADDR        $remote_addr;

    fastcgi_read_timeout 36000;
    client_max_body_size 0;
}

location /seafhttp {
    rewrite ^/seafhttp(.*)$ $1 break;
    proxy_pass http://127.0.0.1:8082;
    client_max_body_size 0;
    proxy_connect_timeout  36000s;
    proxy_read_timeout  36000s;
    proxy_send_timeout  36000s;
    send_timeout  36000s;
}

location /media {
    root /var/www/seafile/seafile-server-latest/seahub;
}
nginx

참고: https://manual.seafile.com/deploy/deploy_with_nginx.html

그리고 SSH 접속을 한 뒤, 아래 명령어를 차례대로 입력해 설정 파일 2개를 수정해줍시다.

아래 명령어에서 100.100.100.100은 포트포워딩된 자신의 외부 IP로, http://seafile.awesometic-tset.kro.kr 부분을 꼭 자신의 도메인에 맞게 수정한 뒤 입력해주세요! 두 줄의 명령어 모두 해당됩니다. 두 번째 줄의 /seafhttp는 지우지 말아주세요.

sed --in-place=.bak 's,http://100.100.100.100:8000,http://seafile.awesometic-test.kro.kr,g' /var/www/seafile/conf/ccnet.conf
echo "FILE_SERVER_ROOT = 'http://seafile.awesometic-test.kro.kr/seafhttp'" >> /var/www/seafile/conf/seahub_settings.py
echo "SERVE_STATIC = False" >> /var/www/seafile/conf/seahub_settings.py
Bash

추가로 자동 시작을 위해 등록했던 서비스를 살짝 고쳐줍니다. 다음 명령어를 입력하시면 됩니다.

sed --in-place=.bak '/ExecStart/,/start/s/start/start-fastcgi/' /etc/systemd/system/seahub.service
systemctl daemon-reload
Bash

* 웹 UI에서 URL을 설정하시면 SSH을 통해 설정한 사항들이 무시됩니다. 훗날 독이 되어 돌아올 것 같으니 Seafile 웹사이트의 설정 페이지에선 URL을 설정하지 마세요. 아마 알아서 바뀌어 있을 건데, 바뀌어있지 않을 경우에만 설정해주세요.


그리고 다시 SSH 접속했던 곳에서

service seafile restart && service seahub restart
Bash

위의 명령어를 통해 서비스를 재시작해주시면 됩니다.


2) Transmission 적용

Transmission에 적용하는 건 더 쉽습니다.

먼저, OMV Nginx 서버 추가에서 호스트 유형을 이름-기반 으로 한 뒤 Transmission에 접근하고자 하는 도메인을 입력합니다.

그리고 PHP, Index 항목들을 전부 비활성화하신 뒤 헤더 버퍼 크기를 32K로 맞춰줍시다.

마지막으로 추가 옵션에 아래 내용을 넣습니다.

location / {
    return 301 http://$server_name/transmission/;
}
      
location ^~ /transmission {
      
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass_header X-Transmission-Session-Id;

    location /transmission/rpc {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/web/ {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/upload {
        proxy_pass http://127.0.0.1:9091;
    }
      
    location /transmission/web/style/ {
        alias /usr/share/transmission/web/style/;
    }
      
    location /transmission/web/javascript/ {
        alias /usr/share/transmission/web/javascript/;
    }
      
    location /transmission/web/images/ {
       alias /usr/share/transmission/web/images/;
    }
      
    location /transmission/ {
       return 301 http://$server_name/transmission/web;
    }
}
nginx

참고: https://gist.github.com/Belphemur/47f76c40defef0269615


3. 테스트

Seafile과 Transmission에 각 도메인으로 접속해보세요.

그리고, 안드로이드 스마트폰에 설정된 Seafile과 Transmission도 포트포워딩 후 외부 IP로 수정했을 때처럼 주소를 도메인으로 바꾼 후 테스트해보세요.


4. 포트포워딩 해제

이제 80번 포트로 모든 접속이 몰리니 Seafile과 Transmission에 대한 포트포워딩 설정을 해제하셔도 좋습니다. :) 


* 도메인을 얻으셨으면 이제 SSL 인증서도 발급받아 더욱 안전하게 사용하실 수 있습니다. 다음 포스팅에서 진행됩니다.

출처 : http://awesometic.tistory.com/59?category=964085

Posted by 타카스 류지
|

기본 스킨 경로

/usr/local/share/kodi/addons/skin.*


다운로드 스킨 경로

/home/odroid/.kodi/addons/skin.*



자막 폰트

/usr/local/share/kodi/media/Fonts/ 이나 /usr/share/kodi/media/Fonts/



Posted by 타카스 류지
|

안녕하세요 류지 입니다.

이번 글을 적기전에 예전에 OSMC  내용에 대해서 소개 한적이 있습니다.


2017/09/05 - [라즈베리파이3] - OSMC - KODI, transmission, 토렌트 비서(텔레그램), samba 설정



라즈베리파이랑 오드로이드xu4 를 같이 사용하고 있는데요

TV 에다가 물리면서 토렌트도 사용하고 tv도 같이 활용하고 동영상도 같이 볼수있게 환경을 조성을 하려고

여러가지 테스트를 거치다보니 OSMC 가 적합하다고 판단이 됬습니다.

라즈비안에 코디를 설치하거나 오드로이드에 kodi 를 활용했을때 자동실행을 하게해서 영상을 틀어보니

먹통되는 현상이 발견되었습니다. kodi 를 다시 껏다가 재기동하면은 영상이 잘나오구요

버그인것같은데 osmc 는 초기 부팅자체가 kodi 로 하다보니 이러한 문제를 해결하게되여

osmc 에 전부 올려보기로 한거였습니다.


기본 설치 순서랑 활용했던 소스를 공개하도록 하겠습니다.


사용했던 OSMC 이미지는 OSMC_TGT_rbp2_20180207.img 최신 버전으로 사용했습니다.


https://osmc.tv/ 에서 받으시거나

밑에 주소로 받으시면 됩니다.

http://download.osmc.tv/installers/diskimages/OSMC_TGT_rbp2_20180207.img.gz


sd 카드에 이미지 쓰는프로그램은


osmc 사이트에도 있지만 Etcher 프로그램이 워낙 편해서 이걸로 사용했구요


https://etcher.io/


Etcher-Portable-1.3.1-x64  버전을 활용


sd 카드에 이미지를 입히고 초기 부팅을 하면은


한글 셋팅은 패스 하도록 하겠습니다.


ssh 로 붙으면 환경설정하는중이라 잠시 기다리면됩니다. 1분 남짓 기다리면


콘솔 창이 출력 됩니다.



■ 접속 정보

ID : osmc

PW : osmc


■ 먼저 암호 변경

sudo passwd    <-  osmc 본계정으로 패스워드 변경

sudo passwd root


■ 한글 설정

sudo dpkg-reconfigure locales


ko_KR.UTF-8 선택


아래 3줄 입력


echo 'export LC_ALL=ko_KR.UTF-8' | sudo tee -a ~/.profile

echo 'export LANG=ko_KR.UTF-8' | sudo tee -a ~/.profile

echo 'export LANGUAGE=ko_KR.UTF-8' | sudo tee -a ~/.profile



■ 계정 추가

sudo adduser [ID]

패스워드 입력

나머지 정보는 엔터로 패스


■  Tvheadend 설치


sudo nano /etc/apt/sources.list


※ 소스에 보면 jessie 버전과 stretch 버전으로 분류가 됩니다.

   내용중에 최신버전은 stretch 버전이라 Tvheadend stretch 주소를 사용하시면 되겠습니다.


#Tvheadend jessie

deb https://dl.bintray.com/tvheadend/deb raspbianjessie unstable


#Tvheadend stretch

deb https://dl.bintray.com/tvheadend/deb raspbianstretch unstable


Ctrl+O, 엔터, Ctrl+X


한줄씩 차례대로 입력

apt-get install -y apt-transport-https

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61

apt-get update

apt-get install -y tvheadend


한줄 입력

sudo apt-get install -y apt-transport-https && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61  && sudo apt-get update  && sudo apt-get install -y tvheadend


&& 붙인 이유가 그냥 붙여 넣기를 4줄을 넣으면 명령어가 충돌 날수도 있어서

순서적으로 진행 하기 위해서 붙여서 사용합니다.


tvheadend 설치가 되면


계정 설정 화면 출력이 되며 계정ID 와 패스워드를 설정 합니다.


http:// IP :9981


접속후 영문으로 나옵니다. 로그인하고 언어 Korean 으로 설정후 다음으로 넘어가면

관리자 계정이랑 사용자 계정 입력란이 나옵니다.

추가 시켜주시면 관리자 계정으로 로그인시 한글로 출력이 됩니다.

새로 추가한 계정에 전체 권한을 다 부여하면은 한글 인터페이스로 전체 관리가 가능합니다.


tvheadend 설정은 아래 내용과 같습니다.


1. 설정 - DVB 입력 - 네트워크

  네트워크 이름 : IPTV Automatic Network  <- 마음대로

  최대 # 입력 스트림 : 4

  URL : file:///home/osmc/pvr/iptv.m3u <-- m3u 파일이 있는 경로


2. 설정 - DVB 입력 - 먹스

  스캔상태가 유휴는 작업이 끝난 상태 

  진행 - 활성 - 유후 순

  헤더 오른쪽 서비스 구간 0 으로 되어있는 항목들을 정렬하여

  오른쪽 체크박스 TSID 값을 체크

  스캔상태를 활성으로 변경 - 저장


3. 설정 - 채널 / EPG - 채널

  모든 서비스 매핑


4. 설정 - 채널 / EPG - EPG 그래버

  채널 이름 업데이트 체크

  채널 번호 업데이트 체크

  저장


5. 설정 - 채널 / EPG - EPG 그래버 모듈

  외부 : XMLTV - 켜짐 체크, 우선순위 1, 채널번호(휴리스틱) 체크

  저장



-------------------- 참고 ---------------------------



※ tvheadend 등록한 채널 백업 후 이용시 권한 설정


백업폴더경로 /home/hts/.hts/tvheadend/

백업 폴더 : channel, epggrab, input


chown -R hts:video /home/hts/.hts/tvheadend/channel

chmod -R 700 /home/hts/.hts/tvheadend/channel

chmod -f 600 /home/hts/.hts/tvheadend/channel/*


chown -R hts:video /home/hts/.hts/tvheadend/epggrab

chmod -R 700 /home/hts/.hts/tvheadend/epggrab

chmod -Rf 600 /home/hts/.hts/tvheadend/epggrab/*

chmod -f 777 /home/hts/.hts/tvheadend/epggrab/xmltv.sock


chown -R hts:video /home/hts/.hts/tvheadend/input

chmod -R 700 /home/hts/.hts/tvheadend/input

chmod -Rf 600 /home/hts/.hts/tvheadend/input/*


재시작

service tvheadend restart

---------------------------------------------------



이후에 epg2xml 이라는 epg 를 가져오는 작업이 있습니다.


pvr.zip


위 첨부파일을 이용하시면되며


채널 정보는 B TV 기준으로 작업해논 상태 입니다.


osmc 폴더에 압축을 풀어둔후고 


epg2xml.php 파일을 호출할껀데


php 플러그인 들이 필요합니다.


sudo apt-get install php php-common php-json libapache2-mod-php php-curl php-gd php-mbstring php-mcrypt php-mysql php-xml php-xmlrpc php-intl php-imagick php-zip php-cgi


로 php 관련 플러그인을 설치 합니다.


하나씩 설치하면서 찾기 귀찮아 0-0그냥 몽땅 설치했습니다.


만약 기존에 해보셨던분들은 필요없는건 빼고 활용하셔도 되겠습니다.


설치 후에


sudo php /home/osmc/pvr/epg2xml.php 로 실행 해봅니다.


호출이 완료되면은 EPG 그래버 채널에 정보다 업데이트 됩니다.


여기서 해야할 일은


★ 헤더중 채널 갱신 옵션 부분에 수정을 해주셔야 합니다.

옵션항목중 번호만 선택해서 해줍니다.

해야하는 이유는 채넣 정보에 보면은 번호가 업데이트가 안되는 부분을 해결하기 위해서 입니다.

그래야 원하는 채널 순서대로 정렬이 됩니다.


이제 이걸 크론에 등록해서 알아서 갱신 하도록 설정 합니다.


크론을 설치하고


sudo apt-get install -f cron


sudo crontab -e


에디트로 들어갑니다.


선택하는 항목이 있으면 nano 에디터를 추천 합니다.


3 */12 * * * php /home/osmc/pvr/epg2xml.php 저는 이렇게 사용합니다.


2017/12/27 - [라즈베리파이3] - 라즈베리파이3 Crontab 예약 작업


12시간 기준에 3분마다 php 를 실행 합니다.



Ctrl+O, 엔터, Ctrl+X  하고 나오면 자동 반영됩니다.


# 으로 주석 처리하면은 정지 됩니다.


tvheadend 설정은 끝났습니다.


■ samba 설치


sudo apt-get -y install samba


삼바 계정은 리눅스에 사용중인 계정으로 만드셔야 합니다.


sudo smbpasswd -a osmc

패스워드 설정


sudo /etc/init.d/samba stop


sudo nano /etc/samba/smb.conf




맨 아래로 내려보시면


[print] 종류의 내용은 과감하게 삭제


프린트 공유 이런겁니다.


그리고 아래 3줄을 추가해줍니다. 


load printers = no

show add printer wizard = no

printcap name=/dev/null


그래야 samba 통해서 동영상 시청시 딜레이 안생깁니다.


그리고 아래 내용 추가 하시면 됩니다.


[Contents] <-- 공유 폴더 제목

        read list = guest   <-  읽기 전용

write list = osmc   <-  읽기 쓰기 전용

path = /media/exHDD   <-공유 폴더 경로

comment = Contents    <- 부가 설명


Ctrl+O, 엔터, Ctrl+X  


sudo /etc/init.d/samba start


이렇게 하면 samba 설정이 끝났습니다.


외부에서도 접속이 가능 합니다.


■ 외장 하드 마운팅


exHDD 폴더에 외장하드를 마운팅 할겁니다.


sudo nano /boot/config.txt


아래 내용 2줄 맨위에 추가


max_usb_current=2

safe_mode_gpio=4


아래 내용 2줄 맨 아래 추가 - 최대 해상도로 강제 지정해주는 부분


hdmi_group=2

hdmi_mode=82


Ctrl+O, 엔터, Ctrl+X  


sudo mkdir /media/exHDD && sudo chmod -R 777 /media/exHDD


blkid


/dev/sda5: UUID="01D395B80CF091D0" TYPE="ntfs" PARTUUID="04f839f0-05"


UUID 에 01D395B80CF091D0 정보가 고유 외장하드 이름입니다.


아래 내용을 입력하여

sudo nano /etc/fstab



기본으로 할시 외장하드가 연결되어있지 안으면 부팅 에러 걸림

UUID=01D395B80CF091D0 /media/exHDD ntfs defaults 0 0


권장 내용

UUID=01D395B80CF091D0 /media/exHDD ntfs nofail,auto,noatime,rw,user 0 0



Ctrl+O, 엔터, Ctrl+X



※ 한줄

echo 'UUID=01D395B80CF091D0 /media/exHDD ntfs nofail,auto,noatime,rw,user 0 0' | sudo tee -a /etc/fstab



■ transmission-daemon 설치


sudo apt-get install -y transmission-cli transmission-common transmission-daemon


transmission-daemon 정지 (정지 안하면 아예 수정이 안됨)


sudo /etc/init.d/transmission-daemon stop



transmission 설정 수정

- 참고로 설정 내에서는 주석처리가 안됩니다.

- { (대괄호)와 " (따옴표) 주의

sudo nano /etc/transmission-daemon/settings.json




수정한 내용은 아래와 같습니다.


"blocklist-enabled": true,

"blocklist-url": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz",   <-- 블랙 리스트 데몬 실행후 사이트 접속후 갱신

"download-dir": "/media/exHDD/contents/Downloads",  <-- 외장하드 마운팅 한 경로

"ratio-limit": 0,

"ratio-limit-enabled": true,

"rpc-password": "passwd",

"rpc-username": "admin",

"rpc-whitelist-enabled": false,

"script-torrent-done-enabled": true,

"script-torrent-done-filename": "/home/osmc/script/torrent_push.sh",   <-- 다운로드가 완료 되었을시에 telegram 에 푸쉬 요청

"speed-limit-down": 8000,

"speed-limit-down-enabled": true,

"speed-limit-up": 10,

"speed-limit-up-enabled": true,



Ctrl+O, 엔터, Ctrl+X


sudo /etc/init.d/transmission-daemon start


시작 서비스 등록

sudo update-rc.d transmission-daemon defaults




■ telegram 비서 활용


텔레그램으로 토렌트랑 tvheadend 컨트롤을 하며 토렌트도 다운받기 위해서 사용하는 내용입니다.


2017/12/27 - [라즈베리파이3] - 라즈베리파이3 transmission (텔레그램 API 연동)

2017/12/27 - [라즈베리파이3] - 라즈베리파이3 transmission (토렌트 비서 사용하기)


실행은 파이썬으로 하기 때문에 설치가 또 필요 합니다.

먼저 첨부 파일을 받습니다.

telegram.zip


torrent_push.sh


telegram.zip 압축을 풉니다.


작업은 root 계정으로 작업하였습니다.


/home/osmc/ 경로에 풀고


cd /home/osmc/telegram


apt-get install -y python3 python3-pip netcat

pip3 install --upgrade setuptools

pip3 install wheel

pip3 install feedparser

pip3 install tzlocal

pip3 install -r pip-requirements.txt


설치 한줄 

apt-get install -y python3 python3-pip netcat && pip3 install --upgrade setuptools && pip3 install wheel && pip3 install feedparser && pip3 install tzlocal && pip3 install -r pip-requirements.txt



torrent_push.sh 와 telegram 에 setting.json 파일을 보시면 telegram API 정보를 입력해주세요


트렌스미션 데몬에 사용한 ID 와 패스워드도 같이 입력하신후


python3 telegram_torrent.py  로 실행 하시면


에러가 안나면은 텔레그램 어플을 이용해 확인 해보시면됩니다.


웹에서도 사용가능하니 해보시기 바랍니다.


rss 정보는 토렌트 킴에서 가져온 것이며


메뉴는

----------------------

토렌트 검색

토렌트 리스트

토렌트 데몬 관리

- 토렌트 데몬 stsrt

- 토렌트 데몬 stop

- 홈

TvHeadEnd 관리

- TvHeadEnd start

- TvHeadEnd stop

- EPG 채널 갱신

- 홈

서버 상태 확인

----------------------


이렇게 됩니다. 서버상태 확인은 토렌트하고 tvheadend 포트 확인해서 가동유무를 판단해주는 것입니다.


이제 텔레그램을 서비스에 등록해주셔야 합니다.


nano /etc/init.d/telegram

torrent_push.sh

-----------------------------------------

#!/bin/sh

### BEGIN INIT INFO

# Provides:          telegram

# Required-Start:    $network

# Required-Stop:     $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start/stop telegram

### END INIT INFO

 

case "$1" in

  start)

    python3 -u /home/osmc/telegram/telegram_torrent.py &

    echo "telegram Bot start"

    ;;

  stop)

    sudo kill $(ps -e | grep python3)

    echo "telegram Bot stop"

    ;;

  *)

    echo "Usage: /etc/init.d/telegram {start|stop}"

    exit 1

    ;;

esac

exit 0

------------------------------------------

Ctrl+O, 엔터, Ctrl+X


telegram


파일 첨부 했습니다.


osmc 계정에 권한 이동 밑 부여


sudo chown osmc:osmc /etc/init.d/telegram

sudo chmod 755 /etc/init.d/telegram


자동 시작 서비스 등록

sudo update-rc.d telegram defaults



사용법

sudo service telegram start

sudo service telegram stop





이제 작업은 거의다 끝났네요

대망의 작업은 코디 폰트 작업 입니다.

이거 바꾸는데 상당히 스트레스 더라구요

각각 폰드 경로 적어드립니다.


자막 폰트 경로

/usr/share/kodi/media/Fonts/ 


위 경로에 폰트를 넣으시면은 자막 폰드를 변경하실수 있습니다.


기븐 스킨 정보


◆ 스킨명 : estouchy

폰트 경로 : /usr/share/kodi/addons/skin.estouchy/fonts/

xml 경로  : /usr/share/kodi/addons/skin.estouchy/xml/Font.xml


◆ 스킨명 : estuary

폰트 경로 : /usr/share/kodi/addons/skin.estuary/fonts/

xml 경로  : /usr/share/kodi/addons/skin.estuary/xml/Font.xml


◆ 스킨명 : osmc

폰트 경로 : /usr/share/kodi/addons/skin.osmc/fonts/

xml 경로  : /usr/share/kodi/addons/skin.osmc/16x9/Font.xml




kodi 에서 신규로 설치한 스킨 경로

/home/osmc/.kodi/addons/

폰트 변경 작업

에디터 플러스나 notepad++ 로 font.xml 파일을 불러 옵니다.
PC 로 다운받아서 작업해야됩니다.
일괄 변경 할꺼니까요

정규식으로 폰트 변경할 건데요

찾아 바꾸기에서 검색어를
(<filename>.*)
위 처럼 입력하고
정규식 검색에 체크 해줍니다.

바꿀 내용에
<filename>폰트이름.ttf</filename> 이렇게 하고 전체 변경 해주시면 일괄 변경 됩니다.

그후에 파일만 교체 해주시면 되겠습니다.


kodi 에 사용 했던 에드온

https://github.com/hojel/xbmc-korea-addons/tree/master/download



ps. 이상 OSMC 풀 셋팅 방법 이였습니다.
     이걸 하면서 착오도 많이 있었고 오류도 생기고 했었는데 되긴 되네요 ..ㅎ
     그리고 kodi 에 무거운 스킨을 쓰면은 다운도 되고 합니다. 주의 하시기 바랍니다.


Posted by 타카스 류지
|

-& nano /home/pi/.config/lxsession/LXDE-pi/autostart



@kodi 추가



한줄코딩

echo "@kodi" >> /home/pi/.config/lxsession/LXDE-pi/autostart

Posted by 타카스 류지
|

ODROID에 Ubuntu MATE를 처음 설치했을 때 가장 짜증나는 부분이 있다.

바로 부팅시마다 발생되는 로그인 메세지인데, 매 번 해주어야 해서 엄청나게 귀찮다.

귀찮은 일을 하나 줄여보자.


먼저 해당 명령어를 입력하여 conf 파일을 수정하자

$ sudo nano /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf



Nano Editor가 실행되면서 간단한 명령어들이 입력되어 있다.

이를 다음과 같이 추가 혹은 수정해주자.

사용자의 이름을 “autologin-user=이름”과 같이 입력해주면 된다.

나의 경우에는 autologin-user=odroid로 입력해주었다.


[SeatDefaults]

greeter-session=lightdm-gtk-greeter

autologin-user=odroid



입력을 완료했다면 Ctrl + x 후에 y, Enter

정상적으로 변경되었을 것이다.

재부팅하면 짜증이 하나 줄게 된 걸 확인할 수 있다.


출처: http://minus-build.tistory.com/17 [It's Not My Business]




추가 한줄 명령 : echo "autologin-user=odroid" | sudo tee -a /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf


Posted by 타카스 류지
|

오드로이드 여러 곳을 들리면서 필요한 패키지등을 설치해보면서 정리해둔 내용 입니다.

참고만 하세욤 0-0

저는 mate 버전으로 설치해서 사용했습니다.


#########################################################################

# Defalut for Odroid                                                     

# https://dn.odroid.com/5422/ODROID-XU3/Ubuntu/ubuntu-16.04.3-4.9-mate-odroid-xu4-20171025.img.xz

# 오드로이드 초기 셋팅 mate-odroid-xu4

# 작업 계정 [root]

# 포트확인 netstat -tnlp

#########################################################################



# ■■■ 오류 덩어리 파이어 폭스 삭제


apt-get purge firefox* -y && apt-get autoremove -y


# ■■■ 전체 업데이트 && 의존성 검사하여 업그레이드


apt-get update && apt-get dist-upgrade -y


# ■■■ 완료 후 재부팅


reboot


# ■■■ 한글 셋팅


apt-get install language-pack-ko-base -y


update-locale LANG=ko_KR.UTF-8

echo 'LANG="ko_KR.UTF-8"' | sudo tee -a /etc/environment

echo 'LANGUAGE="ko_KR:ko:en_US:en"' | sudo tee -a /etc/environment

echo "TZ='Asia/Seoul'; export TZ" | sudo tee -a ~/.profile

echo "TZ='Asia/Seoul'; export TZ" | sudo tee -a /etc/skel/.profile


dpkg-reconfigure tzdata

Asia/Seoul 설정



# ■■■ 계정 추가


adduser [ID]


# ■■■ 관리자 권한 부여


usermod -G sudo [ID]


# ■■■ SSH root 접근 제한


nano /etc/ssh/sshd_config


PermitRootLogin yes -> no


service sshd restart





# ■■■ 외장 하드 마운팅



외장하드가 ntfs로 설정된 경우 ntfs 인식을 위해 ntfs-3g 설치

sudo apt-get install ntfs-3g


※ 참고로 파일시스템을 exfat을 쓰려면 아래와 같이 설치

sudo apt-get install exfat-fuse



mkdir /media/exHDD


chmod -R 777 /media/exHDD


blkid


/dev/sda5: UUID="01D395B80CF091D0" TYPE="ntfs" PARTUUID="04f839f0-05"


nano /etc/fstab


기본으로 할시 외장하드가 연결되어있지 안으면 부팅 에러 걸림

UUID=01D395B80CF091D0 /media/exHDD ntfs defaults 0 0


권장 내용

UUID=01D395B80CF091D0 /media/exHDD ntfs nofail,auto,noatime,rw,user 0 0





# ■■■ 웹서버 설치 [순서대로]


apt-get install apache2 mysql-server   <-- mysql 패스워드 설정화면 뜹니다.


add-apt-repository ppa:ondrej/php

apt-get update

apt-get install php5.6 php5.6-common php5.6-json libapache2-mod-php5.6 php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-xmlrpc php5.6-intl php5.6-imagick php5.6-zip php5.6-cgi

a2enmod php5.6

systemctl restart apache2





※ proxy 설정
경로
cd /etc/apache2/sites-available

nano vhost.conf

#기본 호스트 지정
<VirtualHost *:80>
ServerName 도메인
ServerAlias 도메인
DocumentRoot /var/www/html <- 도메인별 특정경로 지정 가능
</VirtualHost>

#프록시로 내부 포트 포워딩이 가능
#sub.도메인.kr 로 내부 포트 지정시 url 엔 도메인만 기준으로 표시됨
#트렌스미션 설치하고 접속시 셋팅법
<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ServerName torrent.도메인.kr
    ServerAlias torrent.도메인.kr
    ProxyPass / http://127.0.0.1:9091/ retry=1 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse / http://127.0.0.1:9091/
</VirtualHost>

파일 저장후 하단 내용 실행


a2enmod proxy

a2enmod proxy_http

a2enmod proxy_balancer

a2enmod lbmethod_byrequests

a2ensite vhost.conf



위처럼 proxy 설정을 하면 사용하면


http://IP:9091 로 접속을 안하고


http://torrent.도메인.kr 로 접속이 가능





# ■■■ webmin 설치(웹 관리 콘솔)


wget -O - http://www.webmin.com/jcameron-key.asc | apt-key add -

이나

wget http://www.webmin.com/jcameron-key.asc

apt-key add jcameron-key.asc


echo "deb http://download.webmin.com/download/repository sarge contrib" | sudo tee -a /etc/apt/sources.list

echo "deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" | sudo tee -a /etc/apt/sources.list

apt-get update

apt-get install webmin


nano /etc/apt/sources.list

위 추가한 2줄 주석


# webmin의 기본 Port가 10000이라서 ufw(우분투 방화벽)를 이용하여 10000번 포트를 열어줍니다.

# sudo ufw allow 10000 

# nano /etc/webmin/miniserv.conf

# port=10000

# //이하 라인은 생략


service webmin {start, stop, restart}


※ 한글 오류 수정

nano /usr/share/webmin/cron/module.info

or

nano /usr/share/webmin/cron/module.info.ko_KR.UTF-8


desc_ko_KR.UTF-8=예약된 Cron 작업 <-- 한글깨져있는 부분 수정


https://localhost:10000





# ■■■ SAMBA 설치(네트워크 공유)


apt-get install samba && samba-common-bin


※ samba 계정 지정[리눅스에 있는 계정만 추가 가능]

smbpasswd -a [ID]


나머지 설정은 webmin 에서 하는게 편함




# ■■■ 토렌트 설치 transmission-daemon


apt-get install transmission-daemon


정지

/etc/init.d/transmission-daemon stop


설정

nano /etc/transmission-daemon/settings.json


※중요한 부분


블랙 리스트
"blocklist-enabled": true, 
"blocklist-url": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz", 

다운로드 경로
"download-dir": "/media/exHDD/contents/Downloads", 

웹 활성화
"rpc-enabled": true, 

접근 화이트 리스트 끄기
"rpc-whitelist-enabled": false,
"rpc-username": "아이디", 
"rpc-password": "암호[자동암호화]",

다운로드 완료시 배포안하고 완료 처리
"ratio-limit": 0, 
"ratio-limit-enabled": true, 



다운로드 완료시 응답 스크립트

"script-torrent-done-enabled": true, 

"script-torrent-done-filename": "/home/root/script/torrent_push.sh", 


위 응답 스크립트는 밑에 게시글 참조

2017/12/26 - [라즈베리파이3] - API 텔레그램 토큰 생성

2017/12/27 - [라즈베리파이3] - 라즈베리파이3 transmission (텔레그램 API 연동)


다운로드 업로드 속도 설정

"speed-limit-down": 6000, 

"speed-limit-down-enabled": true, 

"speed-limit-up": 100, 

"speed-limit-up-enabled": true, 


다운로드 파일 권한 설정 

"umask": 2, 



시작
/etc/init.d/transmission-daemon start


서비스 등록
update-rc.d transmission-daemon defaults

시작
service transmission-daemon start


서비스를 등록하고 나중에 토렌트가 죽어있어 다시 시작하려고 할때 구동이 안되는 경우가 생깁니다.
이유는 못찾구요 -0- ;;; 실행방법만 다른데서 찾아서 올립니다.


나중에 구동시 에러가 나면 프로세스 죽이기
kill $(ps -ef | grep 'transmission-daemon -g /etc/transmission-daemon' | grep root |awk '/transmission-daemon/ {print $2}')

구동
transmission-daemon -g /etc/transmission-daemon






# ■■■ TvHeadEnd 설치


apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 

apt-add-repository ppa:mamarley/tvheadend-git-stable

apt-get update

apt-get install tvheadend


관리자 계정 패스워드 설정화면 출력 설정후 설치완료


http://localhost:9981


접속후 로그인하고 언어 Korean 으로 설정후 저장 닫기


계정 새로 추가하여 전체 권한을 다 부여하면은

한글 계정으로 전체 관리가 가능함..


1. 설정 - DVB 입력 - 네트워크

  네트워크 이름 : IPTV Automatic Network

  최대 # 입력 스트림 : 4

  URL : file:///home/root/pvr/iptv.m3u


2. 설정 - DVB 입력 - 먹스

  스캔상태가 유휴는 작업이 끝난 상태 

  진행 - 활성 - 유후 순

  헤더 오른쪽 서비스 구간 0 으로 되어있는 항목들을 정렬하여

  오른쪽 체크박스 TSID 값을 체크

  스캔상태를 활성으로 변경 - 저장

3. 설정 - 채널 / EPG - 채널

  모든 서비스 매핑

4. 설정 - 채널 / EPG - EPG 그래버

  채널 이름 업데이트 체크

  채널 번호 업데이트 체크

  저장

5. 설정 - 채널 / EPG - EPG 그래버 모듈

  외부 : XMLTV - 켜짐 체크, 우선순위 1, 채널번호(휴리스틱) 체크

  저장



※ tvheadend 등록한 채널 백업 후 이용시 권한 설정


백업폴더경로 /home/hts/.hts/tvheadend/

백업 폴더 : channel, epggrab, input


chown -R hts:video /home/hts/.hts/tvheadend/channel

chmod -R 700 /home/hts/.hts/tvheadend/channel

chmod -f 600 /home/hts/.hts/tvheadend/channel/*


chown -R hts:video /home/hts/.hts/tvheadend/epggrab

chmod -R 700 /home/hts/.hts/tvheadend/epggrab

chmod -Rf 600 /home/hts/.hts/tvheadend/epggrab/*

chmod -f 777 /home/hts/.hts/tvheadend/epggrab/xmltv.sock


chown -R hts:video /home/hts/.hts/tvheadend/input

chmod -R 700 /home/hts/.hts/tvheadend/input

chmod -Rf 600 /home/hts/.hts/tvheadend/input/*


재시작

service tvheadend restart







※ tvheadend 로 녹화가 완료된다음 인코딩 처리하는 부분 입니다.  속도는 느립니다. ㅎㄷㄷ

인코딩을 하실려면 x264, ffmpeg 설치가 되어있어야 합니다.

install-ffmpeg.sh


위 스크립트는 root 계정으로 실행하세요.

아마 30분 정도는 걸린걸로 기억합니다.


인코딩 스크립트 출처 : http://3jini.tistory.com/104


autoencoding.sh

autoencoding720mp4.sh


※ 녹화 설정
설정 - 녹화 - 디지털 비디오 녹화 프로필  화면으로 들어가면
(Default profile) 로 기본 프로필이 있습니다.
여기다가 하셔도되고 새로 추가하셔서 하셔도 됩니다.

녹화 전 여유 시간 : 2분
녹화 후 여유 시간 : 2분
후처리 명령 : /home/root/script/autoencoding720mp4.sh  "%f" "%b"
녹화할 시스템 경로입니다. : /media/exHDD/recording
문자 포맷 : $t/$t.E$e.%Y.%m.%d$-c%F.$n$x

------------------------- 부가 설명 -------------------------------
    autoencoding.sh 파일 수정할 내용
    5행     : TRANSCODEPATH='/media/exHDD/TVheadendRec/' - 녹화 된 파일 경로
    8행     : MKVVIDEO=$TRANSCODEPATH$title".H264.1080P.mkv" - ".H264.1080P.mkv"  원하는데로
              보통 mkv 확장자 형태, mp4, avi 등 사용 가능
    20행  : ffmpeg 

적당한 곳에 저장하고 터미널에서 실행권한 부여
    예) 메인저장소>Downloads폴더에 두었을 경우…
chmod +x /home/root/script/autoencoding.sh

tvheadend에서 Post-Processor Command(후처리 명령)이라고 있는 곳에 
    저장한 파일의 경로와 %f %b를 붙여주고 저장
    TVHeanend 설정>녹화중>디지털 비디오 녹화 프로필
    후처리 명령 할 autoencoding.sh 파일을 경로 포함해서 지정하고 "%f" "%b"를 붙임.
    /home/root/script/autoencoding.sh "%f" "%b" 스크립트가 있는 경로

    전체경로 이름지정 : 문자포멧 $t/$t.E$e.%Y.%m.%d.$n$x

    녹화할 시스템 경로 이 부분에는 녹화파일이 저장될 폴더를 지정
    /media/exHDD/TVheadendRec/
   파일 이름 옵션 에서는 윈도우 호환 파일 이름 사용, 날짜를 파일 이름에 포함 2개 항목에 체크
------------------------- 부가 설명 -------------------------------






# ■■■ Plex Server 설치

wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key | apt-key add -
이나
wget https://dev2day.de/pms/dev2day-pms.gpg.key
apt-key add dev2day-pms.gpg.key

echo "deb https://dev2day.de/pms/ jessie main" >> /etc/apt/sources.list
apt-get install apt-transport-https
apt-get update
apt-get install plexmediaserver-installer

nano /etc/apt/sources.list
위 추가한 1줄 주석


※ 국내 메타 데이터 설정

영화&드라마
https://github.com/axfree/DaumMovie.bundle
이나
https://github.com/hojel/DaumMovie.bundle

음악
https://github.com/hojel/NaverMusic.bundle


다운 받고
압축 파일을 /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins 풀어줌

영화&드라마
wget https://github.com/axfree/DaumMovie.bundle/archive/master.zip
mv master.zip DaumMovie.bundle.zip
unzip DaumMovie.bundle.zip -d /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/
음악
wget https://github.com/hojel/NaverMusic.bundle/archive/master.zip
mv master.zip NaverMusic.bundle.zip
unzip NaverMusic.bundle.zip -d /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/


이동
cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/

폴더 이름 변경

mv DaumMovie.bundle-master DaumMovie.bundle
mv NaverMusic.bundle-master NaverMusic.bundle

chown -R plex:nogroup DaumMovie.bundle
chown -R plex:nogroup NaverMusic.bundle

이나

chown -R plex:plex DaumMovie.bundle
chown -R plex:plex NaverMusic.bundle

service plexmediaserver restart

http://localhost:32400




# ■■■ Kodi 

자동실행 설정

nano /etc/rc.local

'fi' 와 'exit 0' 사이에 kodi & 입력 저장

mate-odroid-xu4 버전은 kodi 가 기본 설치 되어있음

애드온 플러그인 설치
https://github.com/hojel/xbmc-korea-addons
https://github.com/hojel/xbmc-korea-addons/archive/master.zip


파일을 다운 받아서 

kodi 에서 애드온 에서 설치하면됨






# ■■■ 예약작업 크론텝


crontab -e


# Edit this file to introduce tasks to be run by cron.

#TvHeadEnd

#0 4 * * * php /home/root/pvr/epg2xml.php

3 */12 * * * php /home/root/pvr/epg2xml.php



가끔 tvheadend 가 죽더라구요 그래서 자동 실행되게 넣어둔겁니다. 0-0

#TvHeadEnd Auto Start  

*/1 * * * * /home/root/script/tvheadend.sh


도메인 구입후 dnszi 에서 관리를 합니다. IP 자동 갱신 스크립트 합니다. ddclient 같은 개념이라 보시면 되겠네요

#dnszi.com domain ddns client

*/5 * * * * wget -q -O - '내용'













# ■■■■■■■■■■■■ 기본 명령어 ■■■■■■■■■■■■■■■ 

사용하면서 명령어가 가끔 기억안날때 봅니다. 0-0참고 하시면 괜찬아요



종료

shutdown -r now


재부팅

sudo reboot


시작

sudo /etc/init.d/ddclient start


스톱

sudo /etc/init.d/ddclient stop


재시작

sudo /etc/init.d/ddclient restart


디버그 테스트

sudo /usr/sbin/ddclient -daemon=300 -debug -verbose -noquiet


프로세스 킬

ps -ax or ps ax |grep ddclient

sudo kill -9 PID


패키지 설정 파일까지 삭제

sudo apt-get purge ddclient


패키지 목록을 갱신합니다.

apt-get update


모든 패키지를 최신 버전으로 업그레이드합니다.

apt-get upgrade


의존성 검사하여 업그레이드 합니다.

apt-get dist-upgrade -y


ddclient 패키지를 설치합니다.

apt-get install ddclient


ddclient 패키지를 재설치합니다.

apt-get --reinstall install ddclient


ddclient 패키지를 삭제합니다. 설정파일은 삭제하지 않습니다.

apt-get remove ddclient


ddclient 패키지를 삭제합니다. remove와 다르게 설정파일도 삭제합니다.

apt-get purge ddclient


패키지 검색은 apt-cache로 합니다.

ddclient를 포함한 패키지를 검색하려면 

apt-cache search ddclient




★퍼미션 권한


-$ sudo chmod [변경될 퍼미션값] [변경할 파일]


-$ sudo chmod 777 /home/pi/파일

-$ sudo chmod -R 777 /home/pi/디렉토리

-$ sudo chmod -R 777 conory /home/pi/디렉토리 

 ※conory - 디렉토리의 하위에 위치한 모든 파일및 디렉토리 퍼미션이 777로 변경




★소유자 변경하기


-$ chown [변경할 소유자] [변경할 파일,디렉토리]


-$ sudo chown pi /var/www


★그룹 변경하기


-$ chown [변경할 소유자] [변경할 파일,디렉토리]


-$ sudo chgrp pi /var/www



★소유자,그룹 변경하기


-$ chown [변경할 소유자]:[변경할 그룹] [변경할 파일,디렉토리]


-$ sudo chown pi:pi /var/www



-R 옵션을 사용하면 디렉토리와 그 안에 들어있는 모든 파일의 사용자를 변경한다.


-$ sudo chown -R pi /var/www





 ※파일 스크립트 실행권한 주기

-$ sudo chmod a+x /usr/script/torrent_push.sh

-$ sudo chmod 777 /usr/script/torrent_push.sh



★ 압축하기

tar cfvz 파일명.tgz 폴더경로/

tar cfvj 파일명.bz2 폴더경로



확장자 tar

tar -cvf [파일명.tar] [폴더명] 압축

tar -xvf [파일명.tar] -C 폴더경로 해제


확장자 tar.gz 

 tar -zcvf [파일명.tar.gz] [폴더명] 압축

 tar -zxvf [파일명.tar.gz] -C 폴더경로 해제



tar -cfvj [파일명.bz2] [폴더명] 압축

tar -xfvj 파일명.bz2 -C 폴더경로 해제



 -c 파일을 tar로 묶음

 -p 파일 권한을 저장

 -v 묶거나 파일을 풀 때 과정을 화면으로 출력

 -f 파일 이름을 지정

 -C 경로를 지정

 -x tar 압축을 풂

 -z gzip으로 압축하거나 해제함


# ■■■ 포트 확인


netstat -tnlp



Posted by 타카스 류지
|

출처 :  https://x86.co.kr/nas/1400182


Tvheadend 로 녹화후 자동 인코딩을 처리하는내용 입니다.


스크립트 파일은 위 해당 출처에서 받으시기 바랍니다.


여기에는 중요한 부분만 기록해둔것입니다.


---------------------------------------------------------------------------------------


    autoencoding.sh 파일 수정할 내용

    5행     : TRANSCODEPATH='/media/exHDD/TVheadendRec/' - 녹화 된 파일 경로

    8행     : MKVVIDEO=$TRANSCODEPATH$title".H264.1080P.mkv" - ".H264.1080P.mkv"  원하는데로

              보통 mkv 확장자 형태, mp4, avi 등 사용 가능

    20행  : ffmpeg 


적당한 곳에 저장하고 터미널에서 실행권한 부여

    예) 메인저장소>Downloads폴더에 두었을 경우…

chmod +x /home/root/script/autoencoding.sh


tvheadend에서 Post-Processor Command(후처리 명령)이라고 있는 곳에 

    저장한 파일의 경로와 %f %b를 붙여주고 저장

    TVHeanend 설정>녹화중>디지털 비디오 녹화 프로필

    후처리 명령 할 autoencoding.sh 파일을 경로 포함해서 지정하고 “%f” “%b”를 붙임.

    /home/root/script/autoencoding.sh “%f” “%b” 스크립트가 있는 경로

    녹화할 시스템 경로 이 부분에는 녹화파일이 저장될 폴더를 지정

    /media/exHDD/TVheadendRec/

   파일 이름 옵션 에서는 윈도우 호환 파일 이름 사용, 날짜를 파일 이름에 포함 2개 항목에 체크

Posted by 타카스 류지
|

서론


현재 본인은 이 블로그서버를 운영하며 친구들, 지인끼리 동영상공유로도 사용하고 있다. 문제가 있다면 코덱이 워낙 다양한탓에 HTML5로 재생이 안되던가 스마트폰으로 스트리밍으로 재생하기에는 너무 무거운 동영상들이 있다는 것이다. 보통은 해당영상을 다른버전으로 다운받아 해결하지만 그게 힘들경우 따로 인코딩을 하는데 지금부터 라즈베리파이에서 인코딩을 하는법을 소개하겠다.

하는것은 자유지만 미리 말해두자면 라즈베리 파이의 성능이 성능인만큼 꽤 느리다. 보통 0.12배속으로 인코딩이 진행되는데 24분짜리 영상 인코딩하는데 3~4시간정도 걸린다. (참고로 오드로이드 XU4의 경우 1.1배속정도 나온다.)(단점은 쿨러소리가 상당하다는점)

준비물


보통 대부분은 있지만 일부 배포판의경우 배포 용량을 줄이기위해 자주 빠지는 패키지들을 설치해주자. 설치가 되있다면 그냥 넘어가니 그냥 다음 명령어를 입력하자.

apt-get install git build-essential
1

FFMPEG설치하기

cd /usr/src
git clone git://git.videolan.org/x264
cd x264
./configure --host=arm-unknown-linux-gnueabi --enable-static
make -j4
sudo make install

cd /usr/src
git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
sudo ./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
make -j4
sudo make install
12345678910111213

다음을 스크립트**(.sh파일)**로 만들어서 루트권한으로 실행시켜주자. 전반부는 가장 많은 기기가 지원하는 H264코덱관련 라이브러리를 설치하는부분이고 후반은 ffmpeg를 설치하는 부분이다.

여기서 완성된 파일을 다운받을수도 있다.

시간이 꽤 걸린다. 켜놓고 딴짓하기 좋은 상황에서 실행하기를 권장한다.

오드로이드 XU4의경우 OpenCL(GPU가속)이 지원된다. 아직 인코딩에서 되는건 아니지만 후반부 ./configure할때 --enable-opencl옵션을 추가해주자.

인코딩하기


인코딩방법은 간단하다.

ffmpeg -i [입력파일] -vcodec libx264 [출력파일]

아니면 

ffmpeg -i [입력파일] -s 1280x720 -vcodec libx264 [출력파일]

과 같이해서 화면크기를 다르게 하던가

ffmpeg -i [입력파일] -s 1280x720 -threads 1 -vcodec libx264 [출력파일]

과 같이해서 단일스레드로 인코딩을 진행시킬수도 있다.

옵션은 여러가지가 있으며 각자 자신이 원하는 설정에 맞춰 진행하도록 하자.
일반적으로 이정도 설정이면 핸드폰이나 웹브라우저에서 감상하는데 지장은 없다. (오디오쪽은 불확실)


심슨이나 영드같은 하나의 세트로 구성되있는 영상의경우 이 명령어는 한번에 하나씩밖에 못하며 그나마도 한번 입력하면 최소 4시간뒤에 다시 입력해줘야한다..... (수면중 인코딩은 꿈건너 얘기)

그런분들을 위해 간단한 스크립트를 소개한다.

mkdir bak
mkdir tmp
for i in *.avi; do
 echo "$i"
 ffmpeg -i "$i" -vcodec libx264 "./tmp/$i"
 mv "$i" "./bak/$i"
 mv "./tmp/$i" "$i"
done
12345678

이 스크립트를 소개하자면 이 sh파일을 실행시킨 경로에서 모든 avi파일을 찾아낸뒤 tmp폴더에 인코딩 결과물을 생성하고 인코딩이 완료됬을때 기존파일은 bak폴더로, 인코딩된 파일을 원래위치로 옮겨주는 스크립트이다. 각자 상황에 맞게 수정해서 사용하자.

사용예시


encode.sh위 스크립트내용이 그대로 들어가있는 파일이다. 영상이 있는 장소에서 다음과 같이 명령어를 사용하면된다.

덤2


참고로 본인은 이렇게 사용하고 있다.

사람없을때는 ODROID XU4가 엄청나게 시끄러운 소음을 내며 인코딩 사람 있을때는 RASPBERRYPI2에 전원을 공급하고 NFS로 ODROID XU4의 영상파일에 접근해 영상 인코딩.


출처 : https://blog.iwanhae.ga/pi-ffmpeg/

Posted by 타카스 류지
|


외장하드가 ntfs로 설정된 경우 ntfs 인식을 위해 ntfs-3g 설치

-$ sudo apt-get install ntfs-3g


※ 참고로 파일시스템을 exfat을 쓰려면 아래와 같이 설치

-$ sudo apt-get install exfat-fuse



폴더 생성

mkdir /media/externalHdd


권한설정

chmod -R 777 /media/externalHdd


UUID 를 알아야 합니다. 

-$ blkid


/dev/mmcblk1: PTUUID="3cedfd53" PTTYPE="dos"

/dev/mmcblk1p1: SEC_TYPE="msdos" LABEL="boot" UUID="52AA-6867" TYPE="vfat" PARTUUID="3cedfd53-01"

/dev/mmcblk1p2: LABEL="rootfs" UUID="e139ce78-9841-40fe-8823-96a304a09859" TYPE="ext4" PARTUUID="3cedfd53-02"

/dev/sda5: UUID="01D395B80CF091D0" TYPE="ntfs" PARTUUID="04f839f0-05"



위 빨간 색을 사용할 겁니다.


nano /etc/fstab


맨 밑줄이 아래 내용 추가

UUID="01D395B80CF091D0" /media/externalHdd ntfs defaults 0 0


위 처럼 사용시 외장하드가 분리가 되면 부팅이 안되는 현상이 생김

그래서 아래 처럼 수정 하고 부팅시 외장하드가 분리되어있어도 문제 없이 부팅이 됩니다.

UUID="01D395B80CF091D0" /media/externalHdd ntfs nofail,auto,noatime,rw,user 0 0



Posted by 타카스 류지
|

사용 버전 ; https://dn.odroid.com/5422/ODROID-XU3/Ubuntu/ubuntu-16.04.3-4.9-minimal-odroid-xu4-20170824.img.xz


오드로이드를 사고나서 웹서버 설치를 할려는데 PHP 가 문제가 발생...


문제점은 16.04 이전 버전에서는 php5 가 잘 설치되지만 16.04 버전부터 php7 을 지원해서


기본 설치시 apt-get install php 로 설치를 해야됨


하지만 저는 5버전을 사용해야기에 좀 찾아봤습니다.



먼저 apache2 + mysql 설치


-$ apt-get install apache2 mysql-server


설치중 mysql 패스워드를 입력하라고 뜨면 입력



-$ add-apt-repository ppa:ondrej/php

-$ apt-get update

-$ apt-get install php5.6 php5.6-common php5.6-json libapache2-mod-php5.6 php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-xmlrpc php5.6-intl php5.6-imagick php5.6-zip php5.6-cgi

-$ a2dismod php7.0  <--  php 처음 설치자는 안해도됨(안깔려있으니까요)

-$ a2enmod php5.6

-$ systemctl restart apache2



완료

Posted by 타카스 류지
|


apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 


Ubuntu PPA 설치 법

apt-add-repository ppa:mamarley/tvheadend-git-stable


apt-get update

apt-get install tvheadend


http://IP:9981



Posted by 타카스 류지
|

NAS에는 굉장히 많은 활용 방법이 있지만, 무엇보다 가장 와닿는 것 중 하나는 DLNA가 아닐까 생각합니다. 

DLNA의 원래 의미는 그냥 소니가 만든 비영리 단체같습니다. Digital Living Network Alliance 거든요. 디지털 가전 네트워크 단체 뭐 이런 의미인가요? 집 안의 디지털 가전 기기들을 네트워크로 연결시키는데 표준이나 규약 등을 제시/제공하는 비영리 단체라고 볼 수 있겠네요.

실제로 DLNA에서 활동하는 여러 어마어마한 기업들도 많아서, 많은 기업들이 다같이 꾸려나가는 느낌입니다. 내 컴퓨터에 있는 미디어를 집 안의 재생가능한 모든 기기에서 볼 수 있다는 거에요. Web, FTP, WebDAV같은 방법이 아니라, 목적이 뚜렷한 거죠. 

막 생기기 시작했을 땐 회사마다도 프로토콜이 중구난방이었던 것 같지만, 지금은 어느 정도 통일이 된 느낌이라고 하네요. 기성 NAS 회사(시놀로지, ipTIME, WD, Qnap 등등)에서도 전부 기본적으로 제공하는 서비스입니다.

자작 NAS에서도 가능합니다. 오히려 기성 NAS가 제공하는 것보다 더 좋을 수 있어요. 써드 파티 프로그램의 매력이죠. Serviio를 이용해 거실 TV로 영화 한 편 때리러 갑시다.


* 사실 Plex Media Server를 설치하셨으면 이미 DLNA를 사용하실 수 있습니다. 트랜스코딩도 되구요(Serviio도 되지만..). 그러나 제 오드로이드 NAS에선 Plex DLNA로 미디어를 돌리는 게 한계가 있더라구요. 1080p 이면서도 비트레이트가 10000 단위를 넘어가는 굉장히 좋은 화질의 영상은 종종 끊깁니다. 720p는 부드러워요. 하지만 Serviio는 모두 다 부드럽게 돌아갑니다. 참고하세요.




0. SSH 접속 필수

모든 건 터미널 환경에서 이뤄집니다. 오드로이드에서도 OMV나 Ubuntu나 상관이 없어요. 그래서 SSH 연결이 필수이고, 기본적인 지식은 갖고 가셔야 합니다.

리눅스에 대해서 잘 모르시는 분들은 2017/08/01 - [오드로이드 XU4/Misc] - NAS 기본 지식 - 리눅스

다만 OMV, Ubuntu 같은 Debian 계열에서만 설명을 드리도록 하겠습니다. CentOS, Fedora 들에서도 큰 차이는 없을 거에요.

SSH 로 접속하고 진행합니다. 전체적인 가이드는 Serviio Wiki 를 따릅니다.



1. Serviio

1) 설치

먼저 Serviio를 설치해봅시다. Serviio는 개인 저장소(PPA)로 제공되지 않습니다. wget으로 다운 받아다가 압축 풀고 그래야 해요. 조금 귀찮지만, 금방 합니다. 

아래 명령어를 통해 Serviio 를 다운받겠습니다.

먼저 필수 패키지들을 설치합니다. Plex 등을 사용하신다면 이미 설치가 되어 있을 수 있습니다.

# OMV(Debian)에서 자바를 설치하기 위해 저장소를 추가하는 작업입니다.
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886

# Ubuntu를 쓰시는 분들은
add-apt-repository ppa:webupd8team/java

# 그리고 필수 패키지들을 설치합니다.
apt-get update && apt-get install -y ffmpeg dcraw oracle-java8-installer oracle-java8-set-default
Bash

그리고 Serviio에서 제시하는 방법으로 쭉 설치를 해줍니다. 지금 버전에 맞게 조금 바꿨습니다.

useradd -r -s /bin/false serviio
mkdir -p /opt
cd /opt
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
tar zxvf serviio-1.9-linux.tar.gz
rm serviio-1.9-linux.tar.gz
ln -s serviio-1.9 serviio
chown -R root:root serviio-1.9
cd serviio-1.9
mkdir log
chown -R serviio:serviio library log
Bash

Serviio를 서비스로 등록해 NAS가 재부팅이 되더라도 자동으로 시작하게끔 해줍시다. 새로운 파일을 만듭시다. 리눅스에서 텍스트 에디터를 처음 사용하시는 분들은 nano를 사용해주세요.

# vi /etc/systemd/system/serviio.service
nano /etc/systemd/system/serviio.service
Bash

화면이 바뀌면 아래 내용을 복붙합니다.

[Unit]
Description=Serviio Media Server
After=syslog.target local-fs.target network.target

[Service]
Type=simple
User=serviio
Group=serviio
ExecStart=/opt/serviio/bin/serviio.sh
ExecStop=/opt/serviio/bin/serviio.sh -stop
KillMode=none
Restart=on-abort

[Install]
WantedBy=multi-user.target
Bash

CTRL + x, y, [엔터] 를 순서대로 누릅니다.

새로 만든 서비스가 제대로 동작하도록 시스템에 등록합니다.

systemctl daemon-reload
systemctl enable serviio
service serviio start
Bash

설치가 완료되었습니다 :)


2) 미디어 설정

Serviio 도 웹에서 설정을 만지작하실 수 있습니다. NAS IP를 아신다면 웹에서

http://{NAS IP}:23423/console

로 접속해보세요. 그럼,

이런 화면이 뜹니다. 아주 설치가 잘 되신 겁니다. PRO 버전이고 2주 뒤 만료라는데 상관 없습니다. 공짜로도 너무 서비스가 좋아요.

아무튼 미디어를 추가하기 위해 Library - Shared folders 메뉴로 가보겠습니다.

벌써부터 뭔가 될 것 같습니다. 여기서 가운데 Add 버튼을 눌러줍시다.

새로운 폴더를 추가할 수 있게 바뀝니다. 추가해봅시다. 미디어 파일 경로만 간단하게 추가해주는 겁니다.

Browse 버튼을 눌러 미디어 폴더를 탐색합시다.

찾았어요.

선택하신 뒤 아래 OK버튼을 누르고, 또 빨간 OK버튼을 누르시면,

추가한 경로가 위에 보이고 아래엔 빨간 Save 버튼이 있습니다. 누릅시다. 

끝났습니다.


3) 활용

TV를 카메라로 찍고 이렇게 보여드리는 건 좀 그래서, Serviio PRO 판에서만 지원하는 MediaBrowser를 통해 확인해보겠습니다. 스마트폰이나 DLNA를 지원하는 TV 등에서도 같은 공유기에 물려있다면 전부 잘 될 거에요.

먼저 Remote 메뉴에서 암호를 적절히 설정하신 뒤 MediaBrowser로 갑니다.

로그인하면,

음악, 사진, 영상 중에서 고르래요. 영상이 들어있는 경로를 설정했으니 가봅시다.

Folders로 가볼게요, 전 폴더로 정리하는 타입이라 :)

잘 나오네요 :) 눌러보니 재생도 잘 됩니다.

TV 등에서도 이런 형식으로 들어가서 영상을 선택하실 겁니다 :)

Serviio console 에서 보셨듯 여러가지 설정이 있으니 입맛대로 설정해서 사용하세요.


출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|

웹 접속 보안은 SSL이 최곱니다. SSL 인증서는 보통 무료로 받기 어려운 점이 있었는데, LetsEncrypt 는 무료로 굉장히 쉽게 발급받고 갱신할 수 있도록 해줍니다. 바로 적용하러 갑시다.


 170505 h5ai에 SSL 적용 시 스트리밍에 문제가 생기네요. 첫 영상은 부드럽게 켜지는데 두 번째부턴 잘 안 되는 문제입니다. 스트리밍에 대한 SSL 설정 관련 문제인 것 같은데, 알아보고 해결책을 찾으면 업데이트하도록 하겠습니다.




1. Certbot 설치

 리눅스 패키지용 LetsEncrypt는 Certbot입니다. 저장소를 추가하고, 설치합니다.

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update && sudo apt-get install certbot


2. Nginx 설정 변경

 SSL 인증서를 얻기 위해 Nginx 설정을 변경해줘야 합니다. 인증서를 얻을 때 도메인을 적는데, Certbot에서 해당 도메인에 해당하는 서버 내 디렉토리에 특정 파일을 만들고 외부에서 접근해 봄으로써 유효한 주소인 지 판단하는 거라고 합니다. Nginx에서 적절한 설정을 넣어주지 않으면 해당 작업이 불가능하니, SSL 접속이 필요한 각 사이트 설정 파일마다 추가해줍니다. 

sudo vi /etc/nginx/sites-available/wordpress

 server 블록이 끝나기 전 아래 내용을 추가해줍니다.

location ~ /.well-known {
    allow all;
}
nginx

 참고로 이전 포스팅에서 nas 페이지 접근 제어를 위해 .htpasswd를 적용하셨던 분들은, 꼭 설정 파일에서 해당 부분 앞에 주석(#) 표시를 해주세요.

 그리고 Nginx 를 다시 로드합니다.

sudo service nginx reload


3. SSL 인증서 얻기

 Certbot을 통해 SSL 인증서를 얻기 위해선 다음 명령어가 필요합니다.

sudo certbot certonly --webroot -w {디렉토리} -d {도메인}

 해당 코드를 기반으로 수정하시면 됩니다. 디렉토리에 해당하는 도메인을 적어주셔야 합니다.

 이메일과 약관 동의를 묻고, 다 대답했다면 아래 느낌으로 완료됐다고 합니다.

:~$ sudo certbot certonly --webroot -w /var/www/html/wordpress -d blog.awesometic.kro.kr
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for blog.awesometic.kro.kr
Using the webroot path /var/www/html/wordpress for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0001_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0001_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/blog.awesometic.kro.kr/fullchain.pem. Your
   cert will expire on 2017-07-31. To obtain a new or tweaked version
   of this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Bash

 잘 봐둡시다.


4. Diffie-Hellman 키 생성

 더욱 좋은 보안을 위해선 해당 키를 생성해 사용하는 것이 좋다고 합니다.

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 조금 기다리시면 /etc/ssl/certs/dhparam.pem 이란 파일이 생성됩니다.


5. SSL을 위한 Nginx 설정

5.1 강력한 SSL 설정을 위한 snippet 생성

 먼저 /etc/nginx/snippets/ssl-params.conf 를 생성해줍시다.

sudo vi /etc/nginx/snippets/ssl-params.conf

 다음 내용을 넣은 뒤 저장합니다.

# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;
Xxx

 그리고 SSL을 적용할 사이트에 대한 snippet을 만들어 줍시다. 

 ssl-blog.awesometic.kro.kr.conf 란 이름으로 만들겠습니다.

sudo vi /etc/nginx/snippets/ssl-blog.awesometic.kro.kr.conf

 다음 내용이 들어갑니다.

ssl_certificate /etc/letsencrypt/live/blog.awesometic.kro.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.awesometic.kro.kr/privkey.pem;
Xxx

 blog.awesometic.kro.kr 부분에 원하는 주소를 넣으시면 됩니다.


5.2 Nginx 설정 파일 수정

 그리고 해당 웹 사이트 설정 파일을 수정해줍시다.

sudo vi /etc/nginx/sites-available/wordpress

 전 다음과 같이 되겠습니다. 여러가지 시행착오를 거친 설정 파일입니다. 수정하기 전 기존 파일 내용과 비교하면서, 참고해 수정해주세요. default_server는 안 해주셔도 됩니다. 해당 사이트가 제 Nginx에 대한 기본 사이트라는 걸 설정합니다.

server {
    # 80번 포트(일반 HTTP)로 접속 시에도 SSL인 443포트로 이동시켜 줍니다.
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name blog.awesometic.kro.kr;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    # blog.awesometic.kro.kr 부분을 자신의 도메인에 맞게 수정하세요
    include snippets/ssl-blog.awesometic.kro.kr.conf;
    include snippets/ssl-params.conf;

    root /var/www/html/wordpress;

    server_name blog.awesometic.kro.kr;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

	location / {
		index index.php;
        try_files $uri $uri/ /index.php$is_args$args;
	}

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
 
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /.well-known {
        allow all;
    }
}
nginx

 Nginx를 다시 로드합니다.

sudo nginx reload

 SSL이 적용된 사이트로 접속한 결과입니다. 워드프레스의 경우 블로그 주소와 사이트 주소에 http:// 대신 https:// 로 바꾸어 주세요.


6. 인증서 자동 갱신

 cron을 이용해 자동으로 갱신해줄 수 있습니다. Let's Encrypt 인증서는 3개월만 유지되고, 만료 30일 이내에 갱신할 수 있습니다.

sudo crontab -e

 처음 crontab을 열었으니 무슨 에디터를 사용할 건지 묻습니다. 편한 걸로 설정해줍니다.

 그리고 아래 명령어를 넣어줍시다.

0 4 1 * * /bin/bash -l -c certbot renew --no-self-upgrade

 매월 1일 새벽 4시에 certbot renew --no-self-upgrade 명령어를 실행할 겁니다.


(옵션) SSL 보고서, 최종 등급 확인

https://www.ssllabs.com/ssltest/analyze.html?d={SSL 적용한 자신의 사이트}




 워드프레스 사이트에 대해서만 진행했는데, NAS나 다른 사이트들도 비슷하게 진행하시면 됩니다.


참고 사이트:
a. https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
b. https://certbot.eff.org/all-instructions/
c. http://riseshia.github.io/2016/10/16/certbot-let-s-encrypt.html






출처 : http://awesometic.tistory.com/19?category=964086

Posted by 타카스 류지
|