Aurora Nexus — Référence du wizard d'installation
référence commune du wizard
Ce guide décrit l'usage du wizard CLI (ops/install_wizard.py). Il sert de référence commune aux parcours local et serveur.
Avant de lancer le wizard, choisissez le mode :
- Local :
docs/02_Installation/Local/01-PreRequis-Local.md - Serveur / VPS :
docs/02_Installation/Serveur/01-PreRequis-Serveur.md
Démarrage one-pass recommandé
Sur un serveur neuf, le point d'entrée recommandé est désormais le wrapper racine :
./install.sh --server --domain nexus.votredomaine.tld --admin-email admin@votredomaine.tldPour un poste local Mac/Windows/Linux avec Docker Desktop ou Docker Engine :
./install.sh --localinstall.sh ne remplace pas le wizard : il prépare une configuration minimale puis appelle ops/install_wizard.py.
Démarrage avancé via wizard direct
Sur un serveur ou pour une intégration contrôlée, commencez par cloner le repo, puis lancez le wizard depuis ce dossier :
mkdir -p ~/Apps
cd ~/Apps
git clone https://github.com/syl2042/Aurora-Nexus.git Nexus
cd ~/Apps/Nexus
pip install -r ops/requirements.txt
python3 ops/install_wizard.py run --preset server1. Prérequis
Voir docs/02_Installation/02-PreRequis.md pour choisir le bon parcours, puis lire les prérequis locaux ou serveur.
Le wizard vérifie automatiquement les ports et vous propose des valeurs par défaut si besoin.
Installer les dépendances wizard :
pip install -r ops/requirements.txtSi vous lancez le wizard sans dépendances, il proposera de les installer automatiquement.
2. Lancer le wizard
python3 ops/install_wizard.py run --preset serverMode rapide (garde ports & Docling par défaut) :
python3 ops/install_wizard.py run --preset server --fastMode local poste utilisateur :
python3 ops/install_wizard.py run --preset local --fastÉtapes effectuées :
- Préflight (version Python,
docker/docker compose, ports libres). - Prompts interactifs (mode serveur/local, domaine ou URLs locales, email admin, ports, stockage objet, secrets Postgres/MinIO, clés API…).
- Nom de domaine : hostname brut (
nexus.votredomaine.tld) utilisé côté infra. - URL publique : version complète avec protocole (
https://nexus.votredomaine.tld) utilisée dans les liens et callbacks. - URLs dérivées : le wizard propose automatiquement
console-minio.<domaine>,PUBLIC_UPLOAD_BASE_URL(ex:https://<domaine>/minio) et, si souhaité,qdrant.<domaine>. - En mode serveur, pour chaque URL avec un sous‑domaine distinct, il demande de confirmer la création de l’entrée DNS A correspondante.
- En mode local, aucune validation DNS n'est demandée.
- Aurora Scraper (optionnel) : le wizard demande si Scraper est installé. Si oui, il demande son URL (stockée dans
NEXT_PUBLIC_AURORA_SCRAPER_URL) pour afficher un bouton “Ouvrir Scraper” dans l’UI Nexus. - JWT dans le body : option “extensions/bots non-web” (si
RETURN_JWT_IN_BODY=true). - Mode serveur : OpenRouter runtime, OpenAI embeddings et FreeCurrency restent requis en usage wizard direct.
- Mode local / install.sh : les clés provider peuvent être différées et configurées ensuite dans l'admin.
- Stockage objet :
minioreste le choix local/dev/autonomie. En mode serveur,aws_s3peut être choisi pour un client AWS / DSI ; les buckets AWS doivent déjà exister et le wizard ne les crée pas. - OpenRouter Usage : optionnel (laisser vide si non utilisé).
- FreeCurrency obligatoire pour la conversion $/€.
- Qdrant hybride : recommandé (par défaut). Si désactivé,
QDRANT_DENSE_VECTOR_NAMEest vidé. Changer ce choix après ingestion impose une recréation Qdrant + ré‑ingestion. - Mot de passe admin (seed) : si laissé vide, le wizard génère un mot de passe et l’écrit dans
nexus.env.full. - Mode
--from-file: pensez à fourniradmin_default_passwordsi vous voulez un mot de passe spécifique (sinon il est généré). - Les questions ports et Docling peuvent rester sur les valeurs par défaut (modifiables ensuite via l’UI d’admin).
- Si
dockerrenvoie “permission denied”, le wizard propose de relancer les commandes docker ensudo. Alternative : ajouter l’utilisateur au groupe docker puis relancer (sudo usermod -aG docker $USER+ logout/login).
- Nom de domaine : hostname brut (
- Génération d’un fichier
.envdans un dossier de run (par défautops/wizard_runs/_runs/<timestamp>/.env), sans toucher au.envracine.- Le wizard écrit toutes les variables listées dans
.env.example(logs, rétention, GC Qdrant, auth, etc.). - Si tu laisses un champ vide, il injecte la valeur par défaut (ou un secret généré aléatoirement pour JWT/DB/MinIO/Gateway/Fernet).
- Pour écrire explicitement à la racine, fournir
--env-path .env(⚠️ à éviter sur un environnement déjà en service). - Production : conserver le
.envhors repo (ex./etc/aurora/prod.env,chmod 600) et démarrer avecdocker compose --env-file /etc/aurora/prod.env up -d(le fichier doit contenirAURORA_ENV_FILE=/etc/aurora/prod.env). - Le wizard génère aussi un fichier complet avec secrets visibles à la racine (
nexus.env.full) et demande de le copier dans un endroit sûr.- Si
nexus.env.fullcontient encorechange-me-now, c’est que la valeur n’a pas été fournie/générée au moment du wizard : la source de vérité est alors/etc/aurora/nexus.env. - Vérification rapide (sur le serveur) :
sudo rg '^(ADMIN_EMAIL|ADMIN_DEFAULT_PASSWORD|POSTGRES_USER|POSTGRES_PASSWORD)=' /etc/aurora/nexus.env
- Si
- Le wizard peut écrire une copie de production (par défaut
/etc/aurora/nexus.env) avec le bonAURORA_ENV_FILE.
- Le wizard écrit toutes les variables listées dans
- Création du réseau Docker
sylio_defaultsi absent (utile si un reverse-proxy/stack adjacente est jointe à ce réseau). docker compose up -d --build+ attente des services (barre de progression Rich).- Le wizard lance
docker composeavec--env-file <env_path>et injecte aussiAURORA_ENV_FILE=<env_path>pour que les services lisent le bon env.
- Le wizard lance
- Bootstrap DB uniquement si Postgres est local (
POSTGRES_HOST=postgres) :- exécution de
ops/init_db.sh - si
ops/seed/current.sqlest présent et non vide, il est appliqué (seed des prompts/services/workspaces/paramètres actuels). - vérification automatique : toutes migrations + présence de
ASSISTANT_CORE(sinon le wizard échoue). - si Postgres est externe (OVH), aucun bootstrap/migration automatique.
- guide DB externe :
docs/02_Installation/Serveur/04-Postgres-Externe.md.
- exécution de
- Init stockage objet :
- en mode
minio, buckets créés via le service one-shotminio-init(idempotent) ; - en mode
aws_s3, aucun bucket AWS n'est créé par le wizard ; le dry-run vérifie uniquement la cohérence de configuration.
- en mode
- Healthcheck HTTP (
/api/health). - Rapport final (URLs, ports, identifiants masqués) + log JSON lines dans
ops/logs/install_wizard_<timestamp>.jsonl. - En mode serveur uniquement : génération d’un snippet Caddyfile (
caddy.snippetdans le dossier de run) + proposition d’écriture automatique de/etc/caddy/Caddyfilesi Caddy est déjà présent et si l'utilisateur confirme.
⚠️ Le wizard ne fait pas apt install caddy. En mode local, Caddy est ignoré. En dry-run, le snippet est généré mais jamais écrit dans /etc/caddy.
4. Après installation (premiers pas)
- Ouvrir le domaine public dans un navigateur (HTTPS) et se connecter avec l’admin.
- Vérifier les paramètres essentiels (admin → paramètres) :
- Provider LLM + clés (OpenRouter/OpenAI).
- Embeddings, chunking, limites d’upload.
- Créer un premier service puis ses workspaces (obligatoire pour l’ingestion et les requêtes).
- Tester
/api/healthet l’UI. - Assistant RAG (optionnel) : aller sur
/{locale}/admin/assistant-raget cliquer Rafraîchir la base (peuple la KB interne__rag_assistant).
4bis. Seed “config actuelle” (optionnel)
Objectif : injecter vos prompts/services/workspaces/paramètres dans les prochaines installations.
Le wizard applique automatiquement ops/seed/current.sql s’il est présent et non vide.
Tables recommandées :
prompt_template,prompt_version,prompt_bindingservice_profilescaller_apps_configsource_apps_config,workspaces_configcache_settingsoptimizer_settingsllm_providers,tenant_allowed_providers(si vous voulez figer l’onglet “Providers”)system_settings
Export minimal (à lancer sur l’instance source) :
sudo bash -lc 'set -a; source /etc/aurora/nexus.env; set +a; \
POSTGRES_CONTAINER=$(docker compose ps -q postgres); \
docker exec -i "$POSTGRES_CONTAINER" env PGPASSWORD="$POSTGRES_PASSWORD" \
pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" \
--data-only --inserts \
-t prompt_template -t prompt_version -t prompt_binding \
-t service_profiles \
-t caller_apps_config \
-t source_apps_config -t workspaces_config \
-t cache_settings -t optimizer_settings \
-t llm_providers -t tenant_allowed_providers \
-t system_settings \
> ops/seed/current.sql'⚠️ Rendez le seed idempotent (ON CONFLICT / UPDATE) si vous comptez relancer le wizard.
3. Options CLI principales
| Option | Description |
|---|---|
--from-file config.yaml | Charge les réponses depuis un fichier YAML/JSON (non-interactif). |
--yes / -y | Skip de la confirmation finale (batch/CI). |
--dry-run | Écrit des artefacts dry-run (plan + env.preview.env redacted) sans lancer Docker. |
--skip-pull | Évite docker compose pull (utile hors réseau). |
--env-path | Fichier .env à écrire (par défaut: dans le dossier de run, sans toucher au .env racine). |
--output-dir | Dossier de run (défaut: ops/wizard_runs/_runs/<timestamp>/). |
--compose-file | Compose alternatif (monostack, tests). |
--wait-timeout | Temps max (s) pour l'attente des containers (défaut: 300). |
--project-name | Force COMPOSE_PROJECT_NAME pour lancer une stack parallèle. |
--preset server | Mode VPS/serveur : domaine public, HTTPS, Caddy ou reverse-proxy. |
--preset local | Mode poste local : URLs 127.0.0.1, pas de DNS ni Caddy. |
Exemple de stack parallèle (garde l'infra historique intacte) :
COMPOSE_PROJECT_NAME=aurorarag_wizard python3 ops/install_wizard.py run --project-name aurorarag_wizard3bis. Alternative : page web “Installation” (dry-run)
Si vous avez déjà une instance Nexus en cours (même partielle), la page /<locale>/installation permet de générer :
- un
env.preview.env(secrets masqués), - un
plan.json(liste des services et étapes).
Techniquement, la page appelle POST /api/public/installation/dry-run et peut être protégée par INSTALLATION_WIZARD_TOKEN (header X-Installation-Token).
Mode rapport uniquement
python3 ops/install_wizard.py reportRelit un .env (par défaut: .env si présent, sinon le dernier run dans ops/wizard_runs/_runs/), teste HOST_API_PORT + HOST_UI_PORT et affiche l'état (succès/erreur) sans toucher aux containers.
4. V1 (post‑MVP) : améliorations prévues
Ces éléments ne sont pas implémentés dans la version actuelle, mais cadrent la V1 “installation/ops” :
- Manifeste de release (
public/update-manifest.json) avec version + changelog + hash images. - Endpoint
GET /api/updates/latestqui retourne ce manifeste. - UI : bannière “Nouvelle version disponible” (Admin → Paramètres) + lien changelog + doc d’upgrade.
- Wizard : option
--check-updatespour comparer la version locale au manifeste et proposer un upgrade guidé. - Packs métiers (option wizard) : sélectionner les packs/services à activer (sources, workspaces, prompts et réglages RAG) lors de l’installation.
- Reset & maintenance : renforcer et tester
ops/reset_environment.py(dry-run, garde‑fous, scénarios support) et documenter un runbook d’intervention.
5. Fichier de configuration (--from-file)
Exemple YAML minimal :
app_hostname: nexus.votredomaine.tld
public_domain: https://nexus.votredomaine.tld
admin_email: admin@mondomaine.com
host_ports:
api: 8000
ui: 3000
gateway: 8100
qdrant: 6333
minio_api: 9000
minio_console: 9001
postgres: 5432
redis: 16379
postgres_user: aurora
postgres_password: super-secret
postgres_db: auroranexus
minio_root_user: aurora-s3
minio_root_password: autre-secret
jwt_secret: change-me
allow_insecure_jwt_secret: false
oauth_login_code_ttl_seconds: 180
llm_credentials_enc_key: change-me
allow_legacy_plaintext_credentials: false
enable_ingest_url: false
aurora_diagnostic_log: false
return_jwt_in_body: false
openai_api_key: sk-proj-xxx
openrouter_api_key: sk-or-yyy
freecurrency_api_url: https://api.freecurrencyapi.com/v1/latest?apikey=XXXX¤cies=EURChamps non fournis → valeurs par défaut (cf. ops/install_wizard/models.py).
6. Logs & troubleshooting
- Tous les événements sont tracés dans
ops/logs/install_wizard_<timestamp>.jsonl(JSON lines). Idéal pour le support. - En cas d'échec Docker ou healthcheck, le wizard affiche la commande fautive et l'erreur (
dockerstderr). Relancer avec--verbosepour les détails. - Ports occupés → message
Ports déjà utilisés: .... Relancer en ajustant les valeurs proposées. - Secrets jamais ré-affichés en clair (masquage
****abcd).
Mode “reprise par LLM” (en cas d’échec)
Si le wizard échoue (préflight, validation, docker, healthcheck), il affiche un bloc “PROMPT LLM (RECOVERY)” à coller dans un LLM.
Ce prompt contient :
- le dossier de run (ex.
ops/wizard_runs/_runs/<timestamp>/) - le log JSONL associé (ex.
ops/logs/install_wizard_<timestamp>.jsonl) - les artefacts utiles (
caddy.snippet,.env, etc.)
Ne collez jamais de secrets dans le chat : le LLM doit lire les fichiers locaux depuis la machine cible.
7. Scripts appelés
ops/init_db.sh: attend Postgres (aurorarag_postgres), crée la tableaurora_schema_migrations, appliqueaurora_schema.sql+ toutes les migrationsNN_*.sql(priorité au dossiermigrations/, fallback sur la racine si absent). Idempotent, garde une trace par fichier.- Init MinIO : le wizard repose sur le service
minio-init(scriptops/init_minio.sh) pour créer les bucketsuploads/artifacts/backups. Idempotent. - AWS S3 : utiliser
--storage-provider aws_s3ouOBJECT_STORAGE_PROVIDER=aws_s3. Les bucketsuploads/artifacts/backupsdoivent exister, les credentials AWS ne sont jamais affichés en clair, et un rôle IAM runtime peut remplacer les variablesAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY.
8. Vérifications post-installation
- Source de vérité : cette section sert de checklist unique (à lier depuis le README).
- UI :
http://127.0.0.1:<HOST_UI_PORT>(login admin à créer lors du premier accès). - API :
http://127.0.0.1:<HOST_API_PORT>/api/health→{"status": "ok"}. - Qdrant :
curl http://127.0.0.1:<HOST_QDRANT_PORT>/collections(attendaurora_documents). - MinIO console :
http://127.0.0.1:<HOST_MINIO_CONSOLE_PORT>(credentials choisis).
9. Procédure express pour un nouveau serveur (rappel)
- Cloner le dépôt public :
git clone https://github.com/syl2042/Aurora-Nexus.git && cd Aurora-Nexus - Lancer le wizard :
python3 ops/install_wizard.py run- renseigne tes clés; si tu laisses vide, les secrets internes sont générés aléatoirement.
.envcomplet est produit (toutes les variables de.env.example).
- Démarrer :
docker compose --env-file <chemin/.env> up -d
(si le.envest hors repo, vérifier que le fichier contient bienAURORA_ENV_FILE=<chemin/.env>). - Vérifier
/api/healthet l’accès UI.
Pour documenter des retours beta, créer une issue Wizard install feedback avec : OS/Docker, options, extrait du log JSON, captures docker compose ps.