telemt-admin — это Telegram-бот для автоматизации управления пользователями telemt (MTProto прокси-сервера). Проект создан для системных администраторов, которым нужно делегировать процесс выдачи доступа, избавившись от ручного редактирования конфигурационных файлов.
Поддерживает систему пригласительных токенов с двумя режимами работы:
- Ручной (Manual): пользователь подает заявку, админ подтверждает.
- Автоматический (Auto-approve): пользователь мгновенно получает доступ без участия админа.
- Зачем это нужно?
- Требования
- Быстрый старт (Linux)
- Установка как системного сервиса
- Как пользоваться
- Конфигурация (telemt-admin.toml)
- Проверка после запуска
- Обновление
- Сборка из исходников
- Troubleshooting
- CI/CD
Традиционное управление пользователями в telemt требует прямого доступа к серверу и ручного изменения /etc/telemt.toml.
telemt-admin переносит этот процесс в Telegram:
- Для пользователей: простая регистрация через бота по пригласительному токену.
- Для администраторов: гибкое управление доступом (временные токены, лимиты использований), мгновенные уведомления и управление через кнопки.
- Для сервера: автоматическое обновление конфигурации и перезапуск сервиса при необходимости.
- Linux-сервер с
systemd(для управленияtelemt.service). - Установленный и работающий
telemt. - Telegram-бот и токен от @BotFather.
- Telegram user ID администраторов (можно получить через
@userinfobot). - Права на запись в конфиг
telemtи на перезапуск сервисаtelemt(через Polkit или sudo-правила).
Самый быстрый способ развернуть бота — использовать готовый бинарный файл.
Одной командой скачайте последний стабильный релиз для Linux x86_64:
curl -L -o telemt-admin.tar.gz https://github.com/fgbm/telemt-admin/releases/latest/download/telemt-admin-linux-x86_64.tar.gz && tar -xzf telemt-admin.tar.gzsudo mv telemt-admin /usr/local/bin/
sudo chmod +x /usr/local/bin/telemt-adminСоздайте файл /etc/telemt-admin.toml:
bot_token = "ВАШ_ТОКЕН_БОТА"
admin_ids = [123456789] # Ваш Telegram ID
telemt_config_path = "/etc/telemt.toml"
db_path = "/var/lib/telemt-admin/state.db"
service_name = "telemt.service"
users_page_size = 10
[security]
default_token_days = 14
max_token_days = 180
allow_auto_approve_tokens = trueTip
Параметр bot_token можно не указывать в конфиге, если переменная окружения TELOXIDE_TOKEN задана в окружении процесса.
Для надежной работы в фоновом режиме настройте systemd:
sudo useradd --system --home /var/lib/telemt-admin --shell /usr/sbin/nologin telemt-admin
sudo mkdir -p /var/lib/telemt-admin
sudo chown -R telemt-admin:telemt-admin /var/lib/telemt-admin[Unit]
Description=telemt-admin Telegram Bot Service
After=network-online.target
[Service]
Type=simple
User=telemt-admin
Group=telemt-admin
WorkingDirectory=/var/lib/telemt-admin
ExecStart=/usr/local/bin/telemt-admin /etc/telemt-admin.toml
Restart=always
RestartSec=5
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.targetЧтобы сервис мог управлять telemt и редактировать его конфиг без прав root:
Создайте файл /etc/polkit-1/rules.d/50-telemt-admin.rules:
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "telemt.service" &&
subject.user == "telemt-admin") {
return polkit.Result.YES;
}
});# Создаем группу telemt если её нет
sudo groupadd -f telemt
# Добавляем пользователя бота в группу
sudo usermod -aG telemt telemt-admin
# Меняем группу владельца конфига и даем права на запись группе
sudo chown :telemt /etc/telemt.toml
sudo chmod 664 /etc/telemt.tomlsudo systemctl daemon-reload
sudo systemctl enable --now telemt-admin.service- Получить пригласительный токен от администратора.
- Найти бота и нажать
/start. - Ввести токен (или перейти по ссылке вида
https://t.me/MyBot?start=TOKEN). - В зависимости от типа токена:
- Auto: Бот сразу пришлет ссылку на прокси.
- Manual: Бот создаст заявку ("Ожидайте подтверждения"), и после одобрения админом пришлет ссылку.
При поступлении новой заявки (по Manual-токену) вы получите сообщение с кнопками:
- ✅ Одобрить: генерация секрета, добавление в конфиг, рестарт сервиса, отправка ссылки пользователю.
- ❌ Отклонить: заявка отклоняется, пользователь получает уведомление.
Используйте команды /token для генерации и управления приглашениями:
/token create [days] [--auto|-a] [--max-uses N]— создать invite-токен./token create [days]— создать токен с ручным подтверждением (по умолчанию используетсяsecurity.default_token_days, обычно 14 дней)./token create 30 --auto— создать токен на 30 дней с автоматическим входом./token create 7 --max-uses 5— токен на 5 активаций (полезно для групп)./token create --auto --max-uses 10 30— аргументы можно указывать в любом порядке.- После
/token createбот сразу возвращает готовую ссылку видаhttps://t.me/MyBot?start=TOKENи код токена в моноширинном формате для быстрого копирования и отправки пользователю. /token list— список активных токенов./token revoke <token>— отозвать токен (запретить новые регистрации).
После /start доступно постоянное меню:
📥 Новые заявки— список pending-заявок.👥 Список пользователей— постраничный список активных пользователей с карточками.⚙️ Статус сервиса— панель управленияtelemt.service(обновить статус, рестарт, перечитать конфиг).📊 Статистика— сводка по пользователям.➕ Создать @username— подсказка по созданию пользователя вручную.❓ Справка— показать список команд администратора.
В карточке пользователя доступны действия:
🔗 Данные + QR— отправляет proxy-ссылку и QR-код для ручной пересылки пользователю.⛔ Забанить (удалить)— удаляет пользователя из конфигурацииtelemtи деактивирует запись в БД.⬅️ Назад к списку— возвращает к той же странице пагинации.
Основные команды:
/help— показать справку и меню./approve <id>//reject <id>— управление заявками./create <tg_user_id>— создать пользователя вручную (без токена)./delete <tg_user_id>— удалить пользователя./service <start|stop|restart|reload|status>— управление сервисом.
bot_token— токен бота от @BotFather (опционально, если естьTELOXIDE_TOKEN).admin_ids— массив ID администраторов[123, 456](обязательный).telemt_config_path— путь к/etc/telemt.toml(default:/etc/telemt.toml).db_path— путь кstate.db(default:/var/lib/telemt-admin/state.db).service_name— имя сервиса (default:telemt.service).users_page_size— размер страницы списка пользователей (default:10).[security]— настройки безопасности токенов:default_token_days— срок жизни токена по умолчанию (default: 14).max_token_days— максимально допустимый срок (default: 180).allow_auto_approve_tokens— разрешить создание auto-approve токенов (default:true).
Проверьте, что сервис запустился и бот отвечает:
sudo systemctl status telemt-admin.service
sudo journalctl -u telemt-admin.service -n 50 --no-pagerМинимальный smoke-check:
- Напишите боту
/startс аккаунта администратора. - Убедитесь, что открывается админ-меню.
- Выполните
/token create 1и активируйте токен пользовательским аккаунтом.
Для обновления до последней версии просто выполните команду из раздела "Быстрый старт" и перезапустите сервис:
sudo systemctl restart telemt-admin.serviceЕсли вы хотите собрать бота самостоятельно:
- Установите Rust (Edition 2024).
- Выполните сборку:
cargo build --release. - Бинарный файл будет находиться в
target/release/telemt-admin.
Запуск с кастомным конфигом:
./target/release/telemt-admin /path/to/telemt-admin.toml-
Не задан bot_token...
Укажитеbot_tokenв конфиге или задайтеTELOXIDE_TOKENв окружении сервиса. -
Permission deniedпри записи в/etc/telemt.toml
Проверьте группу/права файла и что пользовательtelemt-adminвходит в нужную группу. -
Не удаётся выполнить
/service restart
Проверьте правило Polkit дляorg.freedesktop.systemd1.manage-unitsи корректностьservice_name. -
Бот не отвечает на команды
Проверьте логиjournalctl -u telemt-admin.serviceи валидность токена бота.
Проект использует GitHub Actions для автоматической проверки кода (clippy, check) и сборки релизов под Linux и Windows при создании тега версии (vX.Y.Z).