꽃삽질 : Deluged and Deluge-web Service 설치 & 설정. 우쿠분투/리눅스

Deluge 를 Torrent 서버로 사용하려면, 서버에 deluged 와 deluge-web 만 설치하면 된다.
그리고 필요할 때만 deluged 와 deluge-web 을 차례로 실행하여 접속하여 사용하면 된다.

지금껏 이렇게 써 왔다.
그런데.. 갑자기 그냥 저렇게 하는 게 아닌, Service 를 사용해보고 싶어졌다.
HowTo 가 있길래 따라했는데... 늘 그렇듯 그냥 넘어가는 게 없었다.

그리하여 이 글은, 꽃삽질 연작 중 한 편이 되고 말았다...
아래 내용은 Deluge 홈페이지 사용자 안내서를 주로 참고했고, 오류가 발생하는 부분은 적절히(구글~) 해결했다.




1. 설치

일단, 2개를 설치해야 한다. 주의할 점! deluge 가 아니고, deluged (daemon) 이란 거다.

$ sudo apt install deluged deluge-web


2. 사용자 추가

System Service 로 실행하려면, 그걸 실행할 주체(사용자)가 설정되어 있어야 한다.
그냥 놔두면 root 가 되지만, Deluge 설명서에는 사용자/그룹 'deluge' 를 만들라고 권장하고 있다.

$ sudo adduser --system  --gecos "Deluge Service" --disabled-password --group --home /var/lib/deluge deluge


간단하게 설명하면.. (man adduser 에 자세한/장황한 설명이 있지만..)
  • --system : 일반 사용자가 아닌, 시스템 사용자를 뜻한다. 이렇게 되면 uid/gid 가 시스템 영역에서 할당된다. (일반 사용자는 1000 부터 시작)
  • --gecos "Deluge Service" : 사용자 정보(이름, 전화번호 등등) 필드에 "Deluge Service" 를 자동 입력한다. 다른 내용(주소 등등)은 adduser 가 묻지 않고 넘긴다.
  • --disabled-password : password 로 인증할 수 없게 만든다. 로그인은 가능하다고 man page 에 나와있으나, 일반 로그인 개념은 아닌 듯?
  • --group : --system 과 같이 쓰였을 경우, user 명과 같은 이름(여기서는 deluge)으로 시스템 그룹을 만든다.
  • --home /var/lib/deluge : /var/lib/deluge 를 deluge 사용자 홈디렉토리로 만든다. 일반 사용자들은 /home/userX 를 집으로 삼지만, 특수 사용자들(?)은 이런 식으로 특정 경로를 지정해줄 수 있다.
그리고, 서버를 관리하는 사용자(sudo 권한을 가진)를 이 그룹 일원으로 참여시킨다. 그래야 관리가 편하기 때문이다. 여기선 그 사용자를 tommy 라 해본다.

$ sudo adduser tommy deluge 또는,
$ sudo usermod -a -G deluge tommy


두가지 모두 같은 결과인데, adduser 는 사용자를 먼저 쓰고 그룹을 나중에 썼는데, usermod 는 그 반대다.

3. Deluge Daemon(deluged) Service 등록.

혹시나 이전에 init.d 를 사용했다면, 공식 문서 해당 영역을 참고하여 삭제해줘야 한다.

/etc/systemd/system/deluged.service 파일을 만들고, 다음 내용을 넣는다. 여기선 log 파일까지 만드는 것으로 설정했다. 로그가 필요없다면 -l 이하는 넣지 않으면 된다.

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target

[Service]
Type=simple
User=deluge
Group=deluge
UMask=002

ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning

Restart=on-failure

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target


Umask 조정이 필요하다면 적절히 해주면 되는데, 이 권한은 deluge 가 다운받은 파일에게 주어진다.
  • 007 : 사용자와 그룹(위에서 생성한 deluge:deluge)에 모든 권한을, Others 에게는 아무 권한도 주지 않음.
  • 002 : 사용자/그룹은 모든 권한을, 기타사용자는 읽기/실행만 가능.
  • 022 : 사용자는 모든 권한을, 그룹과 기타사용자는 읽기/실행만 가능.
  • 000 : 모든 사용자에게 전권을!
바로 실행하지 말고, 어차피 deluge-web 도 같이 할 것이므로(그래야 스마트폰등에서 접근이 된다.) 다음 설정으로 넘어간다.

4. Deluge Web UI(deluge-web) Service 등록.

/etc/systemd/system/deluge-web.service 를 생성하고, 다음 내용을 입력한다. 마찬가지로 로그를 생성하게끔 했다. (이전에 쓴 내용과 살짝 달라진 부분이 있는데, deluge-web 서비스는 deluged 가 먼저 실행되어야만 의미가 있으므로, 그 상관관계를 추가했다. 물론, 내가 한건 아니고, 델루지 문서 내용이 그렇게 개선되었다.)

[Unit]
Description=Deluge Bittorrent Client Web Interface
Documentation=man:deluge-web
After=network-online.target deluged.service
Wants=deluged.service

[Service]
Type=simple
User=deluge
Group=deluge
UMask=027
ExecStart=/usr/bin/deluge-web -l /var/log/deluge/web.log -L warning
Restart=on-failure

[Install]
WantedBy=multi-user.target


5. Log Rotation.

Log Rotation 이란, 낡은 로그를 압축하여 보관하게끔 하는 기능을 말한다.

/etc/logrotate.d/deluge 를 만들고, 다음 내용을 붙여넣는다.

/var/log/deluge/*.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
systemctl restart deluged >/dev/null 2>&1 || true
systemctl restart deluge-web >/dev/null 2>&1 || true
endscript
}


6. log 파일 저장 디렉토리 생성.

위에서 로그를 deluged, deluge-web 모두 /var/log/deluge 에 만들기로 했으므로, 이 디렉토리를 만들어줘야 한다.
** 한가지 문제!
Armbian 은 /var/log 디렉토리를 SD 카드가 아닌 램에 저장하게끔 하고 있다. 이를 위해서 /var/log.hdd 가 따로 있는데, 아마도 어떤 특정 시점에 /var/log 가 /var/log.hdd 로 반복되면서 복사가 되는 모양이다. SD 카드에 '쓰기'를 최소화하려는 목적이라고 한다.
그런데, 이것 때문인지, /var/log/deluge 를 만들고 재부팅하면 이 디렉토리가 사라지는 현상이 있다. Armbian Forum에 해당 내용이 있는데, 확실한 해결책은 아니지만, 다음과 같이 하니 제대로 되는 것 같다.
  1. 먼저 log2ram.service 를 정지시킨다.(sytemctl stop log2ram.service)
  2. var/log/deluge 를 만들고 권한 작업등을 마친다.
  3. 다시 log2ram.service 를 시작한다.
만약 이렇게 해서 되지 않으면, disable/stop 후 mkdir 작업을 하고, 다시 enable/start 하거나, 아니면 그냥 disable/stop 으로도 괜찮을 듯 하다. 제작자가 disable 하라고 했으니 뭐..

자.. 이제 디렉토리를 만들고 소유권, 권한부여 작업을 완료한다.

$ sudo mkdir -p /var/log/deluge
$ sudo chown -R deluge:deluge /var/log/deluge
$ sudo chmod -R 750 /var/log/deluge


** /var/log/deluge 가 없으면, deluged 가 실행되지 않는다!!
만약 위 문제등등으로 인해 /var/log/deluge 가 없는 상태에서 deluged 가 시동된다면, 오류를 발생시키고 deluged 가 실행되지 않는다.
따라서, 작업이 모두 끝나고 재부팅한 뒤 deluged 가 제대로 작동하는 꼭 확인(systemctl status deluged.service)해야 한다.


7. Service 등록 및 실행 확인

다음 명령으로 deluged, deluge-web 서비스를 시스템 시동시 시작되도록 등록한다.

$ sudo systemctl enable /etc/systemd/system/deluged.service
$ sudo systemctl enable /etc/systemd/system/deluge-web.service


이제 재부팅해서 제대로 작동하는지 확인한다. 다음 명령으로 확인할 수 있다.

$ systemctl status deluged
$ systemctl status deluge-web


fail 이 나왔다면... /var/log/deluge 가 존재하는지 살펴보고, 없다면 위에 있는대로 ramlog 관련 작업을 해보고, 멀쩡히 있는데도 안된다면..
마지막으로 다음 작업을 해줘야 한다.




2017.09 현재 아래 문제는 발생하지 않는 듯 하다.
** deluged service 시작 실패?

그냥 명령어로 deluged 를 실행하면 잘 되는데, systemctl 을 사용해서 할 때는 오류가 발생하는 경우가 있다. (즉, 위와 같이 설정하고 재부팅해서 확인하면 deluged 가 뜨지 않은 것을 볼 수 있다.)
이와 관련하여, 이런 글을 찾을 수 있었다.

정리하자면, 우분투(데비안)에 들어있는 Python 꾸러미에 버그가 있는 모양인데, 그걸 바로 잡아주면 된다는 것이다.
pip 이 설치되어 있어야 하는데, 없다면 먼저 pip 을 설치한다.

$ sudo apt install python-pip


그리고 문제 발생 원인이었던 setuptools 를 다시 설치(upgrade) 한다.

$ sudo -H pip install setuptools --upgrade


-H 를 붙인 이유는.. 나도 잘 모른다. (원문엔 없다.) 뭔가 권한 문제인 것 같은데, 붙이지 않으면 pip 이 붙이라고 권고를 하기 때문에 시키는 대로 했다.

일단은 이렇게 하고 나니 모든 문제가 해결되었다. 위 글에 나오는 wget ... 은 하지 않아도 되긴 됐는데..





** Deluge 설정 파일은 어디에?
일반 계정으로 deluge 를 실행하면 ~/.config/deluge 에 설정 파일이 생긴다.

오류없이 Service 가 실행이 된다면, 위에서 사용자 deluge 의 홈페이지로 지정해준 /var/lib/deluge 아래에 .config/deluge가 생긴다.
이게 싫다면, ExecStart 행에 원하는 경로를 -c 옵션 이하에 주면 된다.
준다면, deluged, deluge-web 모두 줘야한다.

ExecStart=/usr/bin/deluge-web -l /var/log/deluge/web.log -L warning -c /var/lib/deluge/configurations


여기까지가 '설치' 다. 설치 치곤 기네..
'설정'은...




설정은 의외로 간단하다. Deluge Thin Client 문서를 참고한다.

먼저, deluge daemon (service) 를 일단 실행시키고(이미 실행되어 있다면 됐고), kill 해야 한다.

$ systemctl kill deluged.service 


그러면 Deluge 설정 디렉토리(위에서 한 대로라면 /var/lib/deluge/.config/deluge) 에 다음 두 파일이 생겨있어야 한다.
  • auth
  • core.conf
없다면.. deluged 가 여전히 실행 중이거나, 설정 디렉토리가 엉뚱한 곳으로 설정이 되어 있거나..

1. 사용자 추가

auth 파일에 다음 내용을 추가한다.

<username>:<password>:<level>


ID, Password 적당히 넣어주고, level 은 10 이면 된다.

2. 외부에서 접근 허용

설명서에 여러가지 방법이 나와있는데, 간단하게 core.conf 파일을 열고, 다음처럼 항목을 true 로 바꾼다.

 "allow_remote": true, 


이제 deluged 를 다시 시작하면 끝.

$ systemctl start deluged.service 


연결법은 Deluge 문서 참고~ (어려울 건 없다.) 또는 예전 글 참고.

3. Web-UI 설정
일단 웹브라우저에서 서버주소:8112 로 접속한 후(최초 접속 암호는 'deluge' 이다.), 접속 암호를 바꿔준다.

그 후, 기타 설정이 필요하다면 Preferences 로 이동한다.
기본 설정은 Deluge Thin Client 를 그대로 따르므로, 웹인터페이스에 관련된 설정만 해주면 된다.
Preferences - Interface에서 Port, Use SSL 등을 적절히 변경한다.
또는, deluge-web 을 죽인 후, web.conf 를 수동으로 수정해줘도 된다. 직관적으로 알 수 있게 되어 있으니 굳이 여기서 설정을 바꾸진 않아도 된다.
그런데, SSL 을 사용하게끔 설정한 경우, 일반(http)으로 접속한 다음, 같은 브라우저로 SSL(https)을 사용하려 한다면 아예 접근이 안될 경우가 있다. 이때는 캐시(쿠키값)를 지우든가, 아니면 아예 다른 브라우저로 접속해서 다른 문제는 없는지 확인한다.

두번째로, Transdrone/Transdroid 를 위한 설정이 필요하다.
서버에서 deluge-web 을 죽인 후, web.conf 에서, default_daemon 부분을 다음처럼 바꿔준다. (기본값은 "" 로, 비어있다.)

"default_daemon": "127.0.0.1:58846"


이 작업을 해줘야 Transdrone/Transdroid 가 원활히 돌아간다.

** 위 작업은 포트가 기본값(58846)일 때는 문제가 없다. 그러나, 다른 포트를 사용할 경우, 포트를 정확하게 입력했다하더라도, Transdrone 에서, '웹인터페이스가 실행 중인 데몬에 연결되어 있지 않습니다'라는 오류를 만나게 된다.

이를 해결하기 위해선, 저 값을 '제대로' 입력해야 한다.
Deluge FAQ에 따라, 델루지 설정 디렉토리에 있는 hostlist.conf를 열고, 기본 실행하기 원하는 host 를 살펴본 뒤, 그 ID 값을 찾아 web.conf 파일에 넣어준다.

예를 들면 이런 식이다.

"default_daemon": "123459d5a5b414159caa1323f6e0c9b240c7abcd",

핑백

덧글

댓글 입력 영역

Google Analyze


LastFm

MathJax