Docker를 이용해 Transmission과 같은 개인 서버를 구축하고 외부 네트워크에서 접속하여 사용하는 것은 매우 편리한 경험입니다. 하지만 별도의 보안 설정을 하지 않으면, 나의 서버에 누구나 접속할 수 있는 상태가 되어 잠재적인 위험에 노출될 수 있습니다.
오늘은 이러한 위험을 방지하기 위해, 가장 기본적이면서도 필수적인 보안 조치인 ID/Password 인증 기능을 활성화하는 방법을 안내해 드리고자 합니다. linuxserver/transmission
Docker 이미지를 사용하고 계신다면, 아주 간단한 설정 변경만으로 서버의 보안을 크게 강화할 수 있습니다.
인증 기능, 왜 필요한가요?#
Transmission 웹 인터페이스에 인증 기능을 설정하는 것은 내 서버의 ‘문’에 ‘자물쇠’를 채우는 것과 같습니다. 인증 기능이 없다면, 서버의 IP 주소와 포트 번호를 아는 사람은 누구나 접속하여 아래와 같은 작업을 할 수 있습니다.
내가 다운로드하는 파일 목록 확인
진행 중인 토렌트 임의로 중지 또는 삭제
악의적인 파일을 서버에 추가
이러한 무단 접근을 막고 오직 허가된 사용자만 접속할 수 있도록 하는 것이 바로 ID/Password 인증의 핵심 목적입니다.
docker-compose.yml
환경 변수로 인증 활성화하기#
linuxserver/transmission
이미지는 사용자의 편의를 위해, 복잡한 설정 파일을 직접 수정하지 않고도 docker-compose.yml
파일에 환경 변수(Environment Variables) 를 추가하는 것만으로 손쉽게 인증 기능을 켤 수 있도록 지원합니다.
docker-compose.yml 파일에 USER 및 PASS 환경 변수 추가
Transmission 컨테이너를 실행하는 데 사용하는 docker-compose.yml 파일을 텍스트 편집기로 엽니다. services > transmission > environment 섹션에 아래와 같이 USER와 PASS 변수를 추가하고, 원하시는 ID와 Password를 입력합니다.
# ~/docker/transmission/docker-compose.yml
services:
transmission:
image: linuxserver/transmission:latest
container_name: transmission
# ... (기타 다른 설정들) ...
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- USER=my_secure_user # 👈 여기에 원하는 사용자 아이디를 설정하십시오.
- PASS=MyComplexPassword123! # 👈 여기에 강력한 비밀번호를 설정하십시오.
# ... (volumes, ports, labels 등 나머지 설정) ...
restart: unless-stopped
컨테이너 재시작
수정한 docker-compose.yml 파일을 저장한 후, 아래 명령어를 실행하여 변경사항을 적용합니다. 컨테이너가 새로운 환경 변수 값을 읽어 다시 시작됩니다.
docker-compose up -d
설정 적용 원리#
USER
와 PASS
환경 변수를 추가하고 컨테이너를 실행하면, linuxserver/transmission
이미지의 시작 스크립트는 내부적으로 Transmission의 핵심 설정 파일인 settings.json
의 다음 항목들을 자동으로 변경합니다.
rpc-authentication-required
:true
(인증 사용 활성화)rpc-username
:USER
환경 변수에 입력한 값rpc-password
:PASS
환경 변수에 입력한 값 (암호화되어 저장됨)
이처럼 복잡한 내부 동작을 신경 쓸 필요 없이, 사용자는 단지 환경 변수 두 줄을 추가하는 것만으로 인증 기능을 활성화할 수 있습니다.
이제 Transmission 웹 인터페이스에 접속하면 사용자 아이디와 비밀번호를 묻는 로그인 창이 나타날 것입니다. 설정하신 ID와 Password를 입력해야만 정상적으로 접근할 수 있습니다. 이 간단한 조치만으로도 여러분의 서버는 한층 더 안전해졌습니다.
참조
- LinuxServer.io Transmission 이미지 공식 문서: https://docs.linuxserver.io/images/docker-transmission