Maschinenraum/cp.uugrn.org
```text
cp.uugrn.org
| Bereich | Wert |
|---|---|
| URL | https://cp.uugrn.org |
| Sandbox | https://sandboxcp.uugrn.org |
| Betriebssystem | Debian 13.6 (Trixie) |
| CryptPad | v2026.5.1 |
| nginx | 1.30.4 |
| Node.js | 24.18.1 |
| Installation | /home/cryptpad/cryptpad |
| Benutzer | cryptpad |
CryptPad dient zur verschlüsselten gemeinsamen Bearbeitung von Dokumenten. Der öffentliche Zugriff erfolgt über nginx. CryptPad selbst ist nur über Loopback erreichbar.
Betrieb
Dienste
- CryptPad: systemctl status cryptpad
- nginx: systemctl status nginx
- SSH: systemctl status ssh
- nftables: systemctl status nftables
- Fail2ban: systemctl status fail2ban
- Fehlerhafte Dienste: systemctl --failed
CryptPad:
- Starten: systemctl start cryptpad
- Stoppen: systemctl stop cryptpad
- Neustarten: systemctl restart cryptpad
- Log: journalctl -u cryptpad -f
nginx:
- Konfiguration prüfen: nginx -t
- Neu laden: systemctl reload nginx
CryptPad-Diagnose:
SSH
Administrativer Benutzer: adminBenutzer
Anmeldung:
- ssh -4 -i ~/.ssh/ssh-rsa-private-4096-key adminBenutzer@cp.uugrn.org
- anschließend sudo -i
SSH-Härtung:
- direkter Root-Login deaktiviert
- Passwort-Login deaktiviert
- ausschließlich Public-Key-Authentifizierung
- Zugriff nur für Mitglieder der Gruppe sshusers
- LoginGraceTime 30
- MaxAuthTries 3
- MaxStartups 10:30:30
- PerSourceMaxStartups 3
Prüfung:
- sshd -t
- sshd -T
Netzwerk und Firewall
| Port | Dienst |
|---|---|
| 22/tcp | SSH |
| 80/tcp | HTTP |
| 443/tcp | HTTPS |
CryptPad lauscht intern auf Loopback, unter anderem auf Port 3000 und 3003.
nftables:
- Konfiguration: /etc/nftables.conf
- Regeln: nft list ruleset
- Tabellen: nft list tables
Standardrichtlinien:
- INPUT DROP
- FORWARD DROP
- OUTPUT ACCEPT
Fail2ban schützt zusätzlich den SSH-Dienst.
- Konfiguration: /etc/fail2ban/jail.d/sshd.local
- 4 Fehlversuche innerhalb von 10 Minuten
- Sperrdauer 1 Stunde
- Status: fail2ban-client status sshd
Nach einem Neustart von nftables auch Fail2ban neu starten:
- systemctl restart nftables
- systemctl restart fail2ban
Updates
Debian-Sicherheitsupdates werden automatisch über unattended-upgrades installiert.
Manuell aktualisiert werden:
- normale Debian-Updates
- Node.js
- nginx
- CryptPad
Automatische Neustarts sind deaktiviert.
Prüfung:
- apt update
- apt list --upgradable
- unattended-upgrade --dry-run
Neustartbedarf:
- test -f /var/run/reboot-required && cat /var/run/reboot-required
CryptPad aktualisieren
Vor jedem Update die Release Notes der Zielversion lesen und ein Backup erstellen.
- Wartung ankündigen
- /root/sichercp
- systemctl stop cryptpad
- su - cryptpad
- cd /home/cryptpad/cryptpad
- git fetch --depth 1 origin tag VERSION
- git checkout VERSION
- npm ci
- npm run install:components
- ./install-onlyoffice.sh
- exit
- systemctl start cryptpad
Danach prüfen:
- systemctl status cryptpad
- journalctl -u cryptpad -n 100
- https://cp.uugrn.org/checkup/
Zusätzlich Anmeldung, Pads, Datei-Upload und OnlyOffice testen.
Backup
Backup-Skript:
- /root/sichercp
Backup-Verzeichnis:
- /root/backups/
Aufbewahrung:
- 180 Tage
Gesichert werden insbesondere:
- data/
- datastore/
- block/
- blob/
- config/config.js
- customize/
- onlyoffice-conf/
- nginx-Konfiguration
- SSH-Konfiguration
- nftables
- Fail2ban
- APT-Konfiguration
- systemd-Konfiguration
- Paket- und Versionsinformationen
Nicht gesichert werden reproduzierbare Daten:
- .git/
- node_modules/
- www/
- OnlyOffice-Distribution
Aktuelle Backupgröße: etwa 133 MB.
Backup erstellen:
- /root/sichercp
Backups anzeigen:
- ls -lh /root/backups/
Hinweis: Die Backups liegen derzeit ausschließlich lokal auf dem Server. Gegen einen vollständigen Verlust der VM besteht damit kein Schutz.
Restore
Backup testweise entpacken:
- BACKUP=$(ls -1t /root/backups/cp-backup-*.tar.gz | head -1)
- mkdir -p /root/restore-test
- tar --acls --xattrs --numeric-owner -C /root/restore-test -xzf "$BACKUP"
Nach der Kontrolle:
- rm -rf /root/restore-test
Notfall-Restore
Bei vollständigem Serververlust:
- Debian 13 installieren
- Node.js 24 und nginx installieren
- passende CryptPad-Version installieren
- npm-Abhängigkeiten und OnlyOffice installieren
- CryptPad stoppen
- Daten aus dem Backup zurückspielen
- Besitzer cryptpad:cryptpad prüfen
- Serverkonfiguration wiederherstellen
- Dienste starten
- CryptPad vollständig testen
Wichtige Pfade
| Bereich | Pfad |
|---|---|
| CryptPad | /home/cryptpad/cryptpad |
| Konfiguration | /home/cryptpad/cryptpad/config/config.js |
| Anpassungen | /home/cryptpad/cryptpad/customize/ |
| nginx | /etc/nginx/ |
| SSH | /etc/ssh/ |
| Firewall | /etc/nftables.conf |
| Fail2ban | /etc/fail2ban/ |
| Backup-Skript | /root/sichercp |
| Backups | /root/backups/ |
Regelmäßige Kontrolle
- Dienste: systemctl --failed
- Ports: ss -lntup
- Firewall: nft list ruleset
- Fail2ban: fail2ban-client status sshd
- Updates: apt list --upgradable
- Speicherplatz: df -h
- Warnungen: journalctl -p warning..alert --since today
Dokumentation
```