라즈베리 파이 3 나스 - lajeubeli pai 3 naseu

원노트로 작성하고 블로그로 옮긴 글이다. 티스토리가 BlogAPI의 지원을 하지 않아 사진파일은 일일히 첨부해야 했다.

Raspberry Pi 활용(나스만들기)

목표

라즈베리파이를데이터저장용나스, 미디어 파일미디어센터, 게임을위한에뮬레이터로구성것이다.

사전준비

준비물

품명

비고

가격

Raspberry Pi 3 Model B

47,000

케이스

7,000

전원어댑터 ( 5V, 2.5A~)

4,000

HDMI 케이블 (1.5 M)

4,000

Micro SD CARD (16G)

13,000

USB Micro SD Reader

5,000

LAN 케이블(Cat 5E/Direct) 3M

3,500

방열판

1,500

외장하드케이스(iptime hdd3035)

28,000(택배비미포함)

소계

113000

하드(4TB, 3.5인치)

집에있는

-

가격은국내가기준이다.

라즈베리파이는 11번가에서 Starter Kit으로일괄구매했다.

//www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=1464168496&xfrom=&xzone= : Starter Kit(8) 76,900

외장하드케이스도 11번가구매했다.

//www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=1326876537&xfrom=&xzone= : 28,000

모니터, 키보드, 마우스는집에있는쓰면된다.

혹시나해서무선키보드겸마우스를알아보았다.

제품

가격

비고

Bless ZIO TMK300U 트랙볼 미니 키보드

33000

logitech K400 PLUS

최저가(벌크, 영문제품) 27720

작고키보드와마우스패드일체형이다.

사고싶었지만쓸일이있을까싶어서ㅜㅜ포기했다. 있으면 쓰긴하는데...

기타

용도

제품

가격

비고

케이스

네오박스 5~6L

5000미만

케이스로쓸라고함

3.5인치하드에멀티탭까지포함하려면 6L좋음

케이스

락앤락 똔따렐리소품바스켓 5L 아이보리 INP905IV

9000

케이스로쓸라고함

케이스

락앤락 라탄패턴 스토리지 6.5L

4800

케이스로쓸라고함

멀티탭

네모탭  멀티탭4

14000

디자인이맘에듬

게임패드

게임패드 AG2DX

16500

싸다

게임패드

게임패드 Coms

13100

싸다

2.5 인치

외장하드케이스

iptime hdd3125

15000

2.5인치 sata to usb 외장하드케이스

RAID 구성

이지넷유비쿼터스 NEXT-702U3 RAID (2 bay)

57000

jbod, raid0, raid1 지원

데이터의안전을위해서는 RAID구성하면좋다. 혹은여러 하드를단일디스크처럼활용하기위해서도 raid0 jbod 활용하자.

3.5인치하드와멀티탭, 라즈베리파이까지박스에정리하려면네오박스 6L적합했다.

네모탭멀티탭은디자인이이쁘다.

메모리카드선택

SD카드 클래스별 성능 차이. (출처 : sdcard.org)

위의표를확인해보기 바란다.

라즈베리파이스타터키트의단점은들어있는데 SD Card좋지 않은것이온다.

DLNA 미디어서버구성시트렌스코딩위치, 데이터베이스위치,임시저장소위치는 SD Card사용하지말고빠른저장소로 설정하기바란다.

SD Card대한설명은아래의사이트를참고하자. :

//www.bloter.net/archives/230516

사전계획

사용계획

  • 미디어서버 & 플레이어
    • DLNA 프로토콜을이용하여티비, 스마트폰으로영상보기
    • 라즈베리파이의 HDMI 포트를모니터에직접연결하여영상보기
    • 스피커 연결하여노래듣기
    • 스마트폰의영상을라즈베리파이로출력
    • Transmisson 소프트웨어를이용하여 토렌트파일받기
    •  
  • 스토리지관리(NAS)
    • SFTP통한원격지 파일관리
    • Private Cloud이용하여원격지에서파일관리, 백업, 다운로드, 업로드, 동기화
    • CIFS(Samba) 이용하여네트워크드라이버로사용
  • 게임에뮬레이터
    • 레트로게임즐기기

키보드나마우스는스마트폰중에 WIFI 통하여가상마우스,키보드를지원하는앱이있다이것을활용 것이다.

게임에뮬레이터로사용시에는현재게임패드가없는상황이므로 스마트폰을통해가상패드를이용것이다.

SSH XRDP통해원격접속을통해시스템을관리것이다.

소프트웨어목록

분류

이름

사용여부or 추천여부

용도

비고

부트로더

BerryBoot

O

멀티부팅, OS설치

OS

Ubuntu Mate

X

나스, 미디어센터 OS

kodi 최신버전설치시문제가발생해서제외함

Raspbian

O

나스, 미디어센터를위한 OS

Retropie

O

게임에뮬레이터 OS

OSMC

X

미디어센터 OS

원격제어유틸리티

Openssh-Server

O

ssh, sftp

XRDP

O

원격데스크탑접속용

윈도우원격데스크탑을이용하여 Linux접속하기위해서사용함

WiFi Mouse

O

스마트폰을키보드, 마우스로사용할있게한다.

안드로이드
OS Mouse Server 설치필요

//wifimouse.necta.us/

Remotepi

X

스마트폰을키보드, 마우스로사용할있게한다.

안드로이드
OS Server 설치필요
//remotepi.io/

Virtual Gamepad

O

가상게임패드

안드로이드로웹에접속하여패드처럼활용할있다.

레트로파이에서 활용한다.

hdparm

O

하드디스크관리유틸

절전설정, 쓰기,읽기속도조절등하드디스크를관리해준다. 발열이나전력소모 최적화를위해서사용한다.

Web Console

X

웹을통해콘솔을사용할있다.

별로임
//web-console.org/

shellinabox

O

웹을통해콘솔을사용할있다.

apache 아닌자체웹서버를내장하고있고

apt repository 에도포함되어 있어서설치도편하다.

//github.com/shellinabox/shellinabox

파일공유스토리지

Samba

O

cifs (윈도우네트워크마운트용)

Trasmission

O

Torrent 다운을위해서

웹클라이언트를통해접속하여 torrent 파일을업로드하면자동으로받아준다. 사용이 편리하다.

Monsta FTP

O

FTP Client

FTP 클라이언트이다. 웹으로파일을관리할있다.

Vsftp

X

FTP server

openssh-server SFTP 있어서설치안함

OwnCloud

X

개인클라우드용

나만의클라우드환경을위해서사용한다. 안드로이드클라이언트앱도있어서 사용이편하다.
기존의존재하는외장하드를연동시키기는힘들다. 파일은동일하게 저장해도내부적으로 DB따로가지고있어서 OwnCloud통하지않고 저장한파일은 OwnCloud에서보이지않는다.

NextCloud

X

OwnCloud 포크

OwnCloud핵심개발자들이나와서만듬

Pydio

O

파일공유소트트웨어

기존의외장하드의파일도그대로보인다.
pydio
계정을만들고권한 공유도원활하다.

존재하는파일시스템과호환된다. 만족스럽다.

Apache

O

웹서버

PHP

O

웹서버

DB

MariaDB

O

DB

PhpMyAdmin

O

DB 관리용

미디어

BubbleUPnP Server

O

UPnP Gateway

외부네트워크에서네트워크의 UPnP(미디어서버)접근가능하게한다.

Kodi

O

미디어플레이어

라즈베리파이에서다이렉트로미디어재생을위해서사용

Yatse

O

Kodi 리모콘

kodi 안드로이드앱이다.

MiniDLNA(ReadyMedia)

O

DLNA 미디어서버를위해서사용

트랜스코딩같은고급기능없이 DLNA영상플레이하기에 적합하다. 가벼워서장비사양이좋지않아도동작한다.

소위 스마트 TV(DLNA지원)라는 TV통해영상재생이가능하다.

Plex Media Server

X

DLNA 미디어서버를위해서사용

트랜스코딩등기능이있지만라즈베리파이에서트랜스코딩을 사용하는것은무리가있고파일스캔등라즈베리파이에서사용하기에는 성능이너무안나온다. (성능문제는외장하드성능이매우 매우좋지않아서그럴있다.)

LG Smart Share

X

DLNA 미디어서버
윈도우만설치됨

자막잘된다. 윈도우만설치된다.

Aircomix

O

만화책(압축파일포함)실시간스트리밍개념으로보는방식

우선멀티부팅환경을만들기위해서 Bootloader  Bootberry 이용 것이다.

Noobs 보다 Bootberry 많은패키지를지원하고설정이좀더자유롭다. 또한 Noobs운영체제를나누어진파티션으로관리여 파티션용량을사용자가관리해야한다. Bootberry여러운영체제를하나의파일시스템의 폴더단위로관리하기때문에파티션용량을관리할필요가없다. 

나스와미디어센터는각각따로설치하지않고 OS구축할것이다. 미디어센터는 Kodi이용하고부팅시 Kodi자동실행 있도록설정할것이다. 성능은나올지미지수다.

운영체제는 좀더보편적이고내가좋아하는 Ubuntu Mate선택했다.

운영체제는라즈베리에 맞는 Raspbian 선택했다. (Ubuntu Mate kodi 17버전이동작하지않는다.)

게임에뮬레이터는레트로파이를선택했다. 레트로파이는미리만들어진이미지를사용할 것이다. 이유는설치된 OS레트로파이설치시컴파일하는시간이너무 소요된다. 또한나스서비스들이동작하면서에뮬레이터까지돌리면성능저하가 것으로본다. 

그밖에소프트웨어목록

분류

이름

용도

비고

NAS

FreeNAS

NAS4Free

Nas OS 이다.

OpenMediaVault(OMV)

Openfiler

Rockstor

Nexenta Community Edition

Amahi

CryptoNAS

TONIDO

Pydio

OS 설치(Raspbian)

BerryBoot통한설치

멀티부팅환경과 OS 설치를 편하게(네트워크를통해) 하기위한 bootloader이다.

BerryBoot 설치하는 것은너무나간단하다.

NOOBS보다 BerryBoot추천하는이유는 NOOBS 멀티운영체제에대해파티션으로관리하고 BerryBoot파일시스템으로관리한다. NOOBS 한쪽운영체제에서용량이부족해지면파티션용량을변경해주어야하는번거로움이 있지만 BerryBoot설치된운영체제가파티션이아닌일반파일시스템의 폴더로구분되기때문에용량에대해별다른신경을쓰지않아도 된다.

참고

//www.berryterminal.com/doku.php/berryboot : BerryBoot

  1. BerryBoot 사이트( //www.berryterminal.com/doku.php/berryboot )에서 BerryBoot다운받는다.
  2. 다운받은 파일을압축해제한다.
  3. SD Card포맷한다. 이미 SD Card활용했었다면 SD formatter 이용하여깔끔히지운다.
    //www.sdcard.org/downloads/formatter_4/ : sdformatter 다운로드
  4. FAT 포맷한 SD Card 압축해제생성된파일들을복사한다.
  5. 라즈베리파이에랜케이블을 연결한다.(Wifi것이라면연결안해도된다.)
    1. OS설치를인터넷을 통해다운받아설치하기위해서이다.
  6. SD Card라즈베리파이에연결하고부팅한다.
  7. Ubuntu Mate설치한다.( 다른것도설치된다.)
    Kodi
    설치실행 Failed get gamma. 메세지와세그먼트오류가발생한다.
  8. Raspbian 설치한다.

라즈베리파이를 부팅하면

네트워크가연결되어있다면 Location Timezone IP 주소를기반으로자동으로설정된다.

OS설치 디스크를선택하면된다.(여기서는 mmcblk0 이다)

순서적으로

  • mmcblk0 : SD Card 자신
  • sda : 외부장치인 USB stick/disk 말한다.(SSD 있으면이걸로도가능하다.)

필자는 SD Card성능이너무떨어져서남아돌고있는 64기가 SSD사용했다.

  • Networked storage(iSCSI SAN) : 네트워크스토리지(네트워크블록디바이스)말한다. 요즘피씨방에서많이 사용하는방식이다.

설치할 OS선택한다.

Ubuntu mate설치했다가지우고 Raspbian 설치했다.

Ubuntu mate경우 kodi 설치실행에문제가발생했다. 또한 kodi 17.1(최신버전)지원하지않았다. Ubuntu 계열을좋아하지만 비슷한 Debian계열인 Raspbian으로만족했다.

Raspbian 설치시초기사용자와비밀번호는

사용자 : pi

비밀번호 : respberry

이다.

OS 설정

Nas 구축전에 OS설정할 것이다.

nas 사용자와그룹을만들고이를 nas 접속유저로 관리할것이다.

기본적으로생성되어있는 pi 계정은 root대리하는 계정으로외부에서쓰기불안하기때문이다.

raspi-config 이용한기본설정하기

아래의명령을실행하면기본적인설정을간단히진행할잇다.

  1. Expand Filesystem : SD 카드의전체용량을사용할 있게.
  2. Change User Password : "pi" 계정의비밀번호를변경
  3. Enable Boot To Desktop/Scratch : 부팅시 Console 환경혹은 Desktop(GUI) 환경혹은 Scratch(스크래치프로그래밍) 환경으로시작방법을설정
  4. Internationalisation Options : Locale(언어, 문자인코딩), 키보드 Timezone 국제화관련설정
  5. Enable Camera : Raspberry Pi 전용카메라를사용할있도록
  6. Add to Rastrack : rastrack 서버에 Raspberry Pi등록하는 것이다. 가상의렉이라고생각하면된다. rastrack등록된모든 Raspberry Pi 현황과위치등을확인할있음. (//rastrack.co.uk/ : rastrack 사이트)
  7. Over Clock : 700MHz 이상의 CPU Clock 으로변경할있음.(오버클럭시 cpu 발생과수명 단축을조심하자. 가급적초기설정상태로사용하는것이좋다.)
  8. Advanced Options : Hostname 변경, SSH on/off, SPI on/off, Audio HDMI/3.5mm jack 설정.
    1. Overscan : 고해상도모니터에라즈베리 파이의화면을출력할경우화면이모니터에맞지않게표시되거나 텍스트가화면의측면으로몰려서표시되는현상이나타날잇다. 그러한경우화면에맞게디스플레이를수정하려면옵션을사용하자.
    2. Hostname : 호스트이름을변경한다.
    3. Memory Split : CPU GPU분배하는메모리양을 변경할있다. 그래픽작업을많이하는경우에는 GPU 많은메모리를할당하는편이좋다.
    4. SSH : 보안(SSH) 서버를 활성화시키고사용자가네트워크를통해원격으로라즈베리파이에로그인 있게하는옵션이다. 편리한기능으로활성화하자.
    5. Device Tree : 하드웨어 정보를기술하는일종의데이터구조이다.
    6. SPI : 시리얼주변장치인터페이스(SPI)활성여부를설정한다.
    7. I2C : 직렬버스의하나인 I2C(Inter-Integrated Circuit)활성화여부를설정한다.
    8. Serial : 시리얼핀을통해쉘에 로그인하고메시지를송수신하는기능이다.
    9. Audio : 오디오출력단자를설정한다. 3.5mm 오디오잭이나 HDMI출력을강제할있으며자동모드도가능하다.
    10. Update : 인터넷이ㅇ녀결되어있다면설정유틸리티를업데이트있다.
  9. About raspi-config : 해당툴의안내문

PI 계정비밀번호변경하기

기본설정에는 pi 비밀번호가 raspberry이다.

기본비밀번호를쓰는것은보안상좋지않다. 비밀번호를바꾸자.

명령후새로운비밀번호를입력하면된다.

. id:pi, password:pi

테스트에서는 id: pi, password: pi하였다.

나스용아이디/그룹만들기

pi사용자는 sudo 그룹에포함되어있다. 관리자의권한을위임받아행동할 있다. 따라서로컬이나관리용으로만쓰는게적당하다.

따라서나스용아이디를 만들자.

nas 사용자/그룹을만들것이다. ( 자신이원하는이름으로 하자. )

사용자/그룹만들기

$ sudo useradd nas -m -s /bin/bash

-m : 디렉토리가생성된다.

-s /bin/bash : bash쉘로환경이설정된다.

사용자/그룹정보확인

$ cat /etc/passwd | grep nas

nas:x:500:500::/home/nas:/bin/bash

저기번호(. 500)기억하자. 외장하드마운트시소유자와 소유그룹을저걸로만들것이다. (보통많이쓰는 NTFS, FAT계정에 따른권한이따로없다. 따라서리눅스에마운트시소유자와소유그룹을 지정할있다.)

패스워드지정

$ sudo passwd nas

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

계정관리

추가적으로 계정을관리하는법이다.

비밀번호변경하기

다른계정의비밀번호를변경하고 싶다면 root 권한이필요하다.

$ sudo passwd {target_username}

{target_username} : 비밀번호를바꿀사용자아이디

계정아이디변경하기(선택사항, 추천하지않는다.)

기본으로 pi 계정이자동으로 등록되어있고자동로그인이설정되어있다.

pi이름을 다른이름으로바꾸고비밀번호도등록할것이다.

명령형식

$ sudo usermod -md /home/{new_name} -l {new_name} {old_name}

유저의이름과홈폴더의이름을바꾼다.

예를들어 pi test 바꾼다면

$ sudo usermod -md /home/test -l test pi

실제는명령시아래와같은에러가발생할 것이다.

$ sudo usermod -md /home/test -l test pi
usermod: user pi is currently used by process 2104

pi 현재 shell실행중이라 usermod 명령을수행할없다는것이다.

기본설치시 Xwindow 실행중인 상태이다. 이때는우선현재계정(pi) Logout 하고 Ctrl+Alt+F2 terminal session 변경아래의명령을실행해야한다.

$ exec sudo -s
$ cd /
$ sudo usermod -md /home/test -l test pi

이때는 exec 명령을 통해 pi shell종료하고 root shell실행하여 usermod 명령을실행한 것이다.

그룹이름도변경할것이다.

명령형식

$ sudo groupmod -n {new_name} {old_name}

예를 들어 pi test바꾼다면:

$ sudo groupmod -n test pi

자동로그인끄기(선택사항)

Raspbian 설치 pi계정이자동로그인으로설정되어있다.

pi계정의자동로그인을끄는방법이다.(pi다른이름으로 바꾸었다면해줘야한다.)

혹은자동로그인기능이좋다면 pi계정 대신위에서변경한이름으로자동로그인설정을변경해야한다.

/etc/lightdm/lightdm.conf 파일에 자동로그인설정이되어있다.

$ sudo vi /etc/lightdm/lightdm.conf
...
#autologin-user=pi
...

"autologin-user=pi" 주석처리하거나삭제하면자동로그인이되지않는다.

만약변경한이름으로 자동로그인설정하고싶다면 pi 대신변경한이름으로설정하면된다. 

$ sudo vi /etc/lightdm/lightdm.conf
autologin-user=test

부팅 Runlevel(GUI<->CLI )변경 (선택사항)

기본 raspbian 설치하면부팅시 desktop 환경(GUI)으로실행된다.

이를부팅시 CLI(terminal) 실행되게하려면

$ sudo update-rc.d lightdm disable 2

반대로부팅시 GUI 으로실행되게하려면

$ sudo update-rc.d lightdm  enable 2

언어변경

방법1. dpkg-reconfigure사용한방법.

$ sudo dpkg-reconfigure locales

여기서추가할언어를선택한다.

화면에서기본언어로언어를선택한다.

한국의경우 ko_KR.UTF-8 UTF-8 혹은 ko_KR.EUC-KR EUC-KR선택한다.

글쓴이는 ko_KR.UTF-8 UTF-8 선호한다.

방법2. raspi-config 언어설정

raspi-config raspbian 설정을 UI간편하게있게 도움을주는유틸이다.

Internationalisation Options -> Change Locale

command line 으로설정하기힘든분이나간단한설정은이곳에서하면 편하다.

Timezone 변경

timezone Asia->Seoul 바꾼다.

방법1. 수동변경

타임존 변경 명령

$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

타임존 변경 확인

$ date

Mon Dec 28 17:37:23 KST 2015

다른 타임존확인

아래의 위래에 다른 타임존 들이 있다.

방법2. tzselect통한변경

tzselect 명령을 통해 쉽게 변경 가능하다.

shh@shh-dev:/$ sudo tzselect

Please identify a location so that time zone rules can be set correctly.

Please select a continent, ocean, "coord", or "TZ".

 1) Africa

 2) Americas

 3) Antarctica

 4) Asia

 5) Atlantic Ocean

 6) Australia

 7) Europe

 8) Indian Ocean

 9) Pacific Ocean

10) coord - I want to use geographical coordinates.

11) TZ - I want to specify the time zone using the Posix TZ format.

#? 4

Please select a country whose clocks agree with yours.

 1) Afghanistan           18) Israel                35) Palestine

 2) Armenia               19) Japan                 36) Philippines

 3) Azerbaijan            20) Jordan                37) Qatar

 4) Bahrain               21) Kazakhstan            38) Russia

 5) Bangladesh            22) Korea (North)         39) Saudi Arabia

 6) Bhutan                23) Korea (South)         40) Singapore

 7) Brunei                24) Kuwait                41) Sri Lanka

 8) Cambodia              25) Kyrgyzstan            42) Syria

 9) China                 26) Laos                  43) Taiwan

10) Cyprus                27) Lebanon               44) Tajikistan

11) East Timor            28) Macau                 45) Thailand

12) Georgia               29) Malaysia              46) Turkmenistan

13) Hong Kong             30) Mongolia              47) United Arab Emirates

14) India                 31) Myanmar (Burma)       48) Uzbekistan

15) Indonesia             32) Nepal                 49) Vietnam

16) Iran                  33) Oman                  50) Yemen

17) Iraq                  34) Pakistan

#? 23

The following information has been given:

        Korea (South)

Therefore TZ='Asia/Seoul' will be used.

Local time is now:      2017. 11. 10. () 13:57:27 KST.

Universal Time is now:  2017. 11. 10. () 04:57:27 UTC.

Is the above information OK?

1) Yes

2) No

#? 1

You can make this change permanent for yourself by appending the line

        TZ='Asia/Seoul'; export TZ

to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you

can use the /usr/bin/tzselect command in shell scripts:

Asia/Seoul

shh@shh-dev:/$ date

2017. 11. 10. () 13:57:32 KST

방법3. dpkg-reconfigure 통한 변경

gui통해아주쉽게변경가능하다.

$ sudo dpkg-reconfigure tzdata

Asia->Seoul 선택

전력 관련 설정

외장하드는 전력을 많이 소비하기 때문에 더욱 안정적으로 외장하드를 사용하려면 라즈베리파이의 전력관련 옵션을 확인하고 변경해 주는 것이 필요하다. 다음의 파일을 열어 옵션을 확인하고 내용이 없으면 맨 윗줄에 아래의 내용을 추가해주고 재부팅 해 준다.

$ sudo vi /boot/config.txt

위의 파일을 열어 다음의 내용을 추가해준다. 추가해주면 라즈베리파이의 허용전류를 2A까지 늘려준다고 한다.

max_usb_current=2

safe_mode_gpio=4

그후리부팅

외장하드준비하기

하드디스크확인하기

lsblk 통하여

NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda                        8:0    0  3.9G  0 disk

├─sda1                     8:1    0  487M  0 part /boot

├─sda2                     8:2    0    1K  0 part

└─sda5                     8:5    0  3.4G  0 part

  ├─fepserver--vg-root   252:0    0  3.9G  0 lvm  /

  └─fepserver--vg-swap_1 252:1    0    1G  0 lvm  [SWAP]

sdb                        8:16   0    3G  0 disk

└─fepserver--vg-root     252:0    0  3.9G  0 lvm  /

sr0                       11:0    1 1024M  0 rom

현재디스크들의상태를 간단히확인할있다.

fdisk 통하여

Disk /dev/sda: 3.9 GiB, 4185055232 bytes, 8173936 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x8a4d1bc8

Device     Boot   Start     End Sectors  Size Id Type

/dev/sda1  *       2048  999423  997376  487M 83 Linux

/dev/sda2       1001470 8173567 7172098  3.4G  5 Extended

/dev/sda5       1001472 8173567 7172096  3.4G 8e Linux LVM

Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

디스크들의 정보를확인할있다.

포맷하기

외장하드를포맷하는방법이다.

외장하드의 파일시스템을만드는방법으로이미사용중인외장하드가있다면포맷시모든 파일을지워버린다.

이미사용중인외장하드가있고파일을없애지말아야 한다면포맷하지말아야한다.

명령은 :

$ sudo mkfs -t {type} {device}

{type} : 파일시스템종류

{device} : 기기 경로

예를들어 /dev/sdb 장치를 ntfs포맷시:

$ sudo mkfs -t ntfs /dev/sdb

하드디스크는 ntfs 혹은 fat 파일시스템으로포맷하기를추천한다. 그래야해당하드디스크를윈도우환경에연결했을 때도동작하기때문이다.

Mount 하기

방법1, UUID 마운트(추천, 재부팅시 자동 mount 유지)

UUID마운트하기위해서는우선장치의 UUID확인해야한다.

장치가연결된포트위치에따라 /dev/sdb, /dev/sdc 바뀔수 있다. 하지만 UUID연결포트가달라진다해도하드디스크의고유의번호이기 때문에달라지지않는다.

blkid 명령을이용하여 UUID 정보를얻는다.

$ sudo blkid
 

dev/hda1: UUID="e38c77a6-0990-44bf-a592-9c156920fb5d" SEC_TYPE="ext2" TYPE="ext3"

/dev/hda3: UUID="9fa0f339-1fa5-4c75-942a-b6001b7bcde8" SEC_TYPE="ext2" TYPE="ext3"

/dev/hda4: UUID="26474b1a-8353-4a15-8add-94df2a6784b7" SEC_TYPE="ext2" TYPE="ext3"

/dev/hda5: UUID="9dfa1ff8-b91c-47db-9d8d-8cfb78ff7432" SEC_TYPE="ext2" TYPE="ext3"

/dev/hda6: TYPE="swap" UUID="0e7bd3d5-88dd-4a06-81bd-2dd1f2870a5c"

/dev/sda1: UUID="00CC65DDCC65CE0A" LABEL="Data1" TYPE="ntfs"

/dev/sda2: UUID="8d6f7e4f-4bfe-4ad1-83b8-22d71065193f" SEC_TYPE="ext2" TYPE="ext3"

/dev/sda3: UUID="2E38726838722EC9" LABEL="Data2" TYPE="ntfs"

/dev/sdb2: UUID="1ed998db-712f-4fc3-9155-02e091fd8380" TYPE="ext3"

/dev/sdb3: UUID="4c907521-a4fb-4a2c-86ce-9b8206aaf33a" TYPE="ext3"

/dev/sdb1: UUID="feeb3d31-7c74-41e3-87fd-9a60c900430f" SEC_TYPE="ext2" TYPE="ext3"

UUID 확인하고마운트하면된다.

예를들어

UUID : "e38c77a6-0990-44bf-a592-9c156920fb5d"
파일시스템 : ntfs

"nas" 계정의 uid, gid : 500

umask : 027 (owner rwx, group r-x, other ---)

$ sudo vi /etc/fstab

UUID=

e38c77a6-0990-44bf-a592-9c156920fb5d  /media2    ext3    defaults,uid=500,gid=500    0    2

$ sudo mount -a

여기서 umask 권한을뺏는거라생각하면된다.

r 4, w 2, x 1 이다. 2진값이다. rwx = 421 7이다. rw = 420 6이다.

umask 027 소유자에게는 rwx , 그룹에게는 r-x, 그밖에계정에게는아무권한을안주겠다는것이다. 해당 옵션은 ntfs,fat 같은파일의권한개념이없는파일시스템에서만사용되는 옵션이다.

해당옵션을이유는 nas 사용자는 rwx 모든권한을 가지고 nas 그룹은 r-x 읽기권한만가지고다른사용자는 어떤권한도주지않기위해서다.

다른이들과 mount파일 시스템을공유하기위해계정을만들어주고 nas 그룹에넣으면해당 mount 파일시스템에읽기권한만가지고읽을있기때문에파일을 수정하거나삭제할없어파일을보호할있다.

혹은 권한을 775 주고 nas 사용자와그룹은 rwx 권한을주고 other r 읽기권한만수도있다.

방법2, mount 명령을사용하여 일시적으로마운트하기(비추, 재부팅시 unmount)

mount유지되지않는다.

명령형식

mount -t {파일시스템} {장치파일} {마운트포인트}

unmount {장치파일혹은마운트포인트}

{파일시스템} 생략해도된다.

)

CD-Rom 마운트

$ sudo mount -t iso9660 /dev/cdrom /media/cdrom

NFS 마운트

$ sudo mount -t nfs 123.12.12.1:/nfs /media/nfs

방법3, /etc/fstab 파일로마운트하기(재부팅시자동 mount 유지)

/etc/fstab 마운트내용을열거하면된다.

/etc/fstab 파일에설정한장치가없거나, 틀릴경우부팅자체가안될있으므로주의하자. 이때는 시스템응급복구모드를사용하여복구해야한다.

형식

<file system> <mount point> <type> <options> <dump> <pass>

)

/dev/sda1 /media   ext4     defaults   0 0
UUID=
e38c77a6-0990-44bf-a592-9c156920fb5d  /media2    ext3    defaults    0    2

/dev/sda1 마운트는장치파일경로로지정한것이다. 장치를추가하거나 제거할장치파일경로가바뀔수있다.

UUID마운트 것은장치의고유이름을사용한것으로만약장치파일의경로가바뀐다 하거라도동일한경로에마운트되는것을보장한다.

/etc/fstab 새로운마운트포인트추가하고즉시마운트한다.

Mount Option

옵션

설명

defaults

rw, suid, dev, exec, auto, nouser, async 옵션을모두가지는기본설정

auto

바팅시자동마운트

noauto

부팅시자동마운트안함

dev

파일시스템상의문자, 블럭특수장치를해석

nodev

파일시스템상의문자, 블럭특수장치를해석하지않음

exec

바이너리실행파일이실행되는것을허용

noexec

바이너리실행파일이실행되는것을허용안함

suid

setuid, setgid사용을허용

nosuid

setuid, setgid사용을거부

ro

읽기전용 (read-only)

rw

읽기/쓰기가능(read/write)

async

파일시스템에대한 I/O비동기적으로이루어짐

sync

파일시스템에대한 I/O동기적으로이루어짐

user

일반계정사용자들도마운트있게허용

nouser

일반계정사용자가마운트할없음 ( root mount 가능)

noatime

파일접근시간을업데이트하지않음(메일스풀이나로그와같이 I/O 많은파일시스템에서성능향상)

remount

이미마운트된파일시스템을다시마운트

uid

mount 해당마운트의소유자(user id) 설정(uid 개념이없는파일 시스템마운트에서만사용)

gid

mount 해당마운트의소유그룹(group id) 설정(gid 개념이없는 파일시스템마운트에서만사용)

_netdev

네트워크드라이브마운트시네트워크활성화마운트하라는설정

/etc/fstab 사용시 네트워크 드라이브/저장소(nfs, iscsi..) 사용시 대기 문제 해결법(_netdev)

/etc/fstab 네트워크드라이브/저장소를자동 mount 하게설정하는경우시스템재시작시마운트를하지못하여대기를 하는경우가있다.

문제는시스템이네트워크를설정하고연결하기 전에 /etc/fstab mount 시도하기때문이다.

예를들어

/etc/fstab

 192.168.1.1:/usr/local    /mnt    nfs    defaults     0  0

위와같은경우 192.168.1.1:/usr/local 대한 mount   네트워크연결보다먼저일어나기때문에시스템시작시자동마운트 되지않는다. 심한경우는해당경로를마운트하기위해무한대기한다.

이와같이네트워크를통한저장소를 /etc/fstab 등록할때에는 mount 옵션에 _netdev 추가해주어야한다.

192.168.1.1:/usr/local    /mnt    nfs    defaults,_netdev     0    0

_netdev 옵션은네트워크에 연결후마운트하라는옵션이다. 이렇게해야시스템시작시문제없이 해당네트워크경로로자동마운트된다.

원격제어소프트웨어 설치

원격제어에는 ssh(console 환경), xrdp(gui 환경) 통해구성할것이다.

원격제어는 sudo 그룹에포함된사용자 "pi" 계정을통해서만가능하게 한다.

패키지리스트최신화

apt-get 패키지리스트를최신화한다.

Openssh-Server

ssh 접속을통해원격으로명령을있다. 특정 그룹만허용시켜다른계정은접속할없게것이다.

또한 sftp 통해파일을관리할있다.

설치

ssh 통한 원격터미널접속을위해설치한다.

$ sudo apt-get install openssh-server

설정

/etc/ssh/sshd_config 수정하면된다.

Port 22

#사용할포트이다. 필요하면바꾸어라.

PermitRootLogin no

# root접속을막는다.

AllowGroups sudo ssh

# sudo ssh그룹을제외한모든그룹, 유저의접속을 막을것이다.
sudo
그룹에는이미 pi사용자가포함되어있다. sudo 그룹의포함된 user root권한을대행있으므로 ssh 접속을허용한다.

계정을 만들고 ssh 접속을허용하고싶다면 ssh 그룹에해당계정을포함시켜라.

재시작

$ sudo service ssh restart

XRDP Server

xrdp Remote Desktop Protocol(rdp) Server 이다.

윈도우기본원격 데스크탑클라이언트로리눅스에원격접속있다.

설치

$ sudo apt-get install tightvncserver
$ sudo apt-get install xrdp

Raspbian tightvncserver 설치없이 xrdp 설치한다면아래의에러가 발생한다.

sesman connect ok

sending login info to session manager, please wait...

xrdp_mm_process_login_response: login successful for display...

started connecting

connecting to 127.0.0.1 5910

error problem connecting

기본적으로설치되어 있는 realvnc server 충돌이나는듯하다. 이때는 xrdp 지우고 tightvncserver 같이설치해야한다.

$ sudo apt-get remove xrdp

$ sudo apt-get install tightvncserver

$ sudo apt-get install xrdp

윈도우원격데스크톱으로접속할 있다.

Serial Port 접속방법

방법은 Serial Port이용하여라즈베리파이에접속하는방법입니다.

인터넷이되지않을노트북으로라즈베리파이에원격접속 있습니다.

리눅스하시는분들은아는시리얼통신입니다.

이건 참고자료로대신하겠습니다.

//blog.xcoda.net/83

//learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/enabling-serial-console

//github.com/lurch/rpi-serial-console

스마트폰을마우스, 키보드로사용하기

마우스나키보드대신스마트폰을마우스, 키보드로사용하는프로그램이다.

스마트폰과리눅스가같은네트워크영역대에존재해야한다.

Wifi Mouse 설치

Mifi Mouse 스마트폰을마우스, 키보드로사용할있게한다.

유료구매시게임패드등도지원한다.

스마트폰으로장비의마우스, 키보드로사용하기위해서는 일단장비에 Wifi Mouse Server설치되어있어야한다.

Wifi Mouse Server 설치

//wifimouse.necta.us/사이트의 SETUP -> Mouse Server-> Ubuntu 32bit다운받아라.

다운로드경로 : //wifimouse.necta.us/MouseServerLinux32.zip

(따로 raspbian wifi mouse server없다. raspbian bebian 계열이라 ubuntu 32bit 버전과호환된다.)

Wifi Mouse Server 다운로드

zip 압축풀기

$ unzip MouseServerLinux32.zip

dep패키지 파일dpkg 설치

$ sudo dpkg -i mouseserver-1.-.1-32bit.deb

실행하기

실행은 Desktop 환경에서만실행된다.

console 환경에서실행시 "cannot open xdisplay" 메세지를출력하고실행되지않는다.

매번 실행하기귀찮을꺼다로그인시자동으로실행되게하자.

$ sudo vi /etc/xdg/autostart/mouseserver.desktop

[Desktop Entry]

Type=Application

Encoding=UTF-8

Name=mouseserver

Exec=/usr/sbin/mouseserver

Wifi Mouse Client 설치

안드로이드, IOS 둘다지원하며앱스토어에서 Wifi Mouse 라고검색하면 나온다.

shellinabox 설치

web base 동작하는 shell 이다.

브라우저를통해 일반적인 terminal 사용하듯사용하면된다.

원격지에서 ssh client 없이브라우저만 있으면장비에접속할있다.

shellinabox 내장웹서버로 동작해서따로설치것이없다.

github : //github.com/shellinabox/shellinabox

git 으로받아서컴파일해도되지만 apt repository기본제공되어 있다.

shellinabox 설치

$ sudo apt-get install shellinabox

shellinabox 설정

/etc/default/shellinabox 파일이설정파일이다. port등등바꿀수있다.

$ sudo vi /etc/default/shellinabox

# Should shellinaboxd start automatically

SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on

SHELLINABOX_PORT=4200

# Parameters that are managed by the system and usually should not need

# changing:

# SHELLINABOX_DATADIR=/var/lib/shellinabox

# SHELLINABOX_USER=shellinabox

# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions).  Make sure

# that that argument is quoted.

#

#   Beeps are disabled because of reports of the VLC plugin crashing

#   Firefox on Linux/x86_64.

SHELLINABOX_ARGS="--no-beep"

브라우저로접속하기

기본접속경로는 : //{ip}:4200이다.( "https" . "http"아니다.)

주의해야점은 https 라는것이다. shellinabox 자체서명인증서를사용하므로브라우저에서안전하지않은사이트라고나올것이다. 이를무시하고접근해야한다.

카스퍼스키나기타백신에서자체서명인증서라고사이트접속을막는경우가있다. 이때는잠시백신을중지시켜야한다.

APM(Apache + PHP + Mysql(MariaDB)) 설치

많은 Web 기반소프트웨어들이 Apache PHP, Mysql(혹은 MariaDB) 기반으로동작하기때문에이를설치해준다.

Apache 설치

$ sudo apt-get install apache2

PHP ,Apache Module, librarys 설치

일반적으로필요한라이브러리는설치했다.

$ sudo apt-get install php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml php-mysql

Apache 재시작

$ sudo systemctl apache2.service

MariaDB 혹은 Mysql 설치(전통적인 Mysql 설치함)

$ sudo apt-get install mysql-server mysql-client

Storage Software

Monsta FTP (Web Based FTP Client)설치

Monsta FTP Web-base FTP이다. 브라우저를 FTP Client 사용한다고 생각하면된다.

Apache PHP 설치되어있어야한다.

Apache + PHP 설치

$ sudo apt-get install apache2

$ sudo apt-get install php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml

$ sudo systemctl apache2.service

Monsta FTP 다운로드

다운로드사이트: //www.monstaftp.com/download

해당다운로드사이트에서 free 버전을다운받거나

wget 이용하여다운받는다.

압축풀기

웹서비스를위해파일옮기고소유자변경하기

$ sudo cp -ar mftp/ /var/www/
$ sudo chown -R www-data:www-data /var/www/mftp

Apache monsta ftp 사이트설정하기

$ sudo vi /etc/apache2/sites-available/mftp.conf

Alias /mftp "/var/www/mftp/"

<Directory /var/www/mftp/>
        Options +FollowSymlinks
        AllowOverride All

        SetEnv HOME /var/www/mftp
        SetEnv HTTP_HOME /var/www/mftp
</Directory>

Apache site enable 시키기

$ sudo a2ensite mftp.conf

Apache Reload

$ sudo systemctl reload apache2.service

Monsta FTP 접속하기

web 경로 : //{address}/mftp

위의경로를이용하면 web-based FTP Client Monsta FTP이용할 있다.

Pydio 설치

Pydio File Sharing 소프트웨어이다. 무료, 유료버전이존재한다.

PHP+Mysql 기반으로동작한다.

Pydio 선택한이유는깔끔한디자인과기존의파일시스템과호환이되기 때문이다.

사이트 : //pydio.com/

Apache + PHP + Mysql 설치

$ sudo apt-get install apache2

$ sudo apt-get install php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml php-mysql

$ sudo apt-get install mysql-server mysql-client

$ sudo systemctl apache2.service

pydio 다운로드

압축풀기

$ unzip pydio-core-8.0.2.zip

파일옮기고소유자변경

$ sudo mv pydio-core-8.0.2/ /var/www/pydio

$ sudo chown -R www-data:www-data /var/www/pydio

Apachepydio 사이트설정하기

$ sudo vi /etc/apache2/sites-available/pydio.conf

Alias /pydio "/var/www/pydio/"

<Directory /var/www/

pydio/>
        Options +FollowSymlinks
        AllowOverride All

        SetEnv HOME /var/www/

pydio
        SetEnv HTTP_HOME /var/www/
pydio
</Directory>

Apache site enable 시키기

$ sudo a2ensite pydio.conf

Apache Reload

$ sudo systemctl reload apache2.service

DB 설정하기

pydio mysql, sqlite3, PostgreSQL 지원한다.

Mysql 기준으로작성한다.

Mysql데이터베이스와해당 데이터베이스에권한을가진사용자/비밀번호를만들어야한다.

데이터베이스 : "pydiodb"

사용자 : pydio
비밀번호 : pydiopassword

위의예로만들겠다.

$ sudo mysql

> create database pydiodb;
> create user pydio@'%' identified by 'pydiopassword';
> grant all privileges on pydiodb.* to pydio@'%';
> flush privileges;

이상으로데이터베이스와권한을가진사용자가생성되었다. 정보는 pydio 시작시사용된다.

주의사항 : 마운트된외장하드를 pydio통해서제어할권한이없다면제어가불가능하다. pydio apaceh2 에서동작하므로 www-data 계정으로동작한다. 따라서외장하드의소유그룹의권한을 rwx 만들고해당소유그룹으로 www-data 계정을 추가시켜주던가하여권한을주어야한다.

Pydio 실행

접속은 //{ip}/pydio

접속시초기설치화면이나온다.

어플리케이션이름설정

Pydio 관리계정생성정보입력(관리자를생성)

DB 정보입력( 위에서이미생성한정보이다.)

고급설정

다되면 INSTALL PYDIO 버튼클릭

이제 사용할있는로그인화면이나온다.

 Samba 설치

SMB(Server Message Block) 프로토콜을통해 네트워크(LAN) 환경에서윈도우와리눅스(Unix-like) 파일이나프린터간의공유를가능하게 해주는소프트웨어이다.

윈도우에서리눅스공유폴더로접근이편해진다.

주의 것은 LAN 환경에서만접속가능하다.

Samba 설치

$ sudo apt-get install samba

Samba 사용자 추가

$ sudo smbpasswd -a {계정명}

//ex. nas

계정추가
$ sudo smbpasswd -a nas

New SMB password:

Retype new SMB password:

주의사항 : Samba 사용자는 리눅스에이미존재하는계정을 Samba 사용자로추가하는것이다. 리눅스계정에 존재하지않는사용자는추가되지않는다.

smbpasswd 통해 samba 사용자를 add, delete, disable, enable 등등있다.

Samba 추가된사용자목록

Samba 공유될폴더설정

아래의내용을 /etc/samba/smb.conf 추가해라.

예를 들어 /mnt/data 폴더를공유한다고한다면:

$ sudo vi /etc/samba/smb.conf

[Share] #보이는이름
comment = file share
path = /mnt/data #
공유할폴더경로
valid users = nas, test # 해당공유에접근가능한사용자목록(. nas, test)
writable = yes # 쓰기가능하게함
create mask =  0644 # 새로운파일/폴더생성시초기권한(rwxr--r--)
directory mask =  0755 #
폴더들의기본권한 (rwxr-xr-x)
 

윈도우에서네트워크로접속하기

탐색기에서\\아이피주소

MEDIA SERVER 구성하기

네트워크를통해미디어를 있게하기위해서설치한다.

DLNA 지원미디어 서버(Plex, MiniDLNA ...)많으나라즈베리파이의성능상 MiniDLNA추천한다.( 미디어서버는 하나만설치하기바란다.)

DLNA upnp 기술은네트워크( 동일한 아이피영역대, 서브넷마스크영역대, 같은공유기에접속된)에서만 미디어서버를찾고접근있다.

이를 원격지(네트워크외부, )에서접속하기위해서는 Bubble UPNP Server설치해야한다.

Bubble UPNP Server upnp 외부에서접근하게해주는 Gateway역활을한다. VPN비슷하다고생각하면될듯하다. 

MiniDLNA(ReadyMedia) 1.2.0 (smi 자막지원, 1.1.4 이후부터 smi 자막지원한다함)

DLNA 지원하는최소한의기능만존재하는미디어 서버이다. 매우가벼워서사용하기좋다.(Plex 무겁다생각되면 miniDLNA 추천한다.)

원래는 MiniDLNA이름이었지만 ReadyMedia이름이변경되었다.

기본적으로 minidlna트랜스코딩을지원하지않지만 git 트랜스코딩을지원할있는 branch있다.

//bitbucket.org/stativ/readymedia-transcode : minidlan(readymedia transcode)

참고자료

//wiki.archlinux.org/index.php/ReadyMedia : 설정법

//www.htpcguides.com/install-latest-readymedia-minidlna-ubuntu/ : 가장 최신 ReadyMedia 설치법

//sourceforge.net/projects/minidlna/files/minidlna/ : MiniDLNA 소스포지

컴파일해서설치하기

// repository 최신화
$
sudo apt-get update// minidlna 의존성설치
$ sudo apt-get build-dep minidlna -y

//

의존성문제시아래의 목록을설치한다.
$
sudo apt-get install build-essential autopoint debhelper dh-autoreconf gcc libavutil-dev libavcodec-dev libavformat-dev libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libogg-dev libvorbis-dev libflac-dev -y

// tmp

디렉토리에 minidlna 최근소스받기

$ cd /tmp

$ wget //sourceforge.net/projects/minidlna/files/latest/download?source=files -O minidlna.tar.gz
 

// 압축풀기
$ tar -xvf minidlna*.tar.gz

//

압축디렉토리들어가기

$ cd minidlna*

// 컴파일하기

$ ./configure && sudo make && sudo make install

// minidlna

기본설정파일복사하기

$ sudo cp minidlna.conf /etc/

// minidlna autostart

스크립트복사하기

$ sudo cp /linux/minidlan.init.d.script /etc/init.d/minidlna

// 스크립트실행권한주기
$ sudo chmod +x /etc/init.d/minidlna

// 서비스등록하기(부팅시 자동실행)

$ sudo update-rc.d minidlna defaults

// minidlna 설정하기

$ sudo vi /etc/minidlna.conf

// 서비스실행

$ sudo service minidlna start

apt 설치하기

$ sudo apt-get update
$ sudo apt-get install minidlna

설정하기

$ sudo vi /etc/minidlna.conf

라이브러리(미디어파일) 경로설정은

V video, A Audio, P Picture, B Directory 뜻한다.

media_dir=V,/media/Movies

media_dir=V,/media/TV

media_dir=A,/media/Music

media_dir=P,/media/Pictures

DLNA Server 이름은

friendly_name=Media Server

라이브러리폴더에파일이추가, 삭제, 변경되었을자동으로목록을최신화하기위해 파일변경알림받기

minidlna데이터베이스가저장되는디렉토리설정

db_dir=/home/pi/.minidlna

빠른저장공간이있다면경로로지정하는게좋다.

설정적용하기

$ sudo service minidlna force-reload

간단한관리페이지도있다.

//127.0.0.1:8200

PLEX Media Server 설치 (기능이 많다, 무겁다)

MiniDLNA PLEX 둘중에하나만설치해야한다.

DLNA 지원하고네트워크아니라 PLEX자체기능을이용하여외부 네트워크에서도미디어를있게해준다.

관리 프로그램(웹페이지)존재한다. 인터페이스가 GUI 환경이라설정등이편하고따로 미디어플레이어없이웹에서바로미디어시청이가능하다.

기능이 아주강력한프로그램이지만무겁다. 미디어가존재하는장치(SDCard 혹은 외장하드)라즈베리파이에서는성능이나오지않을가능성이있어최적화 설정을해주어야한다.

글쓴이의경우는외장하드를연결하였는데오래된하드라 읽기/쓰기성능이좋지않아서인지미디어파일을스캔하는데 너무너무오래걸려서 MiniDLNA설치했다.

참고: //www.dev2day.de/typo3/projects/plex-media-server/

//www.element14.com/community/community/raspberry-pi/raspberrypi_projects/blog/2016/03/11/a-more-powerful-plex-media-server-using-raspberry-pi-3

설치법

방법1. 루트로변경 명령(방법사용)

# become root

sudo su

# add my public key

wget -O - //dev2day.de/pms/dev2day-pms.gpg.key | apt-key add -

# add my PMS repo

echo "deb //dev2day.de/pms/ jessie main" >> /etc/apt/sources.list.d/pms.list

# activate https

apt-get install apt-transport-https

# update the repos

apt-get update

# install PMS

apt-get install plexmediaserver-installer

방법2. sudo 만을이용한 명령

sudo apt-get update && sudo apt-get upgrade -y 

sudo apt-get update && sudo apt-get dist-upgrade 

///  라즈베리파이3에서재부팅없이웹으로 설정시버그가발생할있다. 때문에한번재부팅하자.

sudo reboot 

시작하기

설정은웹브라우저를통해이루어진다.

localhost:32400/web  또는 127.0.0.1:32400/web

위와같이 local혹은내부네트워크에서접속시에는관리자모드를사용할있다.

만약 외부에서 ip통해접속한다면

이런식으로외부에서 ip통해접속시에는 plex.tv로그인해야한다. 회원을만들고외부에서해당회원을통해서접근가능하다.

접속하게되면

설정

트렌스코딩임시디렉토리위치변경

기본 Sd Card입출력속도가매우저조한관계로또한수명을 위해서임시디렉토리경로를외장하드로잡아야한다.

//pauljhughes.eu/blog/2015/05/01/move-plex-metadata-location-on-ubuntu-14.04/ : metadata db 경로변경법

뿐만아니라경로를 바꿀있는모든설정은수명과성능을위해 SD Card 보다는 외장하드로잡는좋다.

글쓴이의경우는 SD Card 좋지않을 사용하여왠만한설정은외장하드경로로바꾸었다.

BubbleUpnp Server 설치

원격지(네트워크외부, )에서미디어서버에접속하기 위해서는 Bubble UPNP Server설치해야한다.

Bubble UPNP Server upnp 외부에서접근하게 해주는 Gateway역활을한다. VPN비슷하다고생각하면될듯하다.

Bubble UPnP 자바로만들어져있기때문에자바먼저설치한다.

자바설치

자바 8(Oracle java 8 jre) 설치

$sudo add-apt-repository ppa:webupd8team/java

$sudo apt-get update

$sudo apt-get install oracle-java8-installer

혹은 openjdk 설치

$sudo apt-get install openjdk-7-jre-headless

BubbleUPnP Server 설치

$sudo add-apt-repository ppa:bubbleguuum/bubbleupnpserver
$
sudo apt-get update
$
sudo apt-get install bubbleupnpserver

BubbleUPnP Server 실행/중지

upstart 사용시

$sudo start bubbleupnpserver
$
sudo stop bubbleupnpserver

systemd 사용시

$sudo systemctl start bubbleupnpserver
$
sudo systemctl stop bubbleupnpserver

BubbleUPnP Server 설정

일단공유기를사용하는상태에서외부에서접근하기위해서는포트포워딩을하여야한다.

또한공인아이피가 유동아이피라면 DDNS등록한다.

우선관리자로접속한다. http 기본포트는 58050 이다. https 기본포트는 58051이다.

//127.0.0.1:58050

공인아이피와사설아이피가보인다.

인증아이디와패스워크등록, DDNS등록

유동아이피인경우 DDNS 서비스를이용한다면 Public host name DDNS 주소를입력한다. 보통 iptime 공유기를사용하는경우 iptime 관리페이지에서 DDNS등록할있다.

미디어 서버설정

외부에서접속해보기

bubbleupnp server이용하여외부에서 media server접근가능한 dlna 클라이언트는

운영체제

어플리케이션이름

안드로이드

Bubbleupnp

PC

foobar2000

이다.

안드로이드 bubbleupnp 설정

setting->network setting에서 bubbleupnp 서버를 등록하고인증을 위한아이디와패스워드를입력하면된다.

//hostname:58050이런 식이다.

hostname보통공유기를사용하면 DDNS 주소이고고정아이피라면 ip 주소이다.

포트번호도포트포워딩설정에맞춰야한다.

Kodi 설치

kodi다양한 기능을갖춘미디어플레이어이다.

기본적인 kodi 설치법 :

$ sudo apt-get update
$ sudo apt-get install kodi

OS 버전에따른안정화된 kodi설치한다.

가장최신버전 kodi 설치법:

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository ppa:team-xbmc/ppa

$ sudo apt-get update

$ sudo apt-get install kodi

GUI Mode에서 로그인시 kodi 실행

만약 Kodi Desktop 환경에서로그인시자동으로바로실행되게 하고싶다면아래와같이하자.

어떤 Desktop Manager 상관없이로그인시 프로그램을자동실행하기위해서는

/etc/xdg/autostart 폴더내에 {이름}.desktop 파일을만들고설정하면된다.

예를들어

$ sudo vi /etc/xdg/autostart/kodi.desktop

[Desktop Entry]

Type=Application

Encoding=UTF-8

Version=1.0

Name=lxterminal

Exec=/usr/bin/kodi

로그인시 자동으로 kodi 프로그램을실행시킨다.

기타소프트웨어

Transmission

토렌트클라이언트이다. GUI 웹으로제공되므로웹으로접속하여토렌트파일올리면알아서다운받아 주는기특한녀석이다.

설치법

$ sudo apt-get install transmission-daemon
$ sudo service transmission-daemon restart

설정하기

중요설정에대해서 설명한다.

$ sudo  vi  /etc/transmission-daemon/settings.json

{

    "alt-speed-down": 50,

    "alt-speed-enabled": false,

    "alt-speed-time-begin": 540,

    "alt-speed-time-day": 127,

    "alt-speed-time-enabled": false,

    "alt-speed-time-end": 1020,

    "alt-speed-up": 50,

    "bind-address-ipv4": "0.0.0.0",

    "bind-address-ipv6": "::",

    "blocklist-enabled": false,

    "blocklist-url": "//www.example.com/blocklist",

    "cache-size-mb": 4,

    "dht-enabled": true,

    "download-dir": "/var/lib/transmission-daemon/downloads",

    "download-limit": 100,

    "download-limit-enabled": 0,

    "download-queue-enabled": true,

    "download-queue-size": 5,

    "encryption": 1,

    "idle-seeding-limit": 30,

    "idle-seeding-limit-enabled": false,

    "incomplete-dir": "/var/lib/transmission-daemon/Downloads",

    "incomplete-dir-enabled": false,

    "lpd-enabled": false,

    "max-peers-global": 200,

    "message-level": 1,

    "peer-congestion-algorithm": "",

    "peer-id-ttl-hours": 6,

    "peer-limit-global": 200,

    "peer-limit-per-torrent": 50,

    "peer-port": 51413,

    "peer-port-random-high": 65535,

    "peer-port-random-low": 49152,

    "peer-port-random-on-start": false,

    "peer-socket-tos": "default",

    "pex-enabled": true,

    "port-forwarding-enabled": false,

    "preallocation": 1,

    "prefetch-enabled": 1,

    "queue-stalled-enabled": true,

    "queue-stalled-minutes": 30,

    "ratio-limit": 2,

    "ratio-limit-enabled": false,

    "rename-partial-files": true,

    "rpc-authentication-required": true,

    "rpc-bind-address": "0.0.0.0",

    "rpc-enabled": true,

    "rpc-host-whitelist": "",

    "rpc-host-whitelist-enabled": true,

    "rpc-password": "{f7aa6992fd1f4c0be2c20a661329601ce4d83a0fzLVAJ6Rt",

    "rpc-port": 9091,

    "rpc-url": "/transmission/",

    "rpc-username": "transmission",

    "rpc-whitelist": "127.0.0.1",

    "rpc-whitelist-enabled": false,

    "scrape-paused-torrents-enabled": true,

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

    "script-torrent-done-filename": "",

    "seed-queue-enabled": false,

    "seed-queue-size": 10,

    "speed-limit-down": 100,

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

    "speed-limit-up": 100,

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

    "start-added-torrents": true,

    "trash-original-torrent-files": false,

    "umask": 18,

    "upload-limit": 100,

    "upload-limit-enabled": 0,

    "upload-slots-per-torrent": 14,

    "utp-enabled": true

}

옵션

설명

"download-dir"

다운로드파일이저장될폴더경로이다.

경로

"incomplete-dir"

다운로드중인파일을임시로보관할폴더경로이다.
incomplete-dir-enabled
옵션이 true 일때동작한다.

경로

"incomplete-dir-enabled"

다운로드중인파일을임시로보관할것인지선택

true, false

"watch-dir-enabled"

지정된경로에토렌트파일을넣으면자동으로감지하여다운로드해주는 기능을사용할설정

true, false

"watch-dir"

토렌트파일을감지할폴더경로이다. watch-dir-enabled 옵션이 true 동작한다.

경로

"rpc-password"

클라이언트접속시사용패스워드이다.

문자열

"rpc-port"

클라이언트에서사용하는포트이다.

숫자

"rpc-username"

클라이언트접속시사용아이디이다.

문자열

"rpc-whitelist-enabled"

클라이언트접속시화이트리스트(목록에있는호스트만허용) 사용할것인지선택 (false 이면모든원격호스트를허용한다.)

true, false

"rpc-whitelist"

클라이언트접속가능한호스트목록이다.
) "rpc-whitelist": "127.0.0.1, 192.168.*.*"

설정예

{

    "download-dir": "/mnt/data",

    "rpc-password": "pass",

    "rpc-port": 9091,

    "rpc-username": "torrent",

    "rpc-whitelist-enabled": false,

}

클라이언트접속하기

//아이피:9091접속하면된다.

기타

Raspbian firmware(kernel) Update (펌웨어업데이트)

참고 :

//www.rasplay.org/?p=3891

//www.raspberrypi.org/documentation/linux/kernel/updating.md

우선 ca-certificates git-core 설치되어있어야한다.

$ sudo apt-get install ca-certificates git-core

$ sudo apt-get install rpi-update
# sudo rpi-update

업데이트재부팅

소프트웨어, 라이브러리업데이트

패키지를전부업그레이드한다.

$ sudo apt-get update
$ sudo apt-get dist-upgrade

후기

이래저래 물건을사다보니가격이 qnap 직구로짜게사는거와몇만원차이나지않는 같다.


하지만마음대로커스텀가능하다는것이 장점아닐까?

집에서토렌트머신으로활용이다.  DLNA 기능으로핸드폰으로누워서편하게볼수있다는것이가장 장점이다.

레트로게임도하고싶지만게임패드를살까말까만계속고민중이다.

한방설치파일을만들까고민중이다. 쉘스크립트나 dockerfile염두해두고 있다.

Toplist

최신 우편물

태그