[{"data":1,"prerenderedAt":116},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-en-centrifugo":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"marketplace-app-en-centrifugo",{"slug":9,"slugs":10,"categorySlugs":11,"name":16,"description":17,"phase":18,"unavailableReason":19,"docsUrl":20,"logo":21,"github":22,"tagline":23,"longDescription":24,"features":25,"useCases":32,"steps":42,"faq":58,"specs":71,"compatibleOs":82,"relatedApps":83,"relatedPosts":109,"category":113},"centrifugo",{"fr":9,"en":9,"ar":9,"es":9},{"fr":12,"en":13,"ar":14,"es":15},"developpement","development","التطوير","desarrollo","Centrifugo","Open-source real-time messaging server: WebSocket connections and a publish API for your applications, on your VPS.",2,"awaiting_qa","https:\u002F\u002Fservorbit.com\u002Fblog\u002Fself-host-centrifugo-vps-real-time-server","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6236442?v=4","https:\u002F\u002Fgithub.com\u002Fcentrifugal\u002Fcentrifugo","Centrifugo — real-time on your VPS: WebSocket, publish API, JWT tokens and a password-protected admin console, with no third-party service.","Centrifugo is an open-source real-time messaging server (Apache-2.0 license), written in Go. It takes care of the hardest part of real-time: keeping thousands of WebSocket connections open and delivering to each one the messages that concern it. Your application stays in PHP, Python, Node.js, Go or Ruby, and only makes an HTTP call to publish.\n\nThe principle is simple. Your backend signs a JWT for each user; the browser or mobile app uses it to open a connection on `wss:\u002F\u002Fyour-domain\u002Fconnection\u002Fwebsocket`. When something happens — a paid order, a chat message, an alert — your backend calls the `\u002Fapi\u002Fpublish` API with its key, and Centrifugo pushes the message to every subscriber of the channel. It is a self-hosted alternative to Pusher, Ably or PubNub, with no per-message billing.",[26,27,28,29,30,31],"Real-time connections — WebSocket, with official client SDKs for JavaScript, Dart\u002FFlutter, Swift, Java\u002FAndroid, Go and Python.","Publish API — one HTTP call with the `X-API-Key` header is enough to send a message to a channel, from any language.","Token authentication — your backend signs JWTs (HS256); a connection without a valid token is refused.","Channels and server-side subscriptions — a user's channel list can be carried by their token, with no extra client code.","Admin console — node status, number of connected clients and API commands from the browser, protected by a password.","Lightweight — a single Go binary, a few tens of MB of RAM at rest.",[33,36,39],{"title":34,"body":35},"Live notifications","Tell a customer the moment their order is paid or their ticket gets a reply, without them reloading the page.",{"title":37,"body":38},"Real-time chat and comments","Add messaging or instant comments to your web or mobile app; your backend keeps the logic and the database.",{"title":40,"body":41},"Dashboards that update themselves","Push counters, delivery statuses or prices to open screens instead of polling them every second.",[43,46,49,52,55],{"title":44,"body":45},"Create the VPS and choose the address","Order an Ubuntu 24.04 VPS; 1 GB of RAM is enough to start. Centrifugo requires a domain: browsers connect to it over `wss:\u002F\u002F` and your backend calls its API over HTTPS, on a stable name. It opens on a subdomain of one of your domains, or on the VPS's free subdomain (centrifugo.{dns_slug}.servorbit-dns.com), HTTPS included. No need to buy a domain name.",{"title":47,"body":48},"Install Centrifugo from the Marketplace","In your client area, select Centrifugo, choose the address and click Install. The script deploys the official container, generates the console password, the server API key and the token signing key, then configures the nginx reverse proxy over HTTPS, WebSocket included.",{"title":50,"body":51},"Log in for the first time","Open https:\u002F\u002Fyour-domain: the admin console asks for a password. Enter the one shown in your client area. The home page shows the node version and the number of connected clients.",{"title":53,"body":54},"Retrieve your backend keys","Connect to the VPS over SSH and read `\u002Fopt\u002Fcentrifugo\u002F.env`: `ENCRYPTION_KEY` is the server API key (`X-API-Key` header) and `ENCRYPTION_KEY_HEX64` is the HMAC key that signs connection tokens. Store them in your application's secrets, never in code sent to the browser.",{"title":56,"body":57},"Publish and connect your clients","Your backend signs an HS256 JWT (`sub` = user ID, `channels` = channels to follow) and hands it to the browser, which connects with the `centrifuge` SDK on `wss:\u002F\u002Fyour-domain\u002Fconnection\u002Fwebsocket`. Add your site's origin to `CENTRIFUGO_CLIENT_ALLOWED_ORIGINS` in `\u002Fopt\u002Fcentrifugo\u002Fdocker-compose.yml`, restart with `docker compose up -d`, then publish with a POST to `https:\u002F\u002Fyour-domain\u002Fapi\u002Fpublish`.",[59,62,65,68],{"q":60,"a":61},"What is the difference between Centrifugo and Pusher or Ably?","The service is the same: your backend publishes, subscribed browsers receive the message live. Pusher and Ably are hosted services billed by connections and messages; Centrifugo runs on your VPS, with no per-message billing, and your data never leaves your server. In return, running the server is up to you.",{"q":63,"a":64},"Do I need a domain name for Centrifugo?","Yes. Browsers connect to it over wss:\u002F\u002F and your backend calls its API over HTTPS: Centrifugo must answer on a stable name with a certificate. No need to buy one: every ServOrbit VPS comes with a free subdomain (centrifugo.{dns_slug}.servorbit-dns.com) with HTTPS. You can also use a subdomain of one of your domains.",{"q":66,"a":67},"How do I log in for the first time?","Open https:\u002F\u002Fyour-domain and enter the password shown in your client area: the admin console does not ask for a username. The server API key and the token signing key are in \u002Fopt\u002Fcentrifugo\u002F.env (ENCRYPTION_KEY and ENCRYPTION_KEY_HEX64).",{"q":69,"a":70},"Why can't my website connect?","By default, Centrifugo refuses any browser connection whose origin is not allowed. Add your site's address, for example https:\u002F\u002Fapp.example.com, to CENTRIFUGO_CLIENT_ALLOWED_ORIGINS in \u002Fopt\u002Fcentrifugo\u002Fdocker-compose.yml, then restart with docker compose up -d. Also check that the token is signed with ENCRYPTION_KEY_HEX64 and has not expired.",{"ram":72,"cpu":73,"disk":74,"stack":75,"port":78,"license":79,"version":80,"os":81},"1 GB minimum","1 vCPU","10 GB",[76,77,16],"Docker","Go","8113","Apache-2.0","v6.10.2","Ubuntu 24.04",[],[84,92,101],{"name":85,"slug":85,"categorySlug":86,"categoryName":87,"categoryColor":88,"logo":89,"tagline":90,"description":91},"ntfy","monitoring-observability","Monitoring & Observability","text-amber-400 bg-amber-500\u002F10",null,"Self-hosted push notifications — send alerts from scripts, CI\u002FCD and monitoring tools with a plain HTTP PUT\u002FPOST. Under 30 MB RAM, no database.","Self-hosted push notification server: send alerts from any script, CI\u002FCD pipeline or monitoring tool with a plain HTTP PUT\u002FPOST — no API key, no subscription, no rate limits.",{"name":93,"slug":94,"categorySlug":95,"categoryName":96,"categoryColor":97,"logo":98,"tagline":99,"description":100},"Redis Stack","redis-stack","databases","Databases","text-blue-400 bg-blue-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fredis","In-memory store — caching, sessions, queues and real-time data structures.","In-memory store for caching, sessions, queues and real-time data structures.",{"name":102,"slug":103,"categorySlug":13,"categoryName":104,"categoryColor":105,"logo":106,"tagline":107,"description":108},"Supabase","supabase","Development","text-warning bg-warning\u002F10","https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fselfhst\u002Ficons\u002Fsvg\u002Fsupabase.svg","The open-source Firebase alternative — a full Postgres backend with instant APIs, auth and a dashboard, self-hosted from Supabase's own official stack.","Self-hosted open-source Firebase alternative — a full Postgres backend with instant REST APIs, authentication and the Studio dashboard, deployed from Supabase's own official Docker stack.",[110,111,112],"self-host-ntfy-vps","heberger-redis-vps","heberger-supabase-vps",{"key":12,"slug":13,"name":104,"objective":114,"icon":115,"color":105},"Kick off a software project quickly.","dev",1794101738093]