Set up three-tier synchronization: Syncthing (real-time), GitHub (version control), rsync (disaster recovery). Includes complete documentation for future Claude sessions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.6 KiB
YAML
44 lines
1.6 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
evolution-api:
|
|
image: atendai/evolution-api:latest
|
|
container_name: evolution-api
|
|
restart: unless-stopped
|
|
networks:
|
|
- traefik-public
|
|
- database-internal
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
DATABASE_PROVIDER: postgresql
|
|
DATABASE_CONNECTION_URI: postgresql://evolution_user:${DB_PASSWORD}@postgres-main:5432/evolution
|
|
AUTHENTICATION_API_KEY: ${API_KEY}
|
|
SERVER_URL: https://wpp.ai-impress.com
|
|
volumes:
|
|
- evolution-data:/evolution/instances
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=traefik-public"
|
|
# API router without Authelia (higher priority)
|
|
- "traefik.http.routers.evolution-api.rule=Host(`wpp.ai-impress.com`) && (PathPrefix(`/instance`) || PathPrefix(`/message`) || PathPrefix(`/chat`) || PathPrefix(`/webhook`) || PathPrefix(`/settings`))"
|
|
- "traefik.http.routers.evolution-api.entrypoints=websecure"
|
|
- "traefik.http.routers.evolution-api.tls.certresolver=cloudflare"
|
|
- "traefik.http.routers.evolution-api.priority=100"
|
|
# Web UI router with Authelia (lower priority)
|
|
- "traefik.http.routers.evolution.rule=Host(`wpp.ai-impress.com`)"
|
|
- "traefik.http.routers.evolution.entrypoints=websecure"
|
|
- "traefik.http.routers.evolution.tls.certresolver=cloudflare"
|
|
- "traefik.http.routers.evolution.middlewares=authentik@file"
|
|
- "traefik.http.routers.evolution.priority=50"
|
|
# Service
|
|
- "traefik.http.services.evolution.loadbalancer.server.port=8080"
|
|
|
|
volumes:
|
|
evolution-data:
|
|
|
|
networks:
|
|
traefik-public:
|
|
external: true
|
|
database-internal:
|
|
external: true
|