# 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`). ## Быстрый старт (локально, 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} ``` Запуск (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" 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" \ 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.