Files
homelab-docs/docs/containers/container-108.md
Andrey 16c254510a Update documentation to centralize Vaultwarden integration details and enhance backup scripts
Refactor README, architecture, and backup documentation to emphasize the use of Vaultwarden for credential management across various services. Update scripts for Nextcloud, Gitea, Paperless, and others to reference Vaultwarden for sensitive information. Remove outdated references to previous backup strategies and ensure clarity on credential retrieval processes. This improves security practices and streamlines backup operations.
2026-02-28 00:52:56 +03:00

12 KiB
Raw Permalink Blame History

Контейнер 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. Пароль — в Vaultwarden (объект CT_108_ROOT_PASSWORD).
  • 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)

Логи и ротация

  • Базовая политика LXC: в контейнере настроен logrotate /etc/logrotate.d/homelab-lxc.conf — 14 дней, 50 MB, 5 архивов (системные логи в /var/log). Подробнее: Logrotate — базовая политика homelab.
  • 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).


Запуск и порядок поднятия

  1. Убедиться, что доступны каталоги /opt/galene и /opt/galene-data и в data/ есть config.json, ice-servers.json.
  2. Запуск сервиса: systemctl start galene (или при загрузке CT — systemctl enable galene уже выполнен, т.к. сервис активен).
  3. NPM на контейнере 100 должен проксировать https://call.katykhin.ru на 192.168.1.108:8443.

После смены конфигов в /opt/galene-data/data/ или в groups/: systemctl restart galene. После обновления кода в /opt/galene/ — пересобрать бинарник, заменить /opt/galene-server и перезапустить сервис.


Уязвимости и риски

  1. Пароли и креды в конфигах: В /opt/galene-data/data/ice-servers.json хранится TURN credential. В каждом файле в /opt/galene-data/groups/*.json — пароли пользователей (операторы, участники). Эти каталоги не должны попадать в публичный репозиторий. Ограничить права (например chmod 600 на файлы с паролями), хранить бэкапы в защищённом месте.
  2. Доступ по порту 8443: Galene слушает на всех интерфейсах (0.0.0.0:8443). Из LAN доступ по http://192.168.1.108:8443. Снаружи доступ только через NPM (https://call.katykhin.ru). Не пробрасывать 8443 в интернет напрямую.
  3. Логи в journal: Ротация только через journald; при необходимости ограничить SystemMaxUse и проверить, что старые логи не заполняют диск (см. TODO).
  4. Мало RAM (256 MB): Контейнер с небольшим объёмом памяти; при большом числе одновременных участников возможны проблемы. При необходимости увеличить память CT в Proxmox.

TODO по контейнеру 108

  • Базовая политика logrotate: для системных логов настроена (homelab-lxc.conf — 14 дней, 50 MB, 5 архивов). См. Logrotate — базовая политика homelab.

  • Ротация 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.


Связь с другими документами