Files
marcandClaude Opus 5 1c3218939b 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>
2026-08-24 22:09:37 +02:00

67 lines
3.4 KiB
Bash

# ─────────────────────────────────────────────────────────────────────────────
# HoneyOS
#
# cp .env.example .env && ausfüllen
# docker compose pull && docker compose up -d
#
# Apps werden NICHT hier eingetragen — die legst du in der Oberfläche an
# (Einstellungen → Programme). Sie liegen im Server unter /data/honeyos.json.
# ─────────────────────────────────────────────────────────────────────────────
HONEYOS_PORT=8088
# Wo HoneyOS von außen erreichbar ist — ohne Schrägstrich am Ende.
# Daraus entsteht die Rückrufadresse: <PUBLIC_URL>/api/auth/callback
HONEYOS_PUBLIC_URL=https://os.honeyy.duckdns.org
# Unterschreibt das Sitzungscookie. Mindestens 32 Zeichen.
# openssl rand -hex 32
# Wird der Wert getauscht, sind alle Anmeldungen weg — sonst passiert nichts.
HONEYOS_SESSION_SECRET=
# Wo die Daten liegen (Apps + Einstellungen je Nutzer, eine JSON-Datei).
# Das ist das Einzige, was gesichert werden muss.
HONEYOS_DATA_DIR=/srv/honeyos
# ── Anmeldung ────────────────────────────────────────────────────────────────
# Genau einer der beiden Wege:
#
# 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
# ── 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=
# 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.