Как установить Runa на свой сервер
Инструкция для пользователя с небольшим опытом работы с Linux. Основной пример — отдельный сервер Ubuntu 24.04 и свой поддомен. В конце вы проверите сообщения и звонки, а затем подключите настольный клиент.
1. Подготовьте сервер и домен
- Нужны Linux x86_64 или arm64, минимум 4 ГБ RAM и 20 ГБ свободного места. Запишите публичный IP сервера.
- Создайте DNS-запись A для поддомена, например
chat.example.com, с этим IP. Командаnslookup chat.example.comдолжна показать тот же адрес. - Разрешите входящие TCP 80 и 443 в панели хостинга и на маршрутизаторе. Для звонков позже понадобятся TCP/UDP 3478, UDP 49160–49200, TCP 7881 и UDP 7882.
Не открывайте в интернет MongoDB 27017, Redis 6379, API 8000 и веб-порт 8080.
2. Установите Docker
На Ubuntu следуйте официальной инструкции Docker для установки через репозиторий. Для другой ОС выберите её на странице установки. Проверьте команды на сервере:
docker --version
docker compose version
sudo docker run hello-worldЕсли Docker без sudo отвечает permission denied, выполните sudo usermod -aG docker "$USER", полностью выйдите из SSH и войдите снова. В группу Docker добавляйте только доверенного администратора.
Проверьте также command -v curl openssl python3. Отсутствующие программы установите через пакетный менеджер ОС.
3. Скачайте и проверьте релиз
На странице «Развернуть у себя» выберите ОС и скопируйте команды раздела «Скачайте и проверьте релиз» в SSH-терминал. Они загрузят архив, проверят SHA-256, распакуют файлы и перейдут в каталог Runa. Затем выполните:
python3 scripts/verify-release-evidence.py .Если проверка не проходит, не запускайте архив. Скачайте его заново. SHA-256 выявляет повреждение, но до появления подписи издателя сама по себе не доказывает происхождение файла.
4. Создайте настройки
В каталоге Runa запустите установщик:
./install-self-hosted.shПервый запуск создаст файл .env.self-hosted со случайными секретами и остановится с кодом 2 — это ожидаемо. Откройте nano .env.self-hosted и укажите свои значения:
DOMAIN=chat.example.com
CORS_ORIGINS=https://chat.example.com
RUNA_BIND_IP=127.0.0.1
RUNA_ADMIN_EMAIL=you@example.com
TURN_HOST=chat.example.com
TURN_EXTERNAL_IP=ВАШ_ПУБЛИЧНЫЙ_IP
LIVEKIT_URL=wss://chat.example.com/livekitАдрес 127.0.0.1 подходит, когда HTTPS-прокси и Runa находятся на одном сервере. Не меняйте сгенерированные секреты. Проверьте, что примерные значения не остались: grep -nE 'CHANGE_ME|example\.com|203\.0\.113\.10' .env.self-hosted.
Никому не отправляйте файл .env.self-hosted: в нём находятся пароли и ключи.
5. Запустите Runa и HTTPS
Повторите запуск установщика и проверьте локальный адрес:
./install-self-hosted.sh
curl -fsS http://127.0.0.1:8080/healthПервый рабочий запуск может занять несколько минут. Сохраните показанный в терминале одноразовый пароль администратора в менеджере паролей. Логин по умолчанию — runa-admin.
Для HTTPS на Ubuntu установите Caddy по официальной инструкции. В /etc/caddy/Caddyfile укажите свой домен:
chat.example.com {
reverse_proxy 127.0.0.1:8080
}Примените конфигурацию:
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
curl -fsS https://chat.example.com/healthЗатем откройте https://chat.example.com в браузере на другом устройстве. Не игнорируйте предупреждение о недействительном сертификате. Если у вас уже есть Nginx или прокси NAS, настройте HTTPS и направление на 127.0.0.1:8080 в нём; устанавливать Caddy дополнительно не нужно.
6. Проверьте сообщения и звонки
Войдите на своём домене под runa-admin, создайте пробного пользователя и обменяйтесь сообщениями с двух устройств. Для звонков убедитесь, что TURN_EXTERNAL_IP — публичный адрес сервера, откройте медиапорты из шага 1 и выполните:
docker compose --env-file .env.self-hosted -f docker-compose.self-hosted.yml --profile calls up -dПроверьте аудио- и видеозвонок из разных сетей, например домашней и мобильной. Проверка в одной Wi-Fi-сети не подтверждает работу извне.
7. Подключите настольный клиент
После выпуска подписанного и проверенного установщика установите Runa для Windows или macOS. На экране входа откройте «Другой сервер Runa» либо после входа выберите «Настройки → Сервер подключения». Введите https://chat.example.com без пути и войдите учётной записью вашего сервера. Указывайте только сервер, которому доверяете: его страница будет работать внутри приложения.
Адрес сохранится для следующих запусков. Если свой сервер не открывается, через меню значка Runa выберите «Вернуться на runa.akernel.ru». Старые установщики без этой настройки не подходят для подключения к своему серверу; тестовые неподписанные сборки пока не являются публичным релизом.
8. Сделайте резервную копию
После успешной проверки выполните ./scripts/backup-self-hosted.sh. Храните архив отдельно от сервера и ограничьте доступ: он содержит данные и копию секретов. Повторяйте копирование перед каждым обновлением; подробности — в файле SELF-HOSTED-INSTALL.md внутри скачанного релиза.
Если что-то не работает
- Docker permission denied: переподключитесь по SSH после добавления в группу Docker либо используйте
sudo. - Ошибка SHA-256 или проверки архива: остановитесь, скачайте релиз заново.
- Локальный /health не отвечает: выполните
docker compose --env-file .env.self-hosted -f docker-compose.self-hosted.yml psиdocker compose --env-file .env.self-hosted -f docker-compose.self-hosted.yml logs --tail=80. - Локальный /health работает, домен нет: проверьте DNS, HTTPS-прокси и доступность портов 80/443.
- Сообщения работают, звонки нет: проверьте медиапорты, публичный IP,
LIVEKIT_URLи разрешения микрофона/камеры.
Для обращения за помощью сообщите ОС, версию Docker/Runa, шаг и текст ошибки без секретов. Не присылайте пароли, .env.self-hosted или архив базы.