Serveur distant (réseaux fermés)
Déployez cradle-server sur un hôte distant dans un réseau fermé, piloté par l'opérateur via une jump host, et distribuez les credentials aux clients.
Dans les réseaux fermés, les serveurs sont atteints via une jump host, donc Cradle ne pousse jamais un déploiement par SSH depuis un client — il n'existe pas de cradle deploy user@server. Le déploiement est toujours piloté par l'opérateur sur le serveur lui-même. Cette page couvre ce flux.
Le flux
1. L'opérateur se connecte au serveur (via la jump host du réseau).
2. Installe le bundle Cradle CLI / serveur.
3. `cradle server init` → déploie cradle-server (sous systemd)
4. `cradle keys create …` → émet des credentials (ck_live_…) pour les clients
5. L'opérateur transfère les credentials aux clients Cradle ;
chaque client se connecte par adresse + clé.Ce qui est réellement livré sur le serveur
cradle-server n'est pas un seul binaire statique. Le build bundle dist/server/index.js, mais garde délibérément les modules natifs externes : better-sqlite3, node-llama-cpp, sqlite-vec, fastify. L'hôte cible a donc besoin, au runtime :
- Un runtime Node 22.
- Le bundle
dist/server/index.js. - Un
node_modulesavec des dépendances natives compilées pour l'OS cible + GPU (better-sqlite3 est un addon ABI ; node-llama-cpp tire un binaire llama.cpp pour CUDA/CPU).
Il existe trois formes de livraison :
| Forme | Ce que vous livrez | Réseau fermé | Effort |
|---|---|---|---|
| A. installateur curl | install.sh + zip depuis S3 ; l'hôte exécute pnpm install --prod + pnpm rebuild | ⚠️ nécessite un registry / internet pendant l'install | faible |
| B. tarball autonome | archive avec JS bundle + node_modules précompilés pour linux-x64 + CUDA (Node optionnel) | ✅ totalement hors ligne après livraison | moyen |
C. image VM / docker save | une image prête avec tout dedans | ✅ | élevé à construire, trivial pour l'utilisateur |
La forme A est la forme par défaut pour les cas ouverts / auto-hébergés avec accès internet. Pour un réseau fermé, l'artefact principal est un tarball autonome (B), qui est aussi ce qui entre dans une image VM (C).
Flux d'installation sur la VM (Forme A)
# 1. Téléchargez le bundle (depuis la landing page ou directement depuis S3)
curl -fsSL -o cradle-cli-${VERSION}-linux-x64.zip \
https://download.opencradle.ai/cradle-cli/${VERSION}/cradle-cli-${VERSION}-linux-x64.zip
# 2. Extrayez dans /opt/cradle
sudo mkdir -p /opt/cradle
sudo unzip -o cradle-cli-${VERSION}-linux-x64.zip -d /opt/cradle
# 3. Exécutez install.sh (crée l'utilisateur `cradle`, installe les deps prod,
# reconstruit les modules natifs, installe l'unité systemd)
cd /opt/cradle
sudo ./install.sh
# 4. Bootstrap : créer la DB, clé admin, credentials client, démarrer le service
sudo /opt/cradle/dist/cli/index.js server init \
--data-dir /var/lib/cradle \
--port 31416 \
--bind 0.0.0.0 \
--install-systemd
# 5. Récupérez les credentials dans /var/lib/cradle/client-credentials.json et
# transférez-les au client Cradle via le canal sécurisé (jump host).Ce qui est dans le zip :
cradle-cli-<version>-linux-x64.zip
├─ dist/server/index.js
├─ dist/cli/index.js
├─ package.json # version production
├─ pnpm-lock.yaml
├─ systemd/cradle-server.service
└─ install.sh # à exécuter en root sur l'hôte cibleTotalement hors ligne (Forme B / C)
Pour un réseau sans registry, construisez à l'avance un tarball autonome — JS bundle + node_modules précompilés pour la plateforme cible (et Node optionnellement) — et transférez le tout :
tar xzf cradle-server-*-linux-x64-cuda.tar.gz -C /opt/cradle
/opt/cradle/cradle server init # unité systemd + bootstrap clé admin
cradle keys create --name client-1 … # credentials → vers le clientParce que le binaire llama.cpp et l'addon better-sqlite3 sont spécifiques à la plateforme/ABI, il y a un tarball par cible GPU (cpu, cuda, optionnellement rocm), produit par une matrice de build dans le pipeline de release.
Prérequis de l'hôte cible
- Linux x86_64.
- Node 22 + pnpm (
corepack enableounpm install -g pnpm@9). - Root pour
install.shetcradle server init. - Pour l'inférence GPU : pilotes NVIDIA + CUDA toolkit. CPU-only fonctionne sans eux.
Connecter un client
cradle login --url http://<serveur>:31416 --key ck_live_...Pour une livraison multi-tenant où chaque client obtient une instance isolée, voir Cradle as a datacenter service.