Files
vps-tracker/docs/features.md
T
DenozordecandClaude Opus 5.5 06d767fde7 docs: обновить README, описать возможности и настройку, переснять скриншоты
- README: главные возможности, галерея, быстрый старт, ссылки на документы
- docs/features.md: гид по всем разделам с новыми скриншотами
- docs/configuration.md: переменные окружения, права, роли, планировщик
- 26 скриншотов нового дизайна на демо-данных (в т.ч. мобильные)
- scripts/seed-demo.ts и scripts/docs-screenshots.mjs для пересъёмки

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 02:42:04 +07:00

245 lines
18 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.
# Возможности VPS Tracker
Гид по всем разделам интерфейса. Скриншоты — на демо-данных (вымышленные хостеры, IP из RFC 5737).
**Содержание**
1. [Дашборд](#дашборд)
2. [VPS и карточка сервера](#vps-и-карточка-сервера)
3. [Проекты](#проекты)
4. [Схема инфраструктуры](#схема-инфраструктуры)
5. [Хостеры, аккаунты и синхронизация](#хостеры-аккаунты-и-синхронизация)
6. [Активные тарифы](#активные-тарифы)
7. [Платежи, баланс и продления](#платежи-баланс-и-продления)
8. [Отчёты и ресурсы](#отчёты-и-ресурсы)
9. [Статус блокировок](#статус-блокировок)
10. [GeoIP](#geoip)
11. [Уведомления](#уведомления)
12. [Пространства, пользователи и роли](#пространства-пользователи-и-роли)
13. [Журналы](#журналы)
14. [Настройки, интеграции и бэкапы](#настройки-интеграции-и-бэкапы)
---
## Дашборд
![Дашборд](screenshots/dashboard.png)
Одна страница, чтобы понять, всё ли в порядке:
- **KPI**: активные VPS, расход в месяц (в базовой валюте), суммарный баланс у хостеров по API, **запас дней** — на сколько хватит денег при текущем расходе, сколько VPS истекает в ближайшие 7 дней, число проблем.
- **Баннер «Требуется внимание»** и кнопка «Внимание» в шапке собирают проблемы инвентаря: истекающая оплата, низкий баланс, давно не синхронизированные аккаунты, расхождение баланса API и журнала.
- **Быстрые действия** — переходы в частые разделы (можно скрыть в настройках).
- **Графики** платежей и расходов по месяцам и таблица «Здоровье инвентаря» с CSV-экспортом.
![Графики и здоровье инвентаря](screenshots/dashboard-charts.png)
Все суммы в разных валютах пересчитываются в базовую: по курсу хостера (если задан в карточке хостера) или по курсам из URL в настройках (формат ЦБ РФ `cbr-xml-daily` или `{ base, rates }`).
---
## VPS и карточка сервера
![Список VPS](screenshots/vps.png)
- Таблица с поиском по IP, DNS, проекту, назначению и ОС; фильтры, настраиваемые колонки (вид), сортировка.
- Для каждого сервера: IP/IPv6 и доп. адреса, домены (из CFDM), аккаунт и хостер, страна/город/ДЦ с флагом, CPU/RAM/диск, проект, статус, тариф (дневной/месячный), оплачено до.
- **Массовые действия**: выделите несколько VPS — сменить статус или проект, удалить.
- **Произвольные поля** (настраиваются в *Настройки → Общие*) появляются в таблице и форме.
- Поля, изменённые вручную, запоминаются как «пользовательские» — синхронизация с хостером их не перезаписывает.
Карточка сервера разбита на вкладки: **Обзор** (сеть и ресурсы), **Финансы** (тариф, дата оплаты и связанные платежи), **Заметки**, **Синк** (что пришло от хостера).
| | |
|---|---|
| ![Карточка VPS — обзор](screenshots/vps-detail.png) | ![Карточка VPS — финансы](screenshots/vps-detail-finance.png) |
**Дата «оплачено до»** считается автоматически: из поля хостера, а для дневного тарифа — из баланса аккаунта и суточного списания; прямые платежи за VPS продлевают дату.
**Uptime-мониторинг**: для VPS с включённым мониторингом раз в N минут (по умолчанию 5) проверяется TCP-доступность SSH-порта. Переходы «упал/поднялся» попадают в уведомления и историю проверок.
---
## Проекты
![Проекты](screenshots/projects.png)
Группировка серверов по проектам (цвет, заметки). Для каждого — количество VPS, расход в месяц и суммарные ресурсы. Карточка проекта показывает его VPS и быстрые переходы в отчёты.
![Карточка проекта](screenshots/project-detail.png)
Проект можно указать прямо в форме VPS: существующий находится без учёта регистра (в том числе кириллица), новый создаётся автоматически.
---
## Схема инфраструктуры
![Схема инфраструктуры](screenshots/topology.png)
Редактор топологии на React Flow:
- узлы **VPS** (с флагом, IP, ресурсами, ценой и статусом uptime), фигуры, заметки, группы;
- **связи** с типом (сеть, зависимость, туннель, VPN, синхронизация, произвольная), направлением, стилем линии, подписью, протоколом и IP концов туннеля;
- **сервисы CFDM** — отдельные узлы с членством VPS (для балансировки/HA);
- несколько схем во вкладках, блокировка от случайных правок, экспорт в PNG, автосохранение.
---
## Хостеры, аккаунты и синхронизация
| | |
|---|---|
| ![Хостеры](screenshots/providers.png) | ![Аккаунты хостеров](screenshots/accounts.png) |
**Хостер** — компания (сайт, базовая валюта, курсы USD/EUR для пересчёта) и **тип API** с URL биллинга — один на хостера.
**Аккаунт** — ваш логин у хостера: учётные данные API, режим оплаты (ежедневно/ежемесячно), порог низкого баланса. Пароли API в интерфейс не возвращаются — видно только, что они заданы, и логин.
Поддерживаемые API:
| Тип | Что нужно в аккаунте | Что синхронизируется |
|---|---|---|
| **BILLmanager 6** | логин и пароль API | VPS, платежи, баланс, тарифы `vds.order` по всем ДЦ |
| **4VPS** | Panel ID и API Key | VPS, баланс, тарифы |
| **Маклауд / VDSina** (userapi) | API Token | VPS, операции, баланс, тарифы |
| **Veesp** | email и пароль client area | VPS, счета, баланс, тарифы |
| **RuVDS** | API-токен из ЛК | VPS, платежи, баланс, тарифы |
Для разных BILLmanager-хостеров есть **профили** с особенностями их API (FirstByte, IHOR, DataCheap, Serv.host, WaiCore, LandVPS, Cloudrix…) — новый добавляется одним файлом, см. [profiles/README.md](../apps/api/src/services/billmanager/profiles/README.md).
Синхронизация запускается кнопкой на аккаунте («Синхронизировать» / «Синхронизировать все») или по расписанию (*Настройки → Синхронизация*: интервал синка VPS и платежей — от 15 минут, тарифов — от 60 минут). Повторный запуск во время идущего синка того же аккаунта отклоняется. Каждый запуск пишется в [журнал синка](#журналы).
---
## Активные тарифы
![Активные тарифы](screenshots/tariffs.png)
Прайс-листы хостеров, загруженные через API: ресурсы, цена, ДЦ, доступность к заказу. Удобно сравнивать хостеров и замечать новые тарифы — о них приходит уведомление. Если загрузка прайс-листа не удалась, сохранённый список не стирается.
---
## Платежи, баланс и продления
![Платежи](screenshots/payments.png)
- **Платежи** — пополнения баланса хостера и прямые оплаты VPS (привязка к аккаунту и/или серверу необязательна), итоги по валютам, импорт из синка без дублей.
- **Баланс и списания** — журнал движений по балансу (приход/расход), сводка и чистый остаток.
- **Продления** — календарь ближайших оплат на 7/30/90 дней и стоимость продлений.
| | |
|---|---|
| ![Баланс и списания](screenshots/balance.png) | ![Продления](screenshots/renewals.png) |
---
## Отчёты и ресурсы
![Отчёты](screenshots/reports.png)
- **Отчёты**: расход в месяц по проектам и хостерам, платежи по типам, фильтр по проекту и периоду, экспорт в CSV.
- **Ресурсы**: суммарные vCPU/RAM/диск активных VPS и распределение по хостерам.
![Ресурсы](screenshots/resources.png)
---
## Статус блокировок
![Статус блокировок](screenshots/blocking.png)
Проверка доступности популярных сервисов **с самого VPS** (через [censorcheck](https://github.com/vernette/censorcheck)): доступен, заблокирован, отказ (403), редирект, таймаут. Результат автоматически привязывается к VPS по IP; есть история прогонов и группировка по VPS или по сервису.
Запуск на сервере — одна команда (скрипт ставит недостающие `jq`/`dig`, показывает прогресс и отправляет результат с одноразовым токеном):
```bash
curl -fsSL https://vt.example.com/cc | bash # разовая проверка
curl -fsSL https://vt.example.com/cc | bash -s -- --daily # раз в сутки (cron)
curl -fsSL https://vt.example.com/cc | bash -s -- --remove-daily
```
**MikroTik (RouterOS 7.22+)** — пробы идут через указанный исходящий IP:
```
:global "vt-srcIp" "1.2.3.4"; /tool fetch url="https://vt.example.com/cc.rsc" dst-path=vt-cc.rsc; /import file-name=vt-cc.rsc
```
(`?daily=1` — ежедневный scheduler, `?remove=daily` — удалить.) Кнопки «Скопировать команду», «Раз в день», «MikroTik» на странице подставляют ваш домен. Нужны `CENSORCHECK_INGEST_SECRET` и `CENSORCHECK_PUBLIC_URL` — см. [configuration.md](configuration.md#блокировки-и-geoip).
---
## GeoIP
![GeoIP](screenshots/geo.png)
Какую страну видят у вашего IP GeoIP-базы (MaxMind, RIPE, ipinfo, Cloudflare…) и сервисы (Google, YouTube, Netflix, ChatGPT…), включая CDN, — через [ipregion](https://github.com/vernette/ipregion). Матрица VPS × сервис, переключение «по VPS / по сервису», подсветка расхождений, история.
Запуск так же, как у блокировок: `curl -fsSL https://vt.example.com/ic | bash` (`--daily`, `--remove-daily`), для MikroTik — `ic.rsc`.
---
## Уведомления
![Настройки уведомлений](screenshots/settings-notifications.png)
Каналы: **Telegram** (Chat ID, несколько чатов через запятую, топики форума через Thread ID, свой Bot API URL для прокси) и **webhook** (POST JSON). Кнопка «Тест» проверяет настройки и подсказывает типичные ошибки (бот не в чате, неверный токен, нет топика).
| Событие | Когда | Повтор |
|---|---|---|
| Истекает оплата | VPS с оплатой в ближайшие 7 дней | не чаще раза в сутки для того же набора |
| Низкий баланс | баланс аккаунта по API ниже порога | раз в сутки |
| Дайджест синка | после планового синка, если что-то изменилось | при новых изменениях |
| Новые тарифы | у хостера появились тарифы | при новом наборе |
| VPS недоступен / восстановлен | переход статуса uptime-проверки | каждый переход |
Каждое событие включается отдельно. Все отправки (и пропуски-дубли) видны в журнале уведомлений. Длинные сообщения обрезаются по строкам под лимит Telegram, имена из API экранируются.
---
## Пространства, пользователи и роли
При включённой авторизации (`AUTH_REQUIRED=true`) вход идёт через **auth-portal** (JWT), а данные разделены на **пространства**:
- у каждого пользователя есть личное пространство; есть общее «Основное» и можно создавать командные;
- роли в пространстве: **owner → admin → member → viewer**. Viewer только смотрит; member меняет VPS, платежи, хостеров, аккаунты и запускает синк; admin управляет настройками и участниками;
- **шаринг VPS**: сервер можно показать в другом пространстве (чтение/запись) или передать целиком;
- удалённые пространства попадают в корзину и восстанавливаются;
- права портала (`vps:<раздел>:read|write|admin`) ограничивают разделы поверх ролей — см. [configuration.md](configuration.md#авторизация-и-права).
Синхронизация, уведомления, uptime и интеграции работают отдельно для каждого пространства.
---
## Журналы
| | |
|---|---|
| ![Журнал синка](screenshots/sync-journal.png) | ![Журнал изменений](screenshots/audit.png) |
- **Журнал синка** — каждый запуск по аккаунтам: время, длительность, статус, что изменилось или текст ошибки.
- **Журнал изменений** — кто, когда и что поменял (создание/изменение/удаление) с diff полей; лента или таблица. При настроенном портале события дублируются в его аудит.
Старые записи журналов удаляются автоматически (уведомления и синк — 90 дней, uptime-проверки — 30 дней).
---
## Настройки, интеграции и бэкапы
| | |
|---|---|
| ![Общие настройки](screenshots/settings.png) | ![Синхронизация](screenshots/settings-sync.png) |
- **Общие** — быстрые действия на дашборде, базовая валюта, URL курсов и автоконвертация, произвольные поля VPS, **бэкап/восстановление** (JSON или файл БД).
- **Синхронизация** — автосинк и интервалы.
- **Уведомления** — Telegram, webhook и выбор событий.
- **Интеграции** — **App Switcher** (переключатель приложений в шапке) и **CF Domain Manager (CFDM)**: домены и балансировщики из CFDM подтягиваются каждые 15 минут и показываются у VPS и на схеме.
![Интеграции](screenshots/settings-integrations.png)
Работает и на телефоне — меню сворачивается, таблицы прокручиваются:
<p align="center">
<img src="screenshots/mobile-dashboard.png" width="260" alt="Дашборд на телефоне">
&nbsp;
<img src="screenshots/mobile-vps.png" width="260" alt="VPS на телефоне">
</p>