개요
NAS 서비스 제공을 위한 기본 설정을 끝마치고 본격적인 세부 서비스를 위한 소프트웨어를 설치합니다. 도커를 사용하는 덕분에 설치 및 사용은 매우 간단합니다.
우선 NAS에서 직접 토렌트를 다루고 파일을 주고받기 위해 토렌트 클라이언트를 설치하겠습니다. 리눅스의 토렌트 클라이언트 프로그램으로는 트랜스미션(Transmission)이 널리 사용됩니다.
사전 작업
외부 접속을 위한 포트 개방
트랜스미션이 사용하는 통신포트인 TCP 9091, TCP 51413 포트, UDP 51413 포트를 개방합니다. 오라클의 가상 클라우드 네트워크의 접근 규칙과 iptables 방화벽에 서비스가 사용하는 해당 포트를 허용하는 규칙을 생성합니다.
- 오라클 가상 클라우드 네트워크 접근 규칙 수정
※ 메뉴 접근 방법은
Oracle Cloud Infrastructure에서 특정 포트로 접근 허용하기를 참조합니다.
메뉴 접근 후, 설정할 항목은 다음과 같습니다.
TCP
- 소스 CIDR :
0.0.0.0/0
- IP프로토콜 :
TCP
- 대상 포트 범위 :
9091
,51413
UDP
- 소스 CIDR :
0.0.0.0/0
- IP 프로토콜 :
UDP
- 대상 포트 범위 :
51413
- iptables 방화벽 포트 허용
sudo iptables -A INPUT -p tcp -m tcp --dport 9091-j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 51413-j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 51413-j ACCEPT
- iptables 방화벽의 설정 내용을 저장하고 다시 불러옵니다.
sudo netfilter-persistent save
sudo netfilter-persistent reload
사용자 및 그룹 확인
Transmission 이미지의 설정을 위해 현재 사용자(ubuntu
)의 uid
및 gid
를 확인해야 합니다. 출력된 값을 기록해 놓습니다.
id ubuntu
uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),110(lxd),114(netdev)
Transmission 설치 및 설정
- 포테이너 관리자 페이지(
https://example.com/portainer
)에 접속하여, [Stacks] → [+ Add stack] 으로 이동합니다. 다음 그림과 같이 항목별 내용을 모두 입력한 후, 창 하단의 [Deploy the stack] 버튼을 누릅니다.
[Name]
: transmission[Web editor]
:
---
version: "2.1"
services:
transmission:
image: linuxserver/transmission
container_name: transmission
environment:
- PUID=1001
- PGID=1001
- TZ=Asia/Seoul
- TRANSMISSION_WEB_HOME=/combustion-release/ #optional
- USER=username #optional
- PASS=password #optional
volumes:
- /home/ubuntu/docker/Transmission/config:/config
- /home/ubuntu/docker/MySMB/Torrent:/downloads
- /home/ubuntu/docker/MySMB/Watch:/watch
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
이때, 자신의 상황에 맞추어 수정할 값은 다음과 같습니다.
PUID
, PGID
앞서 확인하였던 uid
와 gid
값을 넣어 줍니다.USER
, PASS
트랜스 미션의 웹 관리자 화면에 접속 시 사용할 ID와 암호를 넣습니다.
volumes
항목의 내용은 다음과 같습니다.
/home/ubuntu/docker/Transmission/config
: 트랜스미션의 설정 파일이 공유되는 폴더입니다./home/ubuntu/docker/MySMB/Torrent
: 트랜스 미션을 통해 다운로드된 파일들이 저장될 폴더입니다./home/ubuntu/docker/MySMB/Watch
: 토렌트 시드 파일을 해당 폴더에 복사하면 트랜스미션이 이를 인식하여 다운로드를 시작합니다.
리버스 프록시 설정
앞서 설명하였던 이유로 도메인을 이용할 경우 직접 http 접속이 되지 않습니다. 따라서 이번에도 Nginx를 이용해 리버스 프록시를 설정합니다.
※ 앞서 보았던 포테이너를 위한 리버스 프록시와 내용 및 목적은 동일합니다.
location /transmission {
client_max_body_size 0;
proxy_pass_header X-Transmission-Session-Id;
proxy_pass http://example.com:9091;
}
이 내용을 기존에 운영 중인 서버 블록에 추가합니다.
vim ~/docker/nginx-ssl/etc/nginx/conf.d/example.com.conf
최종 서버 블록은 다음과 같습니다.
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2 default_server;
root /usr/share/nginx/example.com/html;
index index.html index.htm;
server_name example.com www.example.com;
include conf.d/ssl-params.conf;
location / {
try_files $uri $uri/ =404;
}
location /portainer/ {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Connection "";
proxy_pass http://example.com:9000/;
}
location /portainer/api/websocket/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://example.com:9000/api/websocket/;
}
location /transmission {
client_max_body_size 0;
proxy_pass_header X-Transmission-Session-Id;
proxy_pass http://example.com:9091;
}
}
프록시 변경사항을 반영하기 위하여 포테이너를 사용하여 Nginx를 재실행합니다.
[Containers]에서[nginxssl_nginx_1]을 체크,[Restart]로 nginx 서비스를 재시작합니다.
동작확인
트랜스미션 관리 웹 페이지의 주소는 리버스 프록시 설정에 따라 http://example.com/transmission
입니다. 해당 페이지에 USER
와 PASS
값을 넣어주면 로그인할 수 있습니다.
웹 관리자를 통해 다운로드를 하는 것은 간단히 +
버튼을 통해 쉽게 수행할 수 있으므로 여기서는 생략하겠습니다. 대신 설정한 Watch 디렉터리에 접근하여 다음과 같이 토렌트 시드 파일을 넣어 트랜스미션의 동작을 확인합니다.
cd ~/docker/MySMB/Watch
wget http://cdimage.ubuntu.com/xubuntu/releases/20.04/release/xubuntu-20.04.1-desktop-amd64.iso.torrent
참고
'기타' 카테고리의 다른 글
[자작 NAS] 4. Docker 및 Portainer 설치하기 (0) | 2020.09.12 |
---|---|
[자작 NAS] 1. 우분투 서버 마련하기 (0) | 2020.09.12 |
[자작 NAS] 5. 웹 서버 설치 및 설정 - Nginx (1/2) (0) | 2020.09.05 |
[자작 NAS] 3. TLS 인증서 발급 (0) | 2020.08.29 |
[자작 NAS] 2. 무료 도메인 신청 및 DNS 설정 (0) | 2020.08.28 |