Skip to content

fgbm/telemt-admin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

telemt-admin

telemt-admin — это Telegram-бот для автоматизации управления пользователями telemt (MTProto прокси-сервера). Проект создан для системных администраторов, которым нужно делегировать процесс выдачи доступа, избавившись от ручного редактирования конфигурационных файлов.

Поддерживает систему пригласительных токенов с двумя режимами работы:

  • Ручной (Manual): пользователь подает заявку, админ подтверждает.
  • Автоматический (Auto-approve): пользователь мгновенно получает доступ без участия админа.

Содержание

Зачем это нужно?

Традиционное управление пользователями в telemt требует прямого доступа к серверу и ручного изменения /etc/telemt.toml. telemt-admin переносит этот процесс в Telegram:

  • Для пользователей: простая регистрация через бота по пригласительному токену.
  • Для администраторов: гибкое управление доступом (временные токены, лимиты использований), мгновенные уведомления и управление через кнопки.
  • Для сервера: автоматическое обновление конфигурации и перезапуск сервиса при необходимости.

Требования

  • Linux-сервер с systemd (для управления telemt.service).
  • Установленный и работающий telemt.
  • Telegram-бот и токен от @BotFather.
  • Telegram user ID администраторов (можно получить через @userinfobot).
  • Права на запись в конфиг telemt и на перезапуск сервиса telemt (через Polkit или sudo-правила).

Быстрый старт (Linux)

Самый быстрый способ развернуть бота — использовать готовый бинарный файл.

1. Скачивание актуальной версии

Одной командой скачайте последний стабильный релиз для 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.gz

2. Установка бинарного файла

sudo mv telemt-admin /usr/local/bin/
sudo chmod +x /usr/local/bin/telemt-admin

3. Минимальная конфигурация

Создайте файл /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 = true

Tip

Параметр bot_token можно не указывать в конфиге, если переменная окружения TELOXIDE_TOKEN задана в окружении процесса.

Установка как системного сервиса

Для надежной работы в фоновом режиме настройте systemd:

1. Создайте пользователя и директории

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

2. Создайте unit-файл /etc/systemd/system/telemt-admin.service

[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

3. Настройте права доступа

Чтобы сервис мог управлять telemt и редактировать его конфиг без прав root:

А. Разрешите перезапуск сервиса через Polkit

Создайте файл /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

# Создаем группу telemt если её нет
sudo groupadd -f telemt

# Добавляем пользователя бота в группу
sudo usermod -aG telemt telemt-admin

# Меняем группу владельца конфига и даем права на запись группе
sudo chown :telemt /etc/telemt.toml
sudo chmod 664 /etc/telemt.toml

4. Запустите сервис

sudo systemctl daemon-reload
sudo systemctl enable --now telemt-admin.service

Как пользоваться

Для пользователей

  1. Получить пригласительный токен от администратора.
  2. Найти бота и нажать /start.
  3. Ввести токен (или перейти по ссылке вида https://t.me/MyBot?start=TOKEN).
  4. В зависимости от типа токена:
    • 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> — управление сервисом.

Конфигурация (telemt-admin.toml)

  • 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:

  1. Напишите боту /start с аккаунта администратора.
  2. Убедитесь, что открывается админ-меню.
  3. Выполните /token create 1 и активируйте токен пользовательским аккаунтом.

Обновление

Для обновления до последней версии просто выполните команду из раздела "Быстрый старт" и перезапустите сервис:

sudo systemctl restart telemt-admin.service

Сборка из исходников

Если вы хотите собрать бота самостоятельно:

  1. Установите Rust (Edition 2024).
  2. Выполните сборку: cargo build --release.
  3. Бинарный файл будет находиться в target/release/telemt-admin.

Запуск с кастомным конфигом:

./target/release/telemt-admin /path/to/telemt-admin.toml

Troubleshooting

  • Не задан 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 и валидность токена бота.

CI/CD

Проект использует GitHub Actions для автоматической проверки кода (clippy, check) и сборки релизов под Linux и Windows при создании тега версии (vX.Y.Z).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages