From 4802110512be58b2146659d8bfb8d885e7f23619 Mon Sep 17 00:00:00 2001 From: lachtan Date: Fri, 11 Sep 2026 15:55:26 +0200 Subject: [PATCH] nanobot: 2026-09-11 15:55:26 --- cron/jobs.json | 30 +++++--- .../artifacts/librechat-podman/README.md | 0 .../librechat-meilisearch.container | 0 .../librechat-mongodb.container | 0 .../librechat-podman/librechat.container | 0 .../librechat-podman/librechat.network | 0 .../artifacts/podman-systemd-summary.md | 74 +++++++++++++++++++ projects/devops/memory.md | 2 + projects/devops/prompt.md | 14 ++++ projects/devops/state.md | 12 +++ 10 files changed, 120 insertions(+), 12 deletions(-) rename projects/{ai => devops}/artifacts/librechat-podman/README.md (100%) rename projects/{ai => devops}/artifacts/librechat-podman/librechat-meilisearch.container (100%) rename projects/{ai => devops}/artifacts/librechat-podman/librechat-mongodb.container (100%) rename projects/{ai => devops}/artifacts/librechat-podman/librechat.container (100%) rename projects/{ai => devops}/artifacts/librechat-podman/librechat.network (100%) create mode 100644 projects/devops/artifacts/podman-systemd-summary.md create mode 100644 projects/devops/memory.md create mode 100644 projects/devops/prompt.md create mode 100644 projects/devops/state.md diff --git a/cron/jobs.json b/cron/jobs.json index 6ac31ac..5424893 100644 --- a/cron/jobs.json +++ b/cron/jobs.json @@ -84,8 +84,8 @@ "originMetadata": {} }, "state": { - "nextRunAtMs": 1789133781832, - "lastRunAtMs": 1789126581821, + "nextRunAtMs": 1789140981844, + "lastRunAtMs": 1789133781834, "lastStatus": "ok", "lastError": null, "runHistory": [ @@ -166,11 +166,17 @@ "status": "ok", "durationMs": 11, "error": null + }, + { + "runAtMs": 1789133781834, + "status": "ok", + "durationMs": 10, + "error": null } ] }, "createdAtMs": 1789032980434, - "updatedAtMs": 1789126581832, + "updatedAtMs": 1789133781844, "deleteAfterRun": false }, { @@ -197,17 +203,11 @@ "originMetadata": {} }, "state": { - "nextRunAtMs": 1789133782309, - "lastRunAtMs": 1789131982309, + "nextRunAtMs": 1789135582310, + "lastRunAtMs": 1789133782310, "lastStatus": "ok", "lastError": null, "runHistory": [ - { - "runAtMs": 1789097781494, - "status": "ok", - "durationMs": 1, - "error": null - }, { "runAtMs": 1789099581496, "status": "ok", @@ -321,11 +321,17 @@ "status": "ok", "durationMs": 0, "error": null + }, + { + "runAtMs": 1789133782310, + "status": "ok", + "durationMs": 0, + "error": null } ] }, "createdAtMs": 1789032980437, - "updatedAtMs": 1789131982309, + "updatedAtMs": 1789133782310, "deleteAfterRun": false } ] diff --git a/projects/ai/artifacts/librechat-podman/README.md b/projects/devops/artifacts/librechat-podman/README.md similarity index 100% rename from projects/ai/artifacts/librechat-podman/README.md rename to projects/devops/artifacts/librechat-podman/README.md diff --git a/projects/ai/artifacts/librechat-podman/librechat-meilisearch.container b/projects/devops/artifacts/librechat-podman/librechat-meilisearch.container similarity index 100% rename from projects/ai/artifacts/librechat-podman/librechat-meilisearch.container rename to projects/devops/artifacts/librechat-podman/librechat-meilisearch.container diff --git a/projects/ai/artifacts/librechat-podman/librechat-mongodb.container b/projects/devops/artifacts/librechat-podman/librechat-mongodb.container similarity index 100% rename from projects/ai/artifacts/librechat-podman/librechat-mongodb.container rename to projects/devops/artifacts/librechat-podman/librechat-mongodb.container diff --git a/projects/ai/artifacts/librechat-podman/librechat.container b/projects/devops/artifacts/librechat-podman/librechat.container similarity index 100% rename from projects/ai/artifacts/librechat-podman/librechat.container rename to projects/devops/artifacts/librechat-podman/librechat.container diff --git a/projects/ai/artifacts/librechat-podman/librechat.network b/projects/devops/artifacts/librechat-podman/librechat.network similarity index 100% rename from projects/ai/artifacts/librechat-podman/librechat.network rename to projects/devops/artifacts/librechat-podman/librechat.network diff --git a/projects/devops/artifacts/podman-systemd-summary.md b/projects/devops/artifacts/podman-systemd-summary.md new file mode 100644 index 0000000..79e27cf --- /dev/null +++ b/projects/devops/artifacts/podman-systemd-summary.md @@ -0,0 +1,74 @@ +# 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. \ No newline at end of file diff --git a/projects/devops/memory.md b/projects/devops/memory.md new file mode 100644 index 0000000..24c9865 --- /dev/null +++ b/projects/devops/memory.md @@ -0,0 +1,2 @@ +- 2026-09-11: Projekt založen. Uživatel ho chce jako úložiště pro admin/root poznámky — infrastruktura, servery, provoz, podobně. Záměrně volné zaměření, strukturu a upřesnění odkládá na později. prompt.md naplněn základním homelab kontextem (Proxmox cluster, wood/pivo/nvidia/devlin.hell, Zabbix, zálohy), state.md obsahuje výchozí „kde to je / co dál". +- 2026-09-11: Presun LibreChat podman topicu z projektu ai do devops (tematicky patri sem). Artefakt librechat-podman presunut z projects/ai/artifacts/ do projects/devops/artifacts/ (README + quadlet unity). Kontext: OpenWebUI zakazano (RAM problemy), jako nahraada LibreChat; uzivatel si tema nejdřív nacte sam a rozhodne o pristupu — agent dodava info, nereshi rozhodnuti. Soucasti presunu i souhrn diskuse o podman+systemd (generate systemd deprecated od 4.4, quadlet jako hlediska, ne hotova volba). diff --git a/projects/devops/prompt.md b/projects/devops/prompt.md new file mode 100644 index 0000000..bbb52e9 --- /dev/null +++ b/projects/devops/prompt.md @@ -0,0 +1,14 @@ +# DevOps / infrastruktura + +## Účel +Ad-hoc admin/root poznámky: infrastruktura, servery, provoz, věci k vyřešení. + +## Kontext +- Homelab: Proxmox cluster, GPU host nvidia.hell (Ollama), servery wood.hell, pivo.hell, devlin.hell, LXC kontejnery +- Samostatný Linux server s Dockerem (vedle Proxmox clusteru) +- Monitoring přes Zabbix +- Zálohování: wood.hell → pivo.hell (recursive) + +## Scope +- Uživatel bude strukturu a zaměření projektu postupně upřesňovat — projekt je teď nový a záměrně volný. +- Zapisovat sem poznámky o infrastruktuře, provozu a admin úkolech. \ No newline at end of file diff --git a/projects/devops/state.md b/projects/devops/state.md new file mode 100644 index 0000000..93a272f --- /dev/null +++ b/projects/devops/state.md @@ -0,0 +1,12 @@ +--- +timestamp: draft +--- + +# Project devops + +## Kde to je +- Projekt založen jako volný prostor pro admin/root poznámky o infrastruktuře a provozu. +- Struktura a zaměření se upřesní postupně — žádný konkrétní úkol ještě není v běhu. + +## Co dál +- Uživatel bude psát poznámky; podle obsahu doladit strukturu projektu. \ No newline at end of file