Zum Inhalt springen

Befehlsübersicht

Alle Befehle, die Administratoren auf dem Server brauchen, an einer Stelle. Die Seiten, auf die jeder Abschnitt verweist, erklären die Hintergründe.

Wo Sie sie ausführen. Das Installationsskript legt den Stack in /opt/restow ab, root gehört er. Führen Sie die Befehle dort aus (cd /opt/restow), mit sudo. Bei einer Installation von Hand führen Sie sie im Verzeichnis ihrer docker-compose.yml aus. Die Dienste des Stacks heißen postgres, api, worker, scheduler, caddy (die Edge mit der Weboberfläche) und, nur wenn Sie ihn gestartet haben, updater.

Empfohlen: Skript herunterladen, prüfen, ausführen (Erste Schritte):

Terminal-Fenster
curl -fsSLO https://github.com/restow-backup/restow/releases/download/v0.1.0/install.sh
curl -fsSLO https://github.com/restow-backup/restow/releases/download/v0.1.0/install.sh.sha256
sha256sum -c install.sh.sha256
sudo bash install.sh

Der Einzeiler für das neueste Release, mit Fragen oder unbeaufsichtigt. Er führt das Skript aus, ohne es vorher zu prüfen (warum der Weg oben besser ist):

Terminal-Fenster
curl -fsSL https://github.com/restow-backup/restow/releases/latest/download/install.sh | sudo bash
curl -fsSL https://github.com/restow-backup/restow/releases/latest/download/install.sh | sudo bash -s -- --non-interactive --domain backup.example.com --edition full

Unbeaufsichtigt zeigt das Skript den Master-Key nicht an: Kopieren Sie ihn sofort aus /opt/restow/.env (siehe Master-Key und Datenbank).

Befehl Was er tut
sudo bash install.sh --dry-run Führt die Prüfungen aus und zeigt, was es tun würde; ändert nichts.
sudo bash install.sh --local Eine Evaluierung ohne öffentliche Domain, mit einem Zertifikat von Caddys eigener Zertifizierungsstelle. Nicht für den Produktivbetrieb.
sudo bash install.sh --with-updater Startet zusätzlich den Opt-in-Updater. Lesen Sie zuerst Updates.
bash install.sh --help Jede Option und die Exit-Codes.
bash install.sh --upgrade Zeigt, wie Sie aktualisieren; das Skript selbst aktualisiert nie.

Das Installations-Log ist /var/log/restow-install.log, ohne Secrets.

Terminal-Fenster
sudo docker compose ps
curl -fsS http://127.0.0.1:3000/healthz
curl -fsS http://127.0.0.1:3000/readyz

/healthz sagt, dass der api-Prozess läuft. /readyz antwortet mit 503 not_ready, bis die Datenbank antwortet und sich Worker und Scheduler gemeldet haben; der Inhalt der Antwort nennt, was fehlt. Die laufende Version steht unten in der Seitenleiste der Weboberfläche.

Terminal-Fenster
sudo docker compose logs -f api # fortlaufend; Strg+C beendet die Anzeige, nicht den Dienst
sudo docker compose logs --tail 200 worker # die letzten 200 Zeilen
sudo docker compose logs --since 1h scheduler # die letzte Stunde
sudo docker compose logs caddy # die Edge: Zertifikate, Anfragen
Terminal-Fenster
sudo docker compose up -d # starten und eine geänderte .env oder neue Images übernehmen
sudo docker compose restart api # einen Dienst mit seinem jetzigen Image und seiner Umgebung neu starten
sudo docker compose stop # alles anhalten; alle Daten bleiben

docker compose restart übernimmt weder eine geänderte .env noch ein neues Image; docker compose up -d tut beides.

Der Einrichtungsassistent fragt nach einem einmaligen Setup-Token. Bis die Einrichtung abgeschlossen ist, gibt die api es bei jedem Start aus; nehmen Sie das zuletzt ausgegebene:

Terminal-Fenster
sudo docker compose logs api | grep 'SETUP TOKEN'

Siehe Einrichtungsassistent.

Wenn der letzte Inhaber seinen Passkey, seine Authenticator-App oder sein Passwort verloren hat:

Terminal-Fenster
sudo docker compose exec api restow admin list
sudo docker compose exec api restow admin recover --email owner@example.com
sudo docker compose exec api restow help

admin recover gilt nur für Inhaber, fragt nach einer Bestätigung und einem neuen Passwort und wird im Audit-Log vermerkt. Siehe Admin-Zugang wiederherstellen.

Bewahren Sie eine Offline-Kopie von RESTOW_MASTER_KEY auf. Ohne ihn lässt sich keine Sicherung lesen, und es gibt keinen Weg zurück. Dieser Befehl zeigt ihn an; kopieren Sie ihn an einen Offline-Ort:

Terminal-Fenster
sudo grep '^RESTOW_MASTER_KEY=' /opt/restow/.env

Eine Datenbanksicherung, von root geschrieben und nur für root lesbar (vor jedem Update und regelmäßig):

Terminal-Fenster
sudo sh -c 'umask 077; docker compose exec -T postgres pg_dump -U restow -Fc restow > restow-$(date +%F).dump'

Was Sie sonst noch sichern und wie Sie Sicherungen ohne laufenden Server lesen (restow-restore), steht unter Restow selbst sichern.

Lesen Sie zuerst die Release-Notes jeder Version dazwischen. Kurz, für Version X.Y.Z:

Terminal-Fenster
cd /opt/restow
sudo sh -c 'umask 077; docker compose exec -T postgres pg_dump -U restow -Fc restow > restow-$(date +%F).dump'
NEW=X.Y.Z
sudo cp -p .env .env.before-update
sudo sed -i -E 's#^(RESTOW_(WEB_)?IMAGE=ghcr\.io/restow-backup/restow(-web)?(-community)?):.*$#\1:'"$NEW"'#' .env
sudo docker compose pull
sudo docker compose up -d
sudo docker compose logs -f api

Die Schritte einzeln, mit Prüfung der Images vorab und dem Weg zurück: Updates, Schritt für Schritt.

Ein Image, mit der Identität genau seines Releases (hier 0.1.0; ebenso für restow-web, restow-community und restow-web-community):

Terminal-Fenster
cosign verify ghcr.io/restow-backup/restow:0.1.0 \
--certificate-identity https://github.com/restow-backup/restow/.github/workflows/release.yml@refs/tags/v0.1.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com

Die signierte Prüfsummenliste der Release-Dateien (install.sh, docker-compose.yml, env.example und die übrigen), neben ihnen heruntergeladen:

Terminal-Fenster
cosign verify-blob SHA256SUMS --bundle SHA256SUMS.sigstore.json \
--certificate-identity https://github.com/restow-backup/restow/.github/workflows/release.yml@refs/tags/v0.1.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum -c --ignore-missing SHA256SUMS

Die eigene Signatur des Agents, die SBOM und was die Release-Prüfungen abgedeckt haben: Ein Release verifizieren.

Terminal-Fenster
sudo docker compose --profile updater up -d # starten (nachdem er eingerichtet ist)
sudo docker compose --profile updater ps updater # läuft er?
sudo docker compose --profile updater logs --tail 100 updater
sudo docker compose --profile updater up -d updater # neu erstellen, etwa nach einer Änderung von RESTOW_UPDATER_IMAGE
sudo docker compose --profile updater rm -sf updater # wieder entfernen

Ob er bereit ist oder was ihn blockiert, zeigt die Installationskarte unter Einstellungen → Updates. Lesen Sie vor dem Start Der Updater (opt-in): Er bindet den Docker-Socket ein.

Auf dem Rechner selbst. restow-agent ist ein Link in /usr/local/bin, wo dieser Ordner root gehört; sonst nehmen Sie den vollen Pfad, /opt/restow-agent/bin/restow-agent (Linux) oder '/Library/Application Support/Restow/bin/restow-agent' (macOS).

Terminal-Fenster
restow-agent status # lokaler Zustand; ohne root (--json für Skripte)
sudo restow-agent status # zusätzlich die Hook-Richtlinie
sudo restow-agent service status # der Systemdienst
sudo restow-agent service restart
sudo restow-agent backup-now # ein Backup im Vordergrund (mit --debug für Details)
sudo restow-agent hooks status # ob Hooks vom Server hier laufen dürfen
restow-agent version
journalctl -u restow-agent # Linux: das Log des Agents im Journal
sudo tail -f /var/log/restow-agent/agent.log
sudo restow-agent uninstall # den Agent entfernen (fragt vorher; --yes überspringt die Frage)

Mehr unter Installation unter Linux und macOS, Fehlerbehebung und Deinstallation.

Das Installationsskript hat mit Absicht keine Deinstallation: Das Entfernen einer Installation kann Sicherungen zerstören. Dies hält die Container an und entfernt sie; die Datenbank, der lokale Chunk-Store, Caddys Zertifikate, die Sicherungen des Updaters und .env bleiben:

Terminal-Fenster
cd /opt/restow
sudo docker compose --profile updater down

Nur wenn Sie sicher sind, dass keine Sicherung darin mehr gebraucht wird:

Terminal-Fenster
sudo docker compose --profile updater down --volumes # löscht die Datenbank und den lokalen Chunk-Store
cd / && sudo rm -r /opt/restow # .env enthält RESTOW_MASTER_KEY

Bewahren Sie eine Offline-Kopie von RESTOW_MASTER_KEY auf, solange Sicherungen auf anderem Speicher (S3, NFS, SMB) noch gebraucht werden könnten: restow-restore liest sie allein mit dem Schlüssel. Diese Sicherungen löschen die Schritte oben nicht; entfernen Sie sie im Speicher selbst. Docker bleibt installiert.