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

От чистой Linux-машины до работающего парка — за 15 минут. Всего две команды: одна на сервере, одна на каждом шкафу. Никаких YAML-файлов, токенов и ручной настройки сети.

Для нетехнических пользователей. Разбираться в Docker, DNS или сертификатах не нужно. Нужны только чистая Ubuntu, доступ в интернет и права sudo — дальше вы просто копируете команды из этого документа.


Что понадобится

Нужно Зачем
Центральный сервер. Чистая Ubuntu 22.04 / 24.04 (подходит также Debian 12 или RHEL 9). Минимум 2 CPU, 4 ГБ RAM, 20 ГБ диска. На этом сервере живёт центральная консоль, база данных и синхронизация с облаком.
Сетевой доступ от шкафов к серверу (локальная сеть, VPN или публичный IP — любой из вариантов). По этому адресу каждый шкаф постоянно держит связь с сервером.
Права sudo на сервере и на каждом шкафу. Установщик ставит Docker — это разовая операция.
Браузер на ноутбуке или телефоне. Для мастера первого запуска и дальнейшей работы в дашборде.

Публичный DNS-адрес не требуется. Можно работать по IP в локальной сети с самоподписанным сертификатом — установщик всё настроит за вас.


Шаг 1. Установка сервера (~2 минуты)

На чистой Linux-машине — одна команда, скопируйте и выполните:

curl -sSL https://get.oktoterminal.com/server | sudo bash

Эта команда сразу готова к запуску — в неё уже зашит адрес актуального релиза OKTO. Ничего подставлять не нужно. Если вы ставите сервер в изолированной сети (корпоративный Nexus, офлайн-зеркало), см. раздел «Offline и корпоративная сеть» ниже.

Что произойдёт автоматически:

  1. Установится Docker и плагин compose (если их ещё нет на машине).
  2. Сгенерируются все секреты — ключ регистрации шкафов, пароль базы, одноразовый код мастера — и сохранятся в /etc/okto/server.env (файл читается только под root).
  3. Скачается архив релиза (~200 МБ, с уже собранными Docker-образами), всё загрузится в локальный Docker — без обращений к Docker Hub.
  4. Запустится системная служба okto-server.service, которая будет автоматически стартовать при перезагрузке машины.
  5. Подключится Управляемая поддержка — сервер присоединится к закрытой сети Tailscale OKTO, чтобы инженеры OKTO могли помочь с настройкой оборудования по SSH. Подробности и как отключить — см. раздел «Управляемая поддержка» ниже.
  6. В консоль напечатается ссылка на мастер первого запуска и QR-код.

Пример финального вывода (установщик выводит на английском):

========================================================
  OKTO Factory Server is up.
========================================================

  Open the setup wizard in a browser:

    http://192.168.10.50/setup?otp=abc123xyz…
    (HTTPS with self-signed cert:
     https://192.168.10.50/setup?otp=abc123xyz…)

   ▄▄▄▄▄▄▄ ▄  ▄▄▄ ▄ ▄▄▄▄▄▄▄
   █ ▄▄▄ █ █▀  ▄██ █ ▄▄▄ █
   (Наведите камеру телефона — тот же адрес)

Дальше — самый быстрый из трёх вариантов:

В любом случае копировать URL мышкой не нужно. Для локальной сети установщик показывает HTTP-ссылку первой — по ней браузер не будет ругаться на сертификат.


Шаг 2. Мастер первого запуска (~3 минуты)

Мастер на русском языке, пять коротких шагов.

2.1 — Пароль администратора

Придумайте новый пароль (минимум 10 символов). Стандартный admin123 перестанет работать сразу после этого шага.

2.2 — Имя сервера

В поле уже подставлен адрес, по которому вы открыли мастер. Обычно это IP сервера — оставьте как есть. Мастер видит, что это IP, и автоматически выберет самоподписанный сертификат — оптимальный вариант для локальной сети.

«Расширенные настройки TLS» (ссылка под полем) нужны, только если у вас есть публичный DNS-адрес (например, factory.mars.ru) и вы хотите автоматический сертификат Let's Encrypt. В остальных случаях просто нажмите «Сохранить и продолжить».

2.3 — Вход в OKTO Cloud (необязательно)

Вместо копирования длинной строки токена мастер спрашивает e-mail и пароль — ту же учётную запись, с которой вы заходите в личный кабинет app.okto.ru.

  1. Выберите облачную среду (по умолчанию — OKTO Продакшн).
  2. Введите e-mail и пароль.
  3. Нажмите «Войти в OKTO Cloud».

Сервер сам подключится к облаку, сохранит ключ доступа во внутренней конфигурации и покажет зелёную пометку «Вход выполнен ✓». Больше никаких строк вставлять не нужно — нажимайте «Далее».

Если учётной записи OKTO Cloud у вас пока нет или вы настраиваете автономную площадку — нажмите «Пропустить». Привязать учётную запись можно позже из «Настроек аккаунта».

Если у вас уже есть готовый токен вида tkn_... (обычно для CI или офлайн-установок) — нажмите ссылку «У меня уже есть готовый токен» под формой и вставьте его.

2.4 — Площадка

Введите название площадки (например, «Московский завод»). В списке «Режим подключения по умолчанию» оставьте «Через центральный сервер» — это рекомендуемый вариант для большинства случаев.

2.5 — Готово

Нажмите «Готово — запечатать мастер». Мастер закроется, одноразовый код больше не будет работать. Вы попадёте на экран входа — войдите под именем admin и паролем из шага 2.1.

Что меняется после запечатывания


Шаг 3. Знакомство с демо-режимом

Сразу после запечатывания мастера дашборд не пустой. Сервер стартует в демо-режиме: в парке уже есть три синтетических шкафа, они имитируют сканирование и печать, очередь в облако наполняется, графики «тикают». Это сделано специально — чтобы вы могли походить по интерфейсу и показать его коллегам ещё до подключения настоящего оборудования.

Что вы увидите в дашборде:

Демо не затрагивает ничего настоящего: пользователи, пароли, учётная запись OKTO Cloud, название площадки, справочники — всё, что вы настроили в мастере, остаётся реальным. Демо касается только трёх синтетических шкафов и их событий.


Управляемая поддержка

Установщик по умолчанию подключает ваш сервер к закрытой корпоративной сети Tailscale OKTO. Что это даёт:

Как отключить

Три равноценных способа:

  1. В дашборде — «Настройки → Управляемая поддержка → Отключить». Кнопка видна всем администраторам.
  2. На сервере из командной строки: bash sudo okto support stop Команда выполнит tailscale logout и обновит запись в журнале аудита. После этого инженеры OKTO теряют доступ, пока вы явно не включите обратно.
  3. Навсегда, ещё до установки — передайте переменную окружения перед командой установщика: bash OKTO_NO_SUPPORT=1 curl -sSL https://get.oktoterminal.com/server | sudo bash Сервер развернётся без Tailscale; в дашборде страница «Управляемая поддержка» покажет «Tailscale не установлен».

Отключение — не одноразовое действие: в дашборде есть и кнопка «Включить» — её можно нажать, когда потребуется новая сессия поддержки.

На терминалах

То же самое, но тег в tailnet-е другой (tag:okto-cust-terminal). На шкафу команда sudo okto support stop выполнит локальный tailscale logout. Чтобы включить обратно — переустановите шкаф через «Устройства → Добавить терминал»: новый curl-скрипт получит свежий ключ Tailscale.

Офлайн / air-gapped площадки

Если сервер установлен в сети без выхода к tailscale.com, Управляемая поддержка автоматически пропускается: в выводе установщика вы увидите Нет доступа к login.tailscale.com — Управляемая поддержка пропущена, и в дашборде появится алерт «Tailscale не установлен». Это ожидаемое поведение для изолированных сетей — всё остальное работает ровно так же.


Шаг 4. Подключение первого настоящего шкафа (~1–2 минуты)

Теперь добавим настоящий шкаф — рядом с демо-тройкой. Делается это прямо из дашборда.

Откройте боковое меню «Устройства» и нажмите «+ Добавить терминал».

В открывшемся окне:

Нажмите «Получить ссылку установки». Появится QR-код и команда вида curl -sSL http://<ваш-сервер>/i/ot_XXXXXXXX | sudo bash. Ссылка действует 30 минут и сгорает после первого использования.

Переходите к будущему шкафу — это отдельная чистая Ubuntu-машина. На ней:

Запустите — и ждите. Установщик сам:

Если вы делали установку по SSH с ноутбука, в конце вывода появится кликабельный адрес для окна браузера на ноутбуке — нажмите Cmd-/Ctrl-клик. На самом шкафе экран уже работает.

На шкафу ничего не нужно вводить руками — ни e-mail, ни пароля, ни адреса сервера.

Демо-режим выключится сам

Как только настоящий шкаф выйдет на связь (обычно 10–30 секунд), дашборд сам:

  1. Уберёт три демо-шкафа из списка устройств.
  2. Сменит жёлтую плашку наверху на зелёную — «Демо-режим выключен ✓».
  3. Уберёт раздел «Демо-режим» из бокового меню.
  4. Оставит в списке «Устройства» один настоящий шкаф со статусом «В сети» (зелёная точка). Сигнал от шкафа обновляется каждые 5 секунд.

Переход полностью автоматический — нигде ничего нажимать не нужно. Дашборд продолжит показывать ровно ту же картину (сканы, печать, очередь в облако) — только уже по настоящему оборудованию.

Если вам нужно выключить демо до подключения шкафов — например, чтобы сразу показать покупателю чистый экран, — откройте «Настройки → Демо-режим» в боковом меню и нажмите «Выключить демо-режим». Включить обратно можно только переустановкой сервера с пустой базой.


Шаг 5. Проверка работы

Проверьте, что всё работает как надо.

В дашборде:

На самом шкафу:


Что дальше

Сценарий Действие
Подключить следующие шкафы Повторите Шаг 4 для каждого шкафа: «Устройства → + Добавить терминал».
Создать реальных пользователей «Пользователи» → «+ Новый пользователь». Роли: администратор, менеджер, оператор, наблюдатель.
Обновить прошивку парка «Прошивки» → «Загрузить релиз» → выбрать 1–2 пробных шкафа → поэтапная раскатка на остальные.
Привязать OKTO Cloud (если пропустили на шаге 2.3) «Настройки аккаунта» → «Интеграции» → «OKTO Cloud».
Переключиться на HTTPS с Let's Encrypt Когда появится публичный DNS-адрес — см. раздел «Публичный DNS и Let's Encrypt» ниже.

Обновление сервера

OKTO регулярно выкладывает обновления с новыми возможностями и исправлениями. Когда появляется новая версия, вы узнаёте об этом автоматически — без ручных проверок.

Как это работает

  1. Баннер в дашборде. Если сервер видит, что на релиз-хранилище лежит более свежая версия, чем установленная, вверху каждой страницы появляется зелёная плашка:

    Доступно обновление OKTO 2026.05.01-001 — установлена версия 2026.04.19-001 · Как обновить

    Дашборд проверяет наличие обновлений раз в 5 минут — ничего настраивать не нужно.

  2. Клик «Как обновить» открывает окно с одной командой, готовой к копированию. Команда та же самая, что при первой установке — установщик умеет работать и как «первый запуск», и как обновление:

    bash curl -sSL https://get.oktoterminal.com/server | sudo bash

  3. На сервере по SSH вставьте команду и нажмите Enter. Процесс занимает 1–3 минуты: - Скачается новый архив релиза (~200 МБ). - Новые Docker-образы загрузятся поверх старых. - Служба okto-server.service перезапустится. - Секреты, пользователи, устройства, настройки и база данных — всё останется нетронутым. - В конце в консоль выведется: OKTO Factory Server upgraded to 2026.05.01-001. Existing configuration, users, and device registrations were preserved.

  4. Обновите дашборд в браузере — зелёная плашка исчезнет, в самом низу бокового меню (в разделе «Настройки аккаунта») теперь указана новая версия.

Что с шкафами при обновлении сервера

Во время перезапуска сервера (1–3 минуты) шкафы временно отключаются от центральной консоли, но продолжают работать в автономном режиме: сканируют, печатают, пишут в локальную очередь. Как только сервер снова в сети, очередь догоняется — данные не теряются.

Откат

Если что-то пошло не так, есть два варианта:

Обновление программы терминалов

Шкафы обновляются отдельно от сервера. На странице «Прошивки» в дашборде загрузите новый релиз программы терминалов и выберите «Раскатку»: сначала 1–2 пробных шкафа, потом — по мере подтверждения — остальные. Подробности и стратегия поэтапной раскатки описаны в DEPLOYMENT.ru.md.

Если сервер стоит в изолированной сети

Баннер уведомлений включён, только когда с сервера достижимо публичное релиз-хранилище OKTO. Для air-gapped-стендов баннер не появится — обновления вы раскатываете вручную, скачав архив релиза в ваше зеркало и запустив установщик с переменной OKTO_BUNDLE_URL (см. раздел «Offline и корпоративная сеть» ниже).


Если что-то не работает

Сервер не отвечает

sudo systemctl status okto-server
sudo docker compose -f /opt/okto-server/docker/docker-compose.server.yml logs -f

Страница /setup не открывается или показывает ошибку сети

При первом запуске сервер выходит в готовое состояние за ~30–60 секунд. Обновите страницу через минуту. Если не помогло:

sudo docker ps       # все четыре контейнера должны быть в статусе Up
sudo docker logs okto-factory-server --tail 50

Браузер ругается на сертификат

Это нормально при установке в локальной сети по IP-адресу. Используйте HTTP-ссылку — она первая в выводе установщика. Если же HTTPS обязателен, в браузере выберите «Дополнительно → Перейти на сайт (небезопасно)».

Настоящий шкаф не появляется в списке

На шкафу посмотрите логи:

sudo docker logs okto-terminal --tail 50

Самая частая причина — ссылка установки истекла (срок жизни 30 минут). Сгенерируйте новую ссылку в дашборде и снова запустите команду на шкафу.

Управляемая поддержка не работает

Быстрая проверка:

# Статус через CLI:
sudo okto support status

# Что видит tailscaled:
sudo tailscale status
sudo systemctl status tailscaled
sudo journalctl -u tailscaled --no-pager -n 60

Возможные причины:

Если ничего из этого не подходит — напишите в support@okto.ru, приложите вывод sudo okto support status и последние ~60 строк journalctl -u tailscaled.

Полностью переустановить шкаф

Если нужно начать заново, на шкафу:

sudo docker stop okto-terminal && sudo docker rm okto-terminal
sudo rm -f /etc/okto/terminal.env /etc/okto/device-id

Затем снова запустите curl ... | sudo bash со свежей ссылкой из дашборда.

Нужна помощь OKTO

Соберите логи и отправьте в support@oktoterminal.com:

sudo journalctl -u okto-server -n 500 > /tmp/server.log
sudo docker compose -f /opt/okto-server/docker/docker-compose.server.yml logs > /tmp/stack.log

Расширенные сценарии

Этот раздел — для системных администраторов. Если вы прошли шаги 1–5 и всё работает, сюда можно не заглядывать.

Публичный DNS и автоматический HTTPS (Let's Encrypt)

  1. На шаге 2.2 мастера раскройте «Расширенные настройки TLS».
  2. В поле «Имя сервера» введите публичный DNS (например, factory.mars.ru).
  3. В выпадающем списке выберите «Let's Encrypt (нужен публичный DNS)».
  4. Укажите e-mail администратора для уведомлений от Let's Encrypt.
  5. Убедитесь, что DNS-запись A/AAAA указывает на публичный IP сервера до нажатия «Сохранить».

Обратный прокси Caddy сам получит сертификат и будет его обновлять.

Полный отказ от Управляемой поддержки

Если политика безопасности не разрешает любые исходящие туннели к вендору, поставьте сервер с опт-аутом:

OKTO_NO_SUPPORT=1 curl -sSL https://get.oktoterminal.com/server | sudo bash

Это:

Терминалы аналогично: на команду установки шкафа добавьте OKTO_NO_SUPPORT=1:

OKTO_NO_SUPPORT=1 curl -sSL http://<ваш-сервер>/i/ot_XXX | sudo bash

Если же хотите установить поддержку, но с заменой «доставки» ключа Tailscale на собственную инфраструктуру (например, корпоративный Headscale вместо публичного Tailscale), напишите на support@okto.ru — мы сделаем вариант установщика под ваш контур.

Offline и корпоративная сеть

Если сервер стоит в изолированной сети без доступа к публичному S3, заранее положите архив релиза в своё зеркало (nginx, MinIO, S3, корпоративный Nexus — любой HTTPS-хост) и запустите установщик с указанием адреса:

OKTO_BUNDLE_URL=https://nexus.company.local/okto/okto-bundle.tar.gz \
  curl -sSL https://get.oktoterminal.com/server | sudo bash

Если и сам установщик install-server.sh не получается скачать — скопируйте его с доступной машины (он лежит в корне архива релиза) и запустите локально с той же переменной:

sudo -E OKTO_BUNDLE_URL=https://nexus.company.local/okto/okto-bundle.tar.gz \
  bash install-server.sh

Архив — это .tar.gz с Docker-образами, compose- и Caddy-конфигами и systemd-юнитом. Установщик делает docker load из архива; обращений к Docker Hub не будет.

Режим киоска (включён по умолчанию)

Каждый промышленный шкаф OKTO приходит с физическим дисплеем, поэтому установщик по умолчанию включает режим киоска: автологин, полноэкранный Chromium, скрытый курсор. При перезагрузке шкафа экран сразу показывает интерфейс оператора — без приглашения Linux к вводу пароля.

Облачные виртуальные машины (AWS EC2, GCP, Hyper-V и т. п.) без реального дисплея определяются автоматически и пропускаются — установщик напишет в логе причину и команду, чтобы поставить киоск потом вручную.

Отключить киоск на конкретной машине (например, для отладки):

OKTO_DISABLE_KIOSK=1 curl -sSL http://<ваш-сервер>/i/ot_XXX | sudo bash

Принудительно включить на нестандартном железе, если автоопределение ошиблось:

OKTO_FORCE_KIOSK=1 curl -sSL http://<ваш-сервер>/i/ot_XXX | sudo bash

Поставить киоск уже после того, как шкаф установлен:

curl -fsSL http://<ваш-сервер>/kiosk/install-kiosk.sh | sudo OKTO_URL=http://localhost bash

HDMI-счётчик для MARS SDT L2. Если к шкафу подключён дополнительный дисплей через HDMI, на котором нужно показывать только крупный счётчик упаковок с ПЛК (страница /display/line-counter), запустите установщик киоска с переменной OKTO_DISPLAY_ROUTE:

curl -fsSL http://<ваш-сервер>/kiosk/install-kiosk.sh \
    | sudo OKTO_URL=http://localhost OKTO_DISPLAY_ROUTE=/display/line-counter bash

Эта страница не требует логина — её задача только показывать значение регистра PLC PACKAGE_COUNTER (Modbus 0x11FA) и переподключаться к WebSocket при обрыве. Для обычных шкафов, где операторский интерфейс открывается сразу после загрузки, переменную оставьте пустой.

HTTPS на шкафе (интерфейс оператора)

По умолчанию оператор открывает шкаф по HTTP (http://<IP>/). Это сделано намеренно: самоподписанный сертификат, который шкаф генерирует при первом запуске, свежие версии Chrome и Edge блокируют без возможности обойти.

Если в сети развёрнут корпоративный центр сертификации или шкаф стоит за обратным прокси с настоящим сертификатом — включите HTTPS на шкафе явно:

OKTO_ENABLE_HTTPS=1 curl -sSL http://<ваш-сервер>/i/ot_XXX | sudo bash

MARS L2 — развёртывание на 51 шкаф

Для проекта MARS L2 сервер можно запустить с предзаполненным планом 51 шкафа (ЛУЗ / НОВ / МИР / РНД):

OKTO_PROJECT=mars curl -sSL https://get.oktoterminal.com/server | sudo bash

После этого в дашборде страница «Развёртывание» покажет канбан по фазам и кнопку импорта реестра. Без флага OKTO_PROJECT=mars страница показывает нейтральное пустое состояние.


Полный сценарий A–Z с ролями, расходами и таймлайном см. в DEPLOYMENT.ru.md.