Zum Hauptinhalt springen

Workspace-Admin-Skripte und -Befehle

Datenbank bereinigen

./scripts/clean-db.sh

Bereinigt die Datenbank, indem alle Daten entfernt werden, während das Datenbankschema und die Struktur erhalten bleiben.

Caution

Mit Vorsicht verwenden, da dies alle vorhandenen Daten löscht.

Build-Artefakte und Abhängigkeiten bereinigen

scripts/clean-workspace.sh

Entfernt alle Build-Artefakte, das Verzeichnis node_modules und andere generierte Dateien, um einen sauberen Zustand sicherzustellen. Dies ist nützlich, wenn Sie eine Neuinstallation durchführen oder Abhängigkeitsprobleme beheben müssen. Der Befehl löscht:

  • node_modules/-Verzeichnis
  • .next/-Build-Verzeichnis
  • dist/-Verzeichnis
  • out/-Verzeichnis
  • .turbo/-Verzeichnis
  • pnpm-lock.yaml
  • data/*.json (Entwicklungs-JSON-Sicherungsdateien)
  • public/documentation
  • documentation/.docusaurus, .cache, .cache-*, build, node_modules, pnpm-lock.yaml
  • .genkit/-Verzeichnis
  • *.tsbuildinfo-Dateien
  • pnpm-Store-Cache (über pnpm store prune)
  • Docker-Build-Cache und Systempruning (Images, Netzwerke, Volumes)

Docker Compose und Docker-Umgebung bereinigen

scripts/clean-docker.sh

Führt eine vollständige Docker-Bereinigung durch, was nützlich ist für:

  • Freigabe von Speicherplatz
  • Entfernen alter/nicht verwendeter Docker-Artefakte
  • Bereinigung nach Entwicklungs- oder Testphasen
  • Beibehaltung einer sauberen Docker-Umgebung

Aktualisieren Sie die Pakete auf die neueste Version

Sie können Pakete manuell aktualisieren mit:

ncu --upgrade
pnpm update

Oder verwenden Sie das automatisierte Skript (bevorzugen Sie source, damit nvm für Ihre aktuelle Shell gilt; für CI oder nicht-interaktive Ausführungen verwenden Sie CI=1 oder UPGRADE_ALLOW_EXEC=1):

source ./scripts/upgrade-dependencies.sh

Das upgrade-dependencies.sh-Skript automatisiert den gesamten Abhängigkeits-Upgrade-Prozess. Es ist projektunabhängig: Der Paketmanager, die Workspace-Pakete und der Verify-Befehl jedes Pakets werden automatisch erkannt (sodass sowohl die Root- als auch die documentation/-Pakete aktualisiert werden, ohne hartcodierte Pfade). Es:

  • Richtet Tools über upgrade-tools.sh ein (nvm / Node LTS, globale pnpm, npm-check-updates, doctoc)
  • Führt build-sichere Upgrades mit npm-check-updates Doctor-Modus für jedes Paket durch: Es behält Upgrades bei, die den Paket-typecheck/lint bestehen, und kehrt diejenigen zurück, die den Build unterbrechen (mit einem integrierten ESLint Peer Gate, sodass eslint und React-Plugin-Bumps kompatibel bleiben)
  • Aktualisiert die Workspace-pnpm-Sperrdatei und installiert Abhängigkeiten
  • Aktualisiert die Browserslist-Datenbank
  • Prüft auf Sicherheitslücken (pnpm audit) und wendet nicht-brechende Korrekturen an (pnpm audit --fix)
  • Priorisiert Sicherheit: Wenn eine anfällige direkte Abhängigkeit nur durch ein Build-unterbrechendes Upgrade behoben werden kann, wird die sichere Version erzwungen und die Build-Fehler werden gemeldet, damit der Code für Kompatibilität aktualisiert werden kann
  • Druckt eine Zusammenfassung (aktualisierte vs. übersprungene Build-brechende Pakete, behobene/verbleibende Sicherheitslücken und einen Manifest-Schnappschuss-Pfad für manuelles Rollback)

Dieses Skript bietet einen vollständigen Workflow zum Aktualisieren und Sichern von Abhängigkeiten.

Prüfen auf ungenutzte Pakete

pnpm depcheck

Versionsinformationen aktualisieren

./scripts/update-version.sh

Dieses Skript aktualisiert automatisch Versionsinformationen in mehreren Dateien, um sie synchron zu halten. Es:

  • Extrahiert die Version aus package.json
  • Aktualisiert die .env-Datei mit der VERSION-Variable (erstellt sie, falls nicht vorhanden)
  • Aktualisiert die Dockerfile mit der VERSION-Variable (falls vorhanden)
  • Aktualisiert das Versionsfeld in documentation/package.json (falls vorhanden)
  • Aktualisiert nur, wenn sich die Version geändert hat
  • Gibt Rückmeldung zu jeder Aktion

Pre-checks-Skript

./scripts/pre-checks.sh

Dieses Skript führt Vorprüfungen durch, bevor der Entwicklungsserver gestartet, erstellt oder der Produktionsserver gestartet wird. Es:

  • Stellt sicher, dass die Datei .duplistatus.key vorhanden ist (über ensure-key-file.sh)
  • Aktualisiert die Versionsinformationen (über update-version.sh)

Dieses Skript wird automatisch durch pnpm dev, pnpm build und pnpm start-local aufgerufen.

Sicherstellen, dass die Schlüsseldatei vorhanden ist

./scripts/ensure-key-file.sh

Dieses Skript stellt sicher, dass die .duplistatus.key-Datei im data-Verzeichnis vorhanden ist. Es:

  • Erstellt das data-Verzeichnis, falls es nicht existiert
  • Generiert eine neue 32-Byte-Zufallsschlüsseldatei, falls nicht vorhanden
  • Setzt die Dateiberechtigungen auf 0400 (nur Lesen für den Besitzer)
  • Behebt Berechtigungen, falls diese falsch sind

Die Schlüsseldatei wird für kryptografische Operationen in der Anwendung verwendet.

Admin-Kontowiederherstellung

./admin-recovery <username> <new-password>

Dieses Skript ermöglicht die Wiederherstellung von Administrator-Konten, falls der Zugriff gesperrt ist oder das Passwort vergessen wurde. Es:

  • Setzt das Passwort für den angegebenen Benutzer zurück
  • Entsperrt das Konto, falls es gesperrt war
  • Setzt den Zähler für fehlgeschlagene Anmeldeversuche zurück
  • Entfernt die Kennung „Passwort muss geändert werden“
  • Überprüft, ob das Passwort die Sicherheitsanforderungen erfüllt
  • Protokolliert die Aktion im Audit-Log

Beispiel:

./admin-recovery admin NewPassword123

Caution

Dieses Skript modifiziert die Datenbank direkt. Verwenden Sie es nur bei Bedarf zur Kontowiederherstellung.

Bilder kopieren

./scripts/copy-images.sh

Kopiert Bilddateien von documentation/static/img an ihre entsprechenden Speicherorte in der Anwendung:

  • Kopiert favicon.ico nach src/app/
  • Kopiert duplistatus_logo.png nach public/images/
  • Kopiert duplistatus_banner.png nach public/images/

Nützlich zum Synchronisieren von Anwendungsbildern mit Dokumentationsbildern.

Versionen zwischen Entwicklung und Docker vergleichen

./scripts/compare-versions.sh

Dieses Skript vergleicht die Versionen zwischen Ihrer Entwicklungsumgebung und einem laufenden Docker-Container. Es:

  • Vergleicht SQLite-Versionen nur nach Hauptversion (z. B. werden 3.45.1 und 3.51.1 als kompatibel betrachtet und als „✅ (major)“ angezeigt)
  • Vergleicht Node-, npm- und Duplistatus-Versionen exakt (müssen genau übereinstimmen)
  • Zeigt eine formatierte Tabelle mit allen Versionsvergleichen an
  • Gibt eine Zusammenfassung mit farbcodierten Ergebnissen aus (✅ für Übereinstimmungen, ❌ für Abweichungen)
  • Beendet sich mit Exit-Code 0, wenn alle Versionen übereinstimmen, andernfalls mit Code 1

Anforderungen:

  • Docker-Container mit dem Namen duplistatus muss ausgeführt werden
  • Das Skript liest Versionsinformationen aus den Docker-Container-Protokollen

Beispielausgabe:

┌─────────────────────────┬──────────────────────────────┬──────────────────────────────┬──────────────┐
│ Component │ Development │ Docker │ Match │
├─────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────┤
│ SQLite │ 3.45.1 │ 3.51.1 │ ✅ (major) │
│ Node │ 24.12.0 │ 24.12.0 │ ✅ │
│ npm │ 10.9.2 │ 10.9.2 │ ✅ │
│ Duplistatus │ 1.2.1 │ 1.2.1 │ ✅ │
└─────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────┘

Hinweis: SQLite-Versionen werden nur nach der Hauptversion verglichen, da verschiedene Patch-Versionen innerhalb derselben Hauptversion in der Regel kompatibel sind. Das Skript zeigt an, wenn SQLite-Versionen auf der Hauptebene übereinstimmen, aber in den Patch-Versionen unterschiedlich sind.

Anzeigen der Konfigurationen in der Datenbank

sqlite3 data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R
sqlite3 /var/lib/docker/volumes/duplistatus_data/_data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R

Sicherungseinstellungen einblenden

./scripts/show-backup-settings.sh [database_path]

Zeigt den Inhalt des backup_settings-Wertes in der Konfigurationstabelle in einer formatierten Tabelle an. Nützlich zum Debuggen von Benachrichtigungskonfigurationen. Standard-Datenbankpfad: data/backups.db.