Einen Host installieren
Ubuntu-Server-Host mit einem Befehl und einem Code installieren und koppeln: jeder Download verifiziert, Sitzungsdienste installiert, Maschine gekoppelt.
Ein einziger Befehl macht aus einer Maschine mit Ubuntu Server 24.04 einen Community-Host. Er prüft die Maschine, installiert die Sitzungsdienste und zeigt dann einen Code, um die Maschine mit Ihrem Konto zu koppeln. Nichts aus der Konsole zu kopieren. Etwa 5 Minuten.
Bevor Sie beginnen
- Eine Maschine, die die Anbieter-Voraussetzungen erfüllt: Ubuntu Server 24.04 direkt auf der Maschine, der HWE-Kernel (Linux 6.12 oder neuer), Virtualisierung und IOMMU in der Firmware aktiviert.
- Ein Terminal auf der Maschine, mit einem Benutzer, der
sudoausführen darf. - Ein Anbieterkonto mit bestätigter E-Mail-Adresse, als Inhaber oder Administrator Ihrer Organisation.
1. Den Befehl auf der Maschine ausführen
curl -fsSL https://nodelodge.com/host | sudo bash
Tippen Sie ihn wie gezeigt ein. Er fragt einmal nach Ihrem sudo-Passwort, dann:
- Prüft den Veröffentlichungsschlüssel. Das Startskript enthält den Node-Lodge-Veröffentlichungsschlüssel und vergleicht ihn mit dem im DNS veröffentlichten Schlüssel, getrennt von dieser Website (siehe Der Veröffentlichungsschlüssel). Weichen sie voneinander ab, läuft nichts.
- Prüft das Installationsprogramm. Es lädt
install.shund dessen Signatur herunter und prüft die Signatur mit diesem Schlüssel. Schlägt die Prüfung fehl, läuft nichts. - Prüft die Maschine. Jede Voraussetzung erhält eine Zeile: ok, WARN oder MISSING, mit der Lösung. Fehlt etwas, das nur Sie ändern können (Firmware, Kernel, System), hält es vor jeder Änderung an.
- Prüft die Version. Agent, Sitzungsdienst und ihre Dienstdateien kommen in einer signierten Datei, die vor dem Entpacken mit demselben Schlüssel geprüft wird. Cloud Hypervisor und der Registry-Spiegel werden mit festen SHA-256-Prüfsummen geprüft.
- Installiert. Systempakete, Node.js 22, die Konten
nl-vmd,nl-mirrorundnl-agent, die Version unter/opt/nodelodgeund vier Dienste, die beim Systemstart laufen. - Zeigt einen Code. Der Agent erzeugt seinen Schlüssel auf der Maschine und bereitet die Kopplung vor. Nur der öffentliche Teil des Schlüssels verlässt die Maschine.
Das Terminal zeigt dann:
To pair this machine, open nodelodge.com/pair on any device signed in to Node Lodge
and enter the code K7QX-M2PD, or scan:
(QR code)
The code expires in 10 minutes. Waiting for approval...
2. Den Code eingeben
Auf einem beliebigen Gerät, das bei Node Lodge angemeldet ist, auch auf Ihrem Telefon:
- Öffnen Sie nodelodge.com/pair und geben Sie den Code ein, oder scannen Sie den QR-Code: Er öffnet dieselbe Seite mit bereits eingetragenem Code.
- Prüfen Sie die Maschine: GPU und VRAM, CPU, Arbeitsspeicher, System sowie Adresse und Land, aus denen ihre Anfrage kam. Haben Sie diese Installation nicht selbst gestartet, wählen Sie Decline.
- Benennen Sie die Maschine. Der Hostname wird vorgeschlagen; Mieter sehen den Namen, vermeiden Sie also persönliche Angaben.
- Wählen Sie Pair this machine.
Die Maschine schließt den Vorgang selbst ab: Sie erhält ihre Zugangsdaten, koppelt sich und führt den Selbsttest aus. Die Konsole öffnet ihre Seite, wartend auf die Prüfung.
Ein Code gilt einmal, für 10 Minuten. Nur ein Inhaber oder Administrator der Organisation kann ihn freigeben, aus einem angemeldeten Browser.
Was auf der Maschine läuft
| Dienst | Konto | Aufgabe |
|---|---|---|
compute-host |
nl-agent |
Lebenszeichen, Hardwarebericht, von Node Lodge signierte Aufträge |
nl-vmd |
nl-vmd |
Führt jede Sitzung in ihrer eigenen Micro-VM aus |
nl-vmd-helper |
root | Netzwerk, Firewall und GPU-Übergabe der VMs, sonst nichts |
nl-mirror |
nl-mirror |
Lokaler Zwischenspeicher für Container-Images, von den Sitzungen geteilt |
Kein Dienst lauscht auf einem Netzwerkport. Der Agent verbindet sich ausgehend per HTTPS mit Node Lodge.
Den Host prüfen
sudo /opt/nodelodge/install.sh --check
Liest Maschine, Dienste und Kopplung, führt den Selbsttest aus und ändert nichts. Endet mit host ready oder mit der Liste dessen, was zu beheben ist.
Aktualisieren und zurückkehren
sudo /opt/nodelodge/install.sh --update
sudo /opt/nodelodge/install.sh --rollback
--update installiert die neueste Version, signiert mit einem bereits auf der Maschine hinterlegten Veröffentlichungsschlüssel. Versionen gehen nur vorwärts: Die Maschine lehnt jede Version ab, die älter ist als die neueste bereits installierte, und jeden Schlüssel, den eine spätere Version zurückgezogen hat, egal was der Server sendet. Die vorherige Version bleibt auf der Festplatte, und --rollback kehrt zu ihr zurück; das nächste --update geht wieder vorwärts. Sitzungen laufen bei beidem weiter.
Den Befehl erneut auszuführen ist sicher: Was bereits stimmt, bleibt unverändert, und eine bereits gekoppelte Maschine wird nicht erneut gekoppelt.
Optionen
Fügen Sie Optionen nach sudo bash -s -- an:
curl -fsSL https://nodelodge.com/host | sudo bash -s -- --skip-dns-check
| Option | Verwendung |
|---|---|
--skip-dns-check |
Netzwerke, die DNS filtern. Vergleichen Sie den Schlüssel vorher selbst mit dem unten stehenden. |
Ohne Browser in der Nähe der Maschine
Für Automatisierung oder eine Maschine, an der niemand die Konsole öffnen kann: Benennen Sie in Setup unter No browser at hand die Maschine und wählen Sie Generate pairing code. Die Konsole zeigt einen Befehl, der den Code über die Standardeingabe an das Installationsprogramm übergibt, nie in den Argumenten eines Prozesses. Der Code gilt einmal und läuft nach 15 Minuten ab.
GPUs
Vermietete GPUs gehören den VMs: an vfio-pci gebunden, ohne NVIDIA-Treiber auf dem Host. Reservieren Sie sie wie in den Anbieter-Voraussetzungen beschrieben und prüfen Sie den Host danach erneut.
Der Veröffentlichungsschlüssel
Das Startskript prüft das Installationsprogramm mit diesem öffentlichen Schlüssel, der jede Version von Node Lodge signiert:
MCowBQYDK2VwAyEAMpBEdmKh+jNxfzcsprbjpeoESLOYNWJtfH1Eq3eGekw=
Derselbe Schlüssel ist im DNS veröffentlicht, in einer mit DNSSEC signierten Zone, getrennt von der Konsole und dieser Website. Das Startskript liest ihn, bevor irgendetwas läuft; so lesen Sie ihn selbst:
dig +short TXT _host-release-key.nodelodge.com
Die Antwort ist der Schlüssel oben, in Anführungszeichen. Während eines Schlüsselwechsels nennt sie beide Schlüssel. Nach der Installation prüft die Maschine jedes Update mit den Schlüsseln, die sie hinterlegt hat.
Um das Startskript vor dem Ausführen zu lesen, laden Sie es mit seiner Signatur herunter und prüfen Sie es mit dem Schlüssel oben:
curl -fsSL -o host.sh https://nodelodge.com/host
curl -fsSL -o host.sh.sig https://nodelodge.com/host.sig
printf '%s\n' '-----BEGIN PUBLIC KEY-----' 'MCowBQYDK2VwAyEAMpBEdmKh+jNxfzcsprbjpeoESLOYNWJtfH1Eq3eGekw=' '-----END PUBLIC KEY-----' > release-key.pem
base64 -d host.sh.sig > host.sh.raw
{ printf 'nl-host-bootstrap\0'; cat host.sh; } > host.sh.msg
openssl pkeyutl -verify -pubin -inkey release-key.pem -rawin -in host.sh.msg -sigfile host.sh.raw
sudo bash host.sh
Fehlerbehebung
| Sie sehen | Tun Sie Folgendes |
|---|---|
the release key could not be read from DNS |
Installieren Sie dig (sudo apt-get install -y bind9-dnsutils) und führen Sie den Befehl erneut aus. In einem Netzwerk, das DNS filtert, vergleichen Sie den Schlüssel oben und ergänzen dann -s -- --skip-dns-check. |
is not the one published in DNS |
Es wurde nichts ausgeführt. Wenden Sie sich an den Support. |
signature check failed: nothing was run |
Führen Sie den Befehl erneut aus. Schlägt es zweimal fehl, wenden Sie sich an den Support. |
MISSING Linux 6.12 or newer |
Führen Sie die angezeigte Lösung aus, starten Sie neu und führen Sie den Befehl erneut aus. |
The code expired |
Führen Sie den Befehl erneut aus: Was installiert ist, bleibt, und ein neuer Code erscheint. |
This code is not valid or has expired in der Konsole |
Prüfen Sie den Code auf dem Bildschirm der Maschine. Nach 10 Minuten führen Sie den Befehl erneut aus, um einen neuen Code zu erhalten. |
Pairing was declined in the console |
Führen Sie den Befehl erneut aus, wenn Sie bereit sind, ihn freizugeben. |
is older than the newest release installed |
Nichts wurde geändert. Führen Sie --update später erneut aus. Wiederholt es sich, wenden Sie sich an den Support. |
Ein Dienst ist MISSING |
journalctl -u <service> -n 20 zeigt den Grund. Führen Sie den Befehl nach der Behebung erneut aus. |