feat: Betrieb hinter einem Anmelde-Proxy, Schlüssel für die App-Liste

Marc stellt Pangolin davor und will keinen zweiten Anmeldeschirm.

- HONEYOS_PROXY_AUTH=true: HoneyOS prüft nicht mehr selbst, der Start sagt
  deutlich, dass der Container dann nur über den Proxy erreichbar sein darf.
  Mit HONEYOS_USER_HEADER bekommt jeder Name seine eigenen Einstellungen.
- HONEYOS_APPS_KEY schützt /api/apps. Nötig, weil HoneyOS auf einer anderen
  Site liegt als die Apps (duckdns.org steht auf der Public-Suffix-Liste) –
  der Browser schickt die Sitzung dort nicht mit, und der Pfad muss im Proxy
  von der Anmeldung befreit sein.

Beim Durchspielen mit zwei echten Hostnamen fiel ein Loch auf: Ohne eigene
Anmeldung gilt jede Anfrage als angemeldet, also gab der Rückfall auf diese
Prüfung die Liste an jeden heraus – auch ohne oder mit falschem Schlüssel.
Der Rückfall greift jetzt nur noch, wo es wirklich eine Sitzung geben kann.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-24 22:09:37 +02:00
1 parent 905b136516
commit 1c3218939b
8 files changed
+382 -45

No files matched your search

+37 -17
View File
@@ -24,23 +24,43 @@ HONEYOS_SESSION_SECRET=
HONEYOS_DATA_DIR=/srv/honeyos
# ── Anmeldung ────────────────────────────────────────────────────────────────
# Leerer HONEYOS_OIDC_ISSUER = KEINE Anmeldung, jeder kommt rein. Das ist zum
# Entwickeln gedacht und gehört nicht ins offene Netz.
# Genau einer der beiden Wege:
#
# In PocketID einen Client anlegen und dort als Rückrufadresse exakt
# https://os.honeyy.duckdns.org/api/auth/callback
# eintragen. HoneyOS schickt PKCE mit, ein Client-Geheimnis braucht es
# trotzdem — also keinen „public client" anlegen.
HONEYOS_OIDC_ISSUER=https://id.honeyy.duckdns.org
HONEYOS_OIDC_CLIENT_ID=honeyos
HONEYOS_OIDC_CLIENT_SECRET=
# Nur nötig, wenn die Rückrufadresse von PUBLIC_URL abweicht:
# HONEYOS_OIDC_REDIRECT_URL=
# A) Ein Proxy davor meldet an (Pangolin, Authelia, …) — HoneyOS fragt nicht
# noch einmal. Dann NUR das hier setzen:
HONEYOS_PROXY_AUTH=true
# Optional: Kopfzeile, in die der Proxy den Nutzernamen schreibt. Ohne sie
# teilen sich alle einen Satz Einstellungen — bei einer Person völlig ok.
# HONEYOS_USER_HEADER=Remote-User
#
# ⚠ In diesem Betrieb prüft HoneyOS selbst nichts mehr. Der Container darf
# dann NUR über den Proxy erreichbar sein — nicht zusätzlich auf einem
# offenen Port im Netz hängen.
#
# B) HoneyOS meldet selbst an, mit eigenem Anmeldeschirm. Dann PROXY_AUTH
# weglassen und stattdessen:
# HONEYOS_SESSION_SECRET= # openssl rand -hex 32
# HONEYOS_OIDC_ISSUER=https://id.example.com
# HONEYOS_OIDC_CLIENT_ID=honeyos
# HONEYOS_OIDC_CLIENT_SECRET=
# HONEYOS_OIDC_REDIRECT_URL= # nur wenn abweichend von PUBLIC_URL
# HONEYOS_BUTTON_LABEL=Anmelden mit PocketID
# HONEYOS_ALLOWED_USERS=marc # zweiter Riegel neben den IdP-Gruppen
# Beschriftung des einen Knopfes auf dem Anmeldeschirm.
HONEYOS_BUTTON_LABEL=Anmelden mit PocketID
# ── Schlüssel für die App-Liste ──────────────────────────────────────────────
# Nötig, sobald die Leiste in einer App läuft, die auf einer ANDEREN Site liegt
# als HoneyOS — etwa honeyos.duckdns.org gegenüber cloud.honeyy.duckdns.org.
# Der Browser schickt die Sitzung dann nicht mit, und ohne zweiten Ausweis
# bekäme die Leiste nie eine Liste.
#
# Ist der Pfad /api/apps im Proxy von der Anmeldung befreit, ist dieser
# Schlüssel das Einzige, was davorsteht. Dann setzen.
# openssl rand -hex 16
HONEYOS_APPS_KEY=
# Zweiter Riegel neben den Gruppen in PocketID: nur diese Konten dürfen rein
# (Benutzername oder sub, kommagetrennt). Leer = jeder, den der Anbieter
# durchlässt.
# HONEYOS_ALLOWED_USERS=marc
# Derselbe Wert gehört in das <script>-Tag der App:
# <script defer src="https://honeyos.duckdns.org/honeybar/honeybar.js"
# data-app="aether" data-key="…"></script>
#
# Zusätzlich lässt HoneyOS die Liste nur an Ursprünge heraus, die selbst als App
# eingetragen sind. Der Schlüssel allein nützt einer fremden Seite also nichts.