12 KiB
Контейнер 108 (Galene): Galene видеоконференции
Подробное описание LXC-контейнера 108 на Proxmox (192.168.1.108): сервер видеоконференций Galene (домен call.katykhin.ru). STUN/TURN вынесены на внешний VPS (coTURN), в контейнере — только Galene как systemd-сервис, без Docker.
Общие сведения
- Хостнейм: galene
- IP: 192.168.1.108/24
- ОС: Debian 12 (bookworm)
- Ресурсы: 1 core, 256 MB RAM (из архитектуры)
- Доступ: с Proxmox —
pct exec 108 -- bashили по SSH на 192.168.1.108, если настроен.
Диск контейнера: ~4 GB, занято ~1.2 GB (33%). Основной объём: система, код Galene в /opt/galene/ (~6.6 MB), данные в /opt/galene-data/ (~1.7 MB). Логи — в systemd journal (~8 MB). Следить за местом и ротацией journal (см. раздел «Логи и ротация» и TODO).
Доступ и логины
- Debian (CT 108): логин
root, парольGalene108!. - Galene (веб): https://call.katykhin.ru (через NPM → 192.168.1.108:8443). Вход в группы — по паролям, заданным в конфигах групп в
/opt/galene-data/groups/(операторы и участники).
Сервисы (systemd, без Docker)
| Сервис | Назначение | Порт (хост) |
|---|---|---|
| galene.service | Galene Videoconference Server (galene-server) | 8443 (HTTP) |
| coturn | Не запущен (disabled) — TURN на внешнем VPS | — |
| ssh, cron, postfix@- | Стандартные сервисы CT | 22, 25 |
Galene слушает на 0.0.0.0:8443 по HTTP (-insecure). TLS обеспечивает NPM на контейнере 100 (https://call.katykhin.ru → proxy на 192.168.1.108:8443).
1. Galene (galene.service)
Unit: /etc/systemd/system/galene.service
Бинарник: /opt/galene-server (собран из исходников в /opt/galene/).
Рабочий каталог: /opt/galene-data.
Параметры запуска: -http 0.0.0.0:8443 -insecure -turn "" -static /opt/galene-data/static
-insecure— HTTP без TLS (TLS на NPM).-turn ""— встроенный TURN не используется; ICE-серверы заданы вdata/ice-servers.json(внешний coTURN на VPS).- Статика отдаётся из
/opt/galene-data/static.
Структура данных на хосте:
-
/opt/galene-data/— данные и конфиги:data/— глобальные настройки:config.json— proxyURL (например https://call.katykhin.ru/).ice-servers.json— список STUN/TURN (URL, username, credential для TURN на VPS). Содержит креды TURN — не публиковать.cert.pem,key.pem— локальные сертификаты (для внутренних нужд; внешний HTTPS через NPM).
groups/— конфиги групп (по одному JSON на группу): имя файла вида<groupname>-<suffix>.json. В каждом файле: пользователи и пароли (операторы/участники),wildcard-user,max-clients,allow-recording,autolockи т.д. Пароли пользователей групп хранятся в этих файлах — не публиковать.static/— копия/кастомизация статики из/opt/galene/static/(HTML, CSS, JS для веб-клиента).
-
/opt/galene/— исходный код Galene (репозиторий), бинарникgalene-serverсобирается отсюда. При обновлении: пересборка и перезапуск сервиса.
Команды:
systemctl status galene
systemctl restart galene
journalctl -u galene.service -f
curl -s -k https://192.168.1.108:8443/ # или через NPM: https://call.katykhin.ru/
2. coTURN (не используется в CT)
Сервис coturn в контейнере установлен, но disabled и inactive. STUN/TURN для Galene вынесены на внешний сервер (VPS Миран: 185.147.80.190, см. VPS Миран: боты и STUN/TURN). Клиенты получают список STUN/TURN из ice-servers.json в /opt/galene-data/data/.
При необходимости поднять TURN локально — настроить coturn и указать его в ice-servers.json или в параметрах galene-server.
Порты (сводка на хосте)
| Порт | Сервис / примечание |
|---|---|
| 8443 | Galene (HTTP, TLS на NPM) |
| 22 | SSH |
| 25 | Postfix (localhost) |
Логи и ротация
- Galene: логи пишутся в stdout/stderr и попадают в systemd journal (journalctl -u galene.service). Отдельных файловых логов в
/opt/galene-data/нет. На момент проверки журнал занимает ~8 MB. - Ротация journal: управляется настройками journald (например
/etc/systemd/journald.conf: SystemMaxUse, MaxFileSec). Отдельного правила logrotate для Galene нет — ротация только за счёт journald. При долгой работе и активном трафике журнал может расти (см. TODO). - Системный logrotate в CT — стандартные правила (apt, dpkg, btmp, wtmp). Для Galene отдельного файла логов нет.
Риск: при большом количестве подключений и ошибок объём journal может вырасти. Рекомендуется ограничить размер журнала в journald.conf и при желании настроить выгрузку логов Galene в файл с logrotate (см. TODO).
Запуск и порядок поднятия
- Убедиться, что доступны каталоги
/opt/galeneи/opt/galene-dataи вdata/естьconfig.json,ice-servers.json. - Запуск сервиса:
systemctl start galene(или при загрузке CT —systemctl enable galeneуже выполнен, т.к. сервис активен). - NPM на контейнере 100 должен проксировать https://call.katykhin.ru на 192.168.1.108:8443.
После смены конфигов в /opt/galene-data/data/ или в groups/: systemctl restart galene. После обновления кода в /opt/galene/ — пересобрать бинарник, заменить /opt/galene-server и перезапустить сервис.
Уязвимости и риски
- Пароли и креды в конфигах: В
/opt/galene-data/data/ice-servers.jsonхранится TURN credential. В каждом файле в/opt/galene-data/groups/*.json— пароли пользователей (операторы, участники). Эти каталоги не должны попадать в публичный репозиторий. Ограничить права (например chmod 600 на файлы с паролями), хранить бэкапы в защищённом месте. - Доступ по порту 8443: Galene слушает на всех интерфейсах (0.0.0.0:8443). Из LAN доступ по http://192.168.1.108:8443. Снаружи доступ только через NPM (https://call.katykhin.ru). Не пробрасывать 8443 в интернет напрямую.
- Логи в journal: Ротация только через journald; при необходимости ограничить SystemMaxUse и проверить, что старые логи не заполняют диск (см. TODO).
- Мало RAM (256 MB): Контейнер с небольшим объёмом памяти; при большом числе одновременных участников возможны проблемы. При необходимости увеличить память CT в Proxmox.
TODO по контейнеру 108
-
Ротация journal: Проверить/задать в
/etc/systemd/journald.confпараметрыSystemMaxUse=,MaxFileSec=(или аналог), чтобы журнал не разрастался бесконечно. После изменений —systemctl restart systemd-journald(учёт потери текущего лога при рестарте). -
Права на конфиги: Ограничить доступ к файлам с паролями и кредами:
chmod 600наice-servers.json, на файлы вgroups/. Владелец root. -
Мониторинг диска: Следить за местом (df -h) и размером журнала. При желании — оповещение при заполнении выше порога (например 80%).
-
Резервное копирование: Регулярный бэкап критичных данных (оценка размеров на момент документации):
/opt/galene-data— данные и конфиги:data/(config.json, ice-servers.json, cert.pem, key.pem),groups/(все JSON групп),static/при наличии кастомизаций. ~1.7 MB. Обязательно; содержит пароли и TURN credential — хранить бэкапы в защищённом месте, не публиковать./opt/galene— исходный код и бинарник (или только скрипты сборки и версию). ~6.6 MB. Нужен для воспроизведения сборки galene-server; при использовании upstream репозитория можно восстанавливать из git, но локальные патчи стоит бэкапить./etc/systemd/system/galene.service— unit-файл. Небольшой размер; включить в бэкап конфигов системы.
Восстановление: скопировать
/opt/galene-dataи при необходимости/opt/galene, установить unit, выполнитьsystemctl daemon-reload && systemctl start galene. TURN на VPS должен быть доступен и креды вice-servers.jsonсовпадать с настройками coTURN.
Связь с другими документами
- Архитектура и подключение — таблица контейнеров, домен call.katykhin.ru, схема сети.
- Контейнер 100 (nginx) — NPM, через который проксируется call.katykhin.ru.
- VPS Миран (СПБ): боты и STUN/TURN — внешний coTURN для Galene (STUN/TURN сервер).