Deployment
Minimale Anleitung zur Inbetriebnahme des IuK-Backend-Servers β getrennt nach Linux (systemd) und Windows (Installations-Assistent), plus Hinweise zur Datensicherung.
Linux
Schritt-fΓΌr-Schritt-Anleitung fΓΌr Debian/Ubuntu mit systemd
Ein Debian- oder Ubuntu-System mit root- bzw. sudo-Zugriff.
Der Dienst lΓ€uft als eigener, unprivilegierter Benutzer ohne Login-Shell.
# Systembenutzer ohne Home-Verzeichnis und ohne Login anlegen sudo useradd --system --no-create-home --shell /usr/sbin/nologin iuk-backend # Verzeichnisstruktur anlegen sudo mkdir -p /opt/iuk-backend/{data,uploads,logs} sudo chown -R iuk-backend:iuk-backend /opt/iuk-backend
Das Server-Binary entsteht lokal ΓΌber make build
(Ergebnis unter bin/linux/server).
Zusammen mit der Lizenzdatei nach /opt/iuk-backend kopieren.
sudo cp bin/linux/server /opt/iuk-backend/server sudo cp license_*.lic /opt/iuk-backend/ sudo chmod +x /opt/iuk-backend/server sudo chown iuk-backend:iuk-backend /opt/iuk-backend/server /opt/iuk-backend/license_*.lic
Die systemd-Unit aus Schritt 5 nutzt ProtectSystem=strict
und gibt nur data/,
uploads/ und
logs/ als beschreibbar frei
(ReadWritePaths) β der Rest von
/opt/iuk-backend ist zur Laufzeit
read-only.
Beim allerersten Start wΓΌrde die Anwendung automatisch eine
config.json mit dem Standardwert
database_file: "database.sqlite"
im Wurzelverzeichnis anlegen wollen β das schlΓ€gt unter
ProtectSystem=strict fehl, da
das Wurzelverzeichnis nicht beschreibbar ist.
LΓΆsung: Vor dem ersten Start eine eigene
config.json ablegen, die die
Datenbank in den beschreibbaren data/-Unterordner verweist:
/opt/iuk-backend/config.json { "database_file": "data/database.sqlite" }
sudo chown iuk-backend:iuk-backend /opt/iuk-backend/config.json
Die fertige Service-Unit liegt unter
server/deployment/iuk-backend.service.
sudo cp server/deployment/iuk-backend.service \ /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now iuk-backend
systemctl status iuk-backend β iuk-backend.service - IuK Backend Active: active (running) ... curl http://localhost:3000
Erleichtert den Einstieg und das Ausprobieren β legt einen Demo-Mandanten mit Beispieldaten an.
sudo systemctl stop iuk-backend sudo -u iuk-backend /opt/iuk-backend/server -seed sudo systemctl start iuk-backend
Windows
Kurzfassung β Details siehe server/deployment/windows/README.md
Windows 10 / Windows Server 2016 oder neuer, PowerShell 5.0 oder neuer,
Administratorrechte sowie eine gΓΌltige Lizenzdatei (license_*.lic).
server.exe,
install.ps1 und die
Lizenzdatei license_*.lic
in einem gemeinsamen Ordner ablegen (z. B. C:\Temp\iuk-backend-install).
install.ps1 als Administrator
ausfΓΌhren. Der interaktive Assistent fragt das Installationsverzeichnis
(Standard C:\iuk-backend) und den
Port (Standard 3000) ab und erkennt
die Lizenzdatei automatisch im selben Ordner.
cd C:\Temp\iuk-backend-install .\install.ps1
Get-Service iuk-backend
Stop-Service iuk-backend cd C:\iuk-backend .\server.exe -seed Start-Service iuk-backend
server/deployment/windows/README.md im Repository.
Die Konzepte fΓΌr HTTPS und Basic-Auth im Produktivbetrieb gelten analog zur
Linux-Anleitung β siehe Sicherheit & Deployment.
Backup
RegelmΓ€Γige Datensicherung der SQLite-Datenbank
Linux
Das Skript server/deployment/backup.sh
nutzt das sqlite3-Kommando .backup
fΓΌr eine konsistente Online-Sicherung β das funktioniert auch im laufenden Betrieb mit
aktivem WAL-Journal. Danach prΓΌft das Skript die IntegritΓ€t der Sicherung
(PRAGMA integrity_check), komprimiert
sie mit gzip und entfernt alte
Backups, die die Aufbewahrungsfrist ΓΌberschreiten
(IUK_BACKEND_BACKUP_RETENTION, Standard 30 Tage).
Das Skript einmalig nach /opt/iuk-backend/backup.sh
kopieren. FΓΌr den tΓ€glichen automatischen Lauf um 03:00 Uhr als Benutzer
iuk-backend die Pfade explizit ΓΌber
Umgebungsvariablen setzen:
# sudo crontab -u iuk-backend -e IUK_BACKEND_DATABASE_FILE=/opt/iuk-backend/data/database.sqlite IUK_BACKEND_BACKUP_DIR=/opt/iuk-backend/backups 0 3 * * * /opt/iuk-backend/backup.sh >> /opt/iuk-backend/logs/backup.log 2>&1
Alternativ als Datei /etc/cron.d/iuk-backend-backup ablegen
(dort zusΓ€tzlich den Benutzer in der Cron-Zeile angeben).
/opt/rk/...
(Γ€ltere Verzeichniskonvention) und passen nicht zur systemd-Unit, die mit
/opt/iuk-backend/... arbeitet.
Windows
Ein vorgefertigtes Backup-Skript existiert fΓΌr Windows nicht. Γber die
Windows-Aufgabenplanung (Taskplaner bzw. schtasks)
lΓ€sst sich ein regelmΓ€Γiger Aufruf von sqlite3.exe
mit dem .backup-Befehl einrichten β
nicht die Datenbankdatei einfach kopieren, da dabei das WAL-Journal
inkonsistent mitkopiert werden kann.
sqlite3.exe C:\iuk-backend\data\database.sqlite ".backup 'C:\iuk-backend\backups\database_backup.sqlite'"
Wiederherstellung
Dienst stoppen, die gesicherte Datenbankdatei (ggf. zuvor entpacken) an die Stelle der aktiven Datenbank zurΓΌckkopieren, Dienst wieder starten.