In this tutorial, we will show you how to install Centrifugo on Ubuntu 20.04 LTS. For those of you who didn’t know, Centrifugo is a scalable real-time messaging server in a language-agnostic way. It can use as a free alternative to pusher.com services. Centrifugo supports WebSocket and SockJS. Websocket or SockJS connections from application clients (from web browsers or other environments like iOS/Android apps). When you need to deliver an event to your clients in real-time you publish it to Centrifugo API and Centrifugo then broadcasts the event to all connected clients interested in this event (i.e. clients subscribed to the event channel). In other words – this is a user-facing PUB/SUB server.
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo
‘ to the commands to get root privileges. I will show you the step-by-step installation of Centrifugo on an Ubuntu 20.04 (Focal Fossa) server. You can follow the same instructions for Ubuntu 18.04, 16.04, and any other Debian-based distribution like Linux Mint.
Prerequisites
- A server running one of the following operating systems: Ubuntu 20.04, and any other Debian-based distribution like Linux Mint.
- It’s recommended that you use a fresh OS install to prevent any potential issues.
- SSH access to the server (or just open Terminal if you’re on a desktop).
- An active internet connection. You’ll need an internet connection to download the necessary packages and dependencies for Centrifugo.
- A
non-root sudo user
or access to theroot user
. We recommend acting as anon-root sudo user
, however, as you can harm your system if you’re not careful when acting as the root.
Install Centrifugo on Ubuntu 20.04 LTS Focal Fossa
Step 1. First, make sure that all your system packages are up-to-date by running the following apt
commands in the terminal.
sudo apt update sudo apt upgrade
Step 2. Installing Centrifugo on Ubuntu 20.04.
Now we download the latest version Centrifugo packages from Github:
wget https://github.com/centrifugal/centrifugo/releases/download/v5.0.2/centrifugo_5.0.2_linux_amd64.tar.gz tar zxvf centrifugo_5.0.2_linux_amd64.tar.gz
Confirm successful installation by checking the software version:
centrifugo version
Next, we edit the Centrifugo config:
./centrifugo genconfig
Add the following line:
{ "v3_use_offset": true, "token_hmac_secret_key": "145191ff-272a-421b-95af-b006c554813e", "admin_password": "0e539f48-godet-4c3f-afcd-62d0f5cbf9f2", "admin_secret": "b1bb30a7-mei-4dc0-9a88-2b27d8d25abf", "api_key": "e005dbe1-d5d2-464b-a406-e1cc617ea8d0" }
Now run Centrifugo with admin panel enabled:
./centrifugo --config config.json --admin
Accessing Centrifugo web interface admin console:
http://your-server-ip-address:8000
Step 3. Create Systemd Service Unit.
Now we create the systemd
service since it’ll be easy to run the service on booting, starting, and stopping the service too:
nano /lib/systemd/system/centrifugo.service
Add the following line:
[Unit] Description=Centrifugo Websocket Server After=network.target syslog.target [Service] User=[USERNAME] Group=[USERNAME] LimitNOFILE=30000 Environment="CONFIG=/home/[USERNAME]/config.json" ExecStartPre=/home/[USERNAME]/centrifugo checkconfig --config $CONFIG ExecStart=/home/[USERNAME]/centrifugo --config $CONFIG --admin ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -SIGTERM $MAINPID TimeoutStopSec=5 KillMode=control-group RestartSec=2 Restart=always SyslogIdentifier=centrifugo [Install] WantedBy=multi-user.target Alias=centrifugo.service
Save and close, also reload systemd
services:
sudo systemctl daemon-reload sudo systemctl start centrifugo sudo systemctl enable centrifugo
Congratulations! You have successfully installed Centrifugo. Thanks for using this tutorial for installing Centrifugo on Ubuntu 20.04 LTS Focal Fossa system. For additional help or useful information, we recommend you check the official Centrifugo website.