Docker
OCI 이미지로 Proxer 서버 또는 클라이언트를 실행합니다.
이미지는 Docker Hub의 tinyrack/proxer와 GHCR의 ghcr.io/tinyrack-net/proxer로 게시됩니다.
버전을 확인합니다.
docker run --rm tinyrack/proxer --version서버 실행
섹션 제목: “서버 실행”docker run --rm -p 8080:8080 \ -e PROXER_TOKEN="$PROXER_TOKEN" \ tinyrack/proxer \ server --listen 0.0.0.0:8080 --domain proxy.example.com서버에는 볼륨이 필요하지 않습니다. 터널 등록은 메모리에 있고, 클라이언트가 재연결하면 다시 등록됩니다.
dev-token은 로컬 데모에서만 사용하세요. 외부에 노출하는 환경에서는 긴 토큰을 명령줄에 직접 쓰기보다 secret 저장소에서 PROXER_TOKEN으로 넘기는 편이 낫습니다.
Docker Compose
섹션 제목: “Docker Compose”services: proxer: image: ghcr.io/tinyrack-net/proxer:latest command: - server - --listen - 0.0.0.0:8080 - --domain - proxy.example.com environment: PROXER_TOKEN: ${PROXER_TOKEN:?set PROXER_TOKEN} PROXER_TRUSTED_PROXIES: loopback,private ports: - "8080:8080" healthcheck: test: ["CMD", "proxer", "--version"] interval: 30s timeout: 5s retries: 3클라이언트 컨테이너
섹션 제목: “클라이언트 컨테이너”proxer http <port>는 클라이언트 프로세스 안에서 127.0.0.1:<port>로 전달합니다. 컨테이너 안에서 실행하면 그 컨테이너의 loopback을 뜻합니다.
Linux에서 앱이 Docker host에 떠 있다면 host networking을 쓰는 방식이 보통입니다.
docker run --rm --network host \ -e PROXER_TOKEN="$PROXER_TOKEN" \ tinyrack/proxer \ http 3000 --server ws://127.0.0.1:8080 --subdomain demoDocker Desktop에서는 host.docker.internal만으로는 부족합니다. 현재 클라이언트에는 upstream host를 지정하는 flag가 없습니다. 클라이언트를 host에서 직접 실행하거나, 클라이언트가 접근해야 하는 앱과 같은 컨테이너 또는 같은 network namespace에서 실행하세요.
Kubernetes probe
섹션 제목: “Kubernetes probe”플랫폼에서 HTTP 경로를 probe할 수 있다면 고정 헬스 엔드포인트를 사용합니다.
/__proxer__/health/live/__proxer__/health/ready제어 엔드포인트도 고정입니다.
/__proxer__/control제어 엔드포인트는 WebSocket upgrade를 기대하므로 probe 대상으로 쓰지 마세요.
환경변수
섹션 제목: “환경변수”서버는 PROXER_ 환경변수로 설정할 수 있습니다.
docker run --rm -p 8080:8080 \ -e PROXER_LISTEN=0.0.0.0:8080 \ -e PROXER_DOMAIN=proxy.example.com \ -e PROXER_TOKEN="$PROXER_TOKEN" \ -e PROXER_TRUSTED_PROXIES=loopback,private \ ghcr.io/tinyrack-net/proxer server--trusted-proxy 또는 PROXER_TRUSTED_PROXIES는 직접 관리하는 reverse proxy에만 설정하세요.