Telemax/docker-compose.yml
Folist a518a7d408 Headless-мост: веб-панель вырезана, опциональные стикеры (slim/full), подпись обновлений
Вырезана веб-панель целиком (express/ws/react/vite/tailwind, TLS-серт, /api/*, API_KEY, порт 3000) — мост теперь headless: MAX по исходящему сокету, Telegram long-polling, управление и авторизация только в боте (/login, /panel). Убрана поверхность атаки, bundle меньше.

Анимированные стикеры (.tgs) стали опциональными: build-arg STICKERS=full|slim. full (деф.) ставит Chromium+ffmpeg (образ ~1.7 ГБ); slim пропускает их (~0.3 ГБ, быстрая сборка), анимированные уходят статической картинкой (thumbnail). setup.sh спрашивает при установке (30с таймаут, не тормозит).

Подпись обновлений (Phase C): update.sh/release.sh проверяют GPG-подпись релизного тега при наличии pinned-ключа release-signing-key.asc (транспорт GitHub/зеркало недоверенный, важна только подпись мейнтейнера). Активируется после добавления публичного ключа.
2026-08-22 15:32:57 +03:00

23 lines
841 B
YAML

services:
telemax:
build:
context: .
args:
GIT_COMMIT: ${GIT_COMMIT:-unknown}
# full (default) = animated stickers play as video (needs Chromium+ffmpeg, ~1.4 GB extra).
# slim = animated stickers relay as a static image; much smaller/faster image. Set by setup.sh.
STICKERS: ${STICKERS:-full}
restart: unless-stopped
# Hard cap on container stdout: the default json-file driver grows without
# limit between container recreations. 10m x 3 bounds it at ~30 MB total;
# relay tracing is INFO-level and proportional to actual message traffic,
# so this ceiling is effectively unreachable in normal use anyway.
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
env_file:
- .env
volumes:
- ./data:/app/.data