feat: Backend mit OIDC-Anmeldung, Apps und Einstellungen im Server
Aus der statischen Seite wird ein Go-Binary mit eingebetteter Oberfläche. Grund: Apps über .env zu pflegen wurde unübersichtlich, und kosmetische Einstellungen sollen auf jedem Gerät gleich sein. - Anmeldung über den eigenen OIDC-Anbieter (PocketID), mit PKCE. Ohne Anmeldung gibt es nichts zu sehen – auch keine App-Liste. - Sitzung als signiertes Cookie ohne Gegenstück im Server; Schreibzugriffe zusätzlich über ein lesbares CSRF-Cookie abgesichert - Apps werden in der Oberfläche angelegt und bearbeitet, nicht mehr in der .env. Der Server prüft jeden Eintrag und meldet zurück, was er behält. - Einstellungen liegen je Nutzer im Server; localStorage ist nur noch der Vorschuss, damit die Röhre beim Laden nicht in der falschen Farbe blitzt - die Leiste holt die App-Liste aus /api/apps – freigegeben sind allein die Ursprünge, die selbst als App eingetragen sind - Tests fahren einen echten OIDC-Anbieter hoch und gehen den Anmeldeweg einmal ganz durch Ohne HONEYOS_OIDC_ISSUER läuft alles offen – für die Entwicklung, mit deutlicher Warnung beim Start. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
84cc5d619e
commit
283f9a1850
20 files changed
+1831
-438
No files matched your search
+22
-11
@@ -1,20 +1,31 @@
|
||||
# HoneyOS — statisch. Kein Build, kein Backend: nginx liefert web/ aus.
|
||||
#
|
||||
# Die Konfiguration entsteht beim Start aus der .env — das Skript in
|
||||
# /docker-entrypoint.d/ schreibt config.json, bevor nginx hochkommt.
|
||||
FROM nginx:1.27-alpine
|
||||
# HoneyOS — ein Binary, die Oberfläche steckt per embed mit drin.
|
||||
|
||||
FROM golang:1.23-alpine AS build
|
||||
WORKDIR /src
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY *.go ./
|
||||
COPY web/ ./web/
|
||||
RUN CGO_ENABLED=0 go build -buildvcs=false -ldflags="-s -w" -o /honeyos .
|
||||
|
||||
FROM alpine:3.20
|
||||
LABEL org.opencontainers.image.title="HoneyOS" \
|
||||
org.opencontainers.image.description="Retro-Schreibtisch und Umschalter für die eigenen Apps" \
|
||||
org.opencontainers.image.source="https://gitea.honeyy.duckdns.org/Docker/HoneyOS"
|
||||
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY docker-entrypoint.d/20-honeyos-config.sh /docker-entrypoint.d/20-honeyos-config.sh
|
||||
COPY web/ /usr/share/nginx/html/
|
||||
# ca-certificates: ohne die scheitert die Anfrage an den OIDC-Anbieter über https.
|
||||
RUN apk add --no-cache ca-certificates wget && \
|
||||
adduser -D -u 1000 honeyos && \
|
||||
mkdir -p /data && chown honeyos:honeyos /data
|
||||
|
||||
RUN chmod +x /docker-entrypoint.d/20-honeyos-config.sh
|
||||
COPY --from=build /honeyos /usr/local/bin/honeyos
|
||||
|
||||
EXPOSE 80
|
||||
USER honeyos
|
||||
VOLUME /data
|
||||
EXPOSE 8080
|
||||
ENV HONEYOS_ADDR=:8080 HONEYOS_DATA_DIR=/data
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
||||
CMD wget -qO- http://127.0.0.1/healthz || exit 1
|
||||
CMD wget -qO- http://127.0.0.1:8080/healthz || exit 1
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/honeyos"]
|
||||
Reference in new issue
Block a user