2013-11-20

Raspberry Pi as Remote Torrent Machine

라즈베리파이를 리모트 토렌트 머신으로 만들기

 

Screen Shot 2013 11 20 at 11 51 58 AM

 

토렌트를 자주 쓰는데, 불편했던 것은 컴퓨터를 항상 켜놔야 한다는 것이다. 라즈베리파이 서버가 있으니 토렌트 다운로드 머신으로 써 보자.

 

1. 라즈베리파이에 토렌트를 설치하자. 데몬과 클라이언트를 설치하자.

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

 

2. 셋업 파일을 수정하기 전에 토렌트 데몬을 중지해야 한다. 중지 안하고 하면, 나중에 다시 롤백된다. 주의하자.

sudo service transmission-daemon stop

 

다시 서버를 시작하는 것은 stop을 start이나 restart로 바꾸면 된다.

sudo service transmission-daemon start

 

3. 설정파일을 수정한다. json 파일을 수정하게 된다. 제이슨 파일은 처음 보았는데 뭐 별거 없다.

sudo nano /var/lib/transmission-daemon/info/settings.json

 

다음의 파일을 필요에 맞게 수정한다.

"rpc-username": "사용자이름",

"rpc-password": "비밀번호",

"download-dir": "다운로드위치",

"incomplete-dir": "다운로드가 완료되지 않은 파일 임시 저장소",

"incomplete-dir-enabled": true,

 

나는 어느 컴퓨터에서도 다운로드를 원격으로 하기 위해 whitelist를 사용하지 않겠다. 사용한다면(true) 정해진 ip에서만 다운 명령을 내릴 수 있다.

"rpc-whitelist-enabled": false,

 

3.1. 블락리스트를 설정한다. 경찰에게 잡혀가지 않을 확률을 올려주는 중요한 작업이다. 아버지가 대통령이거나 벌금 낼 돈이 많다면 3번은 패스해도 좋다. 이렇게 수정한다.

"blocklist-enabled": true,

"blocklist-url": "http://www.bluetack.co.uk/config/level1.gz",

 

블락리스트를 info 폴더에 다운로드 한다. 루트권한이 필요하다. (왜 루트권한이 필요한 진 모르겠지만, 루트가 아니면 저 폴더에 못 들어간다.)

 

해당 폴더로 간다.(루트권한필요)

sudo su

cd /var/lib/transmission-daemon/info/blocklists/

 

파일을 다운받는다. 해당 파일이 폴더에 생길 것이다.

wget http://www.bluetack.co.uk/config/level1.gz

 

압축을 푼다.

gunzip level1.gz

 

트랜스미션을 재시작한다.

sudo service transmission-daemon reload

 

ls로 폴더를 보면 level1.bin 파일이 생성되었을 것이다.

 

3.2 블락리스트 업데이트를 매주 한번씩 해주는 자동 스크립트 만들기. 이것 역시 경찰에 잡혀갈 확률을 줄여준다.

폴더로 가서 파일을 만든다.

cd /var/lib/transmission-daemon/info/blocklists/

sudo nano update-transmission-blocklist

 

새 파일이 생기면 이렇게 적는다.

#!/bin/bash

# blocklist directory
BLOCKLISTDIR=/var/lib/transmission-daemon/info/blocklists

cd ${BLOCKLISTDIR}
if [ $? -eq 0 ]; then
if [ -f level1 ]; then
rm level1
fi
# if no blocklist file exist update blocklist
if [ ! -f level1 ]; then
echo "*** updating Blocklist for Transmission...”

wget -q -O level1.gz http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz

# if download successful unzip it
if [ -f level1.gz ]; then
gunzip level1.gz
# if file extracted successfully reload transmission
if [ $? -eq 0 ]; then
chmod go+r level1
/etc/init.d/transmission-daemon reload
else
rm -f level1*
fi
fi
fi
cd - 2>&1 >/dev/null
fi

 

완성된 파일 스크린샷

Screen Shot 2013 11 20 at 12 27 56 PM

 

저장하고 나온다.

 

파일을 실행 가능하게 만들어 준다.

chmod a+x update-transmission-blocklist

 

파일을 자동실행폴더로 넣어야 한다. cron.weekly에 넣으면 자동으로 실행이 된다고 한다. (아직 일주일이 안 지나서 모르겠지만 되겠지 뭐…)

mv update-transmission-blocklist /etc/cron.weekly/

 

자동으로 매주 한번씩 블락리스트를 업데이트 해준다. 경찰관을 만날 확률이 줄어들었다! 하지만 여전히 불안감은 있다. 뭐 어쩌겠나...

 

4. 다운로드위치 설정하기. 나는 외장 USB하드를 NAS로 연결해서 쓰고 있다. 해당 하드에다 폴더를 만들어 준다.

sudo mkdir /mnt/NAS-1T-EXT4/Torrent

 

완료되지 않은 폴더도 만들어준다.

sudo mkdir /mnt/NAS-1T-EXT4/Torrent/Incomplete

 

중요한 설정이 남았다. 나는 퍼미션 이슈가 발생했는데, 이 방법으로 이슈를 피할 수 있었다.

sudo chown -R debian-transmission /mnt/NAS-1T-EXT4/Torrent

 

트랜스미션을 재시작 한다.

sudo service transmission-daemon reload

sudo service transmission-daemon restart

 

퍼미션 세팅을 좀 해야한다. debian-transmission을 pi그룹으로 추가하자. 퍼미션 에러를 줄이기 위한 방법이다.

sudo usermod -a -G debian-transmission pi

 

그룹 오너쉽을 정해주자. 유저가 아니라 그룹이다.

sudo chgrp debian-transmission /mnt/NAS-1T-EXT4/Torrent/Incomplete

sudo chgrp debian-transmission /mnt/NAS-1T-EXT4/Torrent

 

권한을 모든 권한을 허용하자. 사용자와 그룹이 모두 접근할 수 있다. 단 비등록 사용자(게스트)는 불가능.

sudo chmod -R 770 /mnt/NAS-1T-EXT4/Torrent

sudo chmod -R 770 /mnt/NAS-1T-EXT4/Torrent/Incomplete

 

트랜스미션을 정지한다.

sudo service transmission-daemon stop

 

세팅을 고친다.

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

 

이렇게 고친다. 숫자를 바꾸면 된다. 18을 2로 바꾼다. 기본값이 18인데, 원격접속한 사용자가 실행과 삭제를 하질 못한다. 2로 바꾸자. 2는 775를 의미한다.

"umask": 18

이것을

 "umask": 2

으로 고친다.

 

그림으로 보자. 이걸 고치면 된다.

Screen Shot 2013 12 22 at 3 12 38 PM

 

컴퓨터를 재 부팅한 뒤 다시 재시작 해 보자. (작업내용을 꼭 저장한다. 재부팅 하면 다 날라간다)

sudo reboot

sudo service transmission-daemon reload

sudo service transmission-daemon restart

 

퍼미션 설정은 어떻게 했는지 잘 기억이 안 나는데, 아무튼 이정도로 했더니 되더라… 이유는 나도 잘 모르겠다 ㅠㅠ 퍼미션은 항상 어렵다.

 

 

5. 수정된 설정파일 종합

 

설정 파일 수정에 대한 모든 정보는 여기에 있다.

https://trac.transmissionbt.com/wiki/EditConfigFiles

 

완성된 내 설정파일이다. 볼드된 텍스트를 수정한 것이다.

pi@sulli /mnt/NAS-1T-EXT4/Torrent/Incomplete $ sudo cat /var/lib/transmission-daemon/info/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": true,
"blocklist-url": "http://www.bluetack.co.uk/config/level1.gz",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/mnt/NAS-1T-EXT4/Torrent",
"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": "/mnt/NAS-1T-EXT4/Torrent/Incomplete",
"incomplete-dir-enabled": true,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 2,
"peer-congestion-algorithm": "",
"peer-limit-global": 240,
"peer-limit-per-torrent": 60,
"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-password": "비밀번호가 암호화 되어 나타날 것이다",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "pi", 
"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
}



6. 다른 컴퓨터에서 원격으로 접속해 본다.

Transmission Remote GUI 같은 앱을 써도 되지만, 크롬이나 사파리에서 웹환경으로 접속하는 것이 편하다.

주소창에 앞서 설정한 주소를 적고, 포트번호를 적으면 된다.

http://192.168.0.3:9091/

혹은

192.168.0.3:9091

으로 접속할 수 있다.


Screen Shot 2013 11 20 at 12 37 14 PM


7. 모든 설정파일 삭제하기. 뭔가 잘못 되었다거나 다시 해보려면 다음과 같이 프로그램과 설정 파일을 지운다.

sudo apt-get remove --purge transmission transmission-daemon transmission-cli

 

 

참고:

http://blog.spiralofhope.com/3148-transmission-on-the-raspberry-pi.html

http://cumulativeparadigms.wordpress.com/2012/08/13/tutorial-1-setting-up-rpi-as-a-torrent-server/

http://blog.shvetsov.com/2010/09/automatically-update-transmission-block.html

https://forum.transmissionbt.com/viewtopic.php?f=4&p=50358

 퍼미션이슈:

http://raspberrypi.stackexchange.com/questions/4378/transmission-permission-denied-on-usb-disk

https://forum.transmissionbt.com/viewtopic.php?f=2&t=10456

http://askubuntu.com/questions/221081/permission-denied-when-downloading-with-transmission-deamon