메인 항목으로

haugene/transmission-openvpn 설치

본 장에서는 ExpressVPN을 이용한 방법으로 설명을 합니다. 설명이 부족한 부분은 아래 공식 홈페이지를 참고하세요.

공식홈페이지 : https://haugene.github.io/docker-transmission-openvpn/

Github : https://github.com/haugene/docker-transmission-openvpn

ExpressVPN이 아닌 다른 VPN을 이용하신다면 아래 링크를 참고하여 Yaml 문장을 수정해 주시면 됩니다.

  1. Supported Providers : https://haugene.github.io/docker-transmission-openvpn/supported-providers/
    environment의 OPENVPN_PROVIDER 변수에 사용하시는 "Provider Name"의 "Config Value (OPENVPN_PROVIDER)" 값을 찾아 입력하시면 됩니다.
  2. OpenVPN Config : https://github.com/haugene/vpn-configs-contrib
    1) openvpn 디렉토리로 이동합니다.
    2) 해당되는 VPN Provider 디렉토리로 이동합니다.
    3) environment의 OPENVPN_CONFIG 변수에 원하시는 지역의 config 파일명을 입력합니다. (.ovpn은 생략 후 파일명만 입력 합니다.)
  3. 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 #사용하는 네트워크 대역대로 변경 필요
            - 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 랙이 발생 됩니다.
data_dir.jpg

[설명1] ExpressVPN 계정코드

OPENVPN_USERNAME : ExpressVPN 사용자명
OPENVPN_PASSWORD : ExpressVPN 비밀번호

이 값은 ExpressVPN 아래와 같이 확인 할 수 있습니다.

ex_vpn1.png

ex_vpn2.png

ex_vpn3.png

[설명2] LOCAL_NETWORK : 사용하시는 네트워크 대역대를 입력 합니다. 여러개 일 경우 "," 여러개를 지정할 수 있습니다.

예제 : "192.168.1.0/24" (CIDR 값을 사용해야 합니다.)

Docker를 실행 합니다.

docker-compose up -d

설치를 마치면 "/volume1/Transmission/data" 디렉토리가 아래와 같이 구성 됐음을 확인 할 수 있습니다.

"completed" : 다운로드가 끝난 파일이 옮겨지는 디렉토리 입니다.
"incompleted" : 다운로드가 진행 중인 파일이 있는 디렉토리 입니다.
"torrentfile" : Transmission이 Watch 중인 디렉토리로 ".torrent" 파일을 이 디렉토리로 위치 시 바로 다운로드가 시작 됩니다.

다운로드 후 목록에서 자동 삭제하고 텔레그램 봇으로 다운로드 완료 상태를 안내하기 위해 작성한 스크립트로 다른장에서 별도 설명 드리겠습니다.

설치가 완료되면 "IP:9091"로 접속 합니다.

trans_gui.png

보안 옵션 미적용시 관리 페이지의 외부 노출이 걱정될 경우 Nginx Proxy Manager의 Proxy Host를 통해

"Access List"에 인증정보를 넣어 접속시에 2차 인증 절차를 추가하실 수 있습니다.

wetty_auth.png