Web-панель управления для Telemt MTProxy. Позволяет мониторить состояние сервера, управлять пользователями, отслеживать безопасность и обновлять бинарник — всё через браузер.
| Dashboard | Users | Runtime |
|---|---|---|
![]() |
![]() |
![]() |
- Dashboard — здоровье сервера, uptime, соединения, общий трафик, статус DC
- Пользователи — CRUD через API Telemt, сортировка по колонкам, подсветка активных соединений
- Runtime — соединения, ME pool state, ME quality, upstream quality, NAT/STUN, self-test, события
- Безопасность — posture (read-only, whitelist, auth header), лимиты, whitelist
- Upstreams — статус upstream-серверов и пулов
- Обновления — проверка новой версии на GitHub, обновление бинарника в один клик с откатом при ошибке (Telemt и панель)
- TLS — поддержка custom-сертификатов и автоматического Let's Encrypt (ACME)
- GeoIP — определение геолокации по IP через MaxMind GeoLite2
- WebSocket — реалтайм обновление данных без перезагрузки страницы
- Base Path — поддержка запуска за reverse proxy на подпути
- Linux (x86_64 или aarch64), любой дистрибутив (Debian, Ubuntu, Alpine, CentOS и т.д.)
- Работающий Telemt-сервер с доступным API
Для сборки из исходников:
- Go 1.24+
- Node.js 20+
- Docker (опционально, для кросс-компиляции)
curl -fsSL https://raw.githubusercontent.com/amirotin/telemt_panel/main/install.sh | bashСкрипт скачает бинарник, создаст конфиг, настроит systemd-сервис и запустит панель.
-
Скачайте бинарник из Releases (или соберите сами — см. ниже).
-
Создайте конфиг:
sudo mkdir -p /etc/telemt-panel
sudo cp config.example.toml /etc/telemt-panel/config.toml
sudo chmod 600 /etc/telemt-panel/config.toml- Сгенерируйте хеш пароля и JWT-секрет:
# Хеш пароля
./telemt-panel hash-password
# JWT-секрет
openssl rand -hex 32- Отредактируйте конфиг
/etc/telemt-panel/config.toml:
listen = "0.0.0.0:8080"
[telemt]
url = "http://127.0.0.1:2398"
auth_header = ""
[auth]
username = "admin"
password_hash = "$2a$10$..." # вывод hash-password
jwt_secret = "ваш_секрет" # вывод openssl rand
session_ttl = "24h"- Запустите:
./telemt-panel --config /etc/telemt-panel/config.tomlПанель будет доступна на http://ваш_сервер:8080.
cp config.example.toml config.toml
# отредактируйте config.toml
docker compose up -dmake # собрать frontend + backend
make release # собрать бинарники для x86_64 и aarch64# Linux/macOS
./build.sh
# Windows
build.batБинарники появятся в ./release/:
telemt-panel-x86_64-linuxtelemt-panel-aarch64-linuxSHA256SUMS
Бинарники статические (CGO_ENABLED=0) — работают на любом Linux без зависимостей.
make backend VERSION=1.2.3
# или
go build -ldflags="-s -w -X main.version=1.2.3" -o telemt-panel .Полный пример конфигурации — config.example.toml.
| Секция | Параметр | Описание | По умолчанию |
|---|---|---|---|
| — | listen |
Адрес и порт | 0.0.0.0:8080 |
| — | base_path |
Подпуть для reverse proxy (например /panel123) |
— |
[telemt] |
url |
URL API Telemt | обязательный |
[telemt] |
auth_header |
Authorization-заголовок к Telemt API | — |
[telemt] |
binary_path |
Путь к бинарнику telemt (для обновлений) | /bin/telemt |
[telemt] |
service_name |
Имя systemd-сервиса | telemt |
[telemt] |
github_repo |
GitHub-репозиторий для проверки обновлений | telemt/telemt |
[telemt] |
config_path |
Путь к конфигу Telemt (для Docker / нестандартных путей) | автоматически из API |
[panel] |
binary_path |
Путь к бинарнику панели (для самообновления) | /usr/local/bin/telemt-panel |
[panel] |
service_name |
Имя systemd-сервиса панели | telemt-panel |
[panel] |
github_repo |
GitHub-репозиторий панели | amirotin/telemt_panel |
[panel] |
github_token |
Personal Access Token для GitHub API. Без токена лимит — 60 запросов/час на IP (shared), с токеном — 5000/час. Нужен если при проверке обновлений появляется ошибка rate limit. Достаточно fine-grained PAT без scopes: создать токен | — |
[panel] |
max_newer_releases |
Макс. кол-во новых версий в списке обновлений | 10 |
[panel] |
max_older_releases |
Макс. кол-во старых версий в списке обновлений | 10 |
[auth] |
username |
Логин администратора | обязательный |
[auth] |
password_hash |
Bcrypt-хеш пароля | обязательный |
[auth] |
jwt_secret |
Секрет для подписи JWT | обязательный |
[auth] |
session_ttl |
Время жизни сессии | 24h |
[tls] |
cert_file / key_file |
Пользовательские TLS-сертификаты | — |
[tls] |
acme_domain |
Домен для Let's Encrypt | — |
[tls] |
acme_cache_dir |
Директория кеша сертификатов | /var/lib/telemt-panel/certs |
[geoip] |
db_path |
Путь к MaxMind GeoLite2 City (.mmdb) | — |
[geoip] |
asn_db_path |
Путь к MaxMind GeoLite2 ASN (.mmdb) | — |
Скрипт автоматически создаёт системного пользователя telemt-panel, устанавливает
бинарник панели в /usr/local/bin, конфиг в /etc/telemt-panel, данные в
/var/lib/telemt-panel, настраивает узкий sudoers-drop-in для обновлений и
генерирует hardened systemd-юнит:
curl -fsSL https://raw.githubusercontent.com/amirotin/telemt_panel/main/install.sh | bash| Компонент | Путь |
|---|---|
| Бинарник панели | /usr/local/bin/telemt-panel |
| Конфиг панели | /etc/telemt-panel/config.toml |
| Данные (кэш сертификатов и т.д.) | /var/lib/telemt-panel/ |
| Systemd-юнит | /etc/systemd/system/telemt-panel.service |
| Sudoers drop-in | /etc/sudoers.d/telemt-panel |
Сгенерированный юнит включает:
[Service]
User=telemt-panel
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/etc/telemt-panel /var/lib/telemt-panelNoNewPrivileges не включается, потому что сервис использует sudo для строго
ограниченных операций обновления.
sudoers-drop-in позволяет пользователю telemt-panel выполнять только нужные
обновлению команды: замену бинарника, очистку staging-файлов и перезапуск
telemt.service и telemt-panel.service.
sudo useradd --system --shell /usr/sbin/nologin --home /nonexistent telemt-panel
sudo cp telemt-panel.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now telemt-panelВажно: этот unit-файл запускает панель от пользователя
telemt-panel. Если вы устанавливаете вручную, создайте пользователя и настройте права, эквивалентные installer-managedsudoers-drop-in, или отредактируйте unit под свою модель запуска.
# Только сервис и бинарник (конфиг и данные сохраняются)
./install.sh uninstall
# Полное удаление (включая пользователя telemt-panel)
./install.sh purgeЛоги:
sudo journalctl -u telemt-panel -ftelemt-panel --config config.toml # запуск сервера
telemt-panel hash-password # сгенерировать bcrypt-хеш
telemt-panel version # показать версию- Backend: Go 1.24, стандартная библиотека + gorilla/websocket, golang-jwt, BurntSushi/toml
- Frontend: React 18, TypeScript, Tailwind CSS, Vite
- Сборка: Multi-stage Docker, статическая линковка


