
토렌트를 자신의 PC에서 직접 돌리는 것 보다는, VPS등 따로 서버에서 돌리는 것이 프라이버시 측면에서는 훨씬 안전한 방법입니다. 토렌트를 사용하면 필연적으로 노출될 수 밖에 없는 자신의 IP주소를 보호할 수 있기 때문이죠.
이번에는 토렌트 클라이언트 중 하나인 Qbittorrent에서 제공하는 Web UI 기능을 통하여 VPS에 토렌트 서버를 구축해보겠습니다.
Environment
- Ubuntu 18.04.3 LTS on Oracle Cloud (VPS)
Qbittorrent-nox 설치하기
GUI 환경에서는 클릭 몇 번으로 Qbittorrent를 설치하여 Web UI를 설정하는 것이 가능하지만, CLI 환경에서는 그리 호락호락 하지 않습니다. 다행히도 Qbittorrent는 이런 서버 환경을 위해 Web UI를 위한 Qbittorrent-nox 패키지를 마련해놨습니다.
아래의 명령어를 차례로 실행하여 Qbittorrent-nox를 설치하세요.
$ sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable
$ sudo apt install qbittorrent-nox
qBittorrent-nox를 데몬으로 돌리기 위하여 서비스에 등록하는 작업이 필요합니다.
$ sudo nano /etc/systemd/system/qbittorrent-nox.service
편집기를 열고, 다음의 내용을 등록한 후 저장합니다:
[Unit]
Description=qBittorrent-nox Daemon Service
After=network.target
[Service]
Type=forking
User=root
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=3172
Restart=on-failure
[Install]
WantedBy=multi-user.target
편의상 유저를 root
로 설정하였지만, 보안을 위해서는 별도의 유저를 생성하여 그 유저를 통해 서비스를 관리하는 것이 권장됩니다.
Qbittorrent-nox를 부팅 시 자동으로 실행되게 하고, 데몬을 실행시킵니다.
$ sudo systemctl enable qbittorrent-nox && sudo systemctl start qbittorrent-nox
Nginx로 리버스 프록시 설정하기
지금 바로 서버의 IP로 접속하여 Qbittorrent를 사용할 수도 있지만, Nginx를 통해 리버스 프록시를 설정하면 보안 측면에서 더욱 안전하게 웹 애플리케이션을 구성할 수 있습니다.
다음의 명령을 실행하여 Nginx를 설치합니다:
$ sudo apt install nginx
Nginx 가상 호스트 구성 파일을 생성합니다. <domain.tld> 부분을 사용하고자 하는 자신의 도메인으로 바꾸어 주세요.
$ sudo nano /etc/nginx/sites-available/<domain.tld>
다음의 내용을 붙혀넣습니다.
server {
server_name <domain_tld>;
location / {
proxy_pass http://127.0.0.1:3172/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
}
위에서 서비스를 생성할 때 Web UI의 포트를 3172로 지정했으므로, 프록시도 같이 3172 포트로 설정하였습니다.
sites-enabled
폴더에 sites-available
에 생성된 설정 파일을 향하는 symlink를 생성합니다.
$ sudo ln -s /etc/nginx/sites-available/<domain.tld> /etc/nginx/sites-enabled/<domain.tld>
다음의 명령으로 문법에 이상이 없는지 확인합니다.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
설정 파일의 문법에 이상이 없다면 마지막으로 Nginx 서비스를 재시작 합니다.
$ sudo service nginx restart

소유한 도메인의 DNS 설정 사이트로 이동하여 A레코드를 아까 설정하신 도메인으로 맞춰주세요.
Let’s Encrypt 인증서 발급받기

Let’s Encrypt를 사용해서 Qbittorrent를 위해 SSL 인증서를 발급받을 수 있습니다. Nginx로 리버스 프록시를 구성했으므로 인증서 발급은 훨씬 간단해집니다.
Let’s Encrypt 인증서 발급을 쉽게 수행할 수 있게 Certbot
패키지를 사용하겠습니다. 다음의 명령으로 Certbot
을 설치해 주세요.
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt install certbot python3-certbot-nginx
다음의 명령을 실행해 인증서를 발급 받습니다. domain.tld 부분에 아까 등록한 도메인을 입력해주세요:
$ sudo certbot -d domain.tld --nginx
처음 발급 시 이메일, 약관을 물을 수 있습니다. 잘 보고 본인의 이메일과 Y 또는 N으로 입력해주시면 됩니다.
인증서 발급과 동시에 적용까지 완료될 것 입니다. 과정이 완료되고 나면 곧바로 SSL 환경으로 Qbittorrent Web UI에 접속하실 수 있습니다.

설정한 주소로 접속하면 다음과 같은 로그인 UI를 볼 수 있습니다. 초기 아이디는 admin
, 패스워드는 adminadmin
입니다. 보안을 위해 Options
에서 아이디와 패스워드를 변경하는 것을 추천드립니다.
Web UI 테마 변경하기

이제 Qbittorrent의 모든 기능을 Web에서 사용할 수 있게 되었지만, 디자인이 너무 구식처럼 보여 영 마음에 들지 않습니다. Qbittorrent는 Web UI에서의 Custom Theme를 지원해서 UI의 디자인을 간단하게 변경할 수 있습니다.
여기에서는 Vue.js 프레임워크로 만들어진 VueTorrent 테마를 설치하려 합니다.
다음의 명령을 실행해서 테마를 다운로드하고 압축을 푸세요:
$ cd /home/qbittorrent-nox/
$ wget https://github.com/WDaan/VueTorrent/releases/download/dev-v0.1.0/release.zip
$ unzip release.zip
압축을 풀면 vuetorrent
폴더가 생성되었을 것 입니다. 폴더 구조는 다음과 같습니다.
$ ll vuetorrent/
total 12
drwxr-xr-x 3 root root 4096 Jun 6 13:46 ./
drwxr-xr-x 9 qbittorrent-nox qbittorrent-nox 4096 Jun 6 04:14 ../
drwxr-xr-x 4 root root 4096 Jun 6 03:39 public/
Qbittorrent Web UI에 들어가서 Options > Web UI > Use alternative Web UI
에 체크하고, Files location
를 /home/qbittorrent-nox/vuetorrent
로 바꿉니다.
혹시 UI Language를 한국어로 설정하셨다면, English로 다시 바꾸어주세요. 한국어로 설정되어있을 경우 테마 설치가 제대로 되지 않을 수 있습니다.

모두 완료한 후에는 Save
를 눌러 변경사항을 적용해주세요.

Vuetorrent 테마가 적용되었습니다. 이전보다 UI가 훨씬 깔끔해졌습니다.
혹시 다른 테마를 설치하시길 원하시면, 이 곳에서 더 많은 테마를 찾으실 수 있습니다. 적용 방법은 크게 다르지 않습니다.