
Soketi einfach selbst hosten
Yulei ChenSoketi ist ein schneller, Open-Source WebSocket Server, der voll kompatibel mit dem Pusher-Protokoll ist. Wenn du Pusher oder Ably für Echtzeit-Features nutzt, weißt du wie schnell sich die Per-Message-Kosten summieren. Mit Soketi bekommst du unbegrenzte Messages auf deiner eigenen Infrastruktur.
Sliplane ist eine Managed Container Platform, die Self-Hosting einfach macht. Mit One-Click Deployment hast du Soketi in Minuten am Laufen - kein Server-Setup, keine Reverse-Proxy-Config, keine Infrastruktur zum Verwalten.
Voraussetzungen
Vor dem Deployment brauchst du einen Sliplane Account (kostenlose Testversion verfügbar).
Schnellstart
Sliplane bietet One-Click Deployment mit Presets.
- Klick auf den Deploy-Button oben
- Wähl ein Projekt aus
- Wähl einen Server aus (bei Neuanmeldung bekommst du einen 48-Stunden-Testserver gratis)
- Klick auf Deploy!
Über das Preset
Das One-Click Deployment oben nutzt Sliplanes Soketi-Preset. Das ist enthalten:
- Debian-basiertes Image (
quay.io/soketi/soketi:1.6-16-debian) für Stabilität - Vorkonfigurierte App-ID, Key und Secret - du kannst sofort connecten
- Kein persistenter Storage nötig, da Soketi stateless ist (Channel-State lebt im Memory)
- HTTPS-Schema standardmäßig konfiguriert (Sliplane übernimmt die SSL-Terminierung)
Soketi ist lightweight und läuft gut auch auf kleinen Servern. Eine einzelne Instanz kann tausende gleichzeitige WebSocket-Connections handeln.
Nächste Schritte
Sobald Soketi auf Sliplane läuft, erreichst du es über die von Sliplane bereitgestellte Domain (z.B. soketi-xxxx.sliplane.app).
Deine App verbinden
Um dich von deinem Frontend oder Backend zu verbinden, nutz das Pusher Client SDK mit deinen Soketi-Credentials. Hier ein JavaScript-Beispiel:
import Pusher from "pusher-js";
const pusher = new Pusher("YOUR_APP_KEY", {
wsHost: "soketi-xxxx.sliplane.app",
wsPort: 443,
wssPort: 443,
forceTLS: true,
disableStats: true,
enabledTransports: ["ws", "wss"],
cluster: "default",
});
Ersetze YOUR_APP_KEY mit dem SOKETI_DEFAULT_APP_KEY-Wert aus den Umgebungsvariablen deines Services in Sliplane, und soketi-xxxx.sliplane.app mit deiner tatsächlichen Domain.
Umgebungsvariablen
Das sind die wichtigsten Umgebungsvariablen, die du anpassen kannst:
| Variable | Beschreibung |
|---|---|
SOKETI_DEFAULT_APP_ID | Eindeutige ID deiner App |
SOKETI_DEFAULT_APP_KEY | Öffentlicher Key, den Clients zum Connecten nutzen |
SOKETI_DEFAULT_APP_SECRET | Geheimer Key für serverseitige API-Aufrufe |
SOKETI_DEBUG | Auf 1 setzen für ausführliches Logging |
SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES | Auf true setzen um Client-zu-Client Messaging zu erlauben |
Skalierung mit Redis
Standardmäßig speichert Soketi Channel- und Presence-Daten im Memory. Wenn du horizontal skalieren willst (mehrere Soketi-Instanzen), kannst du ein Redis-Backend hinzufügen, indem du diese zusätzlichen Umgebungsvariablen setzt:
| Variable | Beispiel |
|---|---|
SOKETI_ADAPTER_DRIVER | redis |
SOKETI_CACHE_DRIVER | redis |
SOKETI_QUEUE_DRIVER | redis |
SOKETI_DB_REDIS_HOST | your-redis-host |
SOKETI_DB_REDIS_PORT | 6379 |
Logging
Soketi loggt standardmäßig nach STDOUT, was gut mit Sliplanes integriertem Log-Viewer funktioniert. Setz SOKETI_DEBUG=1 für detaillierte Ausgabe bei Connection-Problemen. Für allgemeine Docker-Log-Tipps schau dir unseren Post zu Docker Logs an.
Kostenvergleich
Du kannst Soketi auch bei anderen Cloud-Anbietern selbst hosten. Hier ein Preisvergleich der gängigsten:
| Anbieter | vCPU | RAM | Disk | Monatliche Kosten | Anmerkung |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 (~$10.65) | Flatrate, 1 TB Bandwidth, SSL inklusive |
| Fly.io | 2 | 2 GB | 40 GB | ~$18 | Disk und Bandwidth separat berechnet |
| Render | 1 | 2 GB | 40 GB | ~$35 | 100 GB Bandwidth, Disk separat berechnet |
| Railway | 2 | 2 GB | 40 GB | ~$67 + $20 Plan | Pro-Plan-Minimum, nutzungsbasiert, Bandwidth separat |
Klick hier um zu sehen, wie diese Zahlen berechnet wurden.
(Angenommen eine durchgehend laufende Instanz mit 730 Stunden/Monat)
- Sliplane: Flat €9/Monat für den Base Server. Unbegrenzte Services auf dem gleichen Server, 1 TB Egress und SSL inklusive.
- Fly.io:
shared-cpu-2x2 GB = $11.83/Mo + 40 GB Volume × $0.15/GB = $6 -> ~$17.83/Mo. Egress separat berechnet ($0.02/GB in EU). - Render: Nächste Übereinstimmung ist Standard ($25, 1 vCPU / 2 GB) plus 40 GB Disk × $0.25/GB = $10 -> ~$35/Mo. Upgrade auf Pro (2 vCPU / 4 GB) kostet $85/Mo + Disk.
- Railway (Pro Plan): CPU 2 × $0.00000772/s × 2,628,000 s = $40.57; RAM 2 × $0.00000386/s × 2,628,000 s = $20.29; Volume 40 × $0.00000006/s × 2,628,000 s = $6.31 -> ~$67/Mo Compute, plus $20/Mo Pro-Plan-Minimum und $0.05/GB Egress.
Bandwidth-Kosten können bei nutzungsbasierten Anbietern schnell steigen. Nutz unser Bandwidth-Kostenvergleichstool um zu sehen, was dein Egress bei jeder Platform kosten würde.
FAQ
Wann sollte ich Soketi statt Pusher nutzen?
Soketi lohnt sich bei hohem Message-Volumen oder wenn du planbare Kosten brauchst. Pusher berechnet pro Message und pro Connection, was bei Apps mit vielen aktiven Usern schnell teuer wird. Mit Soketi auf Sliplane zahlst du flat €9/Monat, egal wie viele Messages du sendest.
Kann ich meinen bestehenden Pusher-Client-Code mit Soketi nutzen?
Ja. Soketi implementiert das vollständige Pusher-Protokoll. Du kannst wechseln, indem du die Host-Konfiguration in deinem Pusher Client SDK änderst. Keine Code-Änderungen nötig, außer den Connection-Parametern (Host, Key, Secret).
Wie update ich Soketi?
Änder den Image-Tag in deinen Service-Einstellungen auf Sliplane und redeploy. Prüf Quay.io für die neueste stabile Version. Bleib bei der debian-Variante für die beste Kompatibilität.
Unterstützt Soketi Presence Channels und Webhooks?
Ja. Soketi unterstützt alle Pusher-Channel-Typen: Public, Private, Presence und Encrypted Channels. Es unterstützt auch Webhooks für Channel-Events. Konfiguriere Webhooks durch Setzen von SOKETI_DEFAULT_APP_WEBHOOKS mit einem JSON-Array von Webhook-URLs.
Wie viele gleichzeitige Connections kann Soketi handeln?
Auf einem 2 vCPU / 2 GB Server kann Soketi problemlos 5.000+ gleichzeitige WebSocket-Connections handeln. Das tatsächliche Limit hängt von deinem Message-Durchsatz und Payload-Größen ab. Für höhere Last kannst du vertikal skalieren (größerer Server) oder horizontal (mehrere Instanzen mit Redis).