version: "3.9" name: "kycnotme_v2024" networks: caddy: external: true volumes: pb_data: {} pb_public: {} pb_migrations: {} services: crawler: container_name: kycnotme-crawler build: ./crawler website: container_name: kycnotme-website build: ./src networks: caddy: aliases: - "website" default: aliases: - "website" volumes: - ./src/frontend/templates:/app/frontend/templates env_file: - .env labels: caddy: "${WEB_DOMAIN}" caddy.reverse_proxy: "{{upstreams 4488}}" caddy.header.Referrer-Policy: "no-referrer" caddy.header.Strict-Transport-Security: "max-age=31536000; includeSubdomains; preload;" caddy.encode: zstd gzip caddy.header.Onion-Location: ${ONION_ADDRESS}{path} pocketbase: image: spectado/pocketbase:latest container_name: kycnotme-pocketbase restart: unless-stopped volumes: - pb_data:/pb_data - pb_public:/pb_public networks: caddy: {} default: aliases: - "pocketbase" - "database" labels: caddy: "${PB_DOMAIN}" caddy.reverse_proxy: "{{upstreams 80}}" caddy.request_body.max_size: 10MB healthcheck: #optional (recommended) since v0.10.0 test: wget --no-verbose --tries=1 --spider http://localhost:80/api/health || exit 1 interval: 5s timeout: 5s retries: 5 tor: build: context: ./docker/tor/ profiles: ["tor"] container_name: kycnotme-tor restart: unless-stopped networks: caddy: {} default: {} volumes: - ./docker/tor/data:/var/lib/tor labels: caddy: ${ONION_ADDRESS} caddy.reverse_proxy: "website:4488" i2pd: build: context: ./docker/i2p/ profiles: ["i2p"] container_name: kycnotme-i2p restart: unless-stopped networks: caddy: {} default: {} #ports: # - ":14447" # socks volumes: - ./docker/i2p/data:/root/.i2pd labels: caddy: ${I2P_ADDRESS} caddy.reverse_proxy: "website:4488"