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 node_modules-Verzeichnis und andere generierte Dateien, um einen sauberen Zustand zu gewährleisten. Dies ist nützlich, wenn Sie eine Neuinstallation durchführen oder Abhängigkeitsprobleme beheben müssen. Der Befehl wird Folgendes löschen:
node_modules/-Verzeichnis.next/-Build-Verzeichnisdist/-Verzeichnisout/-Verzeichnis.turbo/-Verzeichnispnpm-lock.yamldata/*.json(Entwicklungs-JSON-Sicherungsdateien)public/documentationdocumentation/.docusaurus,.cache,.cache-*,build,node_modules,pnpm-lock.yaml.genkit/-Verzeichnis*.tsbuildinfo-Dateien- pnpm Store-Cache (über
pnpm store prune) - Docker-Build-Cache und Systembereinigung (Images, Netzwerke, Volumes)
Docker Compose und Docker-Umgebung bereinigen
scripts/clean-docker.sh
Führen Sie eine vollständige Docker-Bereinigung durch, die nützlich ist für:
- Freigabe von Speicherplatz
- Entfernung alter/ungenutzter Docker-Artefakte
- Bereinigung nach Entwicklungs- oder Testsitzungen
- Wartung 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:
./scripts/upgrade-dependencies.sh
Das Skript upgrade-dependencies.sh automatisiert den gesamten Abhängigkeits-Upgrade-Prozess:
- Aktualisiert
package.jsonmit den neuesten Versionen mithilfe vonnpm-check-updates - Aktualisiert die pnpm-Sperrdatei und installiert aktualisierte Abhängigkeiten
- Aktualisiert die browserslist-Datenbank
- Prüft auf Sicherheitslücken mithilfe von
pnpm audit - Behebt Sicherheitslücken automatisch mithilfe von
pnpm audit fix - Prüft erneut auf Sicherheitslücken nach der Behebung, um die Fixes zu bestätigen
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 über mehrere Dateien hinweg, um sie synchron zu halten. Es:
- Extrahiert die Version aus
package.json - Aktualisiert die
.env-Datei mit derVERSION-Variable (erstellt sie, falls sie nicht vorhanden ist) - Aktualisiert die
Dockerfilemit derVERSION-Variable (falls vorhanden) - Aktualisiert das Versionfeld in
documentation/package.json(falls vorhanden) - Aktualisiert nur, wenn sich die Version geändert hat
- Gibt Rückmeldung zu jeder Operation
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.keyvorhanden ist (überensure-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 Datei .duplistatus.key im Verzeichnis data vorhanden ist. Es:
- Erstellt das Verzeichnis
data, falls es nicht existiert - Generiert eine neue 32-Byte-Zufallsschlüsseldatei, falls diese fehlt
- Setzt die Dateiberechtigungen auf 0400 (Lesezugriff nur für Besitzer)
- Behebt Berechtigungen, falls diese fehlerhaft 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 Admin-Konten, falls diese gesperrt 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
- Löscht das Flag „Passwort muss geändert werden"
- Validiert, dass 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.iconachsrc/app/ - Kopiert
duplistatus_logo.pngnachpublic/images/ - Kopiert
duplistatus_banner.pngnachpublic/images/
Nützlich zum Synchronisieren von Anwendungsbildern mit Dokumentationsbildern.
Versionen zwischen Entwicklung und Docker vergleichen
./scripts/compare-versions.sh
Dieses Skript vergleicht Versionen zwischen Ihrer Entwicklungsumgebung und einem laufenden Docker-Container. Es:
- Vergleicht SQLite-Versionen nur nach Hauptversion (z. B. 3.45.1 vs 3.51.1 werden als kompatibel betrachtet, angezeigt als "✅ (major)")
- Vergleicht Node-, npm- und duplistatus-Versionen exakt (müssen genau übereinstimmen)
- Zeigt eine formatierte Tabelle mit allen Versionsvergleichen an
- Bietet eine Zusammenfassung mit farbcodierten Ergebnissen (✅ für Übereinstimmungen, ❌ für Abweichungen)
- Beendet sich mit Code 0, wenn alle Versionen übereinstimmen, mit Code 1 bei Abweichungen
Anforderungen:
- Docker-Container mit dem Namen
duplistatusmuss 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.