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
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:
Start Mealf
Run these commands in the folder containing compose.yml:
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.
