Desktop-Installer

Installieren Sie Owlat direkt aus der Desktop-App über SSH auf einem nackten Linux-VPS — ohne Terminal — mit einer animierten Live-Zeitleiste der Provisionierung.

Die Owlat-Desktop-App kann einen frischen Server für Sie über SSH installieren und konfigurieren. Statt ein Terminal zu öffnen und den Einzeiler auszuführen, richten Sie die App auf einen nackten Linux-VPS, füllen ein kurzes Formular aus und sehen jedem Schritt in Echtzeit bei der Provisionierung zu. Am Ende ist die neue Instanz automatisch als Workspace verbunden.

Es ist derselbe Installer wie beim CLI-Weg — die Desktop-App steuert ihn lediglich per Fernzugriff und stellt den Fortschritt dar. Alles, was Sie hier tun können, geht auch mit owlat quickstart.

Wann Sie ihn verwenden

  • Sie möchten eine GUI-Installation ohne SSH-/Terminal-Arbeit.
  • Sie richten einen Server für jemanden ein, der weniger technisch versiert ist.
  • Sie sehen lieber einer Fortschritts-Zeitleiste zu, als Log-Ausgaben zu lesen.

Sie bevorzugen das Terminal? Der Einzeiler-Installer und owlat quickstart tun exakt dasselbe.

Voraussetzungen

AnforderungHinweise
Ein frischer Linux-VPSUbuntu/Debian empfohlen; 4 GB RAM (8 GB empfohlen), 20 GB Festplatte
SSH-ZugangEin Benutzer mit sudo (oder root), per privatem Schlüssel oder Passwort
Die Owlat-Desktop-AppDownload von der Releases-Seite
Eine Domain + DNS-KontrolleNur für Fernzugriff — siehe Fernzugriff weiter unten

Docker muss nicht vorinstalliert sein — der Installer fügt es hinzu, falls es fehlt.

Schritt für Schritt

  1. App öffnen → „Neuen Server einrichten“. Wählen Sie auf dem Willkommensbildschirm (er erscheint, wenn Sie noch keine Workspaces haben) Neuen Server einrichten.
  2. SSH-Daten eingeben. Serveradresse, Port (Standard 22), SSH-Benutzer und entweder einen privaten Schlüssel (einfügen, mit optionaler Passphrase) oder ein Passwort.
  3. Host-Key prüfen. Bei der ersten Verbindung zeigt die App den SHA256:…-Fingerprint des Servers an. Bestätigen Sie, dass er zu Ihrem Server passt, und wählen Sie dann Akzeptieren & fortfahren. Vor Ihrer Bestätigung werden keine Zugangsdaten gesendet — das schützt vor einem Man-in-the-Middle. Der Fingerprint wird für das nächste Mal gespeichert.
  4. Installation konfigurieren. Wählen Sie Feature-Pakete (E-Mail-Client, Marketing, KI), Ihren Provider für den E-Mail-Versand (Owlat MTA, Resend oder SES), optional einen KI-Provider, Ihr Admin-Konto und — für den Fernzugriff — eine öffentliche Domain.
  5. Provisionieren. Die App führt die Installation aus und streamt den Fortschritt in eine animierte Zeitleiste: verbinden → Server prüfen → Docker installieren (falls nötig) → Owlat holen → Stack starten → Backend deployen → Admin-Konto anlegen. Ein aufklappbares Server-Log zeigt die Rohausgabe, wenn Sie Details möchten.
  6. Workspace öffnen. Wenn alles fertig ist, klicken Sie auf Workspace öffnen — die App verbindet sich über den normalen Browser-Anmelde-Handshake mit der neuen Instanz.

Fernzugriff

Standardmäßig ist die Installation nur über localhost erreichbar — also auf der Maschine selbst, was zum Testen genügt, aber nicht für den täglichen Gebrauch vom Laptop aus. Um sie erreichbar zu machen, geben Sie im Konfigurationsschritt eine öffentliche Domain an.

Damit wird der Stack per HTTPS unter drei Subdomains ausgeliefert (die Konvention aus Caddyfile.example):

SubdomainLiefert
owlat.<domain>die Web-App
api.<domain>das Convex-Sync-Backend (WebSocket + HTTP)
rest.api.<domain>Convex-HTTP-Actions (Auth, Webhooks, Tracking)

Wenn Sie eine Domain angeben, erzeugt der Installer automatisch ein Caddyfile und aktiviert das tls-Profil — Caddy stellt beim ersten Start Let's-Encrypt-Zertifikate aus.

DNS + Ports liegen in Ihrer Verantwortung

Legen Sie vor der Provisionierung mit einer Domain A-Records für owlat., api. und rest.api.<ihre-domain> an, die auf den Server zeigen, und stellen Sie sicher, dass Port 80 und 443 offen sind. Caddy kann keine Zertifikate ausstellen, solange DNS nicht auf die Maschine auflöst.

Wie es funktioniert

Die Desktop-App hält die aktive SSH-Sitzung nativ (Rust, via ssh2) und implementiert die Installation nie neu — sie steuert das vorhandene owlat quickstart mit maschinenlesbarem Fortschritt:

  • OWLAT_PROGRESS=json lässt den Installer pro Schritt ein strukturiertes Event ausgeben; die App liest diese aus dem SSH-Stream, um die Zeitleiste zu steuern, und zeigt alles Übrige als Roh-Log.
  • Die von Ihnen eingegebene Konfiguration wird in eine Datei .owlat-setup.json auf dem Server geschrieben und über den --config-Pfad des Installers eingelesen (vollständig nicht-interaktiv).
  • Der Installer spricht auf der Maschine immer über localhost mit dem Backend, sodass eine Domain-Installation auch dann korrekt provisioniert, wenn DNS/TLS noch nicht aktiv sind.

Sicherheit

  • Zugangsdaten werden erst gesendet, nachdem Sie den Host-Key akzeptiert haben, für die Dauer der Sitzung im Speicher gehalten und nicht ins Log geschrieben.
  • Die nativen SSH-Kommandos vertrauen der mitgelieferten eigenen Oberfläche der App (dieselbe Vertrauensstufe wie der Keychain-Zugriff, den die App ohnehin nutzt). Die App lädt niemals entfernte Web-Inhalte in ihr Fenster.

Fehlerbehebung

  • „Host key has CHANGED“ — der Server hat einen anderen Schlüssel präsentiert als beim letzten Mal. Fahren Sie nur fort, wenn Sie den Grund kennen (z. B. weil Sie die Maschine neu aufgesetzt haben); andernfalls brechen Sie ab und gehen der Sache nach.
  • Ein Schritt schlägt fehl — öffnen Sie das Server-Log in der Zeitleiste, um den zugrunde liegenden Fehler zu sehen. Die Schritte sind idempotent: Sobald die Ursache behoben ist, können Sie gefahrlos von vorn beginnen und erneut ausführen.
  • Instanz nach der Installation nicht erreichbar — prüfen Sie, ob die drei DNS-A-Records auf den Server auflösen und 80/443 offen sind, und geben Sie Caddy dann eine Minute Zeit, die Zertifikate auszustellen.
Sie bauen aus dem Quellcode?

Die Ferninstallation führt den Container ghcr.io/wolvesdotink/setup aus; ein Build aus dem Quellcode muss dieses Image daher aus derselben Revision wie die Desktop-App veröffentlichen.