Сегодня я расскажу, как установить простой сервер для видеоконференций. Его можно использовать, чтобы звонить родственникам или знакомым в эти тяжёлые времена, или же просто иметь в виду как запасной вариант на случай перебоев с другими более известными сервисами.

Сервер называется Galene (github). Он был разработан во время пандемии в Парижском университете как инструмент для проведения удалённых занятий. Со временем его возможности расширились, и теперь по функционалу он ближе к Jitsi Meet.

Jitsi Meet — пожалуй, самый известный сервер для видеоконференций. Но он состоит из множества компонентов, более сложен в установке и требует существенно больших ресурсов. Galene, напротив, написан в духе минимализма на языке Go и представляет собой по сути один бинарный файл, который можно просто запустить на сервере (да, нужны ещё сертификаты и пара конфигурационных файлов). По словам разработчиков, его можно использовать даже на Raspberry Pi. Сам я это не проверял.

Я буду исходить из того, что вам нужно прямо сейчас позвонить, и мы сосредоточимся на том, как сделать это максимально быстро. А потом, возможно, что-нибудь придётся поправить.

Вот вам ссылка на официальные инструкции по установке, но они практикуют другой подход к жизни. Поэтому лучше оставайтесь со мной.

Компилирование Galene

Итак, готового бинарника, как вы, наверное, догадываетесь, нет - мы его соберём прямо сейчас.

Я буду делать это на VPS (3 ядра, 4GB памяти) с только что установленной Ubuntu 24.04.

sudo apt install git golang

Эта команда устанавливает Git и тулчейн для Go - компилятор, стандартную библиотеку и утилиты.

Саму программу и конфигурацию я буду хранить в папке ~/apps/galene, а исходники - в ~/src. Так что,

mdkir ~/src
cd ~src
git clone https://github.com/jech/galene.git
cd galene
CGO_ENABLED=0 go build -ldflags='-s -w'

Компилятор Go загрузит дополнительные модули и соберёт в папке galene один самодостаточный исполняемый файл без внешних библиотек.

Если всё прошло хорошо, получится бинарный файл galene размером около 10 MB.

ls -lh galene
-rwxrwxr-x 1 sledov sledov 10M Aug 22 02:03 galene

Установка и первый запуск

Давайте его перенесём в другую папку и там уже попробуем запустить.

mkdir -p ~/apps/galene
cp galene ~/apps/galene/
cd ~/apps/galene/
$ ./galene
2025/08/22 02:35:16 Group file ./groups/: lstat ./groups/: no such file or directory
2025/08/22 02:35:16 Starting built-in TURN server on :1194
2025/08/22 02:35:16 Relay test successful in 9.964835ms, RTT = 69.67µs
^C2025/08/22 02:35:19 Stopping built-in TURN server

Я его остановил Ctrl-C.

Он, в целом, запускается, но явственно хочет видеть папку groups. Собственно, там есть структура из нескольких папок, которые ему нужны. Словом "groups" на самом деле называются комнаты конференций, и для каждой группы нужно будет сделать небольшой конфигурационный файл на json-e.

(Мы сейчас в папке ~/apps/galene)

mkdir groups
mkdir data

В исходниках есть ещё папка "static", которая содержит интерфейс, написанный на vanilla javascripte. Мы скопируем её как есть.

cp -a ~/src/galene/static .

Создание первой группы

Первая группа, которую мы создадим, будет называться "family" и я там буду админом.

nano groups/family.json
{
    "users":
    {
        "sledov":
        {
            "password": "secret",
            "permissions": "op"
        }
    }
}

Это - первое приближение, galene поддерживает шифрование, например bcrypt-ом, но пока этого должно быть достаточно.

Сертификаты от Let's Encrypt

Теперь нам нужны SSL сертификаты, galene ожидает их увидеть в папке data. Мы получим их от Let's Encrypt, и переместим в эту папку.

В официальных репозиториях есть certbot - это утилита, которая автоматически получает и продлевает бесплатные TLS-сертификаты Let's Encrypt. Установим её.

sudo apt install -y certbot

Узнаем какое полное доменное имя нашего сервера:

hostname -f
galene.sledov.ru

В этом примере полное имя домена — "galene.sledov.ru". Сейчас там ничего не запущено, но у Galene есть демо-сервер, где можно попробовать Galene . В вашем случае, естественно, это будет полное название вашего собственного сервера.

Теперь можно создать сертификаты

sudo certbot certonly --standalone -d galene.sledov.ru

Дальше следует небольшой интерактивный квест: введите свой емайл, а дальше соглашайтесь или не соглашайтесь с тем, что они вам предложат.

Что нас интересует из ответа:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/galene.sledov.ru/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/galene.sledov.ru/privkey.pem
This certificate expires on 2025-11-20.

Нам создали сертификат и ключ, который истекает примерно через 3 месяца.

Теперь нам нужно скопировать эти файлы в папку data и поменять владельца.

cd data
sudo cp /etc/letsencrypt/live/galene.sledov.ru/fullchain.pem cert.pem
sudo cp /etc/letsencrypt/live/galene.sledov.ru/privkey.pem key.pem
sudo chown sledov:sledov *.pem

Запускаем Galene

cd ~/apps/galene
./galene
2025/08/22 04:00:54 Starting built-in TURN server on :1194
2025/08/22 04:00:54 Relay test successful in 12.505795ms, RTT = 176.18µs

По умолчанию он бежит на порту 8443. Я не буду показывать вам главную страницу, где он предлагает указать группу, мы сразу пойдём в группу "family", которую мы создали.

https://galene.sledov.ru:8443/group/family/

Здесь нужно ввести логин и пароль, а затем разрешить браузеру доступ к камере и микрофону. После этого вы увидите своё изображение в окне конференции.

Как приглашать людей?

В левой части есть панель с ростером и вашим именем. Справа от имени находится иконка с камерой. Если на неё нажать, откроется меню, где нужно выбрать пункт "Invite User".

приглашение пользователя
приглашение пользователя

Затем вы вводите имя человека, которого хотите пригласить. Galene сгенерирует ссылку, которую нужно переслать этому человеку, например, через Телеграм.

Ссылка выглядит вот так:

_https://galene.sledov.ru:8443/group/family/?token=LBwxP4qboLA

Когда получатель ссылки откроет её в браузере, у него не будут спрашивать ни имени, ни пароля (всё равно будет нужно разрешить доступ к камере и микрофону). После этого человек сразу окажется в вашей комнате.

Особенности конференций

Galene участников активно не вызванивает. Им нужно самим присоединяться к комнате/группе. К этому нужно привыкнуть. Можно чатиться в текстовом режиме и бросать туда ссылки на видеозвонок. Можно сделать закладку в браузере или ярлык на рабочем столе и открывать его в оговорённое время. Если непременно нужно звуковое подтверждение, можно позвонить по телефону и сказать "Зайди в группу" или просто сбросить звонок - и это будет вашим условным сигналом.

Клиент на JavaScript-e

Если вам не по душе стандартный способ взаимодействия, или вас не устраивает, например, раскладка страницы, - это можно изменить. Интерфейс написан на vanilla JavaScript, код относительно простой и читаемый, так что его можно слегка подправить под свои нужды.

Что дальше?

Я надеюсь, что к этому времени вы уже посмотрели базовую функциональность и умеете делать звонки. Я зазиповал папку ~/apps/galene (без сертификатов, разумеется), файл можно найти здесь. Там нужно нужно сделать свои сертификаты и запустить файл galene. Весьма рекомендую скомпилировать galene самостоятельно. Я не проверял, работает ли приложение в таком виде на дистрибутивах, отличных от Ubuntu 24.04.

Если у вас фаервол (в моём случае его не было), то нужно открывать порты TCP 8443, TCP 1194, UDP 1194 и некий диапазон UDP-портов, например, 40000–40500. После этого этот диапазон нужно указывать при запуске программы как параметр командной строки, например:

./galene -udp-range 40000-40500

Если вы хотите, чтобы Galene бежал постоянно, то лучше создать service unit-файл для systemd. В руководстве по установке написано, как это сделать. И ещё, хорошо выставить порт 443 вместо 8443 (hint: для этого не нужно проксировать через nginx).

Мы затронули только базовые вещи. В официальной документации всё подробно расписано - читайте и пробуйте.

Успешных видеоконференций! Задавайте вопросы.

Комментарии (0)