Kein alter Stand mehr im Zwischenspeicher, Einsetzer heisst HoneyBar-Proxy
Die HoneyBar kommt bei fremden Apps ueber deren eigenen Ursprung — das loest CSP, CORS und COEP auf einmal, setzt sie aber auch deren Zwischen- speicher aus. Eine alte HoneyBar dort sieht aus wie ein Fehler in HoneyOS. Statt no-cache jetzt no-store, must-revalidate; dazu ein Abschnitt in der README, wie man einen haengengebliebenen Stand erkennt. Und der nginx davor heisst nicht mehr 'Einsetzer', sondern HoneyBar-Proxy (Dienst und Behaelter honeybar-proxy bzw. <app>-honeybar). Er ist ein Reverse Proxy, der die HoneyBar einsetzt — der alte Name sagte das Gegenteil von dem, was man im docker ps sehen will. LEISTE_PORT heisst jetzt HONEYBAR_PROXY_PORT.
This commit is contained in:
1 parent
53ab62d220
commit
6fe6533667
4 files changed
+63
-33
No files matched your search
@@ -229,7 +229,7 @@ hinein, ihre Stile nicht hinaus. Sie schiebt den Seiteninhalt um 32 px nach unte
|
||||
|
||||
Vorschau ohne Einbau: `/honeybar/demo.html`.
|
||||
|
||||
### Weg 2 — fertige Apps: ein Einsetzer davor
|
||||
### Weg 2 — fertige Apps: ein HoneyBar-Proxy davor
|
||||
|
||||
Für Werkzeuge, die man **nicht selbst geschrieben hat**, gibt es keinen
|
||||
`<script>`-Tag zum Ändern — den setzt ein kleiner nginx ein, während er die
|
||||
@@ -295,7 +295,7 @@ schickt — und das tun die meisten:
|
||||
| `HONEYOS_APPS_KEY` | steht im Quelltext der Seite | **bleibt auf dem Server** |
|
||||
| Aufwand | eine `sub_filter`-Zeile | drei `location`-Blöcke |
|
||||
|
||||
Bei der zweiten reicht der Einsetzer auch `/honeybar/` und die zwei Abfragen der
|
||||
Bei der zweiten reicht der HoneyBar-Proxy auch `/honeybar/` und die zwei Abfragen der
|
||||
HoneyBar durch, unter *seiner* Adresse. Für den Browser ist damit alles derselbe
|
||||
Ursprung, und die drei Hürden fallen auf einmal weg. Durchgereicht werden dabei
|
||||
**nur** `/api/apps` und `/api/weather`, und nur lesend (`limit_except GET`) —
|
||||
@@ -328,29 +328,29 @@ services:
|
||||
|
||||
networks:
|
||||
honeybar:
|
||||
external: true # legt der Einsetzer-Stapel an
|
||||
external: true # legt der HoneyBar-Proxy-Stapel an
|
||||
```
|
||||
|
||||
Zwei Änderungen, mehr nicht:
|
||||
|
||||
1. **`ports:` fällt weg.** Die App braucht kein Loch nach außen mehr — der
|
||||
Einsetzer spricht sie im Docker-Netz unter ihrem Namen an (`bentopdf:8080`;
|
||||
HoneyBar-Proxy spricht sie im Docker-Netz unter ihrem Namen an (`bentopdf:8080`;
|
||||
die `8080` ist der Port *im* Behälter und bleibt, die `8888` war nur die
|
||||
Klinke an der Außenseite). Ginge Pangolin weiter direkt auf die App, wäre der
|
||||
Einsetzer umgangen und die HoneyBar fehlte. Zum Nachsehen darf ein `ports:`
|
||||
HoneyBar-Proxy umgangen und die HoneyBar fehlte. Zum Nachsehen darf ein `ports:`
|
||||
ruhig stehen bleiben — dann hast du zwei Wege: direkt ohne HoneyBar, über
|
||||
Pangolin mit.
|
||||
2. **Das Netz `honeybar` dazu.** Es entsteht im Einsetzer-Stapel; hier wird es
|
||||
2. **Das Netz `honeybar` dazu.** Es entsteht im HoneyBar-Proxy-Stapel; hier wird es
|
||||
nur als `external` mitbenutzt. Deshalb jenen Stapel zuerst starten.
|
||||
|
||||
Dazu noch zwei Zeilen im Einsetzer (`$ziel` und `$appid`) und in Pangolin die
|
||||
Dazu noch zwei Zeilen im HoneyBar-Proxy (`$ziel` und `$appid`) und in Pangolin die
|
||||
Ressource von der App auf `honeybar:80` umstellen. Fertig.
|
||||
|
||||
#### Was es kostet
|
||||
|
||||
Nicht viel, aber nicht nichts:
|
||||
|
||||
- **Ein Ausfallpunkt mehr.** Ist der Einsetzer weg, sind die Apps dahinter weg —
|
||||
- **Ein Ausfallpunkt mehr.** Ist der HoneyBar-Proxy weg, sind die Apps dahinter weg —
|
||||
nicht nur ihre HoneyBar. `restart: unless-stopped` ist deshalb Pflicht; ein
|
||||
nginx, der nur durchreicht, fällt praktisch nie aus.
|
||||
- **Eine Stelle mehr zum Pflegen.** Je App zwei Zeilen, und beim Umbenennen
|
||||
@@ -366,7 +366,7 @@ Nicht viel, aber nicht nichts:
|
||||
strenge CSP und COEP mitbringt: HoneyBar, Apps und Wetter erscheinen, ohne dass
|
||||
an dessen Kopfzeilen etwas geändert wird.
|
||||
- [`beispiele/mehrere-apps/`](beispiele/mehrere-apps/) — **HoneyOS und ein
|
||||
Einsetzer für beliebig viele Dienste in einem Stapel.** Zwei Tabellen oben in
|
||||
HoneyBar-Proxy für beliebig viele Dienste in einem Stapel.** Zwei Tabellen oben in
|
||||
der Datei sagen, welcher Name zu welchem Behälter gehört und welche App das
|
||||
für HoneyOS ist; eine neue App sind zwei Zeilen. Die HoneyBar hebt die aktuelle
|
||||
App hervor, sobald `$appid` der `ID` in der App-Liste entspricht — genau wie
|
||||
@@ -378,7 +378,7 @@ Nicht viel, aber nicht nichts:
|
||||
Das Netz `honeybar` legt dieser Stapel selbst an, unter festem Namen. Die
|
||||
fremden Dienste treten ihm bei (`networks: [default, honeybar]` und
|
||||
`honeybar: {external: true}`); ihre eigenen `ports:` können dann ganz weg,
|
||||
erreichbar ist nur noch der Einsetzer. Deshalb diesen Stapel zuerst starten. Ein Host, der in der Tabelle fehlt, bekommt **404** statt einer
|
||||
erreichbar ist nur noch der HoneyBar-Proxy. Deshalb diesen Stapel zuerst starten. Ein Host, der in der Tabelle fehlt, bekommt **404** statt einer
|
||||
geratenen Weiterleitung — sonst wird aus einem Tippfehler in Pangolin eine
|
||||
stille Umleitung irgendwohin. WebSocket-Verbindungen (Uptime Kuma, Dashboards,
|
||||
alles mit Live-Anzeige) gehen durch, dafür sorgt `upgrade.conf`.
|
||||
@@ -443,6 +443,30 @@ eingebettetes Bild einer fremden Seite eine Abmeldung auslösen. Der Punkt
|
||||
erscheint nur, wenn HoneyOS selbst anmeldet; hinter einem Proxy oder im offenen
|
||||
Betrieb fehlt er.
|
||||
|
||||
## Wenn die HoneyBar veraltet aussieht
|
||||
|
||||
Die HoneyBar wird bei Weg 2 über den **eigenen Ursprung der App** ausgeliefert
|
||||
(`/honeybar/honeybar.js`). Das ist der Kniff, der CSP, CORS und COEP auf einmal
|
||||
erledigt — es setzt sie aber zugleich dem Zwischenspeicher dieser App aus, und
|
||||
dem ihres Service Workers, falls sie einen hat. Eine alte HoneyBar dort sieht
|
||||
aus wie ein Fehler in HoneyOS: Ein neuer Menüpunkt fehlt, obwohl der
|
||||
Schreibtisch ihn längst hat.
|
||||
|
||||
HoneyOS liefert seine Dateien deshalb mit `Cache-Control: no-store` aus. Bleibt
|
||||
trotzdem etwas hängen, hilft die Probe von Hand:
|
||||
|
||||
```bash
|
||||
curl -s https://<app-adresse>/honeybar/honeybar.js | grep -c sysmenu
|
||||
```
|
||||
|
||||
Kommt dort **0**, ist die ausgelieferte Datei alt — dann läuft HoneyOS noch auf
|
||||
einem älteren Abbild (`docker compose pull && up -d`). Kommt **2**, liegt es am
|
||||
Browser: einmal hart neu laden (Strg+Umschalt+R), und bei einer installierten
|
||||
PWA deren Daten löschen.
|
||||
|
||||
**Am schnellsten zu sehen ohne Werkzeug:** Stehen im App-Streifen der HoneyBar
|
||||
Symbole neben den Namen? Dann ist sie aktuell.
|
||||
|
||||
## Wer angemeldet ist
|
||||
|
||||
Steht auf dem Schreibtisch, als eigenes Widget: Bild, Name und Begrüßung, aus
|
||||
|
||||
Reference in new issue
Block a user