# telemt-bot Лёгкий Telegram-бот для админ-доступа к Telemt Control API. ## Что умеет - `/health` -> `GET /v1/health` - `/summary` -> `GET /v1/stats/summary` - `/users` -> `GET /v1/stats/users` (первые 20 строк) - `/create_user ` -> `POST /v1/users` (создание пользователя + ссылки на подключение) Команды обрабатываются только от одного админ-чата (`TELEGRAM_ADMIN_CHAT_ID`). ## Переменные окружения - `TELEGRAM_BOT_TOKEN` - токен Telegram-бота. - `TELEGRAM_ADMIN_CHAT_ID` - chat id администратора, которому разрешены команды. - `TELEMT_API_BASE_URL` - базовый URL API, например `http://host.docker.internal:9091`. - `TELEMT_API_AUTH_HEADER` - значение заголовка `Authorization` для Telemt API (если включён `auth_header`). - `TELEGRAM_HTTP_TIMEOUT_SECONDS` - timeout запросов к Telegram (по умолчанию `60`). - `TELEMT_HTTP_TIMEOUT_SECONDS` - timeout запросов к Telemt API (по умолчанию `5`). - `TELEMT_LINK_HOST` - хост для генерации `tg://proxy` ссылок, если API их не вернуло. - `TELEMT_LINK_PORT` - порт для ссылок (по умолчанию `9443`). - `TELEMT_TLS_DOMAIN` - TLS-домен для генерации `EE-TLS` ссылки (опционально). - `ALL_PROXY`, `HTTPS_PROXY`, `HTTP_PROXY` - прокси для исходящих запросов (Telegram API, Telemt API). Поддерживаются `socks5://`, `socks5h://`, `http://`, `https://`. Приоритет: ALL_PROXY → HTTPS_PROXY → HTTP_PROXY. ## Быстрый старт (локально, Linux/bash) ```bash cp .env.example .env # отредактируй .env под свой Telemt и Telegram docker compose up --build -d docker compose logs -f ``` ## Запуск из Docker Registry ### Через docker compose Пример `docker-compose.yml`, который использует уже собранный образ из Gitea Registry: ```yaml services: telemt-bot: image: git.shts.su/denozord/telemt-bot:latest restart: unless-stopped environment: TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN} TELEGRAM_ADMIN_CHAT_ID: ${TELEGRAM_ADMIN_CHAT_ID} TELEMT_API_BASE_URL: ${TELEMT_API_BASE_URL} TELEMT_API_AUTH_HEADER: ${TELEMT_API_AUTH_HEADER} TELEGRAM_HTTP_TIMEOUT_SECONDS: ${TELEGRAM_HTTP_TIMEOUT_SECONDS:-60} TELEMT_HTTP_TIMEOUT_SECONDS: ${TELEMT_HTTP_TIMEOUT_SECONDS:-5} TELEMT_LINK_HOST: ${TELEMT_LINK_HOST} TELEMT_LINK_PORT: ${TELEMT_LINK_PORT:-9443} TELEMT_TLS_DOMAIN: ${TELEMT_TLS_DOMAIN:-} ``` Запуск (Linux/bash): ```bash export TELEGRAM_BOT_TOKEN="xxx:telegram_bot_token" export TELEGRAM_ADMIN_CHAT_ID="123456789" export TELEMT_API_BASE_URL="http://host.docker.internal:9091" export TELEMT_API_AUTH_HEADER="Bearer secret" export TELEMT_LINK_HOST="172.20.0.3" export TELEMT_LINK_PORT="9443" export TELEMT_TLS_DOMAIN="tf.ivx.su" docker compose up -d docker compose logs -f ``` ### Через docker CLI (Linux/bash) ```bash docker run -d \ --name telemt-bot \ --restart unless-stopped \ -e TELEGRAM_BOT_TOKEN="xxx:telegram_bot_token" \ -e TELEGRAM_ADMIN_CHAT_ID="123456789" \ -e TELEMT_API_BASE_URL="http://host.docker.internal:9091" \ -e TELEMT_API_AUTH_HEADER="Bearer secret" \ -e TELEGRAM_HTTP_TIMEOUT_SECONDS="60" \ -e TELEMT_HTTP_TIMEOUT_SECONDS="5" \ -e TELEMT_LINK_HOST="172.20.0.3" \ -e TELEMT_LINK_PORT="9443" \ -e TELEMT_TLS_DOMAIN="tf.ivx.su" \ git.shts.su/denozord/telemt-bot:latest ``` ## Почему решение экономное по ресурсам - Go-бинарник без рантайма и с нулевым CGO. - Long polling (`getUpdates`) вместо частых коротких запросов. - Один переиспользуемый `http.Client` и keep-alive соединения. - Multi-stage сборка и минимальный образ `distroless`. ## CI/CD для Gitea Registry Добавлен workflow: `.gitea/workflows/docker-publish.yml`. Что делает: - при `push` в `main`, `master`, `v*` и при `git tag v*`; - собирает образ из `Dockerfile`; - пушит в registry `git.shts.su/${REPO}`; - выставляет теги: `latest`, ``, `sha-<12-symbols>`. Нужно создать secret в Gitea репозитории: - `ACTIONS_PAT` - токен с правами на push в package/container registry.