CommunityCodierung & Entwicklunggithub.com

csansoon/hostel-server-setup

Richten Sie einen Hostel-Server auf einem Linux-VPS oder einem Heimrechner ein, konfigurieren, sichern oder aktualisieren Sie ihn. Verwenden Sie es, wenn der Benutzer sagt: 'Hostel-Server einrichten', 'hostel deploy', 'hostel server ausführen', 'Hostel hinter Caddy/einen Proxy setzen', 'eine Servereinstellung ändern', 'server.toml', 'Hostel sichern' oder 'Server aktualisieren'.

Was ist hostel-server-setup?

Diese Fähigkeit automatisiert die Einrichtung, Konfiguration, Sicherung und Aktualisierung eines Hostel-Servers. Hostel ist ein Multi-Room-Zugangssystem, bei dem ein zentraler Server die Warteschlange, Benutzer, Konfiguration und das SSH-Gateway verwaltet. Die Anleitung unterstützt sowohl den Betrieb auf einem Linux-VPS mit systemd als auch auf einem Heimrechner. Der Benutzer kann zwischen TLS-Modi wählen: selbstsigniert (für IP-Adressen oder LAN-Namen) oder deaktiviert (wenn ein Proxy wie Caddy das TLS-Terminierung übernimmt). Der Server wird über die Befehlszeile installiert, initialisiert und verwaltet; die Konfiguration erfolgt über eine `server.toml`-Datei und ein Datenbank-Konfigurationsdokument. Die Fähigkeit deckt alle Schritte ab: Installation, Initialisierung, Konfiguration der systemd-Dienstdatei, Verwaltung der Datenbankeinstellungen, Erstellen von Einladungen, Sicherung der Datenbank und Aktualisierung des Servers. Zusätzlich wird beschrieben, wie der Server hinter einem Proxy wie Caddy betrieben wird, wobei WebSocket-Upgrades für das SSH-Gateway erforderlich sind.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/csansoon/hostel/tree/HEAD/skills/hostel-server-setup

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Einrichtung eines Hostel-Servers

Der Server verwaltet die Warteschlange, die Benutzer, die Konfiguration und das SSH-Gateway. Führen Sie einen Server für ein Team aus. Agenten und Personen verbinden sich von ihren eigenen Computern aus (hostel-install).

1. Wählen Sie die Maschine und den TLS-Modus

  • Ein Linux-Rechner mit systemd (amd64 oder arm64; 2 CPUs und 4 GB sind ausreichend), oder ein Heimrechner, der permanent läuft. Das Repository dokumentiert nur den systemd-Dienst; auf einem anderen Betriebssystem führen Sie hostel server run mit Ihrem eigenen Service-Manager aus.
  • Eine HTTPS-Adresse, die von Clients erreicht werden kann. Die API und das Gateway teilen sich diese: das Gateway akzeptiert SSH innerhalb eines WebSockets unter /v1/gateway.
TLS-ModusVerwenden Sie ihn, wennClients prüfen
self-signed (Standard)Keine Domain oder kein Proxy: eine IP-Adresse, ein LAN-Name, ein VPN-Name. Der Server stellt HTTPS mit seinem eigenen Zertifikat bereit.Den gepinnten Schlüssel aus dem Einladungscode.
offEin Proxy mit TLS befindet sich vor dem Server (Caddy, ein Cloud-Load-Balancer).Das Zertifikat des Proxys auf die normale Weise.

2. Installation

Als Administrator auf der Servermaschine:

curl -fsSL -o install.sh https://raw.githubusercontent.com/csansoon/hostel/main/install.sh
sudo sh install.sh --dir /usr/local/bin --server /opt/hostel

/opt/hostel/helpers enthält die Binärdateien für alle Räume (hostel-<os>-<arch>, mise-<os>-<arch>). /opt/hostel/platforms enthält die Plattform-Skripte (nur ein alter Server importiert sie; die Binärdatei hat die Standard-Plattformen).

3. Initialisierung

Führen Sie hostel server init als der Benutzer aus, der den Dienst ausführt (nicht root). In einem Terminal fragt es nach dem Servernamen, den Adressen und Ihrem Namen, wenn die Flags sie nicht angeben. Flags:

FlagBedeutung
--server-idDer Name des Servers, [a-z0-9]{1,20} (Standard: vom Hostnamen). Er ist Teil der Namen von Räumen, die der Server erstellt.
--listenDie API-Adresse (Standard 127.0.0.1:7410).
--tlsself-signed (Standard) oder off.
--urlEine Adresse, die Clients verwenden. Wiederholen Sie sie für mehrere. Einladungscodes enthalten sie.
--userIhr Name für den ersten Administrator.
--helper-dirDie Binärdateien für die Räume: /opt/hostel/helpers nach install.sh --server /opt/hostel (Standard: data_dir/helpers).
--configDie zu schreibende Datei (Standard ~/.config/hostel/server.toml).

Selbstsigniert, auf eigenem Port (TCP 7410 in der Firewall öffnen):

hostel server init --server-id demo --listen 0.0.0.0:7410 \
  --url https://hostel.example.com:7410 --user "Alice Example" \
  --helper-dir /opt/hostel/helpers

Hinter einem Proxy mit TLS:

hostel server init --server-id demo --tls off --listen 127.0.0.1:8000 \
  --url https://hostel.example.com --user "Alice Example" \
  --helper-dir /opt/hostel/helpers

Mit --tls off und einer https://-Adresse schreibt init auch gateway_public = "wss://hostel.example.com/v1/gateway": Gäste und verbundene Maschinen erreichen das SSH-Gateway durch den Proxy. Der Proxy muss /v1/gateway (ein WebSocket) an den Server weiterleiten.

init schreibt server.toml, hostel.schema.json, das Datenverzeichnis (~/.local/share/hostel: die Datenbank, server_ed25519, gateway_host_ed25519, und das TLS-Zertifikat) und gibt den öffentlichen SSH-Schlüssel des Servers sowie die erste Administrator-Einladung aus:

Verbinden Sie Ihren Computer als erster Administrator. Führen Sie dies auf Ihrem Computer aus:

  hostel connect hostel1-...

Führen Sie diesen Befehl auf Ihrem eigenen Computer innerhalb von 24 Stunden aus (hostel-install).

4. Bearbeiten von server.toml

server.toml enthält nur die Schlüssel, die der Server benötigt, bevor er seine Datenbank öffnet: server_id, listen, gateway_listen, gateway_public, tls, public_urls, data_dir, helper_dir, platforms_dir. init schreibt helper_dir (mit --helper-dir) und, hinter einem Proxy, gateway_public. Überprüfen Sie sie:

grep -E 'helper_dir|gateway_public' ~/.config/hostel/server.toml
hostel admin config check

Ohne helper_dir kann der Server den Räumen keinen Helper geben, und hostel machine join kann die Binärdatei nicht herunterladen. Ohne gateway_public hinter einem Proxy schlägt jede Gast-SSH-Sitzung und jede beigetretene Maschine fehl.

Ein Caddy-Beispiel (Caddy leitet WebSocket-Upgrades ohne weitere Einstellungen weiter):

hostel.example.com {
	reverse_proxy 127.0.0.1:8000
}

Mit tls = "self-signed" ist die Standardeinstellung für gateway_public /v1/gateway auf derselben Adresse; setzen Sie es nicht. Überprüfen Sie die Datei (sie gibt jedes Problem und die effektiven Werte aus):

hostel admin config check

Eine Änderung von server.toml erfordert einen Neustart des Servers.

5. Der systemd-Dienst

/etc/systemd/system/hostel.service (ersetzen Sie alice durch den Benutzer, der init ausgeführt hat):

[Unit]
Description=Hostel server
After=network-online.target
Wants=network-online.target

[Service]
User=alice
ExecStart=/usr/local/bin/hostel server run
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now hostel
journalctl -u hostel -f

hostel server run --config <datei> wählt eine andere server.toml aus. Das Protokoll ist JSON auf stderr. Wenn die Konfiguration ungültig ist, startet der Server nicht und das Protokoll gibt den Grund an.

Für Namespace-Räume müssen die CLIs devbox und nsc im PATH des Dienstes sein (hostel-rooms, Abschnitt "Namespace").

6. Die Konfiguration in der Datenbank

Alles andere (Anbieter, Maschinen, Plattformen und die Einstellungen) ist das Konfigurationsdokument in der Datenbank. Ein Administrator ändert es von jedem verbundenen Computer aus. Eine gültige Änderung wird sofort übernommen, ohne Neustart.

hostel config                    # Dokument anzeigen (Mitglieder sehen Secrets als ***)
hostel config edit               # Ändern in $VISUAL / $EDITOR
hostel config apply file.toml    # Ersetzen durch eine Datei (oder - für stdin)
hostel config history            # Die Revisionen mit Benutzer und Zeit
hostel config settings           # Die Einstellungen, die nicht Standard sind
hostel config settings set idle_timeout=20m

Einstellungen: idle_timeout (10m), poll_timeout (5m), limit_retry (2m), port_process_offline (10m), intervals.scheduler (10s), intervals.reconcile (5m), intervals.tunnel_check (30s), intervals.presence (30s), mise.idiomatic_tools (["node", "python"]), mise.github_token, mise.agent_device (true).

Der Server lehnt eine Änderung ab, wenn zuerst eine andere Revision kam (erneut bearbeiten) oder wenn sie ungültig ist (der Fehler benennt den Schlüsselpfad). Maschinen und Anbieter: hostel-rooms. Plattformen: hostel-platforms. Benutzer: hostel-users.

7. Einladungen auf der Servermaschine

Wenn sich niemand als Administrator anmelden kann, erstellen Sie eine Einladung auf der Servermaschine selbst (sie verwendet nicht die API):

hostel server invite                     # ein Administrator
hostel server invite --role member --name "Bob Example"

8. Backups

Der Zustand befindet sich im Datenverzeichnis (~/.local/share/hostel). Sichern Sie die Schlüssel jeweils einmal (server_ed25519, gateway_host_ed25519, tls_cert.pem, tls_key.pem). Sichern Sie die Datenbank mit SQLite, nicht mit einer Dateikopie:

sqlite3 ~/.local/share/hostel/hostel.db ".backup /var/backups/hostel.db"
  • Verlorene Datenbank: Benutzer müssen sich erneut verbinden; On-Demand-Räume mit dieser server_id werden beim nächsten Abgleich zerstört.
  • Verlorener server_ed25519: Setzen Sie den neuen öffentlichen Schlüssel (hostel admin pubkey) auf jede statische Maschine.
  • Verlorener TLS-Schlüssel (selbstsigniert): Jeder Client muss sich mit einem neuen Einladungscode erneut verbinden.

9. Update

curl -fsSL -o install.sh https://raw.githubusercontent.com/csansoon/hostel/main/install.sh
sudo sh install.sh --dir /usr/local/bin --server /opt/hostel
sudo systemctl restart hostel

Der Server sendet den neuen Helper vor der nächsten Leihe an jeden Raum.

Nächstes

  • Räume hinzufügen: hostel-rooms.
  • Personen einladen: hostel-users.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills