undici Docker & Self-Hosted Deployment

GitHub

An HTTP/1.1 client, written from scratch for Node.js

7,654 stars JavaScript JavaScript 1 file ยท ~20,584 tokens #client#http#nodejs
RAW Compose
1. Pull Image (DOCKERHUB) docker pull serjs/go-socks5-proxy
2. Docker Run (1-Click Launch) docker run -d --name undici -p 1080:1080 --restart always serjs/go-socks5-proxy:latest
3. Podman Run podman run -d --name undici -p 1080:1080 --restart always serjs/go-socks5-proxy:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/serjs/go-socks5-proxy:latest
5. ORAS Pull (OCI Artifact) oras pull serjs/go-socks5-proxy:latest
6. Compose Deployment docker compose up -d
test/fixtures/docker/docker-compose.yml
Download .yml
services:
  # SOCKS5 proxy without authentication
  socks5-no-auth:
    image: serjs/go-socks5-proxy:latest
    container_name: socks5-no-auth
    environment:
      - PROXY_PORT=1080
      - REQUIRE_AUTH=false
    ports:
      - "1080:1080"
    networks:
      - test-network

  # SOCKS5 proxy with username/password authentication
  socks5-auth:
    image: serjs/go-socks5-proxy:latest
    container_name: socks5-auth
    environment:
      - PROXY_USER=testuser
      - PROXY_PASSWORD=testpass
      - PROXY_PORT=1081
    ports:
      - "1081:1081"
    networks:
      - test-network

  # Alternative: Dante SOCKS5 server (more configurable)
  dante-socks5:
    build:
      context: ./dante
      dockerfile: Dockerfile
    container_name: dante-socks5
    ports:
      - "1082:1080"
    networks:
      - test-network
    volumes:
      - ./dante/danted.conf:/etc/danted.conf:ro

  # HTTP test server
  http-server:
    image: node:20-alpine
    container_name: http-test-server
    working_dir: /app
    volumes:
      - ../servers/http-server.js:/app/server.js:ro
    command: node server.js
    ports:
      - "8080:8080"
    networks:
      - test-network

  # HTTPS test server
  https-server:
    image: node:20-alpine
    container_name: https-test-server
    working_dir: /app
    volumes:
      - ../servers/https-server.js:/app/server.js:ro
      - ../certs:/app/certs:ro
    command: node server.js
    ports:
      - "8443:8443"
    networks:
      - test-network

  # Echo server for testing
  echo-server:
    image: ealen/echo-server:latest
    container_name: echo-server
    environment:
      - PORT=3000
    ports:
      - "3000:3000"
    networks:
      - test-network

  # Blocked target (for testing connection failures)
  blocked-server:
    image: alpine:latest
    container_name: blocked-server
    command: sleep infinity
    networks:
      - isolated-network

networks:
  test-network:
    driver: bridge
  isolated-network:
    driver: bridge
    internal: true