kycnot.me/docker-compose.yml

94 lines
2.3 KiB
YAML

name: "kycnotme_v2024"
networks:
caddy:
external: true
volumes:
pb_data: {}
pb_public: {}
pb_migrations: {}
services:
website:
container_name: kycnotme-website
build: ./src
networks:
caddy:
default:
volumes:
- ./src/frontend/templates:/app/frontend/templates
env_file:
- .env
depends_on:
pocketbase:
condition: service_healthy
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}
ofelia.enabled: "true"
ofelia.job-exec.toscheck.schedule: "0 0 1 * *"
ofelia.job-exec.toscheck.command: "kycnotme -scrap"
pocketbase:
image: spectado/pocketbase:latest
container_name: kycnotme-pocketbase
restart: always
volumes:
- pb_data:/pb_data
- pb_public:/pb_public
networks:
caddy: {}
default:
aliases:
- "database"
labels:
caddy: "${PB_DOMAIN}"
caddy.reverse_proxy: "{{upstreams 80}}"
caddy.request_body.max_size: 20MB
caddy.header.X-Robots-Tag: "noindex"
caddy.header.Strict-Transport-Security: "max-age=31536000; includeSubdomains; preload;"
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:
image: goldy/tor-hidden-service:latest
profiles: ["tor"]
container_name: kycnotme-tor
restart: always
networks:
caddy: {}
default: {}
links:
- website
volumes:
- ./docker/tor/hidden_service:/var/lib/tor/hidden_service
environment:
SERVICE1_TOR_SERVICE_HOSTS: 80:website:4488
SERVICE1_TOR_SERVICE_VERSION: '3'
i2pd:
build:
context: ./docker/i2p/
profiles: ["i2p"]
container_name: kycnotme-i2p
restart: always
networks:
caddy: {}
default: {}
#ports:
# - ":14447" # socks
volumes:
- ./docker/i2p/data:/root/.i2pd
labels:
caddy: ${I2P_ADDRESS}
caddy.reverse_proxy: "website:4488"