# ───────────────────────────────────────────────────────────────────────────── # HoneyOS — Konfiguration # # cp .env.example .env && anpassen # docker compose pull && docker compose up -d # # Alles hier landet beim Containerstart in config.json und wird vom Browser # gelesen. Das heißt: **es ist öffentlich.** Adressen und Namen gehören hier # hinein, Geheimnisse niemals — HoneyOS hat kein Backend, das eines hüten # könnte. Nach jeder Änderung: docker compose up -d (Neustart genügt). # ───────────────────────────────────────────────────────────────────────────── HONEYOS_PORT=8088 # Anzeigename, solange keine App einen besseren nennt (siehe _ME weiter unten). HONEYOS_USER=marc HONEYOS_HOSTNAME=honeyos HONEYOS_VERSION=0.1 # ── Apps ───────────────────────────────────────────────────────────────────── # Durchnummeriert ab 1. Eine App entsteht durch ihre _URL — fehlt die, wird die # Nummer übersprungen. Bis zu 12 Stück. # # _URL Pflicht. Wohin der Start springt. # _ID Kurzname, klein. Muss zu data-app der Leiste passen. Standard: appN # _NAME Beschriftung. Standard: die ID in Großbuchstaben # _SUBTITLE Zeile darunter auf der Kachel # _GLYPH Symbol: cloud | note | box | chip | folder | gear # _KEY Zifferntaste zum Starten im Terminal-Modus # _ME optional, siehe „Anmeldung" unten # _TOKEN_KEY optional, siehe „Anmeldung" unten HONEYOS_APP_1_ID=aether HONEYOS_APP_1_NAME=AETHER HONEYOS_APP_1_SUBTITLE=Cloud & Dateien HONEYOS_APP_1_URL=https://cloud.honeyy.duckdns.org HONEYOS_APP_1_GLYPH=cloud HONEYOS_APP_1_KEY=1 HONEYOS_APP_1_ME=/api/v1/auth/me HONEYOS_APP_2_ID=inknote HONEYOS_APP_2_NAME=INKNOTE HONEYOS_APP_2_SUBTITLE=Notizen & Zeichnen HONEYOS_APP_2_URL=https://notes.honeyy.duckdns.org HONEYOS_APP_2_GLYPH=note HONEYOS_APP_2_KEY=2 HONEYOS_APP_2_ME=/api/auth/me HONEYOS_APP_2_TOKEN_KEY=inknote_token # HONEYOS_APP_3_ID=paperwall # HONEYOS_APP_3_URL=https://… # HONEYOS_APP_3_GLYPH=box # HONEYOS_APP_3_KEY=3 # ───────────────────────────────────────────────────────────────────────────── # Anmeldung — was HoneyOS kann und was nicht # ───────────────────────────────────────────────────────────────────────────── # # HoneyOS meldet NIEMANDEN an. Es ist eine statische Seite; ein OIDC-Client # bräuchte ein Backend und ein Client-Geheimnis, und beides gibt es hier nicht # — absichtlich. Die Anmeldung bleibt Sache von Aether und InkNote, die beide # an PocketID hängen. # # Was HoneyOS kann: **anzeigen**, wer angemeldet ist. Dafür ist _ME da — der # Pfad, unter dem die App „wer bin ich" beantwortet. Relativ zu _URL oder # absolut. Aus der Antwort wird der Anzeigename gefischt (display_name, # displayName, name, username), verschachtelt unter `user` wird auch gefunden. # # Zwei Wege, wie das gelesen wird — und sie verhalten sich unterschiedlich: # # 1. Die Leiste IN der App (honeybar.js) fragt ihre eigene App. # Gleicher Ursprung, also **funktioniert das sofort**, ohne dass an Aether # oder InkNote etwas geändert werden muss. # # 2. Der Desktop auf os.… fragt über die Domaingrenze. # Dafür muss die App diesen Ursprung erlauben, sonst blockt der Browser: # InkNote: ALLOWED_ORIGINS=https://os.honeyy.duckdns.org # Aether: CORS mit Access-Control-Allow-Credentials — noch nicht drin # Ohne das bleibt die Anzeige einfach leer. Nichts geht kaputt, die # Lampe „online" funktioniert weiter. # # _TOKEN_KEY brauchen nur Apps, die einen Bearer-Token im localStorage halten # statt eines Cookies (InkNote tut das). Der Token ist pro Domain sichtbar — # von os.… aus also NICHT lesbar. Für die Leiste in der App reicht es. # # Und wichtig: alle Adressen müssen unter derselben Domain liegen # (…​.honeyy.duckdns.org). Sonst behandelt der Browser sie als fremde Site und # schickt die Sitzung gar nicht erst mit.