코딩/라즈베리파이

라즈베리파이로 NAS 서버 만들기 3편 - 토렌트 서버 (transmission)

드리프트 2021. 1. 23. 21:14
728x170

 

 

안녕하세요?

 

지난 시간에 이어 라즈베리파이로 NAS 서버 만들기를 계속 하도록 하겠습니다.

 

1편. cpro95.tistory.com/135

 

라즈베리파이로 NAS 서버 만들기

안녕하세요? 라즈베리파이로 여러 가지를 만들 수 있는데 그중 가장 쉬운 게 아마 서버 구축일 겁니다. 보통 집에 왜 라즈베리파이 서버를 구축하려고 하냐면 여러 가지 이유가 있겠지만 외부에

cpro95.tistory.com

2편. cpro95.tistory.com/136

 

라즈베리파이로 NAS 서버 만들기 2편 - ftp

안녕하세요? 지난시간에 라즈베리파이로 서버 구축하는 방법에 대해 알아 봤는데요. https://cpro95.tistory.com/135 라즈베리파이로 NAS 서버 만들기 안녕하세요? 라즈베리파이로 여러 가지를 만들 수

cpro95.tistory.com

 

3편에서는 아마 개인 서버에서 가장 유용하게 쓰일 토렌트일겁니다.

 

리눅스에서는 transmission-daemon 이라는 아주 유용한 프로그램이 있습니다.

 

그래서 이번 편에서는 transmission-daemon 설치에 대해 알아 보겠습니다.

 

일단 라즈베리파이에 원격 ssh 접속합니다.

 

ssh cpro95@192.168.29.159 -p 2002

 

 

제 라즈베리파이는 ASUS 라우터에서 192.168.29.159로 할당되었고 1편에서 ssh 포트를 2002로 했었습니다.

 

이제 라즈베리파이에 원격 접속했으니까

 

본격적인 transmission-daemon 설치에 들어가 보겠습니다.

 

su root
apt install transmission-daemon

ps -ef | grep transmission-daemon

 

 

설치 및 프로세서가 실행중인지 확인까지 했습니다.

 

그럼 이제 본격적인 설정에 들어가 보도록 하겠습니다.

 

설정파일은 /var/lib/transmission-daemon/info/settings.json 입니다.

 

설정파일을 건들기 전에 transmission-daemon 을 먼저 중지시켜야 합니다.

 

service transmission-daemon stop
ps -ef | grep transmission-daemon

 

이제 설정파일에 대해 알아 봅시다.

 

{
    "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": "http://www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": true,
    "download-dir": "/var/lib/transmission-daemon/Downloads",
    "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,
    "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": true,
    "preallocation": 1,
    "prefetch-enabled": true,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 2,
    "ratio-limit-enabled": false,
    "rename-partial-files": true,
    "rpc-authentication-required": false,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": true,
    "rpc-password": "{f17ef3d116669d34350d4a5d19a67148172eaf64fwbHLmwC",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "",
    "rpc-whitelist": "127.0.0.1",
    "rpc-whitelist-enabled": true,
    "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-slots-per-torrent": 14,
    "utp-enabled": true
}

 

기본적으로 자바스크립트의 json 파일 형식입니다.

 

이제 본격적으로 고쳐야할 부분을 살펴 보겠습니다.

 

 

1. download-dir

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

 

"download-dir" 은 토렌트가 다운로드 완료되었을 때 최종 보관되는 장소입니다.

 

저는 다음과 같이 외장 하드로 설정했습니다.

 

 "download-dir": "/mnt/ext4_disk/downloads",

 

2. incomplete-dir

 

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

 

"incomplete-dir" 은 다운로드 중인 파일을 표기하는 옵션인데 저는 잘되고 있는지 확인하기 위해 설정하는 편입니다.

 

 

저는 다음과 같이 외장하드 temp 폴더로 지정했습니다.

 

"incomplete-dir": "/mnt/ext4_disk/temp",
"incomplete-dir-enabled": true,

 

 

3. rpc 설정

 

"rpc-password": "{f17ef3d116669d34350d4a5d19a67148172eaf64fwbHLmwC",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,

 

rpc 설정은 우리가 웹이나 전용 프로그램으로 토렌트 상태를 볼려고 접속하는 세팅관련입니다.

 

일단 transmission-daemon 기본포트는 9091입니다. 잘 외워 두시기 바랍니다.

 

rpc-username 은 기본적인 이름인 "transmission"으로 설정했습니다.

 

그리도 rpc-password에도 가장 일반적인 "1234567890" 으로 설정합시다.

 

물론 본인 여러분의 비밀번호를 설정하십시요.

 

"rpc-password" : "1234567890" 이렇게 넣어 두시면 나중에 transmission-daemon 이 실행될 때 settings.json 파일에 있는 rpc-password 부분이 hash 숫자로 바뀝니다.

 

그리고 중요한 rpc-whiltelist 관련해서는 false 및 모든 주소로 바꾸어 놓읍시다.

 

제 설정입니다.

 

"rpc-password": "{f17ef3d116669d34350d4a5d19a67148172eaf64fwbHLmwC",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "*.*.*.*",
"rpc-whitelist-enabled": false,

 

4. watch-dir

 

NAS 에 토렌트 서버를 돌리는 가중 중요한 이유는 토렌트 파일만 특정 폴더에 ftp로 업로드 하면 자동으로 토렌트가 알아서 실행시키게 만드는 겁니다.

 

transmission-daemon 에서는 watch-dir 이 그 기능을 합니다.

 

watch-dir 폴더에 torrent 파일만 업로드 하면 알아서 다운로드를 시작합니다.

 

transmission-daemon의 watch-dir 기본 설정은 안되어 있어 다음과 같은 문구를 settings.json 마지막에 추가하시면 됩니다.

 

 "watch-dir": "/mnt/ext4_disk/temp",
 "watch-dir-enabled": true

 

json 파일의 마지막이라 true 다음에 콤마(,)가 없는 점 유의 바랍니다.

 

 

5. umask

umask란 트랜스미션이 다운받은 화일의 읽기 권한을 설정하는 방식입니다.

 

기본은 "umask": 18, 이라고 되어 있는데 이렇게 되면 사용자가 transmission-daemon 만 지울수 있게 됩니다.

 

그래서 누구나 읽기 가능하게 즉, -rwxrwxrwx (777) 이렇게 설정하는 방식인데

 

다음과 같이 umask 를 0으로 설정하면 됩니다.

"umask": 0,

 

 

6. 실행

 

이제 설정도 했겠다 실행해 보겠습니다.

 

service transmission-daemon start

 

이제 웹 UI 에 접속해 보겠습니다.

 

주소는 http://192.168.29.159:9091 입니다.

 

웹브라우저에서 위 주소로 연결해 보면 아이디와 비밀번호를 물어봅니다.

 

아까 설정에서 우리는 transmission 이라는 이름과 1234567890 이라는 비밀번호를 설정했었습니다.

 

 

사용자 이름과 비밀번호를 넣으면 아래와 같이 뜹니다.

 

잘 작동되고 있네요.

 

위 스크린샷 처럼 왼쪽 상단에 파일열기 버튼을 클릭해서 웹에서 바로 토렌트 파일을 업로드 할 수 있습니다.

 

이상 라즈베리파이에 transmission-daemon 프로그램 설치에 대해 알아 보았습니다.

 

그리드형