목적


 - DLNA를 사용한 가정용 홈미디어서버 : 스마트TV, 스마트폰, 태블릿, PS3등 다양한 기기에서 액세스 가능한 멀티미디어 서버

 - Transmission을 사용한 토렌트 서버 : 위 홈미디어에서 볼 동영상 등 자료의 다운로드용

 - VSFTP를 사용한 FTP 서버 : 저장된 멀티미디어 자료들을 외부에서도 액세스 가능하게

 - CUPS를 사용한 프린터 서버 : 스마트폰과 태블릿에서 언제든지 무선으로 프린트가 가능

 - Nginx를 사용한 웹 서버 : MySQL과 워드프레스를 사용한 웹사이트 구축



기본 설정 및 준비


1. 라즈베리파이 준비


 - 본체, 유전원 USB 허브, 외장하드, SD카드, 모니터, HDMI 케이블, 마우스, 키보드(USB 동글 1개로 둘다 접속되는 세트가 좋음), 랜선, 공유기

 - 전원 스위치가 따로 없고 USB 케이블이 연결되면 바로 전원이 켜지므로 주의. 우선은 PC쪽에서 운영체제 설치를 준비한다.

 - http://www.raspberrypi.org 접속 > DOWNLOADS > RASPBIAN 다운로드

 - 윈도우라면 Win32 Disk Imager를, 맥OS라면 Raspberry-PI-SD-Installer-OS-X-master를 다운로드하여 설치(http://echo.tistory.com/34 참고)

 - 이 프로그램들을 사용하여 아까 다운로드받은 RASPBIAN을 SD 카드에 복사

 - 복사된 SD카드를 본체의 SD슬롯에 꽂고 모니터, 마우스/키보드, USB 케이블을 연결. 전원이 켜진다

 - raspi-config를 이용한 기본세팅을 해준다. 파일 시스템 확장, 유저 패스워드 변경, 한글 키보드 세팅 등을 해준다. 특히 터미널 환경의 한글 관련 세팅은 이 부분에서 하게 되므로 유의.

 - 모든 텍스트 편집은 nano를 이용한다. 웹 강좌에는 vi를 이용하는 예제도 많이 나와 있으나 nano로 대신해도 전혀 문제가 없다.


2. 인터넷 연결 및 포트 포워딩, DDNS 사용


 - 랜선이 연결되면 ip주소가 할당되고 인터넷을 사용할 수 있게 된다.

 - 기본 설정은 DHCP로 가변 ip 접속이 되나, 다양한 설정을 하거나 외부에서 원격접속을 하는 데에 불편하므로 내부 ip를 고정으로 설정하도록 한다.

   (http://withcoding.com/46 참고)

 - 다른 윈도우 PC에서 192.168.0.1(공유기 설정화면)에 접속한 뒤 NAT/라우터 관리 > 포트포워드 설정 으로 간다.

 - 위쪽란의 '규칙이름'에 원하는 접속의 이름, '내부 ip 주소'에 위에서 고정으로 설정한 라즈베리 파이의 내부 ip 주소를 입력한다.

 - 아래의 프로토콜에서 '외부 포트'는 앞으로 외부에서 접속할 때 사용할 포트(임의대로 설정함, 보통 80부터 시작해서 증가시키게 되지만, 80포트는 일반적으로 포트를 생략할 때의 기본 포트로 지정되므로 빼고 지정하는 것이 좋다)를 지정한다. 옆에 있는 '내부 포트'는 해당 외부 포트로 접속했을 때 집안 공유망 내부에서 접속될 내부의 ip포트를 설정한다. 쉽게 말해서 집 밖에서 안으로 들어올 때 밖에서 여는 문과 안에서 열리는 문이라고 생각하면 된다. 일단은 이런게 있다는 것만 알아두고 넘어간다.

 - 외부에서 집의 라즈베리 파이에 접속할 경우 공유기의 외부 ip 주소를 이용해 접속하게 되는데, 이것도 항상 가변이며 숫자 ip이므로 외부에서 접속하기가 불편하다. iptime 공유기를 사용할 경우 임의대로 받을 수 있는 DNS 도메인이 있어 이것으로 외부 ip를 대신할 수 있다. 굉장히 편리하므로 받아두는 것이 좋다. 메뉴의 고급 설정 > 특수 기능 > DDNS 설정 으로 가서 '호스트 이름'에 원하는 도메인 이름, '사용자 ID'에 원하는 ID, '사용자 암호'에 원하는 암호를 각각 설정하고 추가 버튼을 누른 뒤 아래의 '접속 상태'가 '정상 등록'으로 나오면 OK.


3. 윈도우에서 원격 접속 가능하게 하기


 - xrdp 설치 후 윈도우에서 원격 데스크탑 연결을 사용 (http://www.rasplay.org/?p=2571 참고)

 - 맥에서 원격 접속을 할 경우 맥 앱스토어에서 Microsoft Remote Desktop 앱을 찾아 설치해 사용한다.

 - 같은 공유기의 내부 네트워크에서 접속할 경우 접속이 잘 되나 외부에서 DDNS URL을 사용해 접속하려 할 때에는 원격 데스크탑 전용 포트를 이용해야 한다. 외부 ip는 원하는 ip를 지정하고, 내부 ip는 3389로 설정하면 외부에서도 DDNS URL을 이용해 원격 접속이 가능해진다.


4. X-window 관련


 - 커맨드라인에서 startx를 치면 X-윈도우가 뜬다. 기본적으로는 윈도우 사용법과 크게 다르지 않다. 

 - 커맨드라인에서 sudo su -를 치면 루트권한으로 변경된다. X-윈도우는 루트계정으로 시작했을 때와 일반사용자 계정으로 시작했을 때 약간씩 다르므로 주의.

 - 막 설치한 상태에서는 X-윈도우에서 한글 입력이 불가능하므로 iBus라는 IME를 깔아주어야 한다. (http://www.rasplay.org/?p=3786 참고)

 - X-윈도우에 기본내장된 미도리 브라우저는 상당히 느리고 무거우며 탭 브라우징도 불가능하므로, 에피파니 등의 더 나은 브라우저를 설치해 사용한다. (http://www.itworld.co.kr/news/89324, https://www.raspberrypi.org/web-browser-released/ 참고)

 - 보통 일반적인 모니터에 라즈비안을 깔았을 경우 화면 둘레에 검은 사각형 테두리가 보인다. 이 테두리를 없애고 화면을 꽉 차게 만들 수 있다. http://www.webtechgadgetry.com/2013/12/make-raspberry-pi-use-full-resolution-monitor/ 를 참고하여, /boot/config.txt 파일 안에서 모든 overscan_ 명령 앞에 #를 붙여 주석처리하고, disable_overscan=1 로 지정한다. 재부팅하면 테두리가 없어진다.


5. 외장하드 인식시키기


 - 라즈비안은 외장하드를 접속시켜도 바로 폴더로 인식되지 않는다. 접속된 외장하드는 라즈비안의 파일 시스템에 있는 폴더 중의 하나로 마운트시켜서 사용하게 된다.

 - 윈도우에서 사용하고 있던 외장하드는 보통 NTFS 파일시스템을 사용하나, 라즈비안의 기본 파일시스템은 FAT32이므로 그냥은 NTFS 하드를 읽을 수 없다. sudo apt-get install ntfs-3g 명령을 사용해 NTFS 파일 시스템 지원을 설치한다.

 - 외장하드를 마운트시킬 폴더를 mkdir 명령으로 미리 만들어둔다.

 - 이후에는 blkid 명령으로 연결된 USB 장비를 확인해서 UUID와 타입을 메모해둔다.

 - /etc/fstab 파일을 열어서 부팅될 때마다 자동으로 해당 장비가 원하는 폴더에 마운트되도록 설정한다. (http://www.berrycracker.net/archives/747 참고)



프로그램들 설치 및 설정


1. SAMBA 설치


 - http://webcreate.tistory.com/301 참고


2. VSFTP 설치


 - http://jonghyunkim816.blogspot.kr/2014/01/ftp.html 를 참고하여 설치

 - FTP 서버는 기본적으로는 내부 포트 21번을 사용하므로, 포트 포워딩으로 원하는 외부 포트에 내부 포트 21번을 대응시키면 외부에서도 ftp://DDNS도메인:외부포트 로 접속할 수 있다. DICE플레이어 등의 FTP 서버 연결을 지원하는 미디어 플레이어도 이 주소를 입력해서 사용 가능하다.

 

3. DLNA 서버 설정 


 - http://www.htpcguides.com/install-readymedia-minidlna-1-1-4-raspberry-pi/ 참고

 - minidlna server 패키지 설치 : sudo apt-get install minidlna

 - 미디어 파일을 새로운 폴더에 넣을 경우 mkdir 명령으로 폴더 생성 > chmod로 폴더 권한을 777로 설정

 - 환경설정 : /etc/minidlna.conf 파일 편집

 - 윗단계에서 새로 만든 폴더를 사용할 경우 해당 폴더를 지정하고, 외장하드를 마운트시킨 폴더를 사용할 경우 마운트시킨 폴더명을 지정한다

 - 미디어 폴더를 여러 개 지정(2개 이상의 외장하드를 연결)하고 싶을 경우 단순히 media_dir=폴더명 명령을 여러줄 주면 된다. 1.1.4 버전을 설치했는지 확인하자.

 - minidlna.conf 파일의 가장 윗부분에 DLNA 서버가 사용할 내부 포트의 설정 항목이 있다. 보통은 기본으로 설정된 8200 포트를 사용해도 무방하다.

 - 다른 PC에서 웹브라우저를 띄우고 라즈베리 파이의 고정 ip:8200(기본설정 포트)를 치면 DLNA 서버의 현황이 표시된다.

 - 외부에서 위 DLNA 현황을 보고 싶을 경우, 포트포워드에 내부포트 80 <--> 외부포트 8200을 설정해준 뒤, 외부에서 DDNS 도메인:80을 치면 해당 화면이 보이게 된다.

 - 같은 공유기에 물려 있는 디바이스는 이제 전부 DLNA 서버의 미디어 공유가 가능해진다.

 - 글 편집 시점에서 각 디바이스에 가장 추천할만한 DLNA 어플리케이션은 다음과 같다.

   iOS : OPlayer Lite(무료), MediaConnect(무료), VidOn Player(무료)

   Android : BubbleUPnP, DicePlayer, ES파일탐색기 + MX플레이어(전부 무료)

 - 4K 영상은 LG 스마트 TV에서 miniDLNA로 재생이 불가능한 것을 확인

 - 보통은 위 블로그의 설치방법에 나온대로 따라하고 inotify 등을 수정해주면 자동적으로 DB 갱신이 잘 되나, 가끔 오류로 갱신이 안될 경우가 있다. 이럴 때에는 /var/cache/minidlna/ 에 있는 files.db 파일을 지워주고 minidlna 서비스를 재실행해주면 DB를 새로 만들게 된다. 

 - miniDLNA는 라즈베리 파이의 전원이 꺼지거나, 하드디스크가 분리되면 전체 미디어를 전부 새로 스캔해서 DB를 완전히 다시 만드는데, 라즈베리 파이는 처리속도와 파일복사 속도가 그리 빠르지 않아서 이 미디어 스캔이 상당히 시간이 걸린다. 이 스캔이 완료되기까지는 제대로 미디어 파일을 감상할 수 없으므로 불편하다. 이것을 개선하려면 fastscan을 사용한다. 명령 프롬프트를 띄우고 다음과 같이 입력한다. 재스캔 속도가 10배 정도 빨라진다고 한다.


 git clone https://code.google.com/p/minidlna-fastscan/

 cd minidlna-fastscan/

 ./configure

 make


 - miniDLNA 서버를 이용해 영상을 감상할 때, mkv 파일 중에 다중 자막이나 다중 오디오 트랙이 내장되어 있는 경우 스마트 TV에서 내장 자막을 우선하여 외부 자막을 읽어오지 못하거나, 오디오 트랙 중 원하지 않는 외국어 트랙을 재생하고 원하는 오디오 트랙을 재생하지 못하는 경우가 있다. 이럴때는 mkv 파일을 수정해서 내장 자막이나 오디오 트랙을 삭제하는게 가장 속편하다. mkvmerge (구버전)나 mkvtoolnix 등의 툴을 사용해서 삭제한 mkv 파일을 새로 만든다. 특히 mkvtoolnix는 여러 편으로 이어진 드라마 등을 한번에 작업 등록해서 빠르게 처리하는 것이 가능하므로 이쪽을 추천한다. 이 툴은 리눅스 버전도 있어서 라즈베리 파이 상에서 apt-get으로 설치해서 쓸 수도 있지만 기본적으로 영상을 새로 생성하는 처리인만큼 라즈베리 파이에서 하지 말고 데스크탑에서 한번에 빠르게 처리하는 것이 낫다.



 Ctrl + N 키를 눌러 새 작업을 만든 뒤 Alt + A나 아래쪽의 Add files 버튼을 눌러 영상을 불러온다. 내장 자막이나 오디오 트랙의 제거를 할 때에는 하나의 작업 당 하나의 영상 파일만 불러오도록 한다.


 


 영상이 로딩되면 위 그림과 같이 아래에 해당 영상 안에 포함된 트랙들이 보이게 된다. Type과 Language 부분을 확인해서, 필요없는 부분(위 예제에서는 영문 음성과 자막을 선택했다) 을 고르고 오른쪽 위의 Mux this track 부분을 no로 선택해주면 지우는 것이 된다.


 


 원하는 트랙을 뺐으면 위의 Output 탭을 선택하고




 Output file 부분에서 저장될 경로와 파일명을 지정해준 뒤 아래의 Start muxing 버튼을 눌러주면 작업이 등록된다. 자막/트랙제거작업을 할 다른 파일을 더 추가하려면 마찬가지로 새 작업 추가 단계부터 반복하면 된다.




 왼쪽의 Job queue 버튼을 누르면 현재 등록된 작업들과 그 진행 상태를 볼 수 있다.



4. Transmission 설치


 - http://dovetail.tistory.com/15 참고

 - 기본 사용 포트는 9091로 설정되어 있으므로 포트 포워드는 외부: 원하는 포트, 내부: 9091 로 지정

 - 외부에서도 https://DDNS 도메인:외부포트 로 접속하면 토렌트 다운로드 상황을 알 수 있고 폴더 아이콘을 클릭하면 새로운 토렌트를 추가할 수도 있다.

 - 트랜스미션의 웹 UI는 /usr/share/transmission/web 폴더에 있는 파일들을 수정하여 고치거나 디자인을 변경할 수 있다(특히 각 파일의 다운로드 상태 바의 정보 부분은 /web/javascript/torrent-row.js 파일을 수정). https://forum.transmissionbt.com/viewforum.php?f=8 에서 웹 UI에 관한 다른 유저들의 정보나 의견 등을 참고할 수 있다. 자신들이 만든 새로운 웹 UI 스킨을 올려놓기도 한다.

 

5. CUPS 프린터서버 설치


 - http://dovetail.tistory.com/29 참고

 - 기본 사용 포트는 631로 설정되어 있으므로 포트 포워드는 외부: 원하는 포트, 내부: 631 로 지정

 - 제대로 설정이 되었으면 iOS 기기의 에어프린트에서 이용이 가능해진다.

 

6. MySQL, nginx, PHP5 설치


 - http://www.withover.com/2014/12/nginx-php5-mysql.html 참고해서 nginx 패키지와 php5-fpm 패키지를 설치한다

 - /etc/nginx/sites-available/default 파일을 편집한다. 위 사이트 링크에도 나와 있으나 주의깊게 고치지 않으면 php가 작동하지 않는 부분이 있으므로 주의.

 - 라즈베리 파이 파일 시스템 중 원하는 위치(외장하드도 관계없다)에 www 폴더를 만들고, root /usr/share/nginx/www; 의 경로를 방금 만든 www 폴더의 경로로 변경

 - 그 아랫줄에 있는 index index.html index.htm; 부분에 index.php를 추가하되, index.html보다 앞쪽에 오도록 한다. index index.php index.html index.htm; 로 하면 된다.

 - 밑에 있는 이하의 부분을 index.html에서 index.php로 바꾼다. 


  location / {

    try_files $uri $uri/ /index.php; 

  }


 - 밑에 있는 이하의 부분을 index.html에서 index.php로 바꾼다.

 

   location ~ .php$ {

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    #NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini

    fastcgi_pass unix:/var/run/php5-fpm.sock;

    fastcgi_index index.php; 

    include fastcgi_params;

  }

}


 - http://itscom.org/archives/3486 의 5번 항목부터 참고하여 php 부가 패키지들을 설치해준다.


7. 워드프레스 설치


 - http://www.rasplay.org/?p=1416 를 참고하여 설치

 - /etc/nginx/sites-available/wordpress 를 편집할 때에는 자신이 설정한 경로에 맞게 수정하는 것을 잊지 말도록


   ## Your only path reference.

   root /var/www/wordpress/public_html;

   listen 80;


   이 부분과

   

   access_log /var/www/wordpress/logs/access.log;

   error_log /var/www/wordpress/logs/error.log;

   

   이 부분에 주의.

   

 - 또한 mysql을 사용해서 DB를 만들 때에 아래 부분에서 'pi'는 패스워드이므로 자신이 패스워드를 임의로 설정했다면 그것도 맞게 바꿔 줘야 한다.

 

   mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost"IDENTIFIED BY "pi"; 

   

 - 잘 설치되었다면 웹브라우저에서 라즈베리파이가 설치된 내부 ip를 치면 워드프레스 설정화면이 나타난다.

   외부에서 접속하기 위해서는 DDNS 설정을 하고 라즈베리파이의 내부 ip를 지정한 뒤 포트포워드에 외부포트 80, 내부포트는 없음으로 규칙을 추가하면 된다.

   

8. 워드프레스 폰트 설정


 - 테마를 설치했으나 폰트(특히 한글)가 마음에 들지 않을 경우 자신이 원하는 폰트를 구글 폰트 등에서 가져와 사용하거나, 아예 워드프레스 폴더 안에 넣어서 웹폰트로 사용할 수 있다.

 - 우선은 원하는 폰트를 찾는다. http://www.google.com/fonts/earlyaccess 에 있는 폰트들은 바로 css를 가져와 사용할 수 있으므로 편리하다. 나눔고딕을 사용하고 싶다면 여기에서 찾아다 사용하면 된다. 적용 방법은 http://martian36.tistory.com/1220 를 참고

 - 하지만 원하는 폰트가 없다면 다운로드를 받는다. http://goo.gl/OUyWxy 참고해서 woff 파일을 받고, 워드프레스가 설치된 public_html 폴더 안에 넣어준다.

 - 텍스트 편집기로 적당한 이름의 css 파일을 만들고, 아래와 같은 코드를 넣는다.


   /*

    * Noto Sans CJK KR (Korean) 

    */

   @font-face {

   font-family: 'Noto Sans CJK KR';

   font-style: normal;

   font-weight: 400;

   src: url(http://경로명/NSKR300.woff);

   }

   

   다 넣었으면 저장하고 마찬가지로 public_html 폴더 안에 넣는다.

   

 - http://martian36.tistory.com/1220 에서 한 것과 같은 방법으로 WP Google Fonts 플러그인의 설정에 들어가 Custom CSS 코드를 넣는다. @import url() 부분의 주소에 아까 올린 css 파일의 경로를 넣어주면 된다.


9. 라즈비안 업데이트


 - http://jpub.tistory.com/394 참고


+ Recent posts