DEPLOY.md: voller Deploy-Block für den internen Dienst + Stand nachgezogen
- Vollständiger kopierfertiger Deploy-Block für server-internal MIT npm ci: pull -> npm ci -> Lade-Test der nativen Module -> restart -> Selbsttest, als eine &&-Kette, die bei jedem Fehler VOR dem Neustart abbricht (alter Dienst läuft dann unberührt weiter). Bisher stand dort nur pull + restart ohne npm ci -- genau die Lücke, durch die Code und Pakete auseinanderliefen. - Wächter: 18 -> 19 Punkte (Sicherungsprüfung dazugekommen). - Zwei offene Punkte ergänzt: ausstehender Server-Neustart (Kernel/OpenSSL liegen bereit) und der ausstehende server-internal-Deploy. - Veralteten Datenschutz-404-Eintrag abgehakt (heute live 401 verifiziert). Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -52,13 +52,36 @@ Dienst mit unverändertem Code neu und wundert sich, warum nichts passiert.
|
|||||||
|
|
||||||
`claudian` hat auf `/home/dogiintern/` **keinen Zugriff** (weder lesend noch
|
`claudian` hat auf `/home/dogiintern/` **keinen Zugriff** (weder lesend noch
|
||||||
über den begrenzten sudo). Änderungen an `server-internal/` muss deshalb
|
über den begrenzten sudo). Änderungen an `server-internal/` muss deshalb
|
||||||
Filipe selbst ausrollen:
|
Filipe selbst ausrollen.
|
||||||
|
|
||||||
|
**Der Standard-Fall** (nur Code geändert, keine neuen/geänderten Pakete):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo -u dogiintern git -C /home/dogiintern/dogfather-universe pull --ff-only origin main
|
sudo -u dogiintern git -C /home/dogiintern/dogfather-universe pull --ff-only origin main
|
||||||
sudo systemctl restart dogiintern.service
|
sudo systemctl restart dogiintern.service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Der volle Fall** (auch `package.json`/`package-lock.json` geändert — dann MUSS
|
||||||
|
`npm ci` mit, sonst laufen Code und Pakete auseinander). Ein Block, bricht bei
|
||||||
|
jedem Fehler ab, und startet den Dienst erst neu, wenn Pull, Installation und
|
||||||
|
ein Lade-Test der nativen Module (better-sqlite3) durch sind — schlägt etwas
|
||||||
|
fehl, läuft der alte Dienst unberührt weiter:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/dogiintern/dogfather-universe && \
|
||||||
|
sudo -u dogiintern git pull --ff-only origin main && \
|
||||||
|
sudo -u dogiintern npm --prefix server-internal ci && \
|
||||||
|
sudo -u dogiintern node -e "require('/home/dogiintern/dogfather-universe/server-internal/node_modules/better-sqlite3'); console.log('native Module laden: ok')" && \
|
||||||
|
sudo systemctl restart dogiintern.service && \
|
||||||
|
sleep 2 && echo "Dienst:" $(systemctl is-active dogiintern.service) && \
|
||||||
|
curl -s -o /dev/null -w "health nach Neustart: %{http_code}\n" https://postfach.dogfather-universe.com/health
|
||||||
|
```
|
||||||
|
|
||||||
|
Erwartete letzte Zeilen: `native Module laden: ok`, `Dienst: active`,
|
||||||
|
`health nach Neustart: 200`. Kommt stattdessen ein Abbruch VOR dem Neustart,
|
||||||
|
ist nichts passiert — der alte Dienst läuft weiter, und der Fehler (meist ein
|
||||||
|
fehlgeschlagener `npm ci`) lässt sich in Ruhe ansehen.
|
||||||
|
|
||||||
## Server-Code geändert? Dann ist ein Neustart PFLICHT
|
## Server-Code geändert? Dann ist ein Neustart PFLICHT
|
||||||
|
|
||||||
Statische Dateien sind nach dem Pull sofort live. Server-Code **nicht** —
|
Statische Dateien sind nach dem Pull sofort live. Server-Code **nicht** —
|
||||||
@@ -155,7 +178,7 @@ Deploy-Schritt ist nicht nötig.
|
|||||||
| Wann | Was | Skript |
|
| Wann | Was | Skript |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| täglich 03:15 | Sicherung von Datenbank und Uploads | `server-internal/sicherung.sh` |
|
| täglich 03:15 | Sicherung von Datenbank und Uploads | `server-internal/sicherung.sh` |
|
||||||
| alle 5 Minuten | Wächter über 18 Punkte | `server-internal/waechter.mjs` |
|
| alle 5 Minuten | Wächter über 19 Punkte (inkl. „läuft die Sicherung?") | `server-internal/waechter.mjs` |
|
||||||
|
|
||||||
**Sicherung.** Nutzt SQLites eigenen `.backup`-Befehl, keine Dateikopie —
|
**Sicherung.** Nutzt SQLites eigenen `.backup`-Befehl, keine Dateikopie —
|
||||||
die Datenbank ist 778 KB groß, ihr WAL 4,1 MB, eine Kopie der `.db`
|
die Datenbank ist 778 KB groß, ihr WAL 4,1 MB, eine Kopie der `.db`
|
||||||
@@ -239,6 +262,22 @@ Deploy vom Rechner aus überschrieben worden.
|
|||||||
|
|
||||||
## Offene Punkte
|
## Offene Punkte
|
||||||
|
|
||||||
|
- **Server-Neustart steht aus (seit 28.08.2026).** `unattended-upgrades` hat
|
||||||
|
Kernel (6.12.105) und OpenSSL (3.5.7) eingespielt, aber es läuft noch der alte
|
||||||
|
Kernel (6.12.100) und die Dienste haben die alte libssl im Speicher.
|
||||||
|
`/var/run/reboot-required` steht. Kein Notfall (die OpenSSL-CVEs betreffen
|
||||||
|
PKCS7/CMS/QUIC-Pfade, die hier kaum aktiv sind — Caddys QUIC läuft über Go),
|
||||||
|
aber der Neustart gehört auf eine ruhige Zeit gelegt, während Filipe erreichbar
|
||||||
|
ist (Netcup-Konsole griffbereit). Danach prüfen: laufen alle sechs Dienste?
|
||||||
|
|
||||||
|
- **Server-internal-Deploy ausstehend (28.08.2026):** In Gitea liegen fertige,
|
||||||
|
getestete Änderungen an `server-internal/`, die noch nicht live sind
|
||||||
|
(Anfragebremse für `/submit` + `/testimonials/submit`; `package-lock.json` auf
|
||||||
|
multer 2.2.0 / node-cron 4.6.0). Ausrollen mit dem **vollen** Deploy-Block oben
|
||||||
|
(der mit `npm ci`), weil sich die Paketstände geändert haben. Getestet:
|
||||||
|
multer 2.2.0 fängt den DoS-Fall sauber ab, node-cron 4.x akzeptiert den
|
||||||
|
bestehenden Aufruf, alle Selbsttests grün.
|
||||||
|
|
||||||
- ~~Hintergrundbilder liegen nur auf dem Server~~ — **erledigt, nachgeprüft am
|
- ~~Hintergrundbilder liegen nur auf dem Server~~ — **erledigt, nachgeprüft am
|
||||||
26.08.2026.** Alle genannten Dateien (`bg-bewerben-modi.jpg`, `bg-links-seite.jpg`,
|
26.08.2026.** Alle genannten Dateien (`bg-bewerben-modi.jpg`, `bg-links-seite.jpg`,
|
||||||
`bg-medien-casper.jpg`, `bg-supporter.jpg`, `bg-modis.jpg`) und der Ordner
|
`bg-medien-casper.jpg`, `bg-supporter.jpg`, `bg-modis.jpg`) und der Ordner
|
||||||
@@ -273,11 +312,11 @@ Deploy vom Rechner aus überschrieben worden.
|
|||||||
dotenv 16→17, better-sqlite3 11→13 (dort muss die ABI zur Node-Fassung
|
dotenv 16→17, better-sqlite3 11→13 (dort muss die ABI zur Node-Fassung
|
||||||
passen; ein Fehlgriff legt den internen Dienst still).
|
passen; ein Fehlgriff legt den internen Dienst still).
|
||||||
|
|
||||||
- **Datenschutz-Endpunkte warten auf einen Pull in `/home/dogiintern`.** Die
|
- ~~Datenschutz-Endpunkte warten auf einen Pull~~ — **erledigt, live geprüft am
|
||||||
Oberfläche ist live, die drei Endpunkte
|
28.08.2026.** Alle drei (`/webdesign/admin/datenschutz/{auskunft,vorschau,
|
||||||
(`/webdesign/admin/datenschutz/{auskunft,vorschau,loeschen}`) antworten dort
|
loeschen}`) antworten auf der echten Domain mit 401 (vorhanden und geschützt),
|
||||||
noch mit 404. Der Pull scheitert vermutlich an der unverfolgten
|
nicht mehr 404. Steht abgehakt hier, nicht gelöscht — wer prüft, will sehen,
|
||||||
`package-lock.json` — siehe den Abschnitt zu `npm ci` weiter oben.
|
dass geprüft wurde.
|
||||||
|
|
||||||
## Alternative Hosting-Optionen (nur als Notfall-Plan)
|
## Alternative Hosting-Optionen (nur als Notfall-Plan)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user