Selbst betreiben
wave-mesh installieren
Ein Wave besteht aus einem Control-Server mit Relay und Datenbank, die du im eigenen Kubernetes-Cluster betreibst, und dem Client auf jedem Gerät. Diese Anleitung führt durch beides.
Noch nicht öffentlich
Quellcode, Container-Images und Client-Binaries von wave-mesh sind derzeit noch nicht öffentlich. Schreib uns, wenn du wave-mesh selbst betreiben möchtest, dann bekommst du Zugang.
Zugang anfragenVoraussetzungen
Ein Kubernetes-Cluster; ein einzelner Server mit k3s genügt. Der Cluster braucht einen Ingress-Controller mit TLS und eine öffentliche IP-Adresse, die UDP auf Port
3478für STUN annimmt.Zwei Namen für den Control-Server und das Relay, etwa
control.example.comundrelay.example.com.Optional eine DNS-Zone, die dir gehört, für Gerätenamen und Zertifikate. Unterstützt sind Cloudflare, Hetzner, IONOS und INWX; ohne Zugangsdaten geht es auch, dann legst du TXT-Records selbst an.
Control-Server, Relay und Datenbank
Kopiere das Overlay
prodund passe drei Stellen an, die zusammengehören: die Namen iningress.yaml,WAVE_BASE_URLund die STUN-Adresse inWAVE_RELAYS. AusWAVE_BASE_URLentstehen Anmeldelinks und Weiterleitungen, deshalb muss der Name mit dem Ingress übereinstimmen.In
secret.envstehen das Datenbank-Passwort und die Verbindungsadresse. Sind die Container-Images privat, gehört daneben einedockerconfig.jsonmit Lesezugriff auf GHCR. Beide Dateien bleiben außerhalb von Git.$ cp -r deployment/server/overlays/prod deployment/server/overlays/mywave$ cd deployment/server/overlays/mywave$ cp secret.env.example secret.env # fill in, mode 600$ kubectl apply -k .STUN-Adresse eintragen
Die STUN-Adresse in
WAVE_RELAYSmuss eine IP-Adresse sein, kein Name. Sie steht fest, sobald der Service des Relays eine öffentliche Adresse bekommen hat. Trag sie ein und wende das Overlay erneut an.$ kubectl -n wave-mesh get svc wave-relay-stunErstes Konto anlegen
Eine Registrierungsseite gibt es absichtlich nicht: Konten legt der Betreiber an. Das Kommando fragt das Passwort zweimal ab, mindestens zwölf Zeichen.
$ kubectl -n wave-mesh exec -it deploy/wave-control -- \bun apps/control/src/admin.ts set-password you@example.comClient installieren
Der Client ist ein einzelnes Binary für Linux, macOS und Windows, jeweils für amd64 und arm64.
installkopiert es nach/usr/local/bin, legt die Gruppewavean und startet Dienst und Tray-Icon. Danach braucht der Alltag keinsudomehr.Unter Windows entpackst du das ZIP-Archiv und führst in einer Konsole mit Administratorrechten
wave.exe installaus.$ tar xzf wave-linux-amd64.tar.gz$ sudo ./wave installAnmelden und verbinden
wave loginnennt deinen Control-Server und zeigt einen Link zum Anmelden. Danach verbindetwave up, undwave statuszeigt live, über welchen Pfad jedes Gerät erreicht wird. Ein Gerät kann beliebig vielen Waves beitreten.$ wave login https://control.example.com$ wave up$ wave statusNamen und Zertifikateoptional
Trägt ein Wave ein DNS-Suffix, das dir gehört, bekommen seine Geräte Namen darunter und auf Wunsch Let's-Encrypt-Zertifikate. Der Provider wird einmal je Wave festgelegt; danach holt
wave certdas Zertifikat auf dem Gerät, und der Dienst erneuert es selbst. Der private Schlüssel verlässt das Gerät nie.Für einen Provider-Token braucht der Server
WAVE_DNS_SECRET(32 Bytes, base64), damit der Token verschlüsselt abgelegt wird. Vorgabe ist das Staging-Verzeichnis von Let's Encrypt; echte Zertifikate gibt es mitWAVE_ACME_DIRECTORY.Mit dem Provider
manualfunktioniert das bei jedem Hoster, dann braucht aber auch jede Erneuerung einen Menschen, der den TXT-Record anlegt.$ kubectl -n wave-mesh exec -it deploy/wave-control -- \bun apps/control/src/admin.ts set-dns-provider mywave cloudflare$ wave cert --hook 'systemctl reload caddy'Dienste aus einem Kubernetes-Clusteroptional
Ein Connector bringt interne Dienste eines Clusters in den Wave, ohne eingehenden Port. Er meldet sich mit einem wiederverwendbaren Schlüssel an. Danach genügt ein gewöhnlicher Ingress mit
ingressClassName: wave, und jedes Gerät im Wave erreicht den Dienst unter seinem Namen.$ kubectl -n wave-mesh exec deploy/wave-control -- \bun apps/control/src/admin.ts auth-key mywave connector --reusable$ cd deployment/cluster/overlays/example$ cp secret.env.example secret.env # paste the key$ kubectl apply -k .Updates
Der Dienst aktualisiert sich selbst: Der Control-Server bietet neue Releases an, der Client installiert nur, was mit dem Release-Schlüssel signiert ist, und geht von allein zurück, wenn die neue Fassung keinen Server erreicht. Wer nicht warten will, installiert sofort.
$ wave version$ wave update
Lieber einrichten lassen?
Wir installieren wave-mesh in der Cloud deines Unternehmens, binden Cluster und Geräte an und übernehmen auf Wunsch Updates und Betrieb.
Zu den Preisen