Zum Inhalt springen

Einen Knoten installieren

Vier Schritte auf der Box, und zwei Dinge, die nur du außerhalb davon tun kannst: DNS setzen und deinen Fingerabdruck verifizieren lassen.

Hast du ein Einschreibungs-Token erhalten, fallen die Schritte 0 bis 2 komplett zu einem einzigen Befehl zusammen. Er lädt den Code herunter, entpackt ihn nach /opt/trusted-codes und führt tc-operator setup aus, das die operator.yaml dieses Knotens anhand des Tokens holt, den Stack installiert und den Knoten selbst einschreibt.

Terminal-Fenster
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash -s -- <einschreibungs-token>

Lass das Token weg, um danach gefragt zu werden, damit es nie in deiner Shell-Historie landet:

Terminal-Fenster
curl -fsSL https://app.trusted.codes/download/install-node.sh | sudo bash

Der Download wird gegen das veröffentlichte Release-Manifest verifiziert, und das Manifest selbst gegen einen fest hinterlegten Signaturschlüssel.

Nimm stattdessen die manuellen Schritte unten, wenn du das Archiv erst prüfen, eine Version festlegen oder woanders als /opt/trusted-codes installieren willst (--dir <pfad>).

Terminal-Fenster
sudo mkdir -p /opt/trusted-codes
sudo tar -xzf trusted-codes-operator-<version>.tar.gz -C /opt/trusted-codes
cd /opt/trusted-codes

Der Installations-Preflight prüft, dass der Baum vollständig ist, und scheitert laut, mit dieser Anweisung, falls nicht.

Terminal-Fenster
cp scripts/tc-operator/operator.yaml.example operator.yaml
chmod 600 operator.yaml
$EDITOR operator.yaml

Behalte den Modus 0600 — sie enthält dein SMTP-Passwort. Zwei Felder sind erforderlich:

home_server: node1.example.com
admin_email: ops@example.com

Für alles andere gibt es eine funktionierende Voreinstellung. operator.yaml behandelt den Rest der Datei.

Terminal-Fenster
sudo scripts/tc-operator/tc-operator install --config operator.yaml

Er ist idempotent — sicher, ihn erneut auszuführen, und ein erneuter Lauf ist der normale Weg, ein neues Archiv einzuspielen. Er:

  1. Führt einen Preflight des Hosts durch: prüft das Betriebssystem, legt eine 4-GB-Swapdatei an, installiert Docker, falls es fehlt, öffnet 22, 80 und 443 in der Firewall.
  2. Erzeugt jedes Geheimnis und stellt das mTLS-Zertifikat des Knotens aus.
  3. Startet den vollständigen Stack in einem isolierten Docker-Projekt, jeder veröffentlichte Port gebunden an 127.0.0.1.
  4. Spielt das Schema ein — Migrationen, dann Referenz-Seeds, dann den Betreiber-Override. Eine frische Datenbank, konstruiert und nie aus einem Dump.
  5. Verdrahtet Föderationsidentität und -Flags und schaltet WebFinger-Auffindung ein.
  6. Testet sich selbst: ein authentifiziertes Lesen und der antwortende Föderations-Handler.
  7. Gibt die DNS-Records aus, die du brauchst, und schreibt die Aufnahme-Nutzlast.

Er bricht nicht ab, wenn dein DNS noch nicht gesetzt ist. TLS ist ein eigener Schritt.

Die Installation ist nicht hinter einer getippten Bestätigung geschützt: Es ist dein einer Befehl auf deiner eigenen Box.

Er schreibt /etc/trusted-codes/install.log mit der vollständigen Ausgabe jedes Befehls, und /etc/trusted-codes/README.md — eine Referenz direkt auf der Box, die jede Datei in diesem Verzeichnis benennt, welche davon identitätskritisch sind, was jeder Container tut und was ausfällt, wenn er unten ist. Fang bei diesen beiden an, wenn etwas seltsam aussieht.

Hast du admin_email gesetzt, legt die Installation auch deinen ersten operator_admin für diese Adresse an und gibt ein einmaliges, vorläufiges Passwort aus. Melde dich in der Admin-App des Knotens an und ändere es sofort. Der Installer gibt es nur einmal aus, nie wieder. Verlierst du es, bevor du es geändert hast, führe die Installation erneut in einem Terminal aus: Sie findet das bestehende Konto und bietet an, das Passwort zurückzusetzen.

Diese Rolle verwaltet nur diesen Knoten. Ihr wird jeder zentrale Bildschirm verweigert — Lizenzen, Berechtigungen, Pläne, Feature Flags — auf Serverebene, nicht nur in der Oberfläche, und es gibt keinen Weg, sie zu eskalieren. Siehe Den Knoten betreiben.

Der Installer gibt den genauen Record aus. Setze ihn bei deinem DNS-Provider:

node1.example.com. A <deine-box-ip>

Sobald er auflöst:

Terminal-Fenster
sudo scripts/tc-operator/tc-operator finalize-tls --config operator.yaml

Das fragt so lange ab, bis der A-Record auf die Box auflöst, rendert die Proxy-Konfiguration und bringt HTTPS mit einem Let’s-Encrypt-Zertifikat hoch.

Probe es zuerst mit --dry-run. Das verwendet die Staging-Umgebung von Let’s Encrypt: Das Zertifikat ist nicht vertrauenswürdig, und du verbrauchst kein Ratenlimit. Das zählt, weil das echte Limit pro Domain gilt und du es nicht rückgängig machen kannst, sobald du es erreicht hast.

Der Installer hat /etc/trusted-codes/admission-payload.json geschrieben. Sie enthält nur öffentliches Schlüsselmaterial: deinen öffentlichen Föderations-Signaturschlüssel samt Fingerabdruck, deinen mTLS-Fingerabdruck, deine Domains und deine Fähigkeiten.

Terminal-Fenster
scripts/tc-operator/tc-operator submit-admission

Das signiert die Nutzlast mit dem Föderationsschlüssel deines Knotens und stellt sie in die zentrale Prüfwarteschlange.

Die Signatur beweist, dass dein Knoten den Schlüssel besitzt. Sie beweist nicht, dass dir der Hostname gehört — sag Trusted Codes deshalb den Fingerabdruck deines öffentlichen Schlüssels über einen separaten Kanal. Der Befehl gibt ihn aus. Jemand verifiziert diesen Fingerabdruck von Hand und genehmigt dann deinen Knoten; es gibt keine Selbstgenehmigung. Der erneute Aufruf des Befehls aktualisiert den ausstehenden Eintrag.

Sobald genehmigt, und sobald die signierte Registry neu veröffentlicht ist, föderiert dein Knoten mit dem Mesh. Bis dahin bleibt die Admin-Oberfläche hinter einem „Genehmigung ausstehend”-Bildschirm.

Der Knoten läuft, sobald die Installation fertig ist. Das ist nicht dasselbe wie bereit zu sein.

  • DNS-Records lösen auf die Box auf, und finalize-tls ist mit einem gültigen Zertifikat abgeschlossen.
  • Die Aufnahme ist genehmigt — dein Fingerabdruck verifiziert, der Knoten föderiert.
  • SMTP verdrahtet und verifiziert. Schick dir selbst einen Anmeldelink und bestätige, dass er ankommt.
  • Das Admin-Passwort ist vom vorläufigen geändert.
  • /etc/trusted-codes/secrets.env irgendwo offline kopiert. Es zu verlieren verliert die Identitätsschlüssel des Knotens und macht jede wiederhergestellte Daten unlesbar.
  • Optionale Integrationsschlüssel gesetzt, falls du diese Funktionen willst.

Ein Oberflächen-Build wurde übersprungen. Die anderen Oberflächen wurden installiert; nur dieses Portal wurde nicht gebaut. Lies den Fehler in install.log — suche nach surface <name>: building. Die übliche Ursache ist Speicher: Eine Zeile mit „killed” oder Signal 137 bedeutet, dass der Box der Speicher ausging. Füge RAM oder Swap hinzu und führe die Installation erneut aus, was den Build wiederholt. Der Knoten ist währenddessen nutzbar.

TLS wurde nicht abgeschlossen. Fast immer DNS, das noch nicht propagiert ist. Bestätige mit getent hosts <deine-domain>, und führe dann finalize-tls erneut aus.

Die Aufnahme hängt in „ausstehend”. Jemand bei Trusted Codes muss deinen Fingerabdruck außerhalb des Systems verifizieren und genehmigen. Erneutes Einreichen aktualisiert den Eintrag; es genehmigt ihn nicht.