# ptl_api — установка (Linux)

Сервис управления PTL-индикаторами. Поставляется как **Linux-бинарь amd64**.
Скачать: `https://pkg.whsoft.ru/ptl_api/<версия>/`.

## Быстрый старт

```bash
curl -fsSL https://pkg.whsoft.ru/ptl_api/install.sh | sudo sh
sudo nano /etc/ptl_api/config.json       # redis_url и контроллеры
sudo systemctl restart ptl-api
curl http://127.0.0.1:8000/_ping         # → pong
```

Установщик:
- скачивает бинарь и проверяет `SHA256SUMS` (и minisign, если он установлен);
- создаёт пользователя `ptl`, каталоги `/opt/ptl_api`, `/etc/ptl_api`,
  `/var/lib/ptl_api`;
- кладёт бинарь в `/opt/ptl_api/ptl-api`;
- создаёт `/etc/ptl_api/config.json` из `config.example.json`, если файла нет;
- ставит `ptl-api.service` и запускает его;
- проверяет Redis на `127.0.0.1:6379` и подсказывает, что делать, если его нет.

Версию можно закрепить: `sudo PTL_VERSION=3.0 sh install.sh`.
Установить без запуска: `sudo PTL_NO_START=1 sh install.sh`.

## Требования
- Linux x86_64.
- **Redis 7+** — локально или отдельным хостом.
- Сетевой доступ к контроллерам по Modbus TCP (порт 502).

## Конфигурация
`/etc/ptl_api/config.json` (по умолчанию). Путь переопределяется `APP_CONFIG`
или флагом `-config`.

```json
{
  "redis_url": "redis://127.0.0.1:6379",
  "api_host": "0.0.0.0",
  "api_port": 8000,
  "demo": false,
  "telemetry_enabled": true,
  "telemetry_url": "https://telemetry.whsoft.ru",
  "controllers": [
    { "ip": "192.168.1.50", "port": 502, "start_id": 1, "end_id": 30, "device_type": "2Sub_4Count" }
  ]
}
```

## Ручная установка
```bash
curl -fsSLO https://pkg.whsoft.ru/ptl_api/3.0/ptl-api-3.0-linux-amd64
curl -fsSLO https://pkg.whsoft.ru/ptl_api/3.0/SHA256SUMS
curl -fsSLO https://pkg.whsoft.ru/ptl_api/3.0/SHA256SUMS.minisig
minisign -Vm SHA256SUMS -P RWTo6oG6xQCDUM/rT5zIvrxx+by0wEwvryIV48fGAFh8ibAdn9EKSCw3
sha256sum -c SHA256SUMS
sudo install -m 0755 ptl-api-3.0-linux-amd64 /opt/ptl_api/ptl-api
APP_CONFIG=/etc/ptl_api/config.json /opt/ptl_api/ptl-api
```

## Проверка
```bash
curl http://127.0.0.1:8000/_ping       # pong
curl http://127.0.0.1:8000/version     # {"product":"ptl_api","version":"3.0"}
curl http://127.0.0.1:8000/alive       # доступность контроллеров
curl http://127.0.0.1:8000/controllers # статус контроллеров
curl http://127.0.0.1:8000/openapi.yaml
journalctl -u ptl-api -f
```

## Обновление
Повторно запустите установщик с нужной версией — конфиг сохраняется:
```bash
sudo PTL_VERSION=<версия> sh install.sh
```

## Телеметрия
Сервис отправляет обезличенную телеметрию (версия, ОС, число контроллеров и
unit'ов, счётчики использования функций и базовая надёжность) на
`telemetry.whsoft.ru`, чтобы улучшать продукт. IP-адреса, данные оборудования,
URL вебхуков и содержимое дисплеев не передаются.

Отключить можно двумя способами:
- снять галочку **«Отправлять обезличенную телеметрию»** в разделе «О приложении»;
- задать переменную окружения `TELEMETRY=0` (в systemd — `Environment=TELEMETRY=0`).

Состояние телеметрии хранится в `/var/lib/ptl_api/telemetry.json`.

## Поддержка
Вопросы и сопровождение — `support@whsoft.ru`.
