- Shell 48.7%
- Python 36.4%
- Jinja 14.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Mealie is built natively from the upstream Git tag: Mealie publishes no release archives or checksums, so the tag must resolve to the commit the GitHub API reports. Python 3.14 and the packages come from uv (uv.lock), the frontend is built with Node.js from nodejs.org (SHASUMS256) and pnpm (pnpm-lock.yaml), capped at 1.5 GiB heap so it builds in a 2 GiB guest. SQLite and all data live in /var/lib/mealie, the service runs sandboxed as user mealie on port 9000. The untouched default user gets the generated password from settings.env. adopt.sh takes over installations of the Proxmox VE community script (/opt/mealie, PostgreSQL, /app/data): a Mealie backup is made with the running old release, the data moves to /var/lib/mealie and the backup is restored into SQLite by the new release. Tested: tools/check-app.sh green (lint, template files, two fresh dev-container runs, second run changed=1); login with the access hint right after install; update 3.28.0 -> 3.29.0 keeps data and removes the old release; adopt of a rebuilt community layout (3.26.0, PostgreSQL, renamed admin, second user, recipes) keeps logins and recipes, smoke test green, follow-up update idempotent. Not tested: VM image and boot test (CI), adopt on the real LXC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| .vibe | ||
| docs | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| tests | ||
| .clinerules | ||
| .cursorrules | ||
| .windsurfrules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| iac.json | ||
| README.md | ||
iac-mealie
Mealie verwaltet Rezepte, importiert sie per URL von Webseiten, plant Mahlzeiten und erstellt Einkaufslisten – für mehrere Haushalte und Benutzer. Nativ auf Debian 13 als LXC oder VM auf Proxmox VE. Teil von iac.
Installation (auf der Proxmox-Node)
bash -c "$(curl -fsSL https://iac.heyer.systems/mealie/ct.sh)" # LXC
bash -c "$(curl -fsSL https://iac.heyer.systems/mealie/vm.sh)" # VM
Ohne Dialog: IAC_NONINTERACTIVE=1 und var_*-Variablen – am einfachsten mit dem Generator auf
https://iac.heyer.systems/apps/mealie/.
Anmeldung und Zugriff
- Weboberfläche und API:
http://<ip>:9000/– Port 9000 ist aus allen Netzen erreichbar (Mealie hat ein eigenes Login). Für HTTPS einen Reverse Proxy davorsetzen. - Login:
admin(oderadmin@example.com), Passwort im Gast:grep mealie_admin_password /etc/iac/settings.env. iac setzt es nur beim noch unberührten Standardbenutzer von Mealie (changeme@example.com/MyPassword); ein später geändertes Passwort bleibt. E-Mail-Adresse und Passwort im Profil ändern. - Selbstregistrierung ist aus (
ALLOW_SIGNUP=false); weitere Benutzer legt der Admin an oder lädt sie ein.
Einstellungen
mealie_base_url(in/etc/iac/settings.env, danachupdate): öffentliche URL, z. B.https://rezepte.example.org– für Links in Mails, geteilte Rezepte und Einladungen. Ohne Angabe gilthttp://<ip>:9000./etc/mealie/mealie.envgehört iac und wird bei jedemupdateneu geschrieben. Eigene Einstellungen (SMTP, OIDC, LDAP, OpenAI, Theme …, siehe Backend-Konfiguration) gehören nach/etc/mealie/mealie.local.env– gleiches FormatNAME=wert, wird danach gelesen und gewinnt. Danachsystemctl restart mealie.- Mails: Mit dem Modul
mail-relayinmealie.local.envSMTP_HOST=127.0.0.1,SMTP_PORT=25,SMTP_AUTH_STRATEGY=NONEundSMTP_FROM_EMAIL=…setzen.
Wo was liegt
| Pfad | Inhalt |
|---|---|
/var/lib/mealie |
SQLite-Datenbank mealie.db, Bilder, Benutzerdaten, Backups von Mealie (backups/), Log |
/etc/mealie/mealie.env |
Konfiguration von iac |
/etc/mealie/mealie.local.env |
eigene Einstellungen (optional) |
/opt/mealie/current |
aktives Release: Quellcode, .venv, Python von uv, gebautes Frontend, NLTK-Daten |
/usr/local/sbin/mealie-manage |
Python von Mealie mit dessen Konfiguration als Benutzer mealie, z. B. mealie-manage -m mealie.db.init_db |
Der Dienst mealie läuft als eigener Benutzer mealie mit systemd-Härtung und darf nur
/var/lib/mealie beschreiben.
Herkunft und Update
Mealie veröffentlicht keine Release-Archive, Checksummen oder Signaturen. iac klont deshalb das
Git-Tag v<version> und prüft, dass es auf den Commit zeigt, den die GitHub-API für das Tag
meldet. Die Abhängigkeiten kommen mit Hashes aus den Lockfiles des Releases (uv.lock,
pnpm-lock.yaml), Node.js (Major-Version wie im offiziellen Dockerfile) mit Checksumme von
nodejs.org, uv mit Checksumme aus seinem GitHub-Release, Python 3.14 über uv (Debian 13 hat 3.13).
Wie im offiziellen Image ist ffmpeg dabei (Video-Import über OpenAI).
update
update baut die neueste Version derselben Major-Version ("major_lock": true) unter
/var/tmp (rund 3 GiB, danach wieder frei) – das dauert einige Minuten –, schaltet
/opt/mealie/current um, migriert die Datenbank und löscht das vorige Release. Eine neue
Major-Version wird nur angezeigt. Vorher in Mealie unter Admin → Backups ein Backup anlegen
schadet nicht.
Bestehende Installation übernehmen
Installationen des Proxmox-VE-Community-Scripts (ct/mealie.sh: /opt/mealie, PostgreSQL,
/app/data) übernimmt adopt.sh im bestehenden Gast – Daten wandern dabei über ein Backup von
Mealie nach SQLite. Ablauf und andere Wege: docs/MIGRATION.md.
bash -c "$(curl -fsSL https://iac.heyer.systems/mealie/adopt.sh)"
Selbsttest (im Gast)
bash /var/lib/iac/src/core/bin/iac-smoke