Быстрый старт¶
От чистой Linux-машины до работающего парка за 15 минут живого внимания.
Что понадобится¶
- Сервер: чистая Ubuntu 22.04 / 24.04 (или Debian 12 / RHEL 9). 4 GB RAM, 40 GB диска, выход в интернет. Понадобится root / sudo.
- Шкафы: промышленные ПК с Ubuntu. Обычно OKTO отгружает их с уже прошитой меткой слота (
LUZ-DRY-03и т. п.) — тогда на самом шкафу вообще ничего делать не надо. Если это «bare metal» — потребуется одна команда. - Сеть: сервер и шкафы должны видеть друг друга по TCP. Достаточно LAN; публичный DNS не обязателен.
Шаг 1. Установка factory-сервера (~3 минуты)¶
На чистой Linux-машине:
Что произойдёт автоматически:
- Установится Docker + compose-плагин.
- Сгенерируются все секреты (JWT, enrollment-key, пароль БД, OTP мастера) — в
/etc/okto/server.env, mode640. - Развернётся compose-стек:
factory-server+ PostgreSQL + Caddy (с авто-TLS) + management dashboard. - Запустится systemd-unit
okto-server.service(автозапуск при ребуте). - В конце скрипт напечатает URL мастера первого запуска + QR-код:
Откройте этот URL в браузере.
Шаг 2. Мастер первого запуска (~3 минуты)¶
5 шагов в мастере:
- Пароль админа — задайте новый (минимум 10 символов), дефолтный
admin123больше не работает. - Публичный хостнейм и TLS — имя или IP, по которому шкафы будут подключаться. Варианты:
- Публичный DNS с Let's Encrypt:
factory.mars.ru - Внутренний DNS:
okto-factory.mars.local - Просто LAN IP:
192.168.10.50(self-signed cert) - Токен OKTO Cloud — для синхронизации с «Честный ЗНАК» / ГИС МТ. Можно пропустить и настроить позже в Preferences.
- Имя площадки и режим подключения —
VIA_LOCAL_SERVER(рекомендуется) илиDIRECT_CLOUD. - Подтверждение — мастер запускает health-check и «запечатывается». OTP перестаёт работать, маршрут
/setupотдаёт 404.
После финиша вы попадёте на обычную страницу логина. Войдите как admin с паролем из шага 1.
Шаг 3. Подключение шкафов¶
Три пути в порядке возрастающей простоты.
3A. Шкаф OKTO-прошит (рекомендуемый путь для MARS)¶
Если OKTO на сборке прошил шкаф меткой слота (в /etc/okto/cabinet-slot лежит LUZ-DRY-03):
- Подключите питание + Ethernet.
- Ждите ~15 секунд.
- В дашборде → Развёртывание (Rollout) карточка слота автоматически переходит
PLANNED → ENROLLED.
Ноль действий на шкафу. Это ровно путь MARS для всех 51 шкафа.
3B. Чистый терминал + PIN-код¶
Если шкаф не прошит, на нём одна команда:
Скрипт установит Docker, пробросит USB-сканеры и принтеры, запустит edge-service. На kiosk-экране появится 6-значный PIN, например 428-391.
В дашборде → Развёртывание → панель «Cabinets waiting to pair» (появляется автоматически) → карточка с таким же PIN → Pair → выберите слот из выпадающего списка → готово. Через 3 секунды шкаф загружает operator UI.
3C. QR-скан (самый быстрый)¶
Когда шкаф показывает PIN, рядом с ним отображается QR-код. Сканирование камерой телефона (без приложения) откроет дашборд с уже предзаполненным диалогом паринга — один тап «Pair», и всё.
Шаг 4. Проверка работы¶
В дашборде:
- Rollout — все слоты парка со статусами в реальном времени.
- Fleet — список устройств, heartbeat обновляется каждые 5 секунд.
- Firmware — раз в 5 минут автоматически тянет новые релизы с
releases.oktoterminal.com; баннер «New firmware vX.Y.Z available» появится, когда появится.
На шкафу:
- Operator UI в kiosk-режиме, статусная строка
Сервер ✓ Облако ✓. - Сканер и принтер (если настроены) —
online.
Что дальше¶
| Сценарий | Действие |
|---|---|
| Обновить прошивку | Firmware → Deploy → отметить 1-2 canary-шкафа → Staged rollout с 30-мин observe-окном → автопромо на остальной парк; при сбое — авто-rollback canary. |
| Откатить после проблемы | На карточке релиза → Rollback → выбрать шкафы → edge локально промотит edge-service.jar.previous и сам перезапустится. |
| Перевесить шкаф на другой слот | Rollout → карточка слота → Unpair cabinet → шкаф вернётся в «waiting to pair» → выберите другой слот. |
| Массовый импорт меток | Rollout → Import manifest (unstamped) → загрузите CSV slot_id,hardware_id → все шкафы потом авто-пэйрятся. |
| Полная документация | https://docs.oktoterminal.com |
Если что-то не работает¶
Сервер не отвечает:
sudo systemctl status okto-server
sudo docker compose -f /opt/okto-server/docker/docker-compose.server.yml logs -f
Шкаф не пэйрится:
# На шкафу — проверить, что сервер достижим:
curl -sI $(cat /etc/okto/factory-url)/api/v1/health
# Посмотреть логи edge-service:
sudo docker logs okto-terminal --tail 100
Мастер /setup открывается не на TLS — Caddy'у нужно 2-3 минуты на выпуск сертификата при первом запуске. Подождите и обновите страницу.
Firmware не обновляется: проверьте, что сервер видит releases.oktoterminal.com:
Нужна помощь: собрать логи + отправить в support:
make collect-logs # положит support-logs-<timestamp>.tar.gz
# отправьте архив на support@oktoterminal.com
Полный A-to-Z сценарий с ролями, расходами и таймлайном — см. DEPLOYMENT.ru.md § «Полный A-to-Z сценарий развёртывания».