Начало работы

Настройка GPU-сервера

Развёртывание headless cradle-server на Linux-сервере с GPU для тяжёлых моделей.

GPU-сервер позволяет запускать Cradle как headless-сервис на машине с CUDA или Apple Silicon, а desktop-приложение или CLI используются только как консоль.

Требования

  • Linux x86_64 с NVIDIA GPU и драйверами (CUDA 12+), или сервер на Apple Silicon.
  • 16+ GB RAM; 32+ GB рекомендуется для моделей от 13B параметров.
  • ~20 GB свободного места для моделей и данных.
  • Node.js 20+ (если запускаете из исходников).

Вариант 1 — пакет cradle-cli + systemd

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

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

Ниже — три взаимоисключающих способа установки. Выберите один: A (обычный), B (без root) или C (ручной). Выполнять их подряд не нужно.

От выбора зависят все дальнейшие команды на этой странице:

A и C (под root)B (без root)
Установка/opt/cradle~/.local/share/cradle
Данные и ключи/var/lib/cradle~/.local/share/cradle/data
Сервиссистемный systemdsystemctl --user
sudoнуженне нужен нигде

A. One-liner installer

Проверит Node 22 + pnpm, скачает zip, распакует в /opt/cradle, поставит production-зависимости, пересоберёт нативные модули и забутстрапит сервер:

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

Порт и каталог данных по умолчанию — 31416 и /var/lib/cradle. Менять их необязательно; если нужно — передайте переменные окружения вместо команды выше, а не после неё:

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

sudo CRADLE_PORT=8443 CRADLE_DATA_DIR=/srv/cradle sh cradle-cli-install.sh

Installer сам кладёт symlink cradle в /usr/local/bin, инициализирует базу и выдаёт первый API-ключ — шаг 2 после него выполнять не нужно, сервер уже работает как systemd-сервис.

B. Установка без root

Если root-доступа нет (VM на чужом хостинге, shared-аккаунт) — запускайте тот же installer без sudo. Он определит отсутствие прав и переключится в rootless-режим: всё уедет в ~/.local/share/cradle, systemd-unit не ставится, CLI линкуется в ~/.local/bin.

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

База и ключ создаются так же, как в варианте A. Отличие одно: systemd-сервиса нет, поэтому сервер нужно запустить самому — см. Запуск сервера.

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

Если нужен контроль над каждым шагом. Актуальную версию и прямую ссылку на архив отдаёт манифест:

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. Инициализируйте сервер (только для варианта C)

Варианты A и B делают это сами. Вручную:

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

Эта команда создаёт пользователя cradle, директорию данных, SQLite-базу, первый admin:* API-ключ и systemd-unit.

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

С systemd (варианты A и C) сервис уже поднят — systemctl status cradle-server.

Без root (вариант B) запускайте бинарь cradle-server, он линкуется рядом с cradle:

cradle-server --data-dir ~/.local/share/cradle/data --port 31416 --bind 0.0.0.0

Чтобы он переживал разлогин, оформите user-unit ~/.config/systemd/user/cradle-server.service:

[Unit]
Description=Cradle Server

[Service]
ExecStart=%h/.local/bin/cradle-server --data-dir %h/.local/share/cradle/data --port 31416 --bind 0.0.0.0
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now cradle-server
loginctl enable-linger $USER   # если разрешено политикой хоста

Ограничения rootless-режима: порт должен быть выше 1024 (31416 подходит), автостарт при перезагрузке работает только с linger, и --user cradle неприменим — сервис работает от вашего пользователя.

3. Скопируйте ключ

Ключ лежит в client-credentials.json внутри каталога данных. Файл имеет права 0600, поэтому читает его только владелец — при установке под root это root, при rootless-установке это вы сами.

Установка под root (A и C):

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

Без root (B) — sudo не нужен:

cat ~/.local/share/cradle/data/client-credentials.json

Используйте ключ для входа с desktop-приложения или CLI:

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

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

Установка под root (A и C) — системный systemd:

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

Без root (B) — user-сервис, флаг --user обязателен в каждой команде, sudo не нужен нигде:

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

Вариант 2 — Docker

docker run -d \
  --name cradle-server \
  --gpus all \
  -p 31416:31416 \
  -v /var/lib/cradle:/data \
  opencradle/cradle-server:latest

Для Apple Silicon используйте образ с тегом -arm64.

Вариант 3 — запуск из исходников

git clone https://github.com/opencradle/opencradle.git
cd opencradle
pnpm install
pnpm build:server
node dist/server/index.js --data-dir /var/lib/cradle --port 31416

Проверка соединения

cradle health
# или
curl -H "Authorization: Bearer ck_live_..." \
  https://gpu-1.local:31416/api/v1/health

Загрузка моделей

cradle models list
cradle models check qwen3-8b-q4
cradle models pull qwen3-8b-q4

Скачивание идёт через SSE; desktop-приложение отображает прогресс в реальном времени.

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

  • По умолчанию сервис слушает на 0.0.0.0. В production ограничьте доступ файрволом до доверенных сетей.
  • Используйте scoped API keys для интеграций, не админ-ключ.
  • Регулярно ротируйте ключи через cradle keys revoke.

Что дальше