mealfWiki
On this page

Installation

Save the complete configuration below as compose.yml in a folder on your Docker server. Replace https://mealf.example.com in BASE_URL with your public HTTPS address.

The :preview image tag tracks the latest published development preview. pull_policy: always checks for the newest image whenever you run docker compose up -d. Get the latest image and tags or read the latest release notes.

Full compose.yml

yaml
name: mealf-preview

services:
  mealf:
    image: ghcr.io/cloudcookch/mealf-server:preview
    pull_policy: always
    restart: unless-stopped

    ports:
      - "5152:5152"

    environment:
      DATA_DIR: /data
      BASE_URL: https://mealf.example.com
      TZ: Europe/Zurich
      TRUSTED_PROXY_CIDRS: ""

    command:
      - /bin/sh
      - -c
      - |
        umask 077
        exec python -m uvicorn aircooker.app:create_app \
          --factory --host 0.0.0.0 --port 5152 \
          --workers 1 --no-access-log \
          --forwarded-allow-ips "$${TRUSTED_PROXY_CIDRS}" \
          --timeout-graceful-shutdown 30 --limit-concurrency 64

    healthcheck:
      test:
        - CMD
        - python
        - -c
        - "import urllib.request; urllib.request.urlopen('http://127.0.0.1:5152/api/v1/system/health', timeout=3)"
      interval: 30s
      timeout: 5s
      start_period: 15s
      retries: 3

    volumes:
      - mealf-data:/data

    read_only: true
    tmpfs:
      - /tmp:size=64m,mode=1777
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    pids_limit: 100
    mem_limit: 512m
    stop_grace_period: 40s

volumes:
  mealf-data:

Download compose.yml

Start Mealf

Run these commands in the folder containing compose.yml:

Terminal
docker compose up -d
docker compose logs --tail=100 mealf

This configuration runs Mealf on port 5152 and stores your data in the mealf-data volume. Keep that volume when updating.

Point your Cloudflare Tunnel at http://127.0.0.1:5152 if its connector runs on the Docker host. If the connector runs elsewhere, use http://YOUR_SERVER_LAN_IP:5152 with your Docker server’s reachable LAN address. Publish mealf.example.com (or your own hostname) without a path, matching BASE_URL.

Open https://mealf.example.com, enter the one-time setup_token from the private logs, and complete First-run setup. The app is at /app/.

Update to the latest preview

Back up your data, then run docker compose up -d again in the same folder. Compose pulls the latest preview and recreates the container when its image changes. Keep your existing project name, volume, port, command and healthcheck settings.

Adapted to this site’s installation · Updated 22 October 2026

Repository reference