72 lines
1.9 KiB
YAML
72 lines
1.9 KiB
YAML
services:
|
|
wapp:
|
|
user: "1000:1000"
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: wapp
|
|
restart: unless-stopped
|
|
networks:
|
|
- traefik_net
|
|
environment:
|
|
# Server configuration
|
|
- PORT=3001
|
|
- NODE_ENV=production
|
|
|
|
# API Security
|
|
- API_KEY=${API_KEY:-your-secure-api-key-here}
|
|
|
|
# Paths (pointing to volume mounts)
|
|
- DB_PATH=/app/data/whatsapp.db
|
|
- MEDIA_PATH=/app/media
|
|
|
|
# WhatsApp configuration
|
|
# Set HEADLESS=false to see the browser window (useful for debugging)
|
|
- HEADLESS=true
|
|
- REJECT_CALLS=false
|
|
|
|
# WebSocket URL for QR page (set this to your public URL when using Traefik)
|
|
# Example: - WS_URL=https://wapp.appmodel.nl
|
|
- WS_URL=https://wapp.appmodel.nl
|
|
|
|
# CORS configuration
|
|
- CORS_ORIGIN=*
|
|
|
|
volumes:
|
|
# Persistent data volumes
|
|
- whatsapp-data:/app/data
|
|
- whatsapp-media:/app/media
|
|
- whatsapp-cache:/app/.wwebjs_cache
|
|
- whatsapp-auth:/app/.wwebjs_auth
|
|
|
|
# Uncomment labels below when ready to use Traefik
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.wapp.rule=Host(`wapp.appmodel.nl`)"
|
|
- "traefik.http.routers.wapp.entrypoints=websecure"
|
|
- "traefik.http.routers.wapp.tls=true"
|
|
- "traefik.http.routers.wapp.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.wapp.loadbalancer.server.port=3001"
|
|
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3001/health', (r) => { process.exit(r.statusCode === 200 ? 0 : 1); }).on('error', () => process.exit(1));"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
networks:
|
|
traefik_net:
|
|
external: true
|
|
name: traefik_net
|
|
|
|
volumes:
|
|
whatsapp-data:
|
|
driver: local
|
|
whatsapp-media:
|
|
driver: local
|
|
whatsapp-cache:
|
|
driver: local
|
|
whatsapp-auth:
|
|
driver: local
|