Установка Centrifugo на Ubuntu 20.04
Кратко: В этой инструкции показано, как быстро установить и запустить Centrifugo — открытый сервер реального времени с поддержкой WebSocket и SockJS на Ubuntu 20.04. Описаны генерация конфигурации, создание systemd-сервиса, запуск и базовые рекомендации по безопасности.

Введение
Centrifugo — бесплатный и открытый сервер обмена сообщениями в реальном времени. Он поддерживает WebSocket и SockJS, может обрабатывать большое количество одновременных подключений и интегрируется с любым языком через HTTP/API. Эта инструкция шаг за шагом покажет установку Centrifugo на сервер под управлением Ubuntu 20.04.
Предусловия
- Сервер с Ubuntu 20.04.
- Настроен root-пароль или учётная запись с привилегиями sudo.
- Базовые навыки работы с терминалом.
Начало работы
Обновите пакеты на сервере перед установкой:
apt-get update -yПосле обновления можно переходить к установке Centrifugo.
Установка Centrifugo
Пакет Centrifugo отсутствует в стандартном репозитории Ubuntu, поэтому скачиваем готовый бинарник из релизов на GitHub. В примере используется версия 2.8.4:
wget https://github.com/centrifugal/centrifugo/releases/download/v2.8.4/centrifugo_2.8.4_linux_amd64.tar.gzРаспакуйте архив:
tar -xvzf centrifugo_2.8.4_linux_amd64.tar.gzПереместите бинарный файл в каталог с исполняемыми файлами:
mv centrifugo /usr/binПроверьте версию:
centrifugo versionОжидаемый вывод примерно такой:
Centrifugo v2.8.4 (Go version: go1.16.3)Генерация и размещение конфигурации
Сгенерируйте файл конфигурации:
centrifugo genconfigКоманда создаст файл config.json в текущем каталоге. Просмотрите его:
cat config.jsonПример содержимого приведённой конфигурации содержит секреты и автоматически сгенерированные ключи. Обязательно запишите админ-пароль из поля admin_password — он потребуется для доступа в веб-интерфейс.
Создайте постоянный каталог для конфигурации и переместите файл туда:
mkdir /etc/centrifugo
mv config.json /etc/centrifugo/config.jsonВажно: храните config.json с ограниченным доступом и резервной копией в безопасном месте.
Создание systemd-сервиса
Создайте файл сервиса:
nano /etc/systemd/system/centrifugo.serviceВставьте следующие строки:
[Unit]
Description=Centrifugo Websocket Server
After=network.target syslog.target
[Service]
LimitNOFILE=30000
ExecStartPre=/usr/bin/centrifugo checkconfig --config /etc/centrifugo/config.json
ExecStart=/usr/bin/centrifugo --config /etc/centrifugo/config.json --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Перезагрузите демона systemd и запустите сервис:
systemctl daemon-reload
systemctl start centrifugo
systemctl enable centrifugoПроверьте статус:
systemctl status centrifugoОжидаемый фрагмент вывода содержит запись о том, что сервис активен и слушает порты.
Проверьте, что процесс слушает порт 8000:
ss -tunelp | grep 8000Доступ к веб-интерфейсу
Откройте в браузере URL:
Вас перенаправит на страницу входа Centrifugo. Введите admin_password, который вы получили при генерации config.json, и нажмите кнопку логина.

После успешной аутентификации откроется панель управления и список нод:

Базовые проверки и отладка
- Убедитесь, что в конфигурации указаны допустимые allowed_origins для браузерных подключений.
- Проверьте логи через journalctl:
journalctl -u centrifugo -f- Если сервис не стартует, проверьте конфигурацию командой:
/usr/bin/centrifugo checkconfig --config /etc/centrifugo/config.jsonРекомендации по безопасности и настройке производства
Важно:
- Откройте порт 8000 только для доверенных источников или используйте реверс-прокси (nginx) с TLS.
- Используйте HTTPS и проксирование websocket через nginx/traefik для шифрования трафика.
- Смените автоматически сгенерированные секреты в config.json на более контролируемые значения или храните секреты в менеджере секретов.
- Ограничьте доступ к файлу конфигурации и бинарнику через права файловой системы.
Пример минимальной конфигурации nginx для проксирования и TLS:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}Замените example.com на ваш домен и настройте сертификаты.
Типичные ошибки и способы их устранения
- Сервис не стартует: проверьте синтаксис config.json и права доступа, запустите checkconfig.
- Порт 8000 недоступен: проверьте firewall (ufw, iptables) и привилегии прослушивания.
- Браузер блокирует подключения: добавьте origin вашего сайта в allowed_origins.
Критерии приёмки
- Centrifugo успешно запускается как systemd-сервис.
- Порт 8000 слушается локально и доступен через настроенный прокси на HTTPS.
- Веб-интерфейс доступен, и вы можете войти под admin_password.
- В конфигурации заданы безопасные значения для секретов или секреты хранятся в менеджере секретов.
Контрольные списки по ролям
Администратор сервера:
- Обновил пакеты и установил бинарник в /usr/bin.
- Создал /etc/centrifugo/config.json и настроил права доступа.
- Настроил systemd-сервис и включил автозапуск.
Разработчик приложения:
- Тестировал подключение WebSocket/SockJS к серверу Centrifugo.
- Убедился, что allowed_origins настроены корректно.
- Протестировал аутентификацию и подписку на каналы.
Специалист по безопасности:
- Настроил TLS через реверс-прокси.
- Проверил хранение секретов и доступ к ним.
- Ограничил доступ к административному интерфейсу.
Мелкая методология развёртывания
- Подготовка машины: обновление пакетов и настройка бэкапа.
- Установка бинарника и проверка версии.
- Генерация конфигурации, смена секретов при необходимости.
- Создание systemd-сервиса, запуск и проверка логов.
- Настройка прокси и TLS для продакшена.
- Мониторинг и резервное копирование конфигурации.
Заключение
Поздравляем — вы установили и запустили Centrifugo на Ubuntu 20.04. Дальше можно интегрировать Centrifugo с вашим приложением, настроить масштабирование и мониторинг. За подробной информацией и продвинутыми сценариями обращайтесь к официальной документации Centrifugo.
Важно: периодически проверяйте обновления Centrifugo и следите за безопасностью секретов в конфигурации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента