servers/services/freecad-bot/stack.yml
Kacper Donat 1e5b27906e freecad-bot: Initial config
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 18:59:16 +01:00

76 lines
2.2 KiB
YAML

version: "{{ compose_version }}"
services:
bot:
image: registry.kadet.net/freecad/discord-bot:latest
environment:
BOT_LOG_DIR: /data/logs
configs:
- source: config_{{ bot_config.checksum }}
target: /app/config.yaml
mode: 0444
volumes:
- bot-data:/data
networks:
- "{{ ingress_network }}"
- default
secrets:
- source: dockerregistryauth
target: /run/secrets/dockerregistryauth
deploy:
mode: replicated
replicas: 1
proxy:
image: nginx:alpine
networks:
- "{{ ingress_network }}"
- default
configs:
- source: proxy_conf_{{ proxy_conf.checksum }}
target: /etc/nginx/conf.d/default.conf
mode: 0444
deploy:
mode: replicated
replicas: 1
labels:
- traefik.enable=true
- traefik.http.routers.{{ service }}.rule=Host(`{{ freecad_bot_domain }}`)
- traefik.http.routers.{{ service }}.tls=true
- traefik.http.routers.{{ service }}.tls.certresolver=lets-encrypt
- traefik.http.services.{{ service }}.loadbalancer.server.port=80
cdn:
image: nginxinc/nginx-s3-gateway:latest-njs-oss
restart: unless-stopped
environment:
S3_BUCKET_NAME: "{{ freecad_bot_s3_bucket }}"
S3_SERVER: "{{ freecad_bot_s3_endpoint_url | urlsplit('hostname') }}"
S3_SERVER_PORT: "{{ freecad_bot_s3_endpoint_url | urlsplit('port') or ('443' if (freecad_bot_s3_endpoint_url | urlsplit('scheme')) == 'https' else '80') }}"
S3_SERVER_PROTO: "{{ freecad_bot_s3_endpoint_url | urlsplit('scheme') }}"
S3_REGION: eu-central-003
S3_STYLE: path
AWS_SIGS_VERSION: "4"
AWS_ACCESS_KEY_ID: "{{ freecad_bot_s3_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ freecad_bot_s3_secret_key }}"
ALLOW_DIRECTORY_LIST: "false"
PROXY_CACHE_MAX_SIZE: 10g
PROXY_CACHE_INACTIVE: 365d
PROXY_CACHE_VALID_OK: "365d"
PROXY_CACHE_VALID_NOTFOUND: "0"
PROXY_CACHE_VALID_FORBIDDEN: "0"
secrets:
dockerregistryauth:
name: dockerregistryauth
external: true
configs:
config_{{ bot_config.checksum }}:
file: ./config/config.yaml
proxy_conf_{{ proxy_conf.checksum }}:
file: ./config/proxy.conf
volumes:
bot-data: {}