CrewDoku
Anleitungen

Von Mac auf Server umziehen

Chats, Agenten, Projekte und Tresor aus der App oder mit einem Befehl auf den neuen Server bringen.

Das brauchst du: Crew auf dem Mac oder PC, einen eingerichteten Server (Schnellstart). Das hast du am Ende: dieselbe Crew auf dem Server. Dauer: 5–15 Minuten.

In der App

In der Crew-App für Mac und PC: Einstellungen → Verbindung & Daten → Auf einen Server umziehen.

  1. Server koppeln — Adresse und Einladungscode eingeben (aus der Einrichtung oder sudo crewd pair). Die Verbindung entsteht, die App wechselt aber noch nicht.
  2. Entscheiden, was mit der Crew auf diesem Rechner passiert:
    • Daten mitnehmen (Schalter an): Chats, Agenten, Projekte und Tresor ziehen auf den Server. Die App hält die lokale Crew an (laufende Aufträge setzt der Server fort), erstellt das Paket mit Master-Key, lädt es hoch und legt den lokalen Datenordner danach unter ~/.crew-archive/<zeit> ab.
    • Neu anfangen, lokal behalten: Der Server startet leer, die lokale Crew bleibt unter „Verbindung“ erreichbar.
    • Neu anfangen, lokal archivieren und löschen: Der Server startet leer. Vorher entsteht ein Archiv mit Master-Key unter Dokumente/Crew-Archiv, dann wird die lokale Crew gelöscht.

Projekte in eigenen Ordnern (z. B. ein Git-Repo auf dem Mac) zeigt die App vorher an — sie bleiben auf dem Rechner.

Wann „Daten mitnehmen“ ohne Weiteres geht: direkt nach der Einrichtung — der Server hat noch keine Agenten, Chats oder Projekte, und die App wurde vor höchstens 30 Minuten mit dem Einrichtungscode bzw. als erstes Gerät gekoppelt. Sonst fragt die App nach einem Einmal-Code vom Server (15 Minuten gültig, genau einmal):

sudo crewd import --allow

Hat der Server schon Daten, wird sein Stand nach <daten>/archive/before-import-<zeit> verschoben und ersetzt — die App fragt das ausdrücklich ab. Nach dem Import gilt auf dem Server nur noch diese App als Gerät: Handy und Browser neu koppeln. Die App selbst bleibt verbunden.

Die App bricht vorher ab, wenn der Server eine ältere Crew-Version hat (sudo crewd update) oder dort CREW_SECRETS_MASTER_KEY gesetzt ist — der mitgebrachte Tresor wäre sonst nicht lesbar. Das Paket geht nur über HTTPS oder Tailscale. Server, die vor dieser Version eingerichtet wurden, brauchen für Pakete über 200 MB einmal sudo crewd visibility <stufe> (neue Caddy-Regel für den Umzug, bis 5 GB).

Bei der Sichtbarkeit unsichtbar gibt es keinen Web-Zugang für den Upload — die App zeigt dann die Befehle unten.

Was crewd am Paket prüft (App vor dem Upload und Server, dieselben Regeln, auch bei crewd import): nur relative Namen ohne .., . oder leere Segmente und ohne \, höchstens 4096 Bytes lang, 256 Ebenen tief, 255 Bytes je Namensteil; keine Geräte oder FIFOs; keine Namen, die sich nur in Groß-/Kleinschreibung oder Unicode-Form unterscheiden; kein Name, der zugleich Datei und Ordner ist; keine Namen, die geschützten nur ähneln (CLI.TOKEN, Master.key); master.key nur als gewöhnliche Datei im Format des Tresors; Hardlinks nur auf Dateien im Paket und nie mit master.key; ausgepackt höchstens 20 GB. Verstößt ein Paket dagegen, wird es abgelehnt.

.git wird nie übernommen — weder aus dem Paket noch vom Server: Eine Repo-Konfiguration könnte beim nächsten Commit Befehle ausführen. Der alte Stand des Servers (samt .git) liegt im Archiv, crewd legt beim Start ein frisches Repo an. Die Versionsgeschichte der Konfiguration (Agent-Dateien, CREW.md) beginnt nach dem Umzug also neu.

Verknüpfungen (Symlinks) legt crewd nur an, wenn ihr Ziel einfach und relativ ist (../, dann ASCII-Namen wie node_modules/.bin/tsc -> ../typescript/bin/tsc), nicht über andere Verknüpfungen führt, auf eine Datei oder einen Ordner dieses Pakets zeigt und nicht auf etwas Geschütztes (master.key, cli.token, relay/, backups/, archive/, .git, crew.db, *.env). Geschützte Dateien aus dem Paket (z. B. eine eigene secrets.env) werden nicht übernommen, die des Servers bleiben. Alle anderen — z. B. venv/bin/python -> /usr/bin/python3 — werden nicht übernommen, der Rest kommt vollständig an. Die App nennt sie schon vor dem Upload und nach dem Umzug, crewd import gibt sie aus. Beim Zurücksetzen zeigt die App sie vor dem Löschen: Sie kämen beim Wiederherstellen aus dem Archiv nicht zurück.

Entpackt wird mit dem eigenen Entpacker von crewd, nicht mit tar: Dateien bekommen 0644, ausführbare 0755, master.key immer 0600. Besitzer, setuid/setgid und sonstige Rechte aus dem Paket gelten nicht.

Bricht das Einspielen auf dem Server mittendrin ab (Absturz, Stromausfall, volle Platte), holt der nächste Start den vorherigen Stand zurück — auch wenn schon das Zurückholen unterbrochen war: Jeder Schritt steht vorher in der Markierung, und weggeräumt wird nur, was nachweislich aus dem Paket stammt. Die App meldet den Fehler, die lokale Crew bleibt unverändert. crewd import/restore gehen denselben Weg. War das Einspielen schon fertig und nur das Aufräumen fehlte, bleibt der neue Stand. Scheitert auch das Zurückholen, startet crewd nicht und meldet D602.

Im Terminal

crewd move --to root@crew.deinedomain.de

Was passiert: crewd erstellt am Mac ein Umzugspaket (Datenbank, Agenten, Projekte, Anhänge, Tresor mit Master-Key), kopiert es per scp auf den Server und spielt es dort mit crewd import ein. Der vorherige Server-Stand wandert ins Archiv. Die Crew am Mac bleibt unverändert — halte sie mit crewd stop an, wenn du sie nicht mehr brauchst.

Ohne SSH geht es auch in zwei Schritten:

crewd export crew-migration.tar.gz      # am Mac
sudo crewd import crew-migration.tar.gz # auf dem Server

Das Paket enthält den Master-Key — wie ein Passwort behandeln und danach löschen.

Nach dem Umzug: Handy und Mac neu koppeln. Die bisherigen Tailscale- und Funnel-Einstellungen am Mac werden überflüssig.

Die Identität von crewd zieht mit um

Der Nostr-Schlüssel von crewd liegt in der Datenbank. Nach dem Umzug (App oder crewd move/crewd import) hat crewd auf dem Server die Identität vom Mac. Offen und verborgen: nichts zu tun, die App holt den neuen Schlüssel selbst. Bei der Sichtbarkeit unsichtbar prüft der Wächter auf dem Relay-Server den alten Schlüssel (CREW_CREWD_PUB): dort in /opt/crew/crew.env auf den neuen Wert setzen (crewd relay auf dem Hub zeigt ihn als „crewd-Pubkey“) und sudo crewd restart — danach die Geräte neu koppeln.

Zurücksetzen

Einstellungen → Verbindung & Daten → Zurücksetzen löscht die Crew auf diesem Rechner. Vorher hält die App crewd an, legt ein Archiv mit Master-Key unter Dokumente/Crew-Archiv/crew-<zeit>.tar.gz an und prüft, dass es sich wieder einspielen lässt. Frühere Backups und Stände (backups/, archive/) gehören nicht ins Archiv — sie wandern daneben nach crew-<zeit>-backups/ und crew-<zeit>-archive/. Danach sind Datenordner, Dienst und Agent-Container weg, die App zeigt den Startbildschirm. Mit dem Häkchen „auch gespeicherte Serververbindungen vergessen“ entfernt sie zusätzlich alle Server-Verbindungen. Wiederherstellen: crewd import <archiv>.

Unter Windows läuft das über die WSL-Distribution „crew“ (crewd export, dann crewd uninstall). Die Distribution bleibt bestehen; für eine neue lokale Crew irm https://crewd.team/install.ps1 | iex erneut ausführen.

Auf dieser Seite