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.
- Server koppeln — Adresse und Einladungscode eingeben (aus der Einrichtung oder
sudo crewd pair). Die Verbindung entsteht, die App wechselt aber noch nicht. - 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.
- 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
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 --allowHat 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.deWas 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 ServerDas 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.