--- kind: compose metadata: icon: provider: selfh id: pangolin name: Pangolin description: | Self-hosted reverse proxy server that securely exposes private resources on distributed networks through encrypted WireGuard tunnels. Pangolin enables access from anywhere without opening ports, using a custom user-space WireGuard client (Newt) for secure connectivity. Features include automatic tunnel management, integrated CrowdSec security, and support for both PostgreSQL and SQLite databases. ## References * **Project:** https://github.com/fosrl/pangolin * **Documentation:** https://github.com/fosrl/pangolin/blob/main/README.md * **Docker Hub:** https://hub.docker.com/r/fosrl/pangolin version: latest author: Christian Lempa date: '2025-11-13' tags: - traefik - swarm - proxy - wireguard draft: true spec: general: vars: service_name: default: "pangolin" container_name: default: "pangolin" container_hostname: default: "pangolin" traefik: vars: traefik_host: default: "pangolin" network: vars: network_name: default: "pangolin_network" ports: vars: ports_http: description: "External HTTP port (web interface)" type: int default: 8080 needs: ["traefik_enabled=false", "network_mode=bridge"] volume: vars: volume_mount_path: default: "/mnt/storage/pangolin" postgres: title: "PostgreSQL Configuration" toggle: postgres_enabled needs: null vars: postgres_enabled: type: bool default: false description: "Use PostgreSQL database (SQLite is default)" postgres_connection_string: type: str default: "postgresql://postgres:postgres@localhost:5432" description: "PostgreSQL connection string" needs: "postgres_enabled=true" environment: title: "Environment Variables" toggle: environment_enabled needs: null vars: environment_enabled: type: bool default: false description: "Configure additional environment variables" environment_crowdsec_enabled: type: bool default: false description: "Enable CrowdSec integration" needs: "environment_enabled=true" environment_log_level: type: enum default: "info" config: options: ["debug", "info", "warn", "error"] description: "Log level" needs: "environment_enabled=true"