Files
telemtPanel/docs/install.md
T
Denozordec 9ac385d332
Build and Push Telemt Panel Docker Image / build-and-push (push) Successful in 3m34s
Build and Push Telemt Panel Docker Image / create-release (push) Skipped
Update Docker image references from 'telemtPanel' to 'telemtpanel' across configuration files and documentation for consistency.
2026-08-04 18:36:44 +07:00

111 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Telemt Panel — установка (RU)
Один Docker-образ: `git.shts.su/denozord/telemtpanel`. Режим задаётся `PANEL_MODE`.
| Режим | Когда | Агент |
|-------|--------|--------|
| `standalone` | Telemt на том же хосте | **не нужен** — панель ходит в Control API `/v1` напрямую |
| `fleet` | Несколько нод | Go-агент на каждой ноде |
UI: ReUI PRO Frame. Previews: [app-shell-12](https://reui.io/preview/base/app-shell-12), [auth-4](https://reui.io/preview/base/auth-4), [stats-12](https://reui.io/preview/base/stats-12). Docs: [frame](https://reui.io/docs/components/base/frame), [blocks](https://reui.io/blocks).
## Требования
- Docker 24+
- Telemt с включённым Control API (`[server.api]`) для standalone
- Открытый порт панели (8080) или Traefik
## Быстрый старт: standalone (рекомендуется на Linux)
```bash
docker pull git.shts.su/denozord/telemtpanel:latest
docker run -d --name telemt-panel --network host \
-e PANEL_MODE=standalone \
-e TELEMT_API_URL=http://127.0.0.1:9091 \
-e JWT_SECRET="$(openssl rand -hex 32)" \
-e BOOTSTRAP_USERNAME=admin \
-e BOOTSTRAP_PASSWORD='change-me' \
-v /var/lib/telemt-panel:/data \
git.shts.su/denozord/telemtpanel:latest
```
Откройте `http://127.0.0.1:8080`, войдите `admin` / пароль из `BOOTSTRAP_PASSWORD`.
Compose:
```bash
cp .env.example .env # заполните JWT_SECRET и BOOTSTRAP_PASSWORD
docker compose up -d
```
### Три сетевых рецепта (standalone)
1. **`network_mode: host`** (Linux, prod) — контейнер видит `127.0.0.1` хоста, где слушает Telemt.
2. **Sidecar** — Telemt и панель в одном compose-network; `TELEMT_API_URL=http://telemt:9091`.
3. **Docker Desktop**`extra_hosts: host.docker.internal:host-gateway`, `TELEMT_API_URL=http://host.docker.internal:9091`. В whitelist Telemt разрешите IP контейнера или lab-only `0.0.0.0/0`.
## Fleet
```bash
docker compose -f docker-compose.fleet.yml up -d
```
Обязательно:
- `PANEL_MODE=fleet`
- `PANEL_PUBLIC_URL` — публичный URL панели (для enroll / install script)
- `PANEL_ENCRYPTION_KEY`, `JWT_SECRET`
В UI: **Серверы** → создать enrollment-токен → на ноде:
```bash
curl -fsSL https://panel.example.com/install-agent.sh | sudo bash -s -- \
--panel-url https://panel.example.com \
--token <TOKEN> \
--telemt-url http://127.0.0.1:9091
```
Бинарник агента: соберите `apps/agent` (`go build -o telemt-panel-agent .`) и положите в `/usr/local/bin/telemt-panel-agent`, либо опубликуйте в releases.
## Traefik (prod)
См. `deploy/docker-compose.traefik.yml` и `deploy/env.traefik.example`. Каталог на сервере: `/opt/telemt-panel`.
## Переменные окружения
| Переменная | Описание |
|------------|----------|
| `PANEL_MODE` | `standalone` \| `fleet` |
| `TELEMT_API_URL` | Base URL Control API (standalone) |
| `TELEMT_AUTH_HEADER` | Опциональный `Authorization` к Telemt |
| `JWT_SECRET` | Секрет JWT операторов |
| `BOOTSTRAP_USERNAME` / `BOOTSTRAP_PASSWORD` | Первый admin при пустой БД |
| `PANEL_PUBLIC_URL` | Публичный URL (fleet) |
| `PANEL_ENCRYPTION_KEY` | Ключ для чувствительных данных (fleet) |
| `DATABASE_URL` | По умолчанию `sqlite:/data/app.db` |
| `SERVER_PORT` | По умолчанию `8080` |
Bootstrap без env (после старта):
```bash
docker exec -it telemt-panel node -e "console.log('use BOOTSTRAP_PASSWORD on first boot')"
# или локально: pnpm bootstrap-admin -- --username admin --password '...'
```
## Telemt `[server.api]`
Включите Control API и whitelist IP панели. Документация API: [Telemt Control API](https://github.com/telemt/telemt/blob/main/docs/Architecture/API/API.md). Локальные заметки: `docs/telemt-control-api.md`.
## Health
- `GET /health` — панель + SQLite
- `GET /ready` — в standalone также ping Telemt `/v1/health`
## Скрипт установщика
```bash
chmod +x deploy/install.sh
./deploy/install.sh --mode standalone
```