istok ui

Запуск локального веб-интерфейса и работа с ним как с фоновым сервисом на Linux и macOS.

istok ui запускает веб-интерфейс, встроенный в бинарный файл Istok, а в Linux и macOS ещё и управляет им как фоновым сервисом. Что показывает интерфейс, читайте в руководстве по веб-интерфейсу; пошаговая настройка сервиса — в разделе Обновления и служба веб-интерфейса.

Команды

Команда Назначение
serve Запустить веб-интерфейс на переднем плане. Команда по умолчанию.
service install Создать или обновить сервис, включить его и (пере)запустить.
service uninstall Остановить и отключить сервис и удалить его файл.
service start Запустить сервис.
service stop Остановить сервис.
service restart Перезапустить сервис.
service status Показать состояние сервиса.

Запустить интерфейс

istok ui

работает так же, как:

istok ui serve

Istok слушает 127.0.0.1, выводит адрес и открывает его в браузере по умолчанию:

Istok UI: http://127.0.0.1:7700/
Press Ctrl+C to stop.

Если открыть браузер не удалось, Istok выводит предупреждение и продолжает работать — откройте адрес вручную.

Флаги:

Флаг По умолчанию Назначение
--port 7700 Порт на loopback-интерфейсе. 0 выбирает свободный порт. Также ISTOK_UI_PORT.
--no-open Вывести адрес, не открывая браузер.
--database PATH Путь к базе SQLite. Также ISTOK_DATABASE.

Например:

istok ui --port 7800 --no-open

Если порт уже занят, команда завершается ошибкой и предлагает выбрать другой через --port.

Интерфейс доступен только с локальной машины. У него нет входа и токена; от чего это защищает, а от чего нет, читайте в руководстве по веб-интерфейсу.

Запуск как сервис

istok ui service запускает интерфейс как фоновый сервис вашего пользователя. Права root не нужны.

Система Менеджер сервисов Сервис Файл
Linux systemd (systemctl --user) istok-ui.service ${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user/istok-ui.service
macOS launchd (launchctl, домен gui/<uid>) sh.istok.ui ~/Library/LaunchAgents/sh.istok.ui.plist

На других системах, а также без systemctl или launchctl команда сообщит, что не поддерживается, — запускайте istok ui напрямую.

Файл генерируется заново при каждом install, поэтому не правьте его вручную.

Установка

istok ui service install

install записывает файл сервиса, загружает или перезагружает сервис и (пере)запускает его. Команда выводит путь к файлу, бинарный файл, который запускает сервис, и адрес:

Istok UI: http://127.0.0.1:7700/

Сервис запускает бинарный файл istok по тому абсолютному пути, с которым вы выполнили install, с аргументами ui --no-open и выбранным портом.

Флаги:

Флаг По умолчанию Назначение
--port 7700 Порт на loopback-интерфейсе, который слушает сервис. Также ISTOK_UI_PORT.
--database PATH Путь к базе SQLite, записывается в файл сервиса. Также ISTOK_DATABASE.

Сервис не наследует окружение вашей оболочки. Если вы используете свою базу, передайте её в install (или задайте ISTOK_DATABASE при запуске команды), чтобы абсолютный путь записался в файл сервиса.

Чтобы сменить порт или базу или переключить сервис на другой бинарный файл istok, снова выполните install.

Перезапуск и логи

После сбоя сервис запускается снова. На Linux systemd перезапускает его через 2 секунды; лог можно посмотреть командой journalctl --user -u istok-ui. На macOS launchd перезапускает его примерно через 10 секунд и запускает при каждом входе в систему; лог пишется в ~/Library/Logs/istok/ui.log.

Работа после выхода из системы (Linux)

systemd останавливает пользовательские сервисы, когда завершается ваша последняя сессия, если для пользователя не включён режим lingering:

loginctl enable-linger

Управление сервисом

istok ui service status
istok ui service stop
istok ui service start
istok ui service restart

На Linux эти команды вызывают systemctl --user для istok-ui.service. Неактивный сервис status показывает без ошибки.

На macOS они вызывают launchctl: start и restart используют kickstart, status показывает launchctl print. stop выгружает агент (bootout), иначе launchd снова запустил бы остановленный интерфейс; агент загрузится при start или при следующем входе в систему.

Удаление

istok ui service uninstall

Команда останавливает сервис и удаляет его файл. На Linux она также отключает юнит и перезагружает systemd, на macOS — выгружает агент.

Обновления

После успешного istok update Istok перезапускает сервис, если выполнены все условия:

  • сервис установлен;
  • сервис активен;
  • сервис запускает тот самый бинарный файл, который только что обновился.

При перезапуске istok update выводит:

Restarted the web UI service on the new binary.

Если перезапуск не удался, обновление всё равно считается успешным, а Istok выводит предупреждение. Перезапустите сервис сами командой istok ui service restart.