services: wapp: #user: "1000:1000" build: #context: /opt/00apps/wapp context: . dockerfile: Dockerfile ports: - "3001:3001" container_name: wapp restart: unless-stopped networks: - traefik_net environment: # Server configuration - PORT=3001 - NODE_ENV=production # API Security - WAPP_API_KEY=${WAPP_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