[Torrent만 VPN 적용] haugene/transmission-openvpn 설치
본 장에서는 ExpressVPN을 이용한 방법으로 설명을 합니다. 설명이 부족한 부분은 아래 공식 홈페이지를 참고하세요.
공식홈페이지 : https://haugene.github.io/docker-transmission-openvpn/
Github : https://github.com/haugene/docker-transmission-openvpn
ExpressVPN이 아닌 다른 VPN을 이용하신다면 아래 링크를 참고하여 Yaml 문장을 수정해 주시면 됩니다.
- Supported Providers : https://haugene.github.io/docker-transmission-openvpn/supported-providers/
environment의 OPENVPN_PROVIDER 변수에 사용하시는 "Provider Name"의 "Config Value (OPENVPN_PROVIDER)" 값을 찾아 입력하시면 됩니다. - OpenVPN Config : https://github.com/haugene/vpn-configs-contrib
1) openvpn 디렉토리로 이동합니다.
2) 해당되는 VPN Provider 디렉토리로 이동합니다.
3) environment의 OPENVPN_CONFIG 변수에 원하시는 지역의 config 파일명을 입력합니다. (.ovpn은 생략 후 파일명만 입력 합니다.) - VPN 계정인증 : 각 VPN Provider마다 인증하는 방식이 다릅니다. VPN 제공사의 설명을 참고하세요.
먼저 볼륨을 Mapping할 디렉트로를 생성합니다. 이 디렉토리로 Torrent 파일을 올리고, 다운로드 경로가 설정 됩니다.
제 경우 "/volume2/Transmission" 이라는 디렉토리를 생성하고, 하위에 "config"와 "data" 디렉토리를 생성 합니다.
mkdir /volume2/Transmission
mkdir /volume2/Transmission/config
mkdir /volume2/Transmission/data
아래와 같이 "docker-compose.yml" 파일을 작성합니다.
version: '3.3'
services:
transmission-openvpn:
restart: always
cap_add:
- NET_ADMIN
volumes:
- '/volume2/Transmission/data/:/data' # incomplete, completed, torrentfile 디렉토리 볼륨입니다.
- '/volume2/Transmission/config/:/config' # json, log와 같이 config 파일이 있는 볼륨입니다.
environment:
- OPENVPN_PROVIDER=EXPRESSVPN # 사용하시는 VPN Provider 입니다. 위 본문을 참고하세요.
- OPENVPN_USERNAME=[설명1] # VPN Provider에서 요구하는 방식을 따르셔야 합니다.
- OPENVPN_PASSWORD=[설명1] # VPN Provider에서 요구하는 방식을 따르셔야 합니다.
- OPENVPN_CONFIG=my_expressvpn_south_korea_-_2_udp # 한국 서버를 예제로 합니다. .opvn은 생략하고 입력합니다.
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 # 킬스위치 기능입니다.
- LOCAL_NETWORK=192.168.1.0/24 # 사용하는 네트워크 대역대로 변경이 필요합니다. 예제는 192.168.1.*의 대역대를 가정했습니다.
- CREATE_TUN_DEVICE=true
- TZ=Asia/Seoul
- HEALTH_CHECK_HOST=google.com
- TRANSMISSION_WEB_UI=flood-for-transmission # 스킨 옵션 입니다. 가장 유명한 flood-for-transmission 스킨을 예제로 합니다.
- PUID=1026 #ssh에서 'id 계정명'으로 맞는 값을 찾아 입력
- PGID=100 #ssh에서 'id 계정명'으로 맞는 값을 찾아 입력
- TRANSMISSION_WATCH_DIR_ENABLED=true
- TRANSMISSION_WATCH_DIR=/data/torrentfile # 이 위치에 .torrent 파일을 넣으면 자동으로 다운로드가 시작되고 원본 파일은 .added로 변경 됩니다.
# 아래는 보안 옵션 입니다. Nginx Proxy Manager 접속 인증 같은 별도 접속 인증을 사용하신다면 생략을 권장 드립니다.
# 이유는 잦은 인증과정에서 브라우저 쿠키에 문제가 생겨 가끔 브라우저의 쿠키 초기화가 필요하기 때문입니다.
#- TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=true
#- TRANSMISSION_RPC_USERNAME=webgui_id
#- TRANSMISSION_RPC_PASSWORD=webgui_pw
#- TRANSMISSION_RPC_HOST_WHITELIST="127.0.0.1,192.168.1.*"
logging:
driver: json-file
options:
max-size: 10m
ports:
- '9091:9091'
image: haugene/transmission-openvpn
만일 VPN Provider가 mullvad 일때는 아래를 yaml에 추가해 줍니다.
sysctls:
- "net.ipv6.conf.all.disable_ipv6=0"
[주의] 다운로드 디렉토리는 위 예제와 같이 "/data" 하나만 볼륨으로 맵핑하셔야 합니다. "/data" 볼륨하나만 맵핑해도 아래의 3개의 하위 디렉토리가 자동으로 생성됩니다. 만일 "completed"와 "incomplete"를 따로 볼륨으로 맵핑하신다면, 다운로드 완료 시 "incomplete"에서 "completed"로 이동과정이 copy (완료 후 소스 delete)로 동작되고, copy 과정에서 transmission 랙이 발생 됩니다.
[설명1] ExpressVPN 계정코드
OPENVPN_USERNAME : ExpressVPN 사용자명
OPENVPN_PASSWORD : ExpressVPN 비밀번호
이 값은 ExpressVPN 아래와 같이 확인 할 수 있습니다.
[설명2] LOCAL_NETWORK : 사용하시는 네트워크 대역대를 입력 합니다. 여러개 일 경우 "," 여러개를 지정할 수 있습니다.
예제 : "192.168.1.0/24" (CIDR 값을 사용해야 합니다.)
Docker를 실행 합니다.
docker-compose up -d
Transmission이 사용하는 IP가 정상적으로 VPN을 통한 IP인지 확인하기 위해 도커쉘에 접속해 아래 명령을 입력합니다.
curl ifconfig.me
설치를 마치면 "/volume1/Transmission/data" 디렉토리가 아래와 같이 구성 됐음을 확인 할 수 있습니다.
"completed" : 다운로드가 끝난 파일이 옮겨지는 디렉토리 입니다.
"incomplete" : 다운로드가 진행 중인 파일이 있는 디렉토리 입니다.
"torrentfile" : Transmission이 Watch 중인 디렉토리로 ".torrent" 파일을 이 디렉토리로 위치 시 바로 다운로드가 시작 됩니다.
다운로드 후 목록에서 자동 삭제하고 텔레그램 봇으로 다운로드 완료 상태를 안내하기 위해 작성한 스크립트로 다른장에서 별도 설명 드리겠습니다.
설치가 완료되면 "IP:9091"로 접속 합니다.
보안 옵션 미적용시 관리 페이지의 외부 노출이 걱정될 경우 Nginx Proxy Manager의 Proxy Host를 통해
"Access List"에 인증정보를 넣어 접속시에 2차 인증 절차를 추가하실 수 있습니다.