This commit is contained in:
2026-09-07 11:39:39 +02:00
parent 59722ee255
commit d0e022484e
10 changed files with 440 additions and 30 deletions

View File

@@ -6,16 +6,25 @@ Browser als 3D-Vorschau betrachten.
## Setup
1. `.env.example` nach `.env` kopieren und `PROJECTS_DIR` auf einen Ordner
auf deiner Festplatte setzen, z. B.:
1. `.env.example` nach `.env` kopieren und zwei Werte setzen:
```
PROJECTS_DIR=/home/deinname/3d-projects
```
- `PROJECTS_DIR`: Ordner auf deiner Festplatte, in dem deine Projekte als
normale Unterordner angelegt werden — den kannst du auch direkt im
Dateimanager oder Slicer öffnen.
Das ist der Ordner, in dem deine Projekte als normale Unterordner
angelegt werden — den kannst du auch direkt im Dateimanager oder Slicer
öffnen.
```
PROJECTS_DIR=/home/deinname/3d-projects
```
- `PASSWORD_SHA256`: SHA256-Hash deines gewünschten Login-Passworts.
Erzeugen z. B. mit:
```
echo -n "meinPasswort" | sha256sum
```
Nur den resultierenden Hex-Hash in die `.env` eintragen, nicht das
Passwort selbst.
2. Container bauen und starten:
@@ -23,7 +32,23 @@ Browser als 3D-Vorschau betrachten.
docker compose up --build -d
```
3. Im Browser öffnen: [http://localhost:8080](http://localhost:8080)
3. Im Browser öffnen: [http://localhost:8080](http://localhost:8080)
du wirst zur Login-Seite weitergeleitet und musst das Passwort eingeben.
## Login
- Es gibt nur ein Passwort, keinen Nutzernamen. Wer das Passwort kennt, hat
Zugriff.
- Nach erfolgreichem Login wird eine signierte, `HttpOnly`-Session-Cookie
gesetzt (30 Tage gültig). Der Signierschlüssel liegt im
`app-settings`-Volume und bleibt über Container-Neustarts hinweg gleich,
d. h. du bleibst eingeloggt.
- "Abmelden" oben rechts löscht die Session.
- Nach 5 Fehlversuchen in Folge wird der Login für 30 Sekunden gesperrt.
- **Wichtig:** Diese Anwendung ist für den Einsatz auf deinem eigenen
Desktop/Heimnetz gedacht. Für Zugriff über das Internet solltest du
zusätzlich HTTPS (z. B. über einen Reverse Proxy) einrichten, da das
Passwort sonst unverschlüsselt übertragen wird.
## Wie es funktioniert