# Podman + systemd — souhrn diskuse (11.9.2026) Poznámka: toto je přehled informací a hledisek, **ne hotová rozhodnutí** — rozhodnutí o přístupu dělá uživatel po nastudování. ## Historie: `podman generate systemd` (starý model) - Spustíš `podman run --detach`, pak `podman generate systemd --name X` vygeneruje `.service` unit s napevno zadrátovaným `podman start X` / `podman stop X`. - Problémy: - Unit je snapshot příkazové řádky — změna parametrů = ručně přepsat unit nebo regenerovat; drift mezi realitou a unitem. - systemd neví, co se děje — unit sleduje jen "podman start vrátil 0". Kontejner spadne vnitřně → systemd spí, watchdog nefunguje. - Deprecated od Podman 4.4, od 5.0 jen bugfixy. LibreChat podman blog (8/2023) ho ještě používá — historický. ## Současný model: Quadlet (od 4.4, komfortně 5.x) Quadlet je systemd generator: - čte deklarativní unity z `~/.config/containers/systemd/user/` (rootless) nebo `/etc/containers/systemd/` (rootful) - přípony: `.container`, `.volume`, `.network`, `.pod`, `.kube` - při `systemctl daemon-reload` generuje skutečné `.service` unity do `/run/systemd/generator/` Praktické rozdíly: - Deklarativní, idempotentní — unit je zdroj pravdy; změna `Image=`/`Volume=` → `daemon-reload` + `restart` a podman kontejner rekne podle unitu. - Životní cyklus v systemd — generovaný service spouští `podman run` na popředí, ne detached; kontejner umře → systemd to vidí → `Restart=on-failure` funguje opravdu, `journalctl -u`, `systemctl status`, závislosti (`Requires=`/`After=`). - Volumes a sítě jsou taky unity (`.network`, `.volume`) — v unitu se odkazuješ `Network=librechat.network`, žádné ruční `podman network create`. - Auto-update: quadlet defaultně labeluje `io.containers.autoupdate=registry`; `podman auto-update` (typicky timer) porovná digest, pulzne a restartne. ## Třetí cesta: `podman compose` v systemd oneshotu - `Type=oneshot` + `ExecStart=podman compose up -d` funguje, ale systemd vidí jen wrapper proces — restart-per-container, závislosti a logy per-service zmizí, celý stack = jedna monolitní jednotka. ## Hlediska pro LibreChat (ne rozhodnutí) - Rootless vyžaduje `loginctl enable-linger` (běh bez loginu); port > 1024 bez proxy OK (3080). - DNS jména mezi kontejnery = `ContainerName=` z quadlet unitů, ne názvy compose služeb → `MONGO_URI` by mířila na `librechat-mongodb`. - Verze podmana v distro repu: Debian/Ubuntu mají staré (4.3.x), quadlet user unity od 4.4 — zkontrolovat `podman --version` před nasazením. ## Zdroje k prostudování - https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html — kompletní reference quadlet direktiv - https://docs.podman.io/en/latest/markdown/podman-quadlet.1.html — přehled generatoru, search paths - https://www.redhat.com/en/blog/quadlet-podman — motivace, srovnání s generate systemd - https://podman.io/docs/podman-installation — verze v distro repozitářích - https://docs.podman.io/en/latest/markdown/podman-auto-update.1.html — auto-update přes registry labely - https://www.librechat.ai/blog/2023-08-18_podman — historický (generate systemd), užitečný co kontejnery potřebují ## LibreChat zdroje - https://www.librechat.ai/docs/local/docker — základní compose instalace - https://www.librechat.ai/docs/remote/docker_linux — remote Linux detaily, secrets (CREDS_KEY/CREDS_IV/JWT) - https://www.librechat.ai/docs/configuration/dotenv — reference .env proměnných - https://www.librechat.ai/docs/configuration/librechat_yaml — custom endpointy (Ollama/litellm přes baseURL) Připravený návrh unity (před nastudováním, ke zvážení): `artifacts/librechat-podman/` v tomto projektu — README + librechat.network + librechat.container + librechat-mongodb.container + librechat-meilisearch.container. Minimal stack api+mongo (RAG/vectordb/admin-panel vynechány kvůli RAM — důvod zrušení OpenWebUI); meilisearch volitelný pro fulltext.