Commit Graph

7 Commits

Author SHA1 Message Date
grendervill dcb2a8b3fa fix(smoke): проверки используют адрес привязки, а не localhost 2026-09-19 20:46:43 +03:00
grendervill c5392349cd feat(turn): TURN/TLS с сертификатом, порты релея и автообновление сертификата
- install.sh: --turn-domain/--turn-cert/--turn-key, проверка наличия сертификата,
  копирование в /opt/glchat/certs, UFW открывает диапазон релея
- livekit.yaml.tpl: relay_range_start/end, cert_file/key_file
- compose: сертификаты монтируются в LiveKit read-only
- systemd timer glchat-cert-refresh: ежедневно копирует обновлённый сертификат
  из внешнего ACME-хранилища и перезапускает LiveKit при изменении
- smoke.sh: TURN-порты обязательны при включённом TURN + проверка CN сертификата
2026-09-19 20:22:57 +03:00
grendervill 5353c5d5a2 fix(smoke): шифрование бэкапа проверяется по содержимому (age-encryption.org/v1) 2026-09-19 20:00:32 +03:00
grendervill cf2a5f4845 fix(deploy): SKIP_TLS сохраняется в .env, smoke.sh не падает на незаданном LIVEKIT_PUBLISH 2026-09-19 20:00:10 +03:00
grendervill 6804a316cf fix(smoke): в smoke.sh нет функции warn — используем skip 2026-09-19 19:57:45 +03:00
grendervill 8f7620026d fix(livekit): конфиг по официальной схеме livekit-server
- убраны недопустимые поля (audio.min_level, audio.smooth_intervals,
  video.dynacast, video.disable_simulcast) — из-за них контейнер livekit
  циклически перезапускался
- набор кодеков задаётся через room.enabled_codecs: VP8 на lite/standard,
  VP8+VP9+H.264+AV1 на plus/pro
- keys: {} — ключи передаются через LIVEKIT_KEYS (секрет не попадает в файл)
- smoke.sh: ветка --skip-tls больше не проверяет HTTPS, бэкап с расширением
  .age больше не помечается как незашифрованный
2026-09-19 19:55:31 +03:00
grendervill 4bd1770cb5 feat(deploy): установщик, docker-скелет, шаблоны Caddy/LiveKit и CLI
- deploy/install.sh: идемпотентная установка, режимы встроенного и внешнего
  прокси (§10.13), --dry-run/--skip-tls/--reconfigure, auto-детект профиля (§10.10)
- deploy/compose.yaml.tpl: app, livekit, caddy с лимитами, healthcheck,
  ротацией логов, cap_drop и no-new-privileges (§4.3)
- deploy/caddy: Caddyfile.tpl (встроенный) и external-proxy.conf.tpl (наш стенд)
- deploy/livekit: конфиг с TURN, dynacast и лимитами комнат (§10.6)
- deploy/backup.sh + restore.sh: sqlite .backup, tar, age-шифрование (§10.8)
- deploy/update.sh: бэкап → pull/сборка → up → миграции → smoke (§9.3)
- deploy/smoke.sh: проверки §10.9 (healthz/readyz/meta, порты, UFW, fail2ban, бэкап)
- deploy/security-check.sh: аудит SSH, UFW, fail2ban, прав .env и ключей
- deploy/ufw-docker.sh, nftables и fail2ban-конфиги (sshd, glchat-auth, recidive)
- deploy/glchat-cli.sh: команды §10.7, systemd-юнит glchat.service
- scripts/test-install.sh: прогон установщика в чистом Ubuntu 24.04 (systemd-контейнер)
- Dockerfile: multi-stage (node → golang CGO → debian-slim), non-root, healthcheck
- Makefile: lint/test/build/dev/generate/security/smoke и фиксация версий инструментов
2026-09-19 18:21:02 +03:00