# Mealie - Recipe Manager & Meal Planner # Domain: ${SUBDOMAIN}.${DOMAIN} # Database: None (SQLite, built-in) # RAM: ~200MB (mem_limit: 1000M) | Pi-compatible: Yes (arm64 only) # # Environment variables: # DOMAIN - Your domain (e.g., demo-felhom.eu) # # Storage layout: # Recipe data/images → mealie_data (named volume, NVMe — moderate size) # # First-time setup: # Default login: changeme@example.com / MyPassword # Change immediately after first login! services: mealie: image: ghcr.io/mealie-recipes/mealie:v3.10.2 container_name: mealie restart: unless-stopped environment: - ALLOW_SIGNUP=false - PUID=1000 - PGID=1000 - TZ=Europe/Budapest - MAX_WORKERS=1 - WEB_CONCURRENCY=1 - BASE_URL=https://${SUBDOMAIN}.${DOMAIN} volumes: - mealie_data:/app/data/ networks: - traefik-public deploy: resources: limits: memory: 1000M healthcheck: test: ["CMD-SHELL", "python3 -c \"import socket; s=socket.create_connection(('localhost',9000),2); s.close()\""] interval: 30s timeout: 5s retries: 3 start_period: 60s labels: - "traefik.enable=true" - "traefik.http.routers.mealie.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" - "traefik.http.routers.mealie.entrypoints=websecure" - "traefik.http.routers.mealie.tls=true" - "traefik.http.routers.mealie.tls.certresolver=letsencrypt" - "traefik.http.services.mealie.loadbalancer.server.port=9000" volumes: mealie_data: networks: traefik-public: external: true