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.
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. Пароль — в 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).
Запуск и порядок поднятия
- Убедиться, что доступны каталоги
/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
-
Базовая политика 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.
Связь с другими документами
- Архитектура и подключение — таблица контейнеров, домен call.katykhin.ru, схема сети.
- Контейнер 100 (nginx) — NPM, через который проксируется call.katykhin.ru.
- VPS Миран (СПБ): боты и STUN/TURN — внешний coTURN для Galene (STUN/TURN сервер).