Gately v0.6.1 출시
2026년 10월 30일
이번 버전에는 보안 수정이 포함되어 있습니다. Docker 관리를 켜고 읽기 전용 계정이나 읽기 전용 API 토큰을 사용하는 분은 빨리 업그레이드하세요. 함께 #35, #37, #38, #40을 처리했고 보안 정책을 추가했습니다.
v0.6.1 다운로드 · GitHub Release · 보안 권고 GHSA-m6h7-mm5r-r53q
보안 수정: Docker 읽기 권한으로 컨테이너 민감 정보 노출
v0.6.0.4 및 이전 버전에서는 읽기 전용 계정과 docker:read 권한만 있는 API 토큰이 GET /api/docker/containers/{id}로 컨테이너 환경 변수, Command, Entrypoint, 시작 인수를 평문으로 읽을 수 있었고, 프로세스 목록에도 전체 명령줄이 표시되어 데이터베이스 비밀번호, API 키 등을 읽기 전용 주체가 얻을 수 있었습니다. 책임 있게 제보해 주신 Yousef Alturki(@YousefAlturki)님께 감사드립니다.
수정 후:
- Docker 쓰기 권한이 없는 주체가 컨테이너를 보면 환경 변수는 이름만 표시되고, 값, Command, Entrypoint, 시작 인수, 프로세스 목록의 명령 인수는
********로 표시됩니다. 이미지 상세의 환경 변수, Cmd, Entrypoint, 빌드 기록 명령도 같은 방식으로 숨겨집니다. - 평문은
docker:write가 필요한GET /api/docker/containers/{id}/secrets에서 제공됩니다. 관리자가 편집 양식을 열면 자동으로 읽어 오며, 자리 표시자 그대로 제출한 필드는 원래 값을 유지합니다. - 요청의 컨테이너 이름이나 ID 접두사는 먼저 전체 ID로 해석되므로, Gately 자신이 실행 중인 컨테이너에 대한 보호를 컨테이너 이름으로 우회할 수 없습니다. 편집과 업그레이드 재생성은 항상 전체 ID로 기존 컨테이너를 처리하여, 이름으로 호출했을 때 정리 단계에서 새 컨테이너를 잘못 삭제하고 실패 후 롤백할 수 없던 문제를 고쳤습니다. 재생성 중인 컨테이너의 시작·중지·삭제는 409를 반환합니다.
업그레이드 후 읽기 전용 API 토큰이 신뢰할 수 없는 상대에게 배포된 적이 있는지 확인하고, 필요하면 컨테이너의 비밀 값을 교체하세요. 취약점 제보 방법은 SECURITY.md에 있으며, GitHub 비공개 취약점 제보나 이메일로 보낼 수 있습니다.
인증서 발급 네트워크
인증서에 "네트워크" 옵션이 추가되었습니다(#35). "IPv4 전용" 또는 "IPv6 전용"을 선택하면 CA 접속, DNS 공급자 API 호출, TXT 레코드 반영 확인이 모두 해당 주소 체계만 사용합니다. 호스트에 IPv6 주소가 있지만 IPv6가 실제로 통하지 않으면 기존 반영 확인이 권한 DNS 서버 조회에서 시간 초과되어 발급에 실패했는데, "IPv4 전용"을 선택하면 해결됩니다. HTTPS_PROXY 등의 프록시를 거칠 때 프록시 자체에 대한 연결은 이 옵션의 제한을 받지 않습니다. 자세한 내용은 SSL 인증서 · 발급 네트워크를 참고하세요.
Gately 자신의 컨테이너 보호
Docker 페이지의 업그레이드, 일괄 업그레이드, 편집 재생성, 그리고 Gately가 속한 Compose 프로젝트에서 up을 실행하거나 프로젝트를 삭제하는 작업은 모두 먼저 기존 컨테이너를 중지합니다. 이때 Gately 프로세스도 종료되어 재생성이 끝나지 못하고 컨테이너가 중지된 상태로 남았습니다(#38). 이제 이러한 작업은 자신에 대해 거부되며, 버튼이 비활성화되고 호스트에서 업데이트하라는 안내가 표시됩니다. 일괄 업그레이드는 자신을 건너뜁니다. Gately가 속한 Compose 프로젝트를 다시 시작할 때는 자신을 마지막에 다시 시작합니다.
알림과 로그가 화면 언어를 따름
서버 언어가 "시스템 설정 따르기"이면 GATELY_LANG, LANG에 지정된 언어를 차례로 사용합니다. Docker, fnOS, OpenWrt에는 보통 두 변수가 모두 없어서 알림이 영어로 돌아갔습니다(#40). 이제 관리자가 마지막으로 로그인하거나 상단 바에서 전환했을 때의 화면 언어를 따르며, 읽기 전용 계정 로그인은 이를 바꾸지 않습니다. 알림의 "소스"가 프로그램이 생성한 이름이면 번역되고, 사용자가 입력한 작업 이름은 그대로 유지됩니다. [warn] [auth] 같은 접두사가 붙은 영어 로그에 더 이상 중국어가 섞이지 않습니다.
기본 사이트 설정
Web 서비스의 리스너에 기본 사이트가 아직 설정되지 않았으면 카드에 "기본 사이트 설정" 버튼이 표시됩니다(#37). 어떤 도메인에도 일치하지 않는 요청의 처리 방식을 바로 설정할 수 있습니다.
업그레이드 안내
- Docker는 새 이미지를 받은 뒤 컨테이너를 다시 만드세요. OpenWrt는 새
.apk/.ipk를 덮어 설치하고, LuCI 페이지가 필요하면 같은 버전의luci-app-gately도 설치하세요. fnOS는 앱 센터에서 새.fpk를 직접 설치하세요. 그 밖의 설치 방식은 "시스템 설정"에서 온라인 업그레이드할 수 있습니다.