name: pangolin services: pangolin: image: docker.io/fosrl/pangolin:latest container_name: pangolin restart: unless-stopped volumes: - ./docker_data/pangolin:/app/config healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"] interval: "10s" timeout: "10s" retries: 15 gerbil: image: docker.io/fosrl/gerbil:latest container_name: gerbil restart: unless-stopped depends_on: pangolin: condition: service_healthy command: - --reachableAt=http://gerbil:3004 - --generateAndSaveKeyTo=/var/config/key - --remoteConfig=http://pangolin:3001/api/v1/ volumes: - ./docker_data/pangolin:/var/config cap_add: - NET_ADMIN - SYS_MODULE extra_hosts: - "host.docker.internal:host-gateway" ports: - "51820:51820/udp" - "21820:21820/udp" - "443:443" - "80:80" traefik: image: docker.io/traefik:v3.6 container_name: traefik restart: unless-stopped network_mode: service:gerbil depends_on: pangolin: condition: service_healthy command: - --configFile=/etc/traefik/traefik_config.yml volumes: - ./docker_data/pangolin/traefik:/etc/traefik:ro - ./docker_data/pangolin/letsencrypt:/letsencrypt - ./docker_data/pangolin/traefik/logs:/var/log/traefik forgejo: image: codeberg.org/forgejo/forgejo:7 container_name: forgejo restart: unless-stopped volumes: - ./docker_data/forgejo/data:/data environment: - USER_UID={{ git_uid }} - USER_GID={{ git_gid }} - FORGEJO__service__DISABLE_REGISTRATION=true - FORGEJO__server__ROOT_URL=https://{{ forgejo_domain }} - FORGEJO__server__HTTP_PORT=3001 - FORGEJO__server__DISABLE_SSH=false - FORGEJO__server__START_SSH_SERVER=false - FORGEJO__server__SSH_PORT=22 networks: default: driver: bridge name: pangolin