Развёртывание

Удалённый сервер

Развёртывание headless cradle-server на Linux-машине в закрытом контуре через jump-хост.

В закрытых контурах доступ к серверам идёт через jump-хосты, поэтому Cradle не пушит деплой по SSH из клиента. Развёртывание всегда оператор-driven на самом сервере.

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

1. Скачайте cradle-cli

Последний релиз на странице загрузок сервера:

curl -fsSL \
  https://download.opencradle.ai/cradle-cli/latest/cradle-cli-install.sh \
  | sudo sh

sudo ln -sf /opt/cradle/dist/cli/index.js /usr/local/bin/cradle

Ручная установка из архива (версию и ссылку отдаёт манифест):

VERSION=$(curl -fsSL https://download.opencradle.ai/cradle-cli/latest/manifest.json \
  | grep -o '"version": *"[^"]*"' | cut -d'"' -f4)

curl -fsSL -o cradle-cli-${VERSION}-linux-x64.zip \
  https://download.opencradle.ai/cradle-cli/${VERSION}/cradle-cli-${VERSION}-linux-x64.zip

sudo mkdir -p /opt/cradle
sudo unzip -o cradle-cli-${VERSION}-linux-x64.zip -d /opt/cradle
cd /opt/cradle
sudo ./install.sh

2. Инициализируйте сервер

sudo cradle server init \
  --data-dir /var/lib/cradle \
  --port 31416 \
  --bind 0.0.0.0 \
  --user cradle

Это создаёт:

  • пользователя cradle;
  • директорию данных /var/lib/cradle;
  • SQLite + sqlite-vec;
  • первый admin:* API-ключ;
  • systemd-unit cradle-server.

3. Заберите credentials

sudo cat /var/lib/cradle/client-credentials.json

4. Подключите Client или CLI

cradle login --url https://gpu-1.local:31416 --key ck_live_...

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

sudo systemctl start cradle-server
sudo systemctl enable cradle-server
sudo systemctl status cradle-server
sudo journalctl -u cradle-server -f

Обновление

# 1. Остановите сервис
sudo systemctl stop cradle-server

# 2. Переустановите пакет поверх (installer перезапишет /opt/cradle)
curl -fsSL \
  https://download.opencradle.ai/cradle-cli/latest/cradle-cli-install.sh \
  | sudo sh

# 3. Примените миграции (сервер делает это автоматически при старте)
sudo systemctl start cradle-server

Резервное копирование

Всё состояние — в --data-dir:

sudo tar czf cradle-backup-$(date +%Y%m%d).tar.gz /var/lib/cradle

Остановите сервер перед резервной копией, чтобы БД была консистентна.

Мониторинг

cradle health проверяет /admin/health. Для автоматического мониторинга проверяйте тот же endpoint с вашего инструмента:

curl -H "Authorization: Bearer ck_live_..." \
  https://gpu-1.local:31416/api/v1/admin/health

Безопасность

  • Ограничьте доступ на порт 31416 файрволом до доверенных сетей.
  • Используйте scoped API keys для интеграций.
  • Регулярно ротируйте ключи через cradle keys revoke.
  • Credentials-файл имеет права 0600 и содержит plaintext admin-ключ — храните его в секрет-хранилище.

Troubleshooting

Сервер не стартует

sudo journalctl -u cradle-server -n 100 --no-pager

Частые причины: отсутствует Node.js, не хватает прав на data-dir, нативный модуль better-sqlite3 не пересобран под платформу.

Нет звука от Telegram / widget

Проверьте channels_config в БД и убедитесь, что канал enabled и токен/ключ валидны.

Модель не помещается в RAM

cradle models check qwen3-14b-q4

Уменьшите модель или добавьте swap.