kycnot.me/docker-compose.yml

92 lines
2.0 KiB
YAML

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}.onion{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: {}
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: {}
#ports:
# - ":14447" # socks
volumes:
- ./docker/i2p/data:/root/.i2pd
labels:
caddy: ${I2P_ADDRESS}
caddy.reverse_proxy: "website:4488"