Self-hosting Soketi the easy way

Self-hosting Soketi the easy way

Yulei Chen - Content-Engineerin bei sliplane.ioYulei Chen
5 min

Soketi is a fast, open-source WebSocket server that's fully compatible with the Pusher protocol. If you're using Pusher or Ably for real-time features, you know how quickly per-message pricing adds up. With Soketi, you get unlimited messages on your own infrastructure.

Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get Soketi up and running in minutes - no server setup, no reverse proxy config, no infrastructure to maintain.

Prerequisites

Before deploying, ensure you have a Sliplane account (free trial available).

Quick start

Sliplane provides one-click deployment with presets.

SliplaneDeploy Soketi >
  1. Click the deploy button above
  2. Select a project
  3. Select a server (If you just signed up you get a 48-hour free trial server)
  4. Click Deploy!

About the preset

The one-click deploy above uses Sliplane's Soketi preset. Here's what it includes:

  • Debian-based image (quay.io/soketi/soketi:1.6-16-debian) for stability
  • Pre-configured app ID, key, and secret so you can connect immediately
  • No persistent storage needed since Soketi is stateless (channel state lives in memory)
  • HTTPS scheme configured by default (Sliplane handles SSL termination)

Soketi is lightweight and runs well even on small servers. A single instance can handle thousands of concurrent WebSocket connections.

Next steps

Once Soketi is running on Sliplane, access it using the domain Sliplane provided (e.g. soketi-xxxx.sliplane.app).

Connecting your app

To connect from your frontend or backend, use the Pusher client SDK with your Soketi credentials. Here's a JavaScript example:

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",
});

Replace YOUR_APP_KEY with the SOKETI_DEFAULT_APP_KEY value from your service's environment variables in Sliplane, and soketi-xxxx.sliplane.app with your actual domain.

Environment variables

These are the key environment variables you can customize:

VariableDescription
SOKETI_DEFAULT_APP_IDYour app's unique identifier
SOKETI_DEFAULT_APP_KEYPublic key used by clients to connect
SOKETI_DEFAULT_APP_SECRETSecret key used for server-side API calls
SOKETI_DEBUGSet to 1 for verbose logging
SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGESSet to true to allow client-to-client messaging

Scaling with Redis

By default, Soketi stores channel and presence data in memory. If you need horizontal scaling (multiple Soketi instances), you can add a Redis backend by setting these additional environment variables:

VariableExample
SOKETI_ADAPTER_DRIVERredis
SOKETI_CACHE_DRIVERredis
SOKETI_QUEUE_DRIVERredis
SOKETI_DB_REDIS_HOSTyour-redis-host
SOKETI_DB_REDIS_PORT6379

Logging

Soketi logs to STDOUT by default, which works well with Sliplane's built-in log viewer. Set SOKETI_DEBUG=1 to get detailed output when troubleshooting connection issues. For general Docker log tips, check out our post on how to use Docker logs.

Cost comparison

You can also self-host Soketi with other cloud providers. Here is a pricing comparison for the most common ones:

ProvidervCPURAMDiskMonthly CostNote
Sliplane22 GB50 GB€22.80Flat rate, free egress, SSL included
Fly.io22 GB40 GB~$17.83Disk and bandwidth billed separately
Render12 GB40 GB~$355 GB bandwidth included on Hobby; disk billed separately
Railway22 GB40 GBUp to ~$66Usage-based; Pro required for a 40 GB volume
Click here to see how these numbers were calculated.

Prices checked July 19, 2026. Assuming an always-on instance running 730 hrs/month, Germany/Amsterdam where regional pricing applies, excluding VAT and egress.

  • Sliplane: Base server with 2 vCPU, 2 GB RAM and 20 GB storage = €17.80/month; the 50 GB storage tier adds €5 -> €22.80/month. Unlimited services, free egress and SSL are included.
  • Fly.io: in Amsterdam, shared-cpu-2x with 2 GB RAM = $11.83/month + 40 GB volume × $0.15/GB = $6 -> ~$17.83/month. Egress is billed separately at $0.02/GB in Europe.
  • Render: closest match is Standard ($25, 1 vCPU / 2 GB) plus 40 GB disk × $0.25/GB = $10 -> ~$35/month. A Hobby workspace includes 5 GB bandwidth, then charges $0.15/GB. Stepping up to Pro compute (2 vCPU / 4 GB) costs $85/month plus disk.
  • Railway (Pro plan): at full resource usage: CPU 2 × $20/vCPU/month = $40; RAM 2 × $10/GB/month = $20; volume 40 × $0.15/GB/month = $6 -> up to ~$66/month. Actual CPU and RAM charges depend on usage. A 40 GB volume requires Pro; its $20/month subscription is a minimum commitment that counts toward usage, not an additional charge. Egress is $0.05/GB.

Bandwidth costs can add up fast on usage-based providers. Use our bandwidth cost comparison tool to see what your egress would cost on each platform.

Bandwidth Cost Growth Comparison

Move the slider or play the animation to compare monthly egress costs. Sliplane stays free as traffic grows.

0 GB
Sliplane
Free
Fly.io
$0.00
Railway
$0.00
Render
$0.00

Egress only, excluding compute and storage. Based on public US/European rates checked July 19, 2026. Render includes its first 5 GB per month. Sliplane egress is free, subject to the Fair Use Policy.

FAQ

When should I use Soketi instead of Pusher?

Soketi makes sense when you have high message volumes or need predictable pricing. Pusher charges per message and per connection, which can get expensive fast for apps with many active users. With Soketi on Sliplane, you pay a flat €9/month regardless of how many messages you send.

Can I use my existing Pusher client code with Soketi?

Yes. Soketi implements the full Pusher protocol, so you can switch by changing the host configuration in your Pusher client SDK. No code changes needed beyond updating the connection parameters (host, key, secret).

How do I update Soketi?

Change the image tag in your service settings on Sliplane and redeploy. Check Quay.io for the latest stable version. Stick with the debian variant for the best compatibility.

Does Soketi support presence channels and webhooks?

Yes. Soketi supports all Pusher channel types: public, private, presence, and encrypted channels. It also supports webhooks for channel events. Configure webhooks by setting SOKETI_DEFAULT_APP_WEBHOOKS with a JSON array of webhook URLs.

How many concurrent connections can Soketi handle?

On a 2 vCPU / 2 GB server, Soketi can comfortably handle 5,000+ concurrent WebSocket connections. The actual limit depends on your message throughput and payload sizes. For higher loads, you can scale vertically (bigger server) or horizontally (multiple instances with Redis).

Self-host Soketi now - It's easy!

Sliplane gives you a Pusher-compatible WebSocket server without the per-message pricing.