원문 캡처 · github.com
원문 캡처 · github.com

Proxium은 계정·할당량·속도 제한과 웹 관리 화면을 갖춘 자체 호스팅 HTTP·SOCKS5 프록시다. Docker 이미지 하나로 실행할 수 있으며, 설정 파일 대신 웹 화면과 API에서 계정과 정책을 관리한다.

빠른 실행과 사용

다음 명령으로 프록시를 실행하고 관리자 계정을 만든다.

bash
docker run -d --name proxium -p 80:80 -p 8080:8080 -v proxium:/var/lib/proxium \
 -e SUPERUSER_CREATE=true -e SUPERUSER_EMAIL=admin@example.com -e SUPERUSER_PASSWORD=change-me \
 ikoldakov/proxium

관리 화면은 http://localhost에서 연다. Proxy accounts → Basic에서 계정을 만든 뒤 비밀번호를 복사한다. 비밀번호는 한 번만 표시된다. 다음처럼 HTTP 또는 SOCKS5 프록시를 이용할 수 있다.

bash
curl -x http://username:password@localhost:8080 https://ifconfig.me
curl -x socks5h://username:password@localhost:8080 https://ifconfig.me

하나의 이미지에 프록시, API, 관리 화면, PostgreSQL, Redis가 포함되며 amd64와 arm64를 지원한다. 자체 인증서나 데이터베이스를 사용하거나 구성 요소를 별도 컨테이너로 실행하는 방법, 소스에서 실행하는 방법은 설치 문서에 안내돼 있다.

관리 화면에서는 계정, 네트워크, 정책, 인증서, 관리자를 다룬다. 관리자 그룹별로 영역과 작업 권한을 설정할 수 있다. 설정 변경은 재시작 없이 수 초 안에 프록시에 반영되며, 기존 연결은 계속 작동한다.

관리 화면과 프록시에 각각 도메인과 인증서를 설정할 수 있다. 예를 들어 admin.example.com과 proxy.example.com을 사용하려면 DNS A 또는 AAAA 레코드를 서버로 연결하고 컨테이너를 다시 만든다. 볼륨에 데이터가 보존된다.

bash
docker rm -f proxium
docker run -d --name proxium -p 80:80 -p 443:443 -p 8080:8080 -v proxium:/var/lib/proxium \
 -e ADMIN_HOST=admin.example.com -e ADMIN_TLS=auto \
 ikoldakov/proxium

관리 화면은 시작할 때 Let's Encrypt 인증서를 받는다. 프록시 도메인의 인증서는 관리 화면에서 TLS certificates 항목에 추가한다. 이후 클라이언트는 TLS로 연결할 수 있다.

bash
curl -x https://username:password@proxy.example.com:8080 https://ifconfig.me

기능과 적용 사례

Proxium은 HTTP(CONNECT 터널과 일반 전달)와 SOCKS5를 같은 포트에서 제공하며, 첫 바이트를 기준으로 프로토콜을 판별한다. 같은 포트에서 프록시 연결에 TLS를 적용할 수 있고, 여러 IP 주소와 포트 범위에서 동시에 수신할 수 있다. 계정은 사용자 이름·비밀번호 또는 bearer token 방식으로 만들며 만료와 폐기를 설정할 수 있다.

정책에는 연결 수, 송수신 속도, 일·월·전체 트래픽 한도를 설정할 수 있다. 한도는 연결·계정·클라이언트 IP·대상 호스트·프록시 전체를 기준으로 계산할 수 있다. 시간대와 요일, 대상 도메인·IP·포트, 프로토콜, 클라이언트 IP, TLS 여부에 따라 규칙을 적용하고, 전체 사용자나 지정 계정·네트워크에 정책을 배정한다. 계정별로 시스템 IP, 수신 IP 또는 IP 풀을 나가는 주소로 선택할 수 있다.

제작자는 AI 에이전트별 토큰과 연결·속도·트래픽 한도를 두는 용도, 회사 네트워크 게이트웨이, 프록시 판매, 스크래핑·자동화, 개인용 프록시를 활용 사례로 제시한다. 아웃바운드 접근 제어 목록은 기본적으로 루프백·사설 네트워크·클라우드 메타데이터 주소 접근을 막으며, 허용 설정을 추가해야 접근할 수 있다. 신뢰 네트워크의 클라이언트는 인증 정보 없이 접속할 수 있지만, 기본으로 등록된 신뢰 네트워크는 없다.

보안과 한계

Proxium은 트래픽 내용을 검사하지 않는다. HTTPS는 종단 간 터널로 전달되며 프록시는 대상 호스트와 포트만 확인한다. TLS를 사용하지 않는 일반 HTTP와 SOCKS5에서는 비밀번호와 토큰이 평문으로 전송되므로, 네트워크 외부에서 접속할 때는 클라이언트 TLS를 켜야 한다.

계정을 폐기해도 캐시에 남은 정보 때문에 기본값인 10초 동안은 연결이 계속될 수 있으며, 이 시간은 설정할 수 있다. 신뢰 네트워크 안의 누구나 접속할 수 있으므로 통제하는 네트워크만 등록해야 한다. 비밀번호와 토큰은 솔티드 PBKDF2-SHA256 해시로 저장하고, TLS 개인 키는 필드 단위 암호화로 보호한다고 프로젝트는 설명한다.

기능과 설정은 저장소와 구성 문서, 프록시 문서, 관리 화면 문서에서 확인할 수 있다. 취약점 제보 방법은 SECURITY.md에 있다.