docs: fertiges Beispiel — BentoPDF mit Einsetzer davor

Compose und nginx-Konfiguration, genau so durchprobiert. Dazu der Hinweis, dass
der Ursprung in HoneyOS auf den Buchstaben passen muss: localhost und 127.0.0.1
sind fuer den Browser zwei verschiedene.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-28 20:35:25 +02:00
1 parent 5dbadf212f
commit 607ae13374
3 files changed
+76 -1

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
# ─────────────────────────────────────────────────────────────
# BentoPDF mit HoneyOS-Leiste
#
# Aufbau: Pangolin → leiste (nginx) → bentopdf
#
# Der nginx tut nichts weiter, als beim Durchreichen einen <script>-Tag vor
# </head> zu setzen. BentoPDF selbst bleibt unangetastet und weiss nichts davon.
#
# docker compose up -d
# → in Pangolin die Ressource auf leiste:80 zeigen lassen (nicht mehr auf
# bentopdf), und in HoneyOS BentoPDF als App eintragen — diese Liste ist
# zugleich die CORS-Freigabe.
# ─────────────────────────────────────────────────────────────
services:
bentopdf:
image: bentopdf/bentopdf:latest
container_name: bentopdf
restart: unless-stopped
# Kein ports: mehr. Erreichbar ist nur noch der Einsetzer davor.
networks: [intern]
leiste:
image: nginx:alpine
container_name: bentopdf-leiste
restart: unless-stopped
depends_on: [bentopdf]
volumes:
- ./leiste.conf:/etc/nginx/conf.d/default.conf:ro
ports:
# Nur an localhost binden: davor steht Pangolin, nicht das offene Netz.
- "127.0.0.1:8185:80"
networks: [intern]
networks:
intern:
+34
View File
@@ -0,0 +1,34 @@
# Setzt die HoneyOS-Leiste in eine fremde App ein, die man nicht ändern kann.
#
# Angepasst werden müssen genau zwei Dinge: die Adresse von HoneyOS und
# data-app (der Name muss der id der App in HoneyOS entsprechen, sonst weiss
# die Leiste nicht, wo man gerade ist).
server {
listen 80;
location / {
proxy_pass http://bentopdf:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
# Unkomprimiert anfordern — in einem gzip-Strom ist nichts zu ersetzen.
# Das betrifft nur die Strecke Einsetzer→App; nach draussen komprimiert
# Pangolin weiterhin.
proxy_set_header Accept-Encoding "";
# Nur HTML anfassen. Bilder, JSON und Downloads gehen unberührt durch.
sub_filter_types text/html;
sub_filter_once on;
sub_filter '</head>'
'<script defer src="https://honeyos.duckdns.org/honeybar/honeybar.js" data-app="bentopdf"></script></head>';
# Falls die App eine eigene CSP schickt (BentoPDF tut es nicht), muss
# sie ersetzt werden — zwei CSP-Kopfzeilen heissen nicht „mehr erlaubt",
# sondern „beide müssen zustimmen". Dann diese zwei Zeilen einschalten:
#
# proxy_hide_header Content-Security-Policy;
# add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://honeyos.duckdns.org; connect-src 'self' https://honeyos.duckdns.org; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:" always;
}
}