시놀로지 나스에서 도커를 활용해 VPN을 사용하는 토렌트 웹서버를 만들어 보겠습니다. 과거 transmission-ovpn 도커 이미지를 썼었는데 이제는 더 이상 사용하지 않고 gluetun + deluge 조합을 사용하고 있습니다. 천천히 따라해봅시다.
준비물
1. 시놀로지 NAS
2. 시놀로지 컨테이너 매니저 (도커) - 패키지 센터에서 설치
3. VPN 계정
폴더생성
docker 폴더에 총 3개의 폴더를 생성합니다.
/docker/deluge-gluetun-vpn-project
/docker/gluetun
/docker/deluge
TUN 스크립트 설정
VPN이 작동하려면 시놀로지에서 TUN 스크립트 설정을 해줘야합니다.
제어판을 켜고 작업 스케줄러에 들어갑니다.
생성 -> 트리거된 작업 -> 사용자 정의 스크립트
작업 | gluetun |
사용자 | root |
이벤트 | 부트업 |
활성화됨 | 체크 |
일반 탭에서는 위와 같이 설정해주고 작업 설정 탭으로 넘어갑니다.
#!/bin/sh -e
insmod /lib/modules/tun.ko
사용자 정의 스크립트에 위와 같이 입력하고 확인을 누릅니다.
생성한 작업을 선택하고 실행합니다. 이제 시놀로지가 부팅될 때마다 해당 스크립트가 실행됩니다.
컨테이너 매니저 프로젝트 생성
이제 컨테이너 매니저를 켭니다.
프로젝트 탭에 들어가서 생성을 누릅니다.
'프로젝트 이름'은 'deluge-gluetun-vpn-project'로, '경로'는 제일 처음 만들었던 'deluge-gluetun-vpn-project' 폴더로 설정합니다. '원본'은 'docker-compose.yml 만들기'로 선택합니다. 이제 회색 칸 안에 텍스트를 작성할 수 있습니다. 아래 텍스트를 복사 붙여넣기 합니다.
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 8888:8888/tcp # HTTP proxy
- 8388:8388/tcp # Shadowsocks
- 8388:8388/udp # Shadowsocks
- 8112:8112/tcp # deluge
volumes:
- /volume1/docker/gluetun:/gluetun
environment:
- PUID=1000 #UID
- PGID=100 #GID
- TZ=Asia/Seoul #서버 시간대 설정
- VPN_SERVICE_PROVIDER=surfshark #VPN 업체 이름
- VPN_TYPE=wireguard #와이어가드 사용시
- WIREGUARD_PRIVATE_KEY=wOEI #프라이빗 키
- WIREGUARD_ADDRESSES=10.64.222.21/16 #와이어가드 주소
- SERVER_COUNTRIES=Netherlands #VPN 서버 국가 이름
- HTTPPROXY=off #사용하면 on
- SHADOWSOCKS=off #사용하면 on
- FIREWALL_OUTBOUND_SUBNETS=172.20.0.0/16,192.168.0.0/24 #필요하면 수정
network_mode: bridge
labels:
- com.centurylinklabs.watchtower.enable=false
security_opt:
- no-new-privileges:true
restart: always
linuxserver-deluge:
image: linuxserver/deluge:latest
container_name: deluge
environment:
- PUID=1000 #UID
- PGID=100 #GID
- TZ=Asia/Seoul #서버 시간대 설정
- DELUGE_LOGLEVEL=error #필요하면 설정
- UMASK=022
volumes:
- /volume1/docker/deluge:/config
network_mode: service:gluetun
depends_on:
gluetun:
condition: service_healthy
security_opt:
- no-new-privileges:true
restart: always
이제 위 텍스트에서 주석이 적혀있는 environment 항목 여러개를 채워넣거나 수정해야 합니다. 위 상태 그대로 실행시키면 작동하지 않습니다.
PUID, PGID
PUID, PGID 부분에는 본인이 현재 사용중인 시놀로지 ID의 UID와 GID를 알아내서 채워넣어야 합니다. 이 글(링크)을 통해 찾아낼 수 있습니다.
TZ
서버 시간대 설정입니다. 한국에 거주하고 있고 다른 시간대를 쓸 특별한 이유가 없다면 Asia/Seoul로 설정합니다.
VPN 설정
VPN_SERVICE_PROVIDER부터 SERVER_COUNTRIES를 작성해야 하는데요. 이 부분이 제일 까다롭습니다. VPN 업체마다 설정 방법이 다릅니다. 때문에 GlueTUN 위키 페이지에서 업체별 작성 방법을 직접 살펴보고 채워넣으셔야 합니다. 저는 현재 Surfshark VPN을 사용 중이라 해당 VPN 업체의 설정 방법을 알려드리겠습니다.
SurfShark VPN GlueTUN 설정 방법 (Wireguard)
GlueTUN 깃허브 위키에 접속합니다. 왼쪽 providers 폴더 내에 다양한 vpn 업체들의 설정 방법이 적혀있습니다. surfshark.md를 열어보겠습니다. OpenVPN, Wireguard 예제가 맨 위에 적혀있습니다. 저는 Wireguard 프로토콜을 사용할 생각입니다. 4가지 환경 변수를 설정하면 되는군요. 글을 더 내려보니 OpenVPN only와 Wireguard only가 적혀있습니다. Wireguard only에 따라 설정해보겠습니다. 설정은 전자가 훨씬 쉽네요.
VPN_SERVICE_PROVIDER
사용 중인 VPN 업체의 이름을 적습니다. 저는 surfshark라고 적겠습니다.
VPN_TYPE
어떤 프로토콜을 쓸 것인지 설정합니다. wireguard라고 적겠습니다.
WIREGUARD_PRIVATE_KEY, WIREGUARD_ADDRESSES
WIREGUARD_PRIVATE_KEY부터 찾아보겠습니다. 링크로 접속합니다.
서프샤크 대시보드 -> VPN -> 수동설정 -> 데스크톱 혹은 모바일 -> WireGuard를 누릅니다. '키 쌍이 없습니다'를 누르고 이름을 적는 칸이 나오면 임의의 이름을 설정합니다. '새로운 키 쌍 생성'을 누릅니다. 그 다음으로 본인이 사용할 VPN 서버 국가를 고릅니다.
국가까지 선택하고 나면 conf 확장자를 가진 'WireGuard 설정 파일'을 다운로드할 수 있습니다. 메모장으로 열 수 있습니다. 파일을 열면 4번째 줄에 Address, 6번째 줄에 PrivateKey가 나옵니다. Address 값을 WIREGUARD_ADDRESSES에 적고(/16까지 전부), PrivateKey 값을 WIREGUARD_PRIVATE_KEY에 넣어줍니다.
SERVER_COUNTRIES
VPN 서버가 위치한 국가의 이름을 적습니다. 한국 서버를 골랐다면 korea를 적어주면 되겠죠. 이제 VPN 설정은 끝났습니다.
FIREWALL_OUTBOUND_SUBNETS
172.20.0.0/16,192.168.0.0/24로 되어있죠. 대부분 이 상태 그대로 적으셔도 됩니다. 다만 나스 내부 아이피가 192.168으로 시작하지 않고 다른 숫자로 시작하는 경우가 있을겁니다. 이 경우 앞 172.20.0.0/16는 절대 수정하지 마시고 쉼표 뒷부분만 X.X.0.0/24으로 수정해서 적으시면 됩니다.
Deluge 컨테이너 환경변수 설정
PUID, PGID에 GlueTUN에서 적었던 것과 같은 값을 적습니다. 이외에는 따로 수정할 것이 없습니다.
프로젝트 생성 마무리
환경변수 수정을 전부 마쳤다면 '다음'을 누릅니다.
그대로 진행합니다.
터미널창이 뜨면서 빌드가 진행됩니다. 특정한 메시지가 뜨지 않고 Exit Code: 0가 나오면 성공입니다. 컨테이너에도 녹색불이 들어오고 이상 없음이 확인됩니다.
저는 처음 빌드할 때 GlueTUN 서버 빌드가 느려져 주황불이 들어 오고 Deluge 컨테이너가 GlueTUN에 붙지 못해 정상적으로 빌드되지 않았던 상황을 겪었습니다. 해결책이 있습니다. 일단 가만히 기다리다가 시간이 지나면 GlueTUN 서버 빌드가 끝나고 초록불이 들어오는데요. 이때 다시 프로젝트를 누르고 '작업' - '빌드'를 해주면 Deluge 서버가 정상 작동 합니다.
Deluge 설정
이제 브라우저를 열고 '나스 내부 아이피:8112'로 접속합니다. 정상적으로 서버 작동한다면 암호창이 뜹니다. 기본 암호는 'deluge'입니다. 나중에 수정할 수 있습니다.
연결 관리자 창이 뜹니다. 선택하고 연결합니다. 상단의 '기본 설정'을 눌러줍니다.
인터페이스 탭에 가면 언어를 한국어로 설정할 수 있습니다. WebUI Password에서 비밀번호를 변경할 수 있습니다.
다운로드 탭에서 수정을 해줍니다.
원래 주소 | 아래와 같이 변경 | |
기본 다운로드 위치 | /root/Downloads | /data/torrents/incoming |
완료되면 다음 위치로 옮김 | /root/Downloads | /data/torrents/completed |
네트워크 탭에서 Outgoing Interface에 tun0를 입력합니다. 적용을 하고나면 이제 기본 설정은 끝입니다.
작동 확인
ipleak.net으로 이동합니다.
스크롤을 내리면 Torrent Address detection이라는 항목이 있습니다. Activate를 누르면 파란색 마그넷 링크를 제공합니다. 파란색 링크를 우클릭하고 '링크 주소 복사'를 누릅니다. ipleak.net 사이트는 계속 닫지 말아야 합니다. Deluge로 돌아와서 토런트 추가를 누르고, Url을 누릅니다. Url 항목에 방금 복사한 마그넷 링크를 추가하고 다운로드 합니다.
다시 ipleak.net으로 돌아오면 검은색 바탕에 초록색 글씨로 해당 마그넷 링크를 다운로드 받은 IP가 나옵니다. 해당 IP가 본인이 설정한 VPN 서버 국가의 IP라면 성공입니다.
시더가 많은 파일로 속도 테스트를 해볼 수도 있습니다. 우분투 공식 사이트에 접속하면 우분투 ISO 파일을 토렌트 파일로 다운로드 받을 수 있게 하고 있습니다. 'Ubuntu 22.04.4 Desktop (64-bit)' 토렌트 파일의 경우 시더가 1000 정도 되는데요. 반기가 인터넷을 사용 중인 상황에서 가까운 국가의 VPN 서버에 와이어 가드 프로토콜로 접속한 경우 최대 속도가 30메가바이트 정도 나오는 것을 확인할 수 있었습니다.
다운로드 완료된 파일은 /docker/deluge/download/completed 폴더에, 다운로드 중인 파일은 /docker/deluge/download/incoming 폴더에 저장됩니다.
'NAS' 카테고리의 다른 글
시놀로지 나스 UID, GID 알아내는 방법 (0) | 2024.07.19 |
---|---|
시놀로지 나스 SSH 접속 방법 (0) | 2024.07.19 |
시놀로지 NAS 자체 라이브 스트리밍 서버 구축 (0) | 2023.12.16 |
시놀로지 나스에서 도커를 활용해 transmission-openvpn 설치하기 (0) | 2023.01.06 |
시놀로지 역방향 프록시 HSTS 오작동 해결 (0) | 2023.01.06 |