admin site version 2

This commit is contained in:
Harlekin committed 2026-10-25 20:46:01 +01:00
1 parent b84349c037
commit bef622b61f
8 files changed
+70 -50

No files matched your search

+10 -5
View File
@@ -1,6 +1,6 @@
# lux.harlelux.de
Meine persönliche Website mit Portfolio. Node.js und Express, die Seiten werden mit Nunjucks auf dem Server gerendert. Inhalte liegen als YAML und Markdown auf der Platte, gepflegt werden sie über ein paar Admin-Seiten, die nur im Heimnetz erreichbar sind.
Meine persönliche Website mit Portfolio. Node.js und Express, die Seiten werden mit Nunjucks auf dem Server gerendert. Inhalte liegen als YAML und Markdown auf der Platte, gepflegt werden sie über ein paar Admin-Seiten mit Passwort.
## Entwicklung
@@ -36,13 +36,13 @@ Die Dateien lassen sich auch von Hand bearbeiten, die Seite lädt sie bei Änder
## Admin-Seiten
Laufen im selben Container auf einem eigenen Port (im Container 3001, auf dem Server `ADMIN_HOST_PORT`, Standard 3051). Über `lux.harlelux.de` gibt es kein `/admin`. Der Port wird von der FRITZ!Box nicht freigegeben, ist also nur im Heimnetz erreichbar:
Laufen im selben Container auf einem eigenen Port (3001) und bekommen im Nginx Proxy Manager eine eigene Subdomain, z.B.:
```
http://<server-ip>:3051/admin
https://admin.harlelux.de/admin
```
Zusätzlich lässt die App dort nur private Adressen durch und verlangt das Passwort aus `ADMIN_PASSWORD`. Nach zehn Fehlversuchen ist der Login eine Viertelstunde gesperrt.
Über `lux.harlelux.de` gibt es kein `/admin`. Der Login verlangt das Passwort aus `ADMIN_PASSWORD`, in Produktion mindestens 12 Zeichen, sonst bleiben die Admin-Seiten aus. Nach zehn Fehlversuchen ist der Login für diese Adresse eine Viertelstunde gesperrt (IPv6 zählt pro /64). Die App sieht dafür die echte Adresse aus `X-Forwarded-For`, das setzt der Proxy Manager von selbst.
Unter derselben Adresse zeigt `/de/` die ganze Seite mit Entwürfen, als Vorschau.
@@ -61,7 +61,12 @@ cp .env.example .env # ADMIN_PASSWORD eintragen
docker compose up -d --build
```
Im Nginx Proxy Manager einen Proxy Host für `lux.harlelux.de` auf `personal-website:3000` anlegen, mit Let's-Encrypt-Zertifikat und Force SSL. Der Container hängt im Netzwerk `nginx_default`, ein anderer Name lässt sich über `PROXY_NETWORK` in der `.env` setzen.
Im Nginx Proxy Manager zwei Proxy Hosts anlegen, beide mit Let's-Encrypt-Zertifikat, Force SSL und HSTS:
- `lux.harlelux.de` auf `personal-website:3000`
- die Admin-Subdomain (z.B. `admin.harlelux.de`, braucht einen DNS-Eintrag) auf `personal-website:3001`
Der Container hängt im Netzwerk `nginx_default`, ein anderer Name lässt sich über `PROXY_NETWORK` in der `.env` setzen. Freigegebene Ports auf dem Server braucht er keine.
Code-Updates: `git pull` und `docker compose up -d --build`. Wer statt Git mit `rsync` hochlädt, muss `data` und `.env` ausschließen, sonst sind die Inhalte weg.