services: web: image: nginx:alpine container_name: aimpress-website restart: unless-stopped networks: - traefik-public volumes: - ./dist:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro labels: - "traefik.enable=true" - "traefik.http.routers.aimpress-website.rule=Host(`ai-impress.com`) || Host(`www.ai-impress.com`)" - "traefik.http.routers.aimpress-website.entrypoints=websecure" - "traefik.http.routers.aimpress-website.tls.certresolver=cloudflare" - "traefik.http.services.aimpress-website.loadbalancer.server.port=80" - "traefik.http.routers.aimpress-website.middlewares=security-headers@file" email-api: build: ./email-api container_name: aimpress-email-api restart: unless-stopped networks: - traefik-public environment: - RESEND_API_KEY=${RESEND_API_KEY} chatbot-api: build: ./chatbot-api container_name: aimpress-chatbot-api restart: unless-stopped networks: - traefik-public environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - REDIS_URL=redis://aimpress-chatbot-redis:6379 - ROCKETCHAT_URL=https://chat.ai-impress.com - ROCKETCHAT_AUTH_TOKEN=${ROCKETCHAT_AUTH_TOKEN} - ROCKETCHAT_USER_ID=${ROCKETCHAT_USER_ID} - N8N_WEBHOOK_URL=https://n8n.ai-impress.com/webhook - TWENTY_CRM_URL=https://crm.ai-impress.com - TWENTY_CRM_API_KEY=${TWENTY_CRM_API_KEY} chatbot-redis: image: redis:alpine container_name: aimpress-chatbot-redis restart: unless-stopped networks: - traefik-public networks: traefik-public: external: true