Web-панель управления для Telemt MTProxy. Позволяет мониторить состояние сервера, управлять пользователями, отслеживать безопасность и обновлять бинарник — всё через браузер.
| Dashboard | Users | Runtime |
|---|---|---|
![]() |
![]() |
![]() |
Для сборки из исходников: - 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
# Хеш пароля
./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 -d
make # собрать frontend + backend
make release # собрать бинарники для x86_64 и aarch64
# Linux/macOS
./build.sh
# Windows
build.bat
Бинарники появятся в ./release/:
- telemt-panel-x86_64-linux
- telemt-panel-aarch64-linux
- SHA256SUMS
Бинарники статические (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 |
[telemt] |
config_edit_mode |
Режим редактирования конфига Telemt: api (через API, Docker-safe, по умолчанию) или file (правка файла, требует sudoers tee на systemd) |
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-panel
NoNewPrivileges не включается, потому что сервис использует 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 -f
telemt-panel --config config.toml # запуск сервера
telemt-panel hash-password # сгенерировать bcrypt-хеш
telemt-panel version # показать версию
$ claude mcp add telemt_panel \
-- python -m otcore.mcp_server <graph>