Workspace Admin-Skripte und -Befehle
Datenbank bereinigen
./scripts/clean-db.sh
Bereinigt die Datenbank durch Entfernen aller Daten unter Beibehaltung des Datenbankschemas und der Struktur.
Caution
Mit Vorsicht verwenden, da alle vorhandenen Daten gelöscht werden.
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 frische Installation durchführen oder Probleme mit Abhängigkeiten lösen 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-Speicher-Cache (über
pnpm store prune) - Docker-Build-Cache und System-Prune (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
- Entfernung alter/nicht verwendeter Docker-Artefakte
- Bereinigung nach Entwicklung- oder Testsitzungen
- Aufrechterhaltung einer sauberen Docker-Umgebung
Pakete auf die aktuelle Version aktualisieren
Sie können Pakete manuell aktualisieren mit:
ncu --upgrade
pnpm update
Oder verwenden Sie das automatisierte Skript (bevorzugen Sie source, damit nvm auf Ihre aktuelle Shell angewendet wird; 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 Prozess der Abhängigkeitsaktualisierung. Es ist projektagnostisch: der Paketmanager, die Arbeitsbereichspakete und der jeweilige Überprüfungsbefehl jedes Pakets werden automatisch erkannt (sowohl das Root- als auch die documentation/-Pakete werden also aktualisiert, ohne hartcodierte Pfade). Es:
- Lädt Tool-Setup über
upgrade-tools.sh(nvm / Node LTS, globalepnpm,npm-check-updates,doctoc) - Führt build-sichere Aktualisierungen für jedes Paket durch:
npm-check-updateslöst neueste Versionen auf, dann Installation undtypecheck/lintwerden vom Arbeitsbereichswurzelverzeichnis ausgeführt. Aktualisierungen, die bei der Überprüfung fehlschlagen, werden durch Bearbeitung vonpackage.jsongetrennt (nichtpnpm add, welches pnpm im Arbeitsbereichswurzelverzeichnis ablehnt). Eingebettete Peer-Gates fixiereneslintundtypescript, wenneslint-plugin-react/typescript-eslintnoch nicht die neueste Hauptversion zulassen. - Aktualisiert die pnpm-Lockdatei des Arbeitsbereichs und installiert Abhängigkeiten
- Aktualisiert die browserslist-Datenbank
- Prüft auf Schwachstellen (
pnpm audit) und wendet nicht-störende Korrekturen an (pnpm audit --fix) - Priorisiert Sicherheit: Wenn eine verwundbare direkte Abhängigkeit nur durch eine build-störende Aktualisierung behoben werden kann, wird die sichere Version erzwungen und die Build-Fehler werden gemeldet, damit der Code für die Kompatibilität aktualisiert werden kann
- Gibt eine Zusammenfassung aus (aktualisierte vs. übersprungene build-störende Pakete, behobene/verbleibende Schwachstellen und ein Manifest-Snapshot-Pfad für manuelles Rollback)
- Kopiert
package.jsonund Lockfiles mit/usr/bin/cp, sodass ein interaktivercp-Alias (zum Beispielcp -i) nicht zur Überschreibung dieser Dateien auffordert
Dieses Skript bietet einen vollständigen Workflow zum Aufrechterhalten aktueller und sicherer Abhängigkeiten.
Auf ungenutzte Pakete prüfen
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 sie nicht existiert) - Aktualisiert die
Dockerfilemit derVERSION-Variable (falls sie existiert) - Aktualisiert das
documentation/package.json-Versionsfeld (falls es existiert) - Aktualisiert nur, wenn sich die Version geändert hat
- Zeigt Rückmeldung zu jeder Operation an
GitHub-Release veröffentlichen
pnpm release:github:dry
pnpm release:github
scripts/release.mjs versieht v<package.json version> bei HEAD mit einem Tag, veröffentlicht ein GitHub-Release, dessen Versionshinweise aus documentation/docs/release-notes/<version>.md stammen (umgeschrieben zu RELEASE_NOTES_github_<version>.md), und stellt anschließend die Docusaurus-Website bereit. Siehe Release-Management.
Pre-checks Skript
./scripts/pre-checks.sh
Dieses Skript führt vor dem Starten des Entwicklungsservers, Erstellen oder Starten des Produktionsservers Vorprüfungen durch. Es:
- Stellt sicher, dass die
.duplistatus.key-Datei existiert (überensure-key-file.sh) - Aktualisiert die Versionsinformationen (über
update-version.sh)
Dieses Skript wird automatisch von pnpm dev, pnpm build und pnpm start-local aufgerufen.
Sicherstellen, dass wichtige Datei existiert
./scripts/ensure-key-file.sh
Dieses Skript stellt sicher, dass die .duplistatus.key-Datei im Verzeichnis data existiert. Es:
- Erstellt das Verzeichnis
data, falls es nicht existiert - Generiert eine neue zufällige 32-Byte-Schlüsseldatei, falls diese fehlt
- Setzt Dateiberechtigungen auf 0400 (nur Lesen für Besitzer)
- Korrigiert 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 Admin-Konten, falls Sie ausgesperrt sind oder das Passwort vergessen haben. Es:
- Setzt das Passwort für den angegebenen Benutzer zurück
- Entsperren Sie das Konto, falls es gesperrt war
- Setzt Zähler für fehlgeschlagene Anmeldeversuche zurück
- Löscht das Flag „Passwort muss geändert werden“
- Überprüft, ob das Passwort den Sicherheitsanforderungen entspricht
- Protokolliert die Aktion im Audit-Protokoll
Beispiel:
./admin-recovery admin NewPassword123
Caution
Dieses Skript ändert direkt die Datenbank. Nur bei Bedarf für Kontowiederherstellung verwenden.
Bilder kopieren
./scripts/copy-images.sh
Kopiert Bilddateien von documentation/static/img an ihre entsprechenden Positionen 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.
Lokale oder npm ai-i18n-tools wechseln
./scripts/link-ai-i18n-tools.sh --local
./scripts/link-ai-i18n-tools.sh --remote
pnpm i18n:tools --local
pnpm i18n:tools --remote
Verweist dieses Repository auf einen Geschwister-ai-i18n-tools-Checkout oder wieder auf das veröffentlichte npm-Paket und gibt anschließend die aufgelöste Version aus. --local schreibt link:../ai-i18n-tools (Pfad kann mit --path oder AI_I18N_TOOLS_PATH überschrieben werden), sodass pnpm i18n:* und ai-i18n-tools/runtime beide diesen Baum verwenden. --remote installiert die neueste npm-Version als ^x.y.z. Den link:-Spezifikator nicht committen.
Versionen zwischen Entwicklungsumgebung 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. werden 3.45.1 und 3.51.1 als kompatibel betrachtet, angezeigt als „✅ (major)“)
- Vergleicht Node-, npm- und Duplistatus-Versionen exakt (müssen exakt übereinstimmen)
- Zeigt eine formatierte Tabelle mit allen Versionsvergleichen an
- Zeigt eine Zusammenfassung mit farblich gekennzeichneten Ergebnissen an (✅ für Übereinstimmungen, ❌ für Abweichungen)
- Beendet sich mit Code 0, wenn alle Versionen übereinstimmen, 1, wenn es Abweichungen gibt
Voraussetzungen:
- Ein 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 Hauptversion verglichen, da verschiedene Patch-Versionen innerhalb derselben Hauptversion in der Regel kompatibel sind. Das Skript zeigt an, wenn SQLite-Versionen auf Hauptversionsebene übereinstimmen, aber in den Patch-Versionen abweichen.
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 anzeigen
./scripts/show-backup-settings.sh [database_path]
Zeigt den Inhalt des backup_settings-Werts in der Konfigurationstabelle in einer formatierten Tabelle an. Nützlich zur Fehlersuche bei Benachrichtigungskonfigurationen. Standarddatenbankpfad: data/backups.db.