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-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 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.shein (nvm / Node LTS, globalepnpm,npm-check-updates,doctoc) - Führt build-sichere Upgrades mit
npm-check-updatesDoctor-Modus für jedes Paket durch: Es behält Upgrades bei, die den Paket-typecheck/lintbestehen, und kehrt diejenigen zurück, die den Build unterbrechen (mit einem integrierten ESLint Peer Gate, sodasseslintund 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 derVERSION-Variable (erstellt sie, falls nicht vorhanden) - Aktualisiert die
Dockerfilemit derVERSION-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.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 .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.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 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
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.