Skip to content

CLI

ush — командная утилита UniShift: управление prod-стеком платформы и раннерами на хосте.

Бинарники публикуются на storage.unishift.ru/cli.

Быстрая установка

Linux / macOS:

bash
curl -fsSL https://storage.unishift.ru/cli/install.sh | bash

Скрипт определит ОС и архитектуру, скачает нужный бинарник и установит его в /usr/local/bin/ush (при необходимости через sudo).

Проверка:

bash
ush --help
ush platform --help

Стек платформы ставится командами ush platform — см. также Установка сервисов.

Параметры установки

Переменные нужно передавать в bash, который выполняет скрипт (не в curl):

bash
# Каталог без sudo
curl -fsSL https://storage.unishift.ru/cli/install.sh \
  | INSTALL_DIR="$HOME/.local/bin" bash

# Другой источник бинарников
curl -fsSL https://storage.unishift.ru/cli/install.sh \
  | BASE_URL=https://storage.unishift.ru/cli bash
ПеременнаяНазначениеПо умолчанию
BASE_URLОткуда качать бинарники и SHA256SUMShttps://storage.unishift.ru/cli
INSTALL_DIRКуда положить бинарник/usr/local/bin
BIN_NAMEИмя файла в INSTALL_DIRush

Если INSTALL_DIR не в PATH, добавьте его или перелогиньтесь.

Ручная установка

Скачайте бинарник под свою платформу и положите в PATH:

ПлатформаФайл
Linux amd64https://storage.unishift.ru/cli/ush-linux-amd64
Linux arm64https://storage.unishift.ru/cli/ush-linux-arm64
macOS amd64https://storage.unishift.ru/cli/ush-darwin-amd64
macOS arm64https://storage.unishift.ru/cli/ush-darwin-arm64
Windows amd64https://storage.unishift.ru/cli/ush-windows-amd64.exe

Пример (Linux amd64):

bash
curl -fsSL -o ush https://storage.unishift.ru/cli/ush-linux-amd64
chmod +x ush
sudo mv ush /usr/local/bin/ush

Windows

На Windows install.sh не используется — скачайте .exe вручную из таблицы выше.

Обновление CLI

Повторный запуск установщика перезапишет бинарник:

bash
curl -fsSL https://storage.unishift.ru/cli/install.sh | bash

URL платформы (важно)

Раннер подключается к платформе по gRPC (/api/v1/runner-stream). В конфиге нужен адрес gateway, а не веб-клиента.

Порт (prod по умолчанию)СервисДля раннера
18080Веб-клиент (nginx, HTTP/1.1)нет
18090Gateway (HTTP + gRPC/h2c)да

Типичная ошибка при URL на UI (:18080):

text
http2: frame too large … looked like an HTTP/1.1 header

Примеры корректного url:

bash
# Self-hosted (HTTP) — нужен insecure
url=http://62.109.4.210:18090
insecure=true

# HTTPS / облако
url=https://app.example.com

Порт 18090 должен быть доступен с хоста раннера (firewall / security group).

Подробнее про общие параметры раннера — в Базовые настройки.

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

bash
# Скачать плагин и сразу запустить (интерактивный опрос url/token/…)
ush install shell --start

# Или без вопросов
ush install shell --start --non-interactive \
  --set url=http://HOST:18090 \
  --set token=YOUR_TOKEN \
  --set insecure=true

ush status

Обязательные поля при старте: url, token (для sql ещё dsn).

Команды

Глобальный флаг: --json — машиночитаемый вывод (где поддерживается).

Платформа

КомандаКратко
ush platform installФайлы, секреты, миграции, up -d
ush platform updateОбновить файлы и (опционально) публичные URL
ush platform upgradeОбновить образы установленных сервисов
ush platform servicesСостояние сервисов (направление, статус, образ)
ush platform enable / disableВключить / выключить сервис (в т.ч. llama-server)
ush platform configПросмотр и правка .env (секреты маскируются)
ush platform migrateМиграции БД и бакет MinIO
ush platform ps / logs / up / downСтатус, логи, старт, стоп

Каталог по умолчанию — /opt/unishift (--dir). Полный сценарий — Установка сервисов.

Раннеры

<id> / instance_id — идентификатор инстанса вида shell-eedb1b0f (см. ush status).

КомандаКратко
ush installСкачать плагин и создать инстанс
ush startЗапустить инстанс или создать новый
ush stopОстановить инстанс
ush restartПерезапустить инстанс
ush statusСписок инстансов и ресурсы
ush logsПоказать / стримить логи
ush config get / setПросмотр и изменение конфига
ush updateОбновить бинарник плагина
ush removeУдалить инстанс

install

Скачивает бинарник плагина с storage под текущую ОС/архитектуру, кладёт его в локальный кэш и регистрирует новый инстанс. Сам по себе процесс раннера не запускает — только готовит инстанс (если не указан --start).

bash
ush install shell
ush install shell --start
ush install shell --set url=http://HOST:18090 --set token=SECRET --set insecure=true --start
ush install shell --start --non-interactive --set url=... --set token=...
ФлагОписание
--set key=valueПараметр конфига (можно несколько раз)
--startСразу запустить инстанс после установки
--non-interactiveНе спрашивать значения в терминале

После первой установки дополнительные инстансы того же плагина создаются без повторного скачивания через ush start shell.

start

Запускает раннер. Аргумент — либо instance_id существующего инстанса, либо имя плагина: тогда создаётся новый инстанс из уже скачанного бинарника.

В интерактивном терминале перед стартом опрашивает конфиг (Enter оставляет значение в [скобках]). Обязательны url и token (для sql ещё dsn).

bash
ush start shell-eedb1b0f
ush start shell --set url=http://HOST:18090 --set token=SECRET
ush start shell --non-interactive --set url=... --set token=...
ФлагОписание
--set key=valueПараметр конфига (можно несколько раз)
--non-interactiveБез опроса — только --set и сохранённый конфиг

Если инстанс уже running и --set не передан, команда ничего не делает и подскажет сделать restart.

stop

Останавливает работающий инстанс (graceful shutdown процесса раннера). Инстанс остаётся в реестре — его можно снова запустить через start.

bash
ush stop shell-eedb1b0f

restart

Останавливает и сразу запускает инстанс заново. Удобно после смены конфига или чтобы заново пройти опрос параметров. Флаги те же, что у start: --set, --non-interactive.

bash
ush restart shell-eedb1b0f
ush restart shell-eedb1b0f --set insecure=true

status

Показывает все зарегистрированные инстансы: id, плагин, состояние (running / stopped), CPU и память для запущенных процессов.

bash
ush status
ush status --json

logs

Читает лог-файл инстанса (~/.ush/runners/<plugin>/<id>/logs/runner.log).

bash
ush logs shell-eedb1b0f          # последние 50 строк
ush logs shell-eedb1b0f -n 200   # последние 200 строк
ush logs shell-eedb1b0f -f       # стримить новые строки (Ctrl+C — выход)
ФлагОписание
-n, --linesСколько последних строк показать (по умолчанию 50)
-f, --followСледить за файлом в реальном времени

config

Управление конфигурацией инстанса без правки файлов вручную.

  • ush config get <id> — показать все ключи: пользовательские и значения по умолчанию (помечены (default)).
  • ush config set <id> <key> <value> — записать параметр. Если инстанс запущен, изменения применятся только после ush restart <id>.
bash
ush config get shell-eedb1b0f
ush config set shell-eedb1b0f url http://HOST:18090
ush config set shell-eedb1b0f insecure true

Общие ключи: url, token, name, insecure, untagged, temporary, session-timeout, task-timeout, concurrency, tags, description, artifact-tmp. Специфичные для плагина — в Базовые настройки и страницах отдельных раннеров.

update

Скачивает свежую версию бинарника плагина для этого инстанса и подменяет локальный файл. Конфиг и instance_id сохраняются. Если инстанс был запущен, его нужно перезапустить, чтобы подхватить новый бинарник.

bash
ush update shell-eedb1b0f

remove

Останавливает инстанс (если running) и удаляет его из реестра вместе с локальными файлами инстанса. Плагин в кэше может остаться — его можно снова использовать через ush start <plugin>.

bash
ush remove shell-eedb1b0f

platform

Установка и управление Docker-стеком на сервере. Общие флаги всех подкоманд:

ФлагEnvПо умолчанию
--dirINSTALL_DIR/opt/unishift
--base-urlBASE_URLhttps://storage.unishift.ru/services/prod

Флаг, заданный явно, важнее переменной окружения.

platform install

Скачивает compose и конфиги, один раз генерирует .env с секретами, накатывает миграции и поднимает стек. Повторный запуск секреты не переписывает.

bash
ush platform install
ush platform install --public-host 203.0.113.10
ush platform install --public-host app.example.com --public-scheme https
ush platform install --dir /srv/unishift --tag 0.0.3
ФлагEnvПо умолчанию
--public-hostPUBLIC_HOSTlocalhost
--public-schemePUBLIC_SCHEMEhttp
--registryREGISTRYleggnom
--tagTAGlatest
--client-portCLIENT_PORT18080
--centrifugo-portCENTRIFUGO_PORT18100
--web-base-urlWEB_BASE_URLиз host/scheme
--centrifugo-ws-urlCENTRIFUGO_WS_URLиз host/scheme
--centrifugo-allowed-originsCENTRIFUGO_ALLOWED_ORIGINSиз host/scheme

httphttp://HOST:18080 и ws://HOST:18100/…. httpshttps://HOST и wss://HOST/… (ожидается reverse proxy на 443).

Выбор состава стека (--type, иначе интерактивный опрос в TTY):

bash
ush platform install --type all                    # всё из services.yaml
ush platform install --type core                   # минимальное ядро
ush platform install --type direction --directions business,automate
ush platform install --type services --services task-tracker,documents
ФлагEnvЗначения
--typeINSTALL_TYPEall | direction | services | core
--directionsINSTALL_DIRECTIONSнаправления через запятую
--servicesINSTALL_SERVICESсервисы через запятую
--non-interactiveне спрашивать, а падать без --type

Ядро (core: postgres, nats, minio, centrifugo, gateway, auth, spaces, client) ставится всегда; зависимости выбранных сервисов резолвятся по services.yaml. Состав сохраняется в .ush-state.json — с ним работают upgrade, services и enable / disable.

platform update

Подтягивает актуальные файлы со storage, при --public-host переписывает только публичные URL в .env (секреты не трогает), гоняет миграции и docker compose up -d.

bash
ush platform update
ush platform update --public-host 203.0.113.10
ush platform update --public-host app.example.com --public-scheme https

Флаги те же, что у install. Без --public-host / PUBLIC_HOST URL в .env не меняются.

platform migrate

Поднимает postgres и minio, создаёт недостающие БД и бакет, по очереди прогоняет *-migrate через docker compose run --rm.

bash
ush platform migrate
ush platform migrate --dir /opt/unishift

platform ps / logs / up / down

Обёртки над docker compose в каталоге установки.

bash
ush platform ps
ush platform logs -f
ush platform logs --tail 80 postgres
ush platform up
ush platform down              # тома сохраняются
ush platform down --volumes    # СНОСИТ данные
ФлагКомандаОписание
-f, --followlogsСледить за выводом
-n, --taillogsСколько последних строк
--sincelogsЛоги с момента (42m, RFC3339)
-v, --volumesdownУдалить named volumes

platform upgrade

Обновляет образы только для установленного набора сервисов (из .ush-state.json) и пересоздаёт контейнеры, у которых образ реально поменялся. Безопаснее update, когда нужен только апдейт кода без правки файлов стека.

bash
ush platform upgrade --check          # только отчёт, ничего не трогает
ush platform upgrade --yes            # без подтверждения
ush platform upgrade --services auth,gateway   # подмножество установленного
ush platform upgrade --rollback       # вернуть TAG до последнего upgrade
ФлагОписание
--checkПоказать доступные обновления и выйти
--yesНе спрашивать подтверждение
--services x,yОграничить подмножеством установленных сервисов
--rollbackОткатить TAG к значению до последнего upgrade

platform services

Таблица состояния по каждому сервису: направление из каталога, статус контейнера и образ — объединение .ush-state.json и docker compose ps.

bash
ush platform services

platform enable / disable

Включение и выключение отдельных сервисов поверх установленного набора.

bash
ush platform enable data-tables      # + зависимости, затем compose up -d
ush platform disable spark-grid      # стоп и удаление из install state
  • enable резолвит зависимости сервиса по services.yaml, добавляет его в .ush-state.json и стартует недостающие контейнеры.
  • disable нельзя применить к сервисам ядра (core) и к тем, от кого зависят другие включённые сервисы.

llama-server (локальный LLM) — сервис за профилем llm. Одна команда делает всё: кладёт GGUF в <dir>/llama-server/models/, прописывает LLAMA_MODEL_FILE и добавляет llm в COMPOSE_PROFILES в .env, затем стартует:

bash
# с конкретной моделью (локальный файл или URL):
ush platform enable llama-server --gguf ~/models/tinyllama-finetuned.gguf
ush platform enable llama-server --gguf https://storage.example.com/models/x.gguf

# без --gguf скачивается дефолтная fine-tuned модель planner'а (littlelamb.gguf)
ush platform enable llama-server

ush platform disable llama-server    # остановить; модель остаётся на диске

Подробнее про переменные (CPU/GPU-образ, контекст, порты) — в разделе Локальный LLM инструкции установки.

platform config

Просмотр и правка <dir>/.env без ручного редактирования. Секреты маскируются, пока не передан --reveal.

bash
ush platform config show             # все KEY=value (секреты скрыты)
ush platform config show --reveal    # с настоящими значениями
ush platform config get TAG
ush platform config set TAG=0.0.4 REGISTRY=leggnom
ush platform config diff             # расхождение ключей с каноническим набором
  • set принимает несколько пар key=value за раз и сначала копирует.env в .env.bak.
  • diff показывает, каких ключей из дефолтного набора нет в .env и какие ключи там лишние.
  • После set изменения применяются ush platform upgrade (или update).

Плагины

Раннеры скачиваются с https://storage.unishift.ru/runners/{os}/{plugin}.

ПлагинНазначение
shellShell-команды на хосте
codeКод в изолированном контейнере
dockerЗадачи в Docker
sqlSQL-запросы
ollamaLLM через Ollama
docx-generator / pdf-generator / xlsx-generatorГенерация документов

Данные на диске

Состояние раннеров — в ~/.ush/:

ПутьСодержимое
~/.ush/registry.jsonРеестр инстансов
~/.ush/runners/<plugin>/<id>/Бинарник, config.json, логи
~/.ush/tmp/Временные загрузки

Состояние платформы — в --dir (по умолчанию /opt/unishift):

ПутьСодержимое
docker-compose.yamlОписание стека
.envКонфиг и секреты (chmod 600)
.ush-state.jsonУстановленный набор сервисов
services.yamlКаталог сервисов и направлений
postgres/, centrifugo/, searxng/Монтируемые конфиги
llama-server/models/GGUF-модели локального LLM (если включён)