Aller au contenu

Héberger Olivares AI soi-même

Les paquets de déploiement sont fournis par le canal Business ; leur publication n’est pas vérifiée ici. Vérifiez le paquet du chart et son éditeur selon les instructions du canal avant d’utiliser le chart local. L’exemple de manifeste utilise un fichier Business nommé business-install.yaml. L’installation isolée nécessite Enterprise.

Helm, Kubernetes operators, Terraform, appliance and FIPS/STIG images are Business deployment artifacts. The source paths below are in the Business distribution. Air-gapped installation requires Enterprise.

La prochaine version est 0.4 ; sa release GitHub n’est pas encore publiée. Les commandes ci-dessous décrivent les artefacts prévus. Compilez depuis les sources jusqu’à la publication, puis vérifiez chaque artefact avant utilisation. L’état observé figure dans docs/releases/0.4-install-surfaces.json.

Olivares AI est conçu pour l’auto-hébergement avant tout. Le produit entier tient dans un seul binaire statique avec l’interface web embarquée, si bien que le déploiement le plus simple se résume à un seul fichier ; les chemins Compose et Kubernetes existent pour le multi-nœud et la production. Tous les chemins partagent les mêmes valeurs par défaut sécurisées — aucun identifiant par défaut, un jeton d’amorçage à usage unique, TLS activé par défaut —, sans télémétrie obligatoire ni sortie du plan de contrôle par défaut. Ne franchit votre périmètre que ce que vous configurez à cette fin : les appels à vos API de modèles, les sorties SIEM/webhook que vous raccordez et, si vous en provisionnez un, un fournisseur externe d’embeddings.

Ce guide est la page de décision du déploiement — les options et leurs valeurs par défaut sécurisées d’un coup d’œil. Pour l’installation pas à pas de chaque scénario, les tutoriels de prise en main parcourent chaque chemin de bout en bout : nœud unique (systemd) · Docker Compose · Kubernetes/Helm · air-gapped. Pour vérifier d’abord les artefacts cryptographiquement, voir Vérifier ce que vous avez téléchargé ; pour les sites déconnectés, voir Installer dans un environnement air-gapped.

Distribution des événements NATS : Le pont Core NATS et NATS JetStream nécessitent Business Identity & Scale. Community distribue les événements dans le processus.

Valeurs par défaut sécurisées (tous les chemins)

Section intitulée « Valeurs par défaut sécurisées (tous les chemins) »
Valeur par défaut Comportement
Identifiants aucun. Au premier démarrage, un jeton d’amorçage à usage unique (olst_…) est affiché ; vous créez le premier administrateur avec lui.
TLS activé par défaut. --insecure (texte en clair) est réservé au développement en local.
Liaison toutes les interfaces (:8443, :8444) par défaut : c’est un serveur. Utilisez --listen 127.0.0.1:8443 --grpc-listen 127.0.0.1:8444 pour le restreindre à cet hôte.
Licence Dans le binaire ouvert (AGPL), la licence est validée hors ligne (Ed25519) et sert uniquement d’attestation — elle ne conditionne ni ne dégrade jamais le produit ouvert, et cela ne change pas. Business inclut Regulated Operations, AI Runtime Security, Compliance Packs et Identity & Scale dans un seul abonnement. Les clients peuvent activer ou désactiver chaque famille. Business et Enterprise sont livrés sous forme de binaires ; le code source des éditions payantes reste privé.
Télémétrie de retour désactivée. Le moteur n’effectue aucun appel sortant obligatoire au démarrage.

Compilez l’unique artefact statique (magasin SQLite en Go pur, donc aucune chaîne d’outils C) et lancez-le :

Fenêtre de terminal
task build # compiles ./bin/olivares with the web embedded
./bin/olivares serve \
--listen 127.0.0.1:8443 \
--grpc-listen 127.0.0.1:8444 \
--data-dir /var/lib/olivares

Au premier démarrage, le moteur affiche la bannière d’amorçage :

=== FIRST-BOOT SETUP ===
No accounts exist yet. Open the console and create the first administrator
with this one-time token — setup also creates your first organization and
makes that administrator its owner:
Console: https://127.0.0.1:8443
Token: olst_…
The console serves HTTPS with a self-signed certificate on first boot — your
browser will warn once; that is expected.
Passkeys will not work at that address:
a browser will not run a passkey ceremony at an IP address. Reach the
console by a host name.
On this machine the same console also answers at
https://localhost:8443
and at that address the relying party is derived from the name, which the
verifier accepts.
The token is shown ONCE and is
single-use. Prefer the API? POST /v1/setup {"token":"…","email":"…",
"password":"…"} — add "organization":"…" to name it (default: "Default
Organization"). The reply carries the new organization's tenant_id.
========================

Créez le premier administrateur, puis connectez-vous :

Fenêtre de terminal
curl --cacert /var/lib/olivares/tls.crt -fsS -X POST https://localhost:8443/v1/setup \
-H 'Content-Type: application/json' \
-d '{"token":"<olst_ token>","email":"you@example.com","password":"<strong-password>"}'
curl --cacert /var/lib/olivares/tls.crt -fsS -X POST https://localhost:8443/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com","password":"<strong-password>"}'

Le répertoire de données contient la base SQLite, la clé de signature de l’audit et le matériel TLS — sauvegardez-le et protégez-le.

Répertoire de données personnalisé (layout: custom)

Section intitulée « Répertoire de données personnalisé (layout: custom) »

La disposition native par défaut est /var/lib/olivares. L’adaptateur de service signé (install.sh --data-dir, scripts/install-service.sh) admet un répertoire de données personnalisé par forme, pas par liste d’autorisation. Le manifeste de propriété enregistre "layout": "custom" (CHANGELOG.md [26.9.0] Added ; INSTALL.md).

SDD 04 §6 : chaque champ configurable déclare propriétaire, schéma, sources acceptées et validateur. Ici l’adaptateur possède le répertoire dédié ; l’opérateur possède le parent. Ce sont les chaînes de refus de l’adaptateur lui-même (scripts/install-service.sh) :

Condition What the adapter prints and exits 1
Path is not /*/* (a top-level directory) custom data directory must be a dedicated directory at least two levels deep (for example /srv/olivares), not a top-level directory: $data_dir
The data directory would contain the binary, config or unit custom data directory $data_dir must not contain the installed path $path
Any path component is a symbolic link path component is a symbolic link ($prefix -> …); pass the resolved path instead of provisioning through a link: $1
Parent of a new custom directory does not exist parent of the custom data directory does not exist; create it with the intended owner first: $(dirname -- "$data_target")
Existing system directory mode is not 0700 or 0750 existing system data directory mode is $data_mode; require 0700 or 0750
Path is under /dev, /proc or /sys data directory $data_dir is under an API file system (/dev, /proc, /sys): choose a real directory

install-agentops.sh applique la même règle à deux niveaux pour OLIVARES_DATA_DIR : OLIVARES_DATA_DIR must name a dedicated directory at least two levels deep (for example /srv/olivares), not a top-level directory. Il honore OLIVARES_DATA_DIR et un OLIVARES_WORKSPACE_DIR choisi explicitement.

L’unité rend le répertoire comme ReadWritePaths=<data-dir>. Elle fixe ProtectHome=false et PrivateTmp=false : un répertoire sous /home, /root, /run/user, /tmp ou /var/tmp n’a donc besoin d’aucun montage supplémentaire. L’installateur avertit que /tmp et /var/tmp peuvent être vidés au démarrage ou par un minuteur.

olivares uninstall n’admet ce répertoire personnalisé que lorsque l’unité à son chemin indexé exécute le moteur avec lui, ou lorsqu’un preserve a déjà laissé un témoin de désinstallation à côté de la configuration du service. Diagnostiquez la disposition AgentOps enregistrée avec olivares doctor — voir Dépannage.

Pour les installations par paquet, la valeur par défaut reste /var/lib/olivares. Voir Installer depuis un paquet. Sous macOS, voir Installer avec Homebrew.

Option 2 — Docker Compose (nœud unique, SQLite)

Section intitulée « Option 2 — Docker Compose (nœud unique, SQLite) »

Le dépôt fournit une pile Compose :

Fenêtre de terminal
docker compose -f deploy/compose/docker-compose.yml up -d
# Read the one-time first-boot setup token from the logs:
docker compose -f deploy/compose/docker-compose.yml logs olivares | sed -n '/FIRST-BOOT SETUP/,/========================/p'
# Then open https://localhost:8443 (self-signed TLS by default)

Pour un backend Postgres multi-tenant, définissez les mots de passe et superposez la surcharge Postgres :

Fenêtre de terminal
cp deploy/compose/.env.example deploy/compose/.env # set the two passwords
docker compose -f deploy/compose/docker-compose.yml \
-f deploy/compose/docker-compose.postgres.yml up -d

Les paquets de déploiement sont fournis par le canal Business ; leur publication n’est pas vérifiée ici. Vérifiez le paquet du chart et son éditeur selon les instructions du canal avant d’utiliser le chart local. L’exemple de manifeste utilise un fichier Business nommé business-install.yaml. L’installation isolée nécessite Enterprise.

Fenêtre de terminal
# Set these inputs from the authenticated Business channel after verification.
helm upgrade --install olivares "$BUSINESS_CHART_PACKAGE" \
--set image.repository="$BUSINESS_IMAGE_REPOSITORY" \
--set image.digest="$BUSINESS_IMAGE_DIGEST"
Topologie Quand Magasin Bus d’événements
Binaire unique nœud unique, labo, petit estate, air-gap SQLite (embarqué) en cours de processus
Distribuée multi-hôte, mise à l’échelle, multi-tenant Postgres + RLS en cours de processus + pont NATS (OLIVARES_BUS_CONFIG; la livraison inter-nœuds est honnêtement au-plus-une-fois)
Air-gapped aucune sortie réseau autorisée SQLite ou Postgres en cours de processus (pont NATS optionnel à l’intérieur du périmètre)

Le plan de données (collecteurs) tourne toujours sur votre infrastructure — le control plane est la seule chose dont vous choisissez l’hébergement. La vue d’ensemble de l’architecture explique les compromis.

Une installation fraîche a un estate vide. Câblez de vraies sources (pgAudit de Postgres, CloudTrail, OpenTelemetry depuis les agents, eBPF) pour que l’access map se peuple — voir connecter une source et connecter Claude Code. Pour la surface de configuration, voir la référence de configuration.