dee46f1c37bc998de514a998cb00a30414c1fc20
Publish telemt-bot Docker image / build-and-push (push) Successful in 51s
telemt-bot
Лёгкий Telegram-бот для админ-доступа к Telemt Control API.
Что умеет
/health->GET /v1/health/summary->GET /v1/stats/summary/users->GET /v1/stats/users(первые 20 строк)/create_user <username>->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)
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:
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):
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)
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,<branch-or-tag>,sha-<12-symbols>.
Нужно создать secret в Gitea репозитории:
ACTIONS_PAT- токен с правами на push в package/container registry.
Languages
Go
98.7%
Dockerfile
1.3%