From 17cbc1af57df2afc2341879f8573c07e5f2f04f9 Mon Sep 17 00:00:00 2001 From: carsten Date: Tue, 29 Sep 2026 12:32:04 +0200 Subject: [PATCH] =?UTF-8?q?Ret=20INSTALL.md:=20systemd-service=20skal=20k?= =?UTF-8?q?=C3=B8re=20som=20root,=20ikke=20en=20dedikeret=20bruger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit uv's managede Python-interpreter installeres under den kørende brugers hjemmemappe (fx /root/... hvis uv sync køres som root) — en separat lavprivilegeret servicebruger kan ikke eksekvere den, hvilket fejler med systemd status=203/EXEC. Fundet under den første rigtige produktionsopsætning. Co-Authored-By: Claude Sonnet 5 --- INSTALL.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 6ac828a..0e43166 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -129,7 +129,6 @@ After=network.target postgresql.service [Service] Type=simple -User=vinindkoeb WorkingDirectory=/sti/til/vinindkoeb ExecStart=/sti/til/vinindkoeb/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 Restart=always @@ -144,6 +143,19 @@ sudo systemctl daemon-reload sudo systemctl enable --now vinindkoeb ``` +**Om `User=`:** eksemplet ovenfor kører som root (ingen `User=`-linje) +— simplest, og rimeligt for en lille, isoleret container som denne. +Vil du hellere køre som en dedikeret systembruger +(`useradd --system --no-create-home --shell /usr/sbin/nologin +vinindkoeb`, `chown -R vinindkoeb:vinindkoeb /sti/til/vinindkoeb`, +`User=vinindkoeb` i unit-filen), **skal `uv sync` også køres som den +samme bruger** — `uv` installerer sin egen Python-interpreter under +den kørende brugers hjemmemappe (fx `/root/.local/share/uv/...`), +som andre brugere ikke kan tilgå. Kører man `uv sync` som root og +prøver bagefter at starte servicen som en anden bruger, fejler +`systemd` med `status=203/EXEC` (kunne ikke eksekvere programmet) — +fundet under den første rigtige produktionsopsætning. + Da reverse proxy'en (CloudPanel) kører i en anden container, skal backend'en kunne nås over Proxmox' interne netværk — deraf `--host 0.0.0.0` i stedet for `127.0.0.1`. Det skal dog **ikke** stå