2026-03-11 09:45:42 +01:00
|
|
|
global
|
|
|
|
|
log stdout format raw local0 info
|
|
|
|
|
maxconn 50000
|
|
|
|
|
# Run as non-root inside the container
|
|
|
|
|
# user haproxy
|
|
|
|
|
# group haproxy
|
|
|
|
|
|
|
|
|
|
defaults
|
|
|
|
|
log global
|
|
|
|
|
mode tcp
|
|
|
|
|
option tcplog
|
|
|
|
|
option dontlognull
|
|
|
|
|
retries 3
|
|
|
|
|
timeout connect 10s
|
|
|
|
|
timeout client 1m
|
|
|
|
|
timeout server 1m
|
|
|
|
|
timeout check 5s
|
|
|
|
|
|
|
|
|
|
# ── Docker embedded DNS ───────────────────────────────────────────────────────
|
|
|
|
|
resolvers docker_dns
|
|
|
|
|
nameserver dns1 127.0.0.11:53
|
|
|
|
|
resolve_retries 10
|
|
|
|
|
timeout resolve 1s
|
|
|
|
|
timeout retry 1s
|
|
|
|
|
hold valid 10s
|
|
|
|
|
hold other 10s
|
|
|
|
|
hold refused 10s
|
|
|
|
|
hold nx 10s
|
|
|
|
|
|
|
|
|
|
# ── SOCKS5 frontend (browsers / curl / etc. connect here) ────────────────────
|
|
|
|
|
frontend socks5_in
|
|
|
|
|
bind *:1080
|
|
|
|
|
default_backend vpn_exit_nodes
|
|
|
|
|
|
|
|
|
|
# ── Round-robin across all vpn-node containers ───────────────────────────────
|
|
|
|
|
backend vpn_exit_nodes
|
|
|
|
|
balance roundrobin
|
|
|
|
|
# server-template creates up to 10 slots; Docker DNS fills them dynamically
|
|
|
|
|
# as you scale with: docker compose up --scale vpn-node=N (max 10)
|
2026-03-11 10:05:25 +01:00
|
|
|
server-template vpn 1-10 vpn-node:1080 resolvers docker_dns resolve-prefer ipv4 init-addr none check inter 20s fall 2 rise 2
|
2026-03-11 09:45:42 +01:00
|
|
|
|
|
|
|
|
# ── Stats page — http://<host>:8404/stats ─────────────────────────────────────
|
|
|
|
|
frontend stats
|
|
|
|
|
bind *:8404
|
|
|
|
|
mode http
|
|
|
|
|
stats enable
|
|
|
|
|
stats uri /stats
|
|
|
|
|
stats refresh 5s
|
|
|
|
|
stats show-legends
|
|
|
|
|
stats show-node
|
|
|
|
|
stats auth admin:admin # change this password
|