Appearance
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 | Откуда качать бинарники и SHA256SUMS | https://storage.unishift.ru/cli |
INSTALL_DIR | Куда положить бинарник | /usr/local/bin |
BIN_NAME | Имя файла в INSTALL_DIR | ush |
Если INSTALL_DIR не в PATH, добавьте его или перелогиньтесь.
Ручная установка
Скачайте бинарник под свою платформу и положите в PATH:
| Платформа | Файл |
|---|---|
| Linux amd64 | https://storage.unishift.ru/cli/ush-linux-amd64 |
| Linux arm64 | https://storage.unishift.ru/cli/ush-linux-arm64 |
| macOS amd64 | https://storage.unishift.ru/cli/ush-darwin-amd64 |
| macOS arm64 | https://storage.unishift.ru/cli/ush-darwin-arm64 |
| Windows amd64 | https://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/ushWindows
На Windows install.sh не используется — скачайте .exe вручную из таблицы выше.
Обновление CLI
Повторный запуск установщика перезапишет бинарник:
bash
curl -fsSL https://storage.unishift.ru/cli/install.sh | bashURL платформы (важно)
Раннер подключается к платформе по gRPC (/api/v1/runner-stream). В конфиге нужен адрес gateway, а не веб-клиента.
| Порт (prod по умолчанию) | Сервис | Для раннера |
|---|---|---|
18080 | Веб-клиент (nginx, HTTP/1.1) | нет |
18090 | Gateway (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-eedb1b0frestart
Останавливает и сразу запускает инстанс заново. Удобно после смены конфига или чтобы заново пройти опрос параметров. Флаги те же, что у start: --set, --non-interactive.
bash
ush restart shell-eedb1b0f
ush restart shell-eedb1b0f --set insecure=truestatus
Показывает все зарегистрированные инстансы: id, плагин, состояние (running / stopped), CPU и память для запущенных процессов.
bash
ush status
ush status --jsonlogs
Читает лог-файл инстанса (~/.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-eedb1b0fremove
Останавливает инстанс (если running) и удаляет его из реестра вместе с локальными файлами инстанса. Плагин в кэше может остаться — его можно снова использовать через ush start <plugin>.
bash
ush remove shell-eedb1b0fplatform
Установка и управление Docker-стеком на сервере. Общие флаги всех подкоманд:
| Флаг | Env | По умолчанию |
|---|---|---|
--dir | INSTALL_DIR | /opt/unishift |
--base-url | BASE_URL | https://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-host | PUBLIC_HOST | localhost |
--public-scheme | PUBLIC_SCHEME | http |
--registry | REGISTRY | leggnom |
--tag | TAG | latest |
--client-port | CLIENT_PORT | 18080 |
--centrifugo-port | CENTRIFUGO_PORT | 18100 |
--web-base-url | WEB_BASE_URL | из host/scheme |
--centrifugo-ws-url | CENTRIFUGO_WS_URL | из host/scheme |
--centrifugo-allowed-origins | CENTRIFUGO_ALLOWED_ORIGINS | из host/scheme |
http → http://HOST:18080 и ws://HOST:18100/…. https → https://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 | Значения |
|---|---|---|
--type | INSTALL_TYPE | all | direction | services | core |
--directions | INSTALL_DIRECTIONS | направления через запятую |
--services | INSTALL_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/unishiftplatform 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, --follow | logs | Следить за выводом |
-n, --tail | logs | Сколько последних строк |
--since | logs | Логи с момента (42m, RFC3339) |
-v, --volumes | down | Удалить 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 servicesplatform enable / disable
Включение и выключение отдельных сервисов поверх установленного набора.
bash
ush platform enable data-tables # + зависимости, затем compose up -d
ush platform disable spark-grid # стоп и удаление из install stateenableрезолвит зависимости сервиса по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}.
| Плагин | Назначение |
|---|---|
shell | Shell-команды на хосте |
code | Код в изолированном контейнере |
docker | Задачи в Docker |
sql | SQL-запросы |
ollama | LLM через 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 (если включён) |