포고플러그 Torrent 시드박스 구축 (deluge)

SBC 2017. 7. 27. 03:06 Posted by juvenile

Main NAS에 Deluge로 시드박스를 구축하면서 Deluge Web UI가 여러개의 Deluge daemon에 접속할 수 있는 것을 알았다. 오호라 deluge의 몇몇 기능이 탐나던데, 이참에 transmission으로 운용하던 포고플러그의 시드박스를 deluge로 바꿔보기로 했다.


0. 준비

아쉽게도 Debian Jessie용 deluge 패키지는 3년 전 버전이다. 특히 web ui의 경우 심각한 보안 결함이 있다고 한다. 따라서 이번에는 web ui는 깔지 않고, main NAS의 web ui에 의존하기로 한다. 나중에 시간 날 때 컴파일해보기로..


1. 설치

필요한 패키지는 deluge가 아닌 deluged 이다. 그냥 deluge는 x window용 단독 버전이다.

$ sudo apt-get install deluged
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  deluge-common geoip-database libboost-python1.55.0 libboost-system1.55.0 libpython-stdlib
  libpython2.7-minimal libpython2.7-stdlib libtorrent-rasterbar7 mime-support python python-cffi
  python-characteristic python-chardet python-cryptography python-libtorrent python-minimal
  python-openssl python-pkg-resources python-ply python-pyasn1 python-pyasn1-modules
  python-pycparser python-service-identity python-six python-twisted-bin python-twisted-core
  python-twisted-web python-xdg python-zope.interface python2.7 python2.7-minimal

python이 깔려있지 않아서 추가 패키지를 상당히 많이 설치한다. 그러나 실상 deluged가 대부분의 용량을 차지하고 python과 python extensions 가 추가로 잡아먹는 용량은 15% 수준이다.

참고로 web ui 패키지는 deluge-web 이고, deluged와 deluge-web이 조합이 되어야 진정한 시드박스가 된다.


2. 서비스 생성하기: http://dev.deluge-torrent.org/wiki/UserGuide/Service/systemd

Debian에서 별로 인기가 없는 패키지인지 설정이 좀 부실한 것 같다. daemon 주제에 systemd unit 조차 없다. 첫 시작이 좀 험란하네.

우선 deluged를 종료하고 init.d 스크립트를 삭제한다. 

$ sudo /etc/init.d/deluged stop

$ sudo rm /etc/default/deluged

$ sudo rm /etc/init.d/deluged

$ sudo update-rc.d deluged remove


이제 deluged와 deluge-web의 서비스를 만들어준다.

먼저 /etc/systemd/system/deluged.service 를 새로 만들어 아래 내용을 넣어준다.

[Unit]
Description=Deluge Bittorrent Client Daemon
Documentation=man:deluged
After=network-online.target
[Service]
Type=simple
User=debian-deluged
Group=debian-deluged
UMask=007
ExecStart=/usr/bin/deluged -d -c /var/lib/deluged/config
Restart=on-failure
# Time to wait before forcefully stopped.
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target

여기서 User/Group은 debian package 기준이고, 소스에서 빌드했거나 다른 배포판의 경우 그에 맞춰서 변경해주어야 한다.

UMask는 Linux 파일 퍼미션의 그 umask인데, deluge daemon이 만드는 파일의 권한을 의미한다.


둘 다 부팅 시 실행되도록 활성화한다.

$ sudo systemctl enable deluged.service


deluge-web도 설치한 경우 이전에 main NAS 셋팅하면서 Debian Stretch 기준으로 적어둔 다른 글을 참조할 것. http://notme.tistory.com/56
Stretch건 Jessie건 다를 바 없다.


3. 설정파일 수정

debian 패키지의 경우 /var/lib/deluged/config 폴더를 사용한다.

설치 직후에는 비어있는데, daemon을 실행하면 기본 설정이 들어있는 설정파일이 생긴다.

아까 만든 deluged 서비스를 한번 시작했다가 종료해서 설정파일을 만들어주자.

$ sudo systemctl start deluged.service

$ sudo systemctl stop deluged.service


설정 파일을 수정할 때는 반드시 deluged 가 종료되어 있어야 한다.


- 로그인 설정

auth 파일에 아이디:패스워드:레벨을 적어준다.

데스크탑, 스마트폰용 client를 사용할 때 필요한 추가 사용자로 web ui만 사용할 생각이라면 만들 필요가 없다.


파일을 열어보면 localclient 라는 사용자가 이미 만들어져 있는데, local client용이며 지우지 말라고 한다.

대표적으로 web ui가 localclient 사용자를 사용한다.


여기서 레벨은 관리자가 10, 일반 사용자는 5, 읽기 전용은 1, 권한없음 0 이다.

내 경우엔 headless 서버이므로 레벨 10짜리 관리자를 하나 만들어주었다.

아래 명령으로 사용자를 만들어도 되고, 그냥 auth 파일을 열어서 localclient 아래에 한줄 추가해도 된다.

echo "신규사용자:패스워드:10" >> /var/log/deluged/config/auth


- 원격 접속 허용

여기서 원격은 localhost를 제외한 모든 접속을 말한다. webui daemon은 localhost 상에서 동작하므로 여기에 포함되지 않는다. 아래 설정은 데스크탑, 스마트폰용 client를 사용할 경우에만 필요하다.

/var/lib/deluged/config/core.conf 파일에서 "allow_remote" 값을 false에서 true로 바꾼다.

각종 설정이 빼곡히 적혀있지만, web ui에서 바꿀 수 있다.


- 방화벽 or Port Forwarding

web ui는 8112, rpc는 58846 tcp 포트를 사용한다. 두 포트를 방화벽/포트 포워딩 설정에 추가하자.

원격 client를 사용하지 않을 경우 58846은 제외한다.


- 실행

deluged와 deluge-web daemon을 실행하고 web ui로 접속해서 동작 상태를 확인하자.

$ sudo systemctl start deluged.service

$ sudo systemctl start deluge-web.service

Web ui의 기본 비밀번호는 deluge 이며, 첫 접속 시 비밀번호 변경 안내를 하니 알아서 바꾸자.