Настройка 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 |
| Сервис | системный systemd | systemctl --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.shInstaller сам кладёт 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.sh2. Инициализируйте сервер (только для варианта 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.targetsystemctl --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.
Что дальше
- Подключите HTTP API для интеграций.
- Настройте Telegram для входящих запросов.
- Разверните несколько тенантов, если предоставляете Cradle как сервис.