Installation souverain-hybride¶
Walkthrough complet pour l'édition Souverain-hybride : on-prem + APIs externes BYOK + connecteurs cloud BYOC.
Avant de commencer
Vous devez avoir reçu :
- Une clé de licence par email (format
MYE-..., 12 mois) - Un accès au repo Git Myeline
1. Pré-requis¶
Voir Pré-requis serveur. En souverain-hybride, les LLMs externes prennent en charge la synthèse, donc :
- CPU : 8 vCores, 16 GB RAM, 100 GB NVMe suffisent (l'embedding reste local mais le synthèse est déportée sur l'API)
- GPU optionnel : utile uniquement si vous voulez aussi un fallback Ollama local
- Sortie HTTPS : votre firewall doit autoriser au minimum
api.mistral.ai(et tout autre provider IA que vous comptez utiliser :api.anthropic.com,api.openai.com,generativelanguage.googleapis.com)
2. Cloner le repo¶
3. Lancer l'installeur¶
Choisir l'option 3 :
3.1 Licence + domaine + admin¶
Identique à l'installation souveraine — voir Installation souveraine § 3.2-3.4.
3.2 Mailer (Brevo)¶
Contrairement au souverain pur, le mailer peut envoyer de vrais emails via Brevo en souverain-hybride.
── Emails transactionnels (Brevo / Sendinblue)
Configurer Brevo maintenant ? [O/n] : O
Clé API Brevo (xkeysib-...) : xkeysib-XXXXX...
Expéditeur par défaut [hello@myeline.acme.local] :
Nom d'expéditeur [Myeline] : ACME Knowledge
[✓] Mailer configuré
Si vous ne configurez pas Brevo, le mailer reste en log-only (comme en sovereign).
3.3 Synthèse IA — BYOK¶
── Synthèse IA
Mistral est le provider par défaut (français, hébergé UE,
RGPD-compatible). En hybride, chaque organisation
pourra basculer vers OpenAI / Anthropic / Gemini avec sa propre
clé via /admin/orgs (BYOK).
Configurer la clé Mistral plateforme ? [O/n] : O
Clé Mistral AI : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Modèle de synthèse [mistral-medium-latest] :
Modèle auxiliaire (HyDE/rerank) [mistral-small-latest] :
La clé "platform" Mistral fixée ici est utilisée par défaut pour les nouvelles organisations. Chaque org admin pourra ensuite la remplacer par une autre clé (Mistral autre compte, Anthropic, OpenAI, Gemini) ou basculer vers Ollama local.
3.4 Connecteurs cloud — BYOC¶
C'est le moment-clé du déploiement souverain-hybride. Vous devez créer vos propres apps OAuth chez Google / Microsoft / Dropbox.
── Connecteurs de stockage cloud
IMPORTANT — BYOC (Bring Your Own Credentials)
Vous tournez sur https://myeline.acme.local, donc les redirect URIs
pointent vers ce domaine. Vous devez créer vos propres apps OAuth
chez chaque provider (Google / Microsoft / Dropbox) et autoriser
vos URIs ; les credentials de myeline.io ne fonctionneront pas ici.
Google Drive (compte de service)¶
Le connecteur Google Drive utilise un compte de service GCP (server-to-server). Le modèle est server-to-server : l'utilisateur partage explicitement son dossier Drive avec l'email du service account, et Myeline indexe le dossier en arrière-plan. Pas de flow OAuth par utilisateur, pas de redirect URI à configurer.
- console.cloud.google.com → créer un projet (ou en sélectionner un)
- APIs & Services → Library : activer Google Drive API
- IAM & Admin → Service Accounts → Create Service Account :
- Name : "myeline-drive-reader"
- Description : "ACME Myeline — read-only access to user-shared folders"
- Pas de rôle IAM à attribuer (le SA n'a besoin d'aucun droit côté projet GCP — seuls les dossiers Drive que vos users lui partageront seront accessibles)
- Cliquez sur le service account créé → onglet KEYS → ADD KEY → Create new key → JSON : un fichier
<project>-<id>.jsonse télécharge - Notez l'email du service account :
myeline-drive-reader@<project>.iam.gserviceaccount.com— c'est cet email que vos utilisateurs ajouteront en Lecteur sur leur dossier Drive - Collez le JSON sur une seule ligne dans le wizard installeur (entouré de simples quotes pour préserver les guillemets internes) :
Activer les connecteurs Google Drive ? [o/N] : o
Service account JSON (une ligne, entre quotes) :
'{"type":"service_account","project_id":"…","private_key":"-----BEGIN PRIVATE KEY-----\\n…\\n-----END PRIVATE KEY-----\\n","client_email":"myeline-drive-reader@….iam.gserviceaccount.com",…}'
Astuce pour compacter le JSON : cat downloaded.json | jq -c .
⚠️ Le JSON contient une clé privée RSA (champ
private_key). Stockez-le dans votre coffre comme n'importe quel mot de passe critique. En cas de fuite : Console GCP → Service Account → KEYS → DELETE la clé compromise, puis CREATE une nouvelle clé et mettez à jourGOOGLE_SERVICE_ACCOUNT_CREDENTIALS.
OneDrive (Microsoft Graph)¶
- portal.azure.com → Microsoft Entra ID → App registrations → New registration
- Name : "ACME Myeline"
- Supported account types : Single tenant si interne, Multitenant sinon
- Redirect URI : Web, valeur
https://myeline.acme.local/user/cloud/onedrive/callback - Après création : Certificates & secrets → New client secret — copier la Value (visible une fois seulement)
- API permissions → Add permission → Microsoft Graph → Delegated : ajouter
Files.Readetoffline_access - Coller
Application (client) ID+ le secret dans le wizard
Dropbox¶
- dropbox.com/developers/apps → Create app
- API : Scoped access
- Type of access : Full Dropbox (ou App folder selon politique)
- Name : "acme-myeline"
- Settings → OAuth 2 → Redirect URIs :
https://myeline.acme.local/user/cloud/dropbox/callback - Permissions : activer
files.metadata.readetfiles.content.read - App key + App secret → wizard
kDrive Infomaniak (OAuth)¶
- developer.infomaniak.com → Create application
- Redirect URI :
https://myeline.acme.local/user/cloud/kdrive/callback Client ID+Client Secret→ wizard
3.5 Authentication¶
Le wizard saute la section "connexion sociale" en souverain-hybride. Le SSO entreprise est disponible sur demande (service sur-mesure on-premise) — contact hello@myeline.io.
3.6 Reste¶
Backups rclone (vers MinIO ou S3 cloud), Pangolin tunnel optionnel.
4. Démarrer la stack¶
5. Configurer le reverse-proxy¶
Pointez votre Caddy / Nginx vers localhost:5000. Les redirect URIs
OAuth supposent que votre reverse-proxy gère la terminaison TLS sur
le domaine myeline.acme.local.
myeline.acme.local {
reverse_proxy localhost:5000
# Vous pouvez utiliser Let's Encrypt si votre domaine est
# accessible Internet, sinon votre AC interne.
}
6. Première connexion¶
Voir Première connexion admin.
Vérifications post-install¶
# Healthcheck
curl https://myeline.acme.local/healthz
# Mistral atteignable ?
curl https://myeline.acme.local/health
# → JSON avec mistral: "healthy"
# Stripe gaté
curl -I https://myeline.acme.local/payment/checkout_success
# → 404 (normal, Stripe désactivé en hybride)
# Page licence
curl https://myeline.acme.local/license-info
# → page HTML avec votre tier, customer, expiry