꽃삽질 : Deluged and Deluge-web Service 설치 & 설정, Deluge 2.x 기준.

이 글의 원 글은 이글루스에 있는데, 2.0 에 맞게끔 수정했다. 1.3.x 를 위한 설정은 원 글을 참고하면 된다.

아래 내용은 Deluge 홈페이지 사용자 안내서를 주로 참고했고, 오류가 발생하는 부분은 적절히(구글~) 해결했다.


1. 설치

일단, 2개를 설치해야 한다. 주의할 점! deluge 가 아니고, deluged (daemon) 이다.
2019년 7월 현재, Deluge 2.x 를 설치하려면 PPA 가 필요하다.
Transdroid 최신판을 사용한다면, deluge-web 을 설치하지 않아도 된다.

$ sudo add-apt-repository ppa:deluge-team/stable
$ 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 를 집으로 삼지만, 특수 사용자들(?)은 이런 식으로 특정 경로를 지정해줄 수 있다.

사용자 deluge 로는 로그인 불가, su 도 불가하다. 따라서, sudo 로 해당 명령등을 실행한 후, chown, chmod 를 해줘야 한다. 그러나, sudo -u 를 사용하면 살짝 불편은 하지만 가능하긴 하다.

# 형식
sudo -u 사용자 명령

# 실제 사용
sudo -u deluge mkdir /opt/Torrent_Silo

그리고, 서버를 관리하는 사용자(sudo 권한을 가진)를 이 그룹 일원으로 참여시킨다. 그래야 관리가 편하기 때문이다. 여기선 그 사용자를 tommy 라 해본다.

$ sudo adduser tommy deluge
$ sudo usermod -a -G deluge tommy
$ sudo adduser $USER deluge

다른 명령, 모두 같은 결과. 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/Group 항목은 아래 5. User 참고.
#User=deluge
#Group=deluge
UMask=002

# Log 기능까지.
ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning
# log rotation 필요시,
#ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning --logrotate

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 등록.

** Transdroid 2.5.16 부터 Deluge2 RPC 이용이 가능해졌다. 따라서, 굳이 Web 서비스를 사용할 필요는 없다.

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

또한, 2.x 가 되면서 -d 를 붙여줘야 Active 로 실행이 된다. (해주지 않으면 Inactive 상태가 된다.)
이 내용은 아직 Deluge 문서에는 없지만, 포럼을 통해 알 수 있었다.
-d 는 ‘Do not Daemonize’ 인데, 아마도 Systemd 를 통해서 실행될 때는 이걸 붙여줘야 제대로 돌아가는 모양이다. (deluged 에도 마찬가지로 -d 를 붙인다. 이건 1.x 때부터 이랬다.)

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

[Service]
Type=simple
# User/Group 항목은 아래 5. User 참고.
#User=deluge
#Group=deluge
UMask=002
ExecStart=/usr/bin/deluge-web -d -l /var/log/deluge/web.log -L warning
# log rotation 필요시,
#ExecStart=/usr/bin/deluge-web -d -l /var/log/deluge/web.log -L warning --logrotate

Restart=on-failure

[Install]
WantedBy=multi-user.target

5. User 설정.

여기가 이전 판과 달라진 부분이다. 이전 판엔 .service 파일에 사용자와 그룹을 명시했었으나, 이제는 따로 사용자를 설정해줘야 한다.
Deluged, Deluge-web 모두 각각 만들어줘야 한다.

그런데, deluge 외 다른 사용자를 할당하면, 오류도 없고, 실행도 되지만, 제대로 작동하진 않는다. 뭔가 권한과 관련된 문제로 보이지만..
그냥 UMASK 를 002 로 주는게 당장은 해법으로 보인다.

Deluged :

$sudo mkdir /etc/systemd/system/deluged.service.d/

# 그리고 /etc/systemd/system/deluged.service.d/user.conf 를 만든 뒤 다음 내용을 넣는다.

# Override service user
[Service]
User=deluge
Group=deluge

Deluge-web :

$ sudo mkdir /etc/systemd/system/deluge-web.service.d/

# /etc/systemd/system/deluge-web.service.d/user.conf 에 다음 내용을 입력한다.
# Override service user
[Service]
User=deluge
Group=deluge

6. Log Rotation.

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

이전에는 /etc/logrotate.d/deluge 를 만들라고 했었는데, 이젠 불필요하게 됐다.
그냥 ExecStart 에 –logrotate 만 추가하면 된다.

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

위에서 로그를 deluged, deluge-web 모두 /var/log/deluge 에 만들기로 했으므로, 이 디렉토리를 만들어줘야 한다.

** 한가지 문제! Armbian 일 경우.
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)해야 한다.

8. 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/inactive 등등이 나왔다면… /var/log/deluge 가 존재하는지 살펴보고, 없다면 위에 있는대로 ramlog 관련 작업을 해보고, 멀쩡히 있는데도 안된다면..
열심히 구글을.. 또는 Deluge Forum 을 찾아가보기를.


** Deluge 설정 파일은 어디에?
일반 계정으로 deluge 를 실행하면 ~/.config/deluge 에 설정 파일이 생긴다. 그러나, systemd 로 자동실행되게끔 하면, 위에서 사용자 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 를 위한 설정이 필요하다.
만약 Transdrone 에서, ‘웹인터페이스가 실행 중인 데몬에 연결되어 있지 않습니다’라는 오류가 나오면 다음 사항을 점검해볼 필요가 있다.

서버에서 deluge-web 을 죽인 후, web.conf 에서, default_daemon 부분을 다음처럼 바꿔준다. (기본값은 “” 로, 비어있다.)

Deluge FAQ에 따라, 델루지 설정 디렉토리에 있는 hostlist.conf를 열고, hosts 부분에 나오는 첫번째 ID 값을 찾아 web.conf 파일에 넣어준다.
예를 들면 이런 식이다.

"default_daemon": "123459d5a5b414159caa1323f6e0c9b240c7abcd",

그런데, 이 부분이 1.3.x 와 2.0.x 가 좀 다르다. hostlist.conf 에 localclient 라는 내용이 추가되었는데, 그게 아니고, 그 위에 있는 첫번째 값을 넣어야 하는 듯 하다. 두번째 값은 넣어보지 않아서 작동하는지 아닌지 여부는 알 수가 없다.
아무튼 지금은 이 정도로만 정리한다.

Tags:
One Comment

안녕하세요. 글 남겨주셔서 고맙습니다.