services: web: environment: SESSION_SECRET: "test-session-secret-32chars!xxxY" ADMIN_USERNAME: testadmin ADMIN_PASSWORD: "TestPassword2026!" BASE_URL: http://localhost:3000 NEXTAUTH_URL: http://localhost:3000 caddy: ports: - "80:80" - "443:443" # L4 test ports (TCP) - "15432:15432" - "15433:15433" # L4 test ports (UDP) - "15353:15353/udp" # Lightweight echo server reachable by Caddy as "echo-server:8080". # Returns a fixed body so tests can assert the proxy routed the request. echo-server: image: hashicorp/http-echo command: ["-text=echo-ok", "-listen=:8080"] networks: - caddy-network # Second echo server for load-balancing tests. # Returns a different body so tests can distinguish which upstream served the request. echo-server-2: image: hashicorp/http-echo command: ["-text=echo-server-2", "-listen=:8080"] networks: - caddy-network # Request-echo server: reflects the full HTTP request (method + path + headers) in the response body. # Used by path-prefix-rewrite tests to assert that Caddy rewrote the path before forwarding. whoami-server: image: traefik/whoami networks: - caddy-network # TCP echo server for L4 proxy tests. # Listens on port 9000 and echoes back anything sent to it with a prefix. tcp-echo: image: cjimti/go-echo platform: linux/amd64 environment: TCP_PORT: "9000" NODE_NAME: "tcp-echo-ok" networks: - caddy-network # UDP echo server for L4 proxy tests. # Simple socat-based UDP echo: reflects any datagram back to sender. udp-echo: image: alpine/socat command: ["UDP4-RECVFROM:9001,fork", "EXEC:cat"] networks: - caddy-network volumes: caddy-manager-data: name: caddy-manager-data-test caddy-data: name: caddy-data-test caddy-config: name: caddy-config-test caddy-logs: name: caddy-logs-test geoip-data: name: geoip-data-test