> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lobbystack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comprendre l'auto-hébergement

> Découvrez les services qu'exécute un déploiement LobbyStack auto-hébergé, comment les données d'appel circulent entre eux et quelles parties vous exploitez, de Railway à vos propres serveurs.

LobbyStack peut tourner sur un seul hôte Docker ou sous forme de services gérés distincts. L'auto-hébergement vous donne le contrôle des données de l'application, des identifiants, de l'utilisation des fournisseurs, des sauvegardes et des mises à niveau.

<Note>
  Les appels en direct exigent quand même Twilio, OpenAI et un point de terminaison HTTPS public pour le tableau de bord. Les appels téléphoniques nécessitent aussi un trunk Twilio Elastic SIP qui envoie les appels à votre projet OpenAI.
</Note>

## Déployer sur Railway

Le [modèle Railway de LobbyStack](https://railway.com/deploy/lobbystack) déploie les services admin, worker et de migration avec PostgreSQL, Redis et un bucket de stockage. Railway génère tous les secrets et les mots de passe des bases de données. Vous saisissez une clé API OpenAI et vos identifiants Twilio, puis vous créez votre compte sur le domaine de l'admin et suivez les étapes ci-dessous.

[![Déployer sur Railway](https://railway.com/button.svg)](https://railway.com/deploy/lobbystack)

### Après le déploiement

Les appels de test dans le navigateur fonctionnent dès la fin du déploiement. Les courriels, les appels téléphoniques, l'import de sites Web et Google Calendar demandent plus de configuration, et les étapes pour le téléphone et le calendrier utilisent le domaine de l'admin que Railway attribue. Définissez chaque variable sur le service indiqué, puis déployez les modifications en attente dans Railway.

#### Configurez les courriels

La réinitialisation des mots de passe, les codes de vérification, les invitations d'équipe et les alertes aux opérateurs échouent tant que le worker ne peut pas envoyer de courriels. Sur le service `worker`, définissez :

* `SMTP_HOST`, `SMTP_USERNAME` et `SMTP_PASSWORD` fournis par votre fournisseur de courriel
* `SMTP_PORT`, qui vaut `587` par défaut, et `SMTP_SECURE`, qui vaut `false` par défaut. Utilisez `465` et `true` si votre fournisseur exige TLS dès la connexion.
* `EMAIL_FROM`, une adresse depuis laquelle votre fournisseur vous laisse envoyer, par exemple `LobbyStack <no-reply@example.com>`
* `EMAIL_REPLY_TO`, si les réponses doivent aller à une autre adresse

#### Terminez la configuration des appels téléphoniques

Les appels dans le navigateur fonctionnent sans ces étapes. Les appels téléphoniques exigent un projet OpenAI avec SIP activé et un trunk Twilio Elastic SIP :

1. Dans le tableau de bord OpenAI, ajoutez un webhook pour `live.transport.incoming` qui pointe vers `https://votre_domaine_admin/api/webhooks/openai/live`.
2. Définissez le secret de signature du webhook comme `OPENAI_WEBHOOK_SECRET` sur le service `admin`.
3. Dans Twilio, créez un trunk Elastic SIP avec l'URI d'origination `sip:votre_id_de_projet_openai@sip.api.openai.com;transport=tls`.
4. Définissez le SID du trunk comme `TWILIO_SIP_TRUNK_SID` sur le service `worker`. Sans lui, le worker ne peut pas provisionner de numéro de téléphone.

Le [guide du runtime vocal](https://github.com/lobbystack/lobbystack/blob/main/docs/voice/runtime.md#set-up-the-phone-path) (en anglais) explique les réglages de transfert du trunk et le déplacement des numéros existants.

#### Importez des sites Web (facultatif)

Définissez `FIRECRAWL_API_KEY` sur le service `worker`. Sans elle, l'import de sites Web échoue.

#### Connectez Google Calendar (facultatif)

Dans Google Cloud, activez l'API Google Calendar et créez un client OAuth pour une application Web. Ajoutez `https://votre_domaine_admin/api/calendar/google/callback` comme URI de redirection autorisée. Définissez `GOOGLE_CLIENT_ID` et `GOOGLE_CLIENT_SECRET` sur le service `admin`. Le modèle remplit `GOOGLE_REDIRECT_URI`, et le worker lit les trois valeurs depuis l'admin.

#### Utilisez un domaine personnalisé

Ajoutez le domaine au service `admin`, puis donnez à `APP_BASE_URL` sur le service `admin` la valeur `https://votre_domaine`. Ces variables y font référence et suivent le changement :

* `SITE_URL`, `AUTH_TRUSTED_ORIGINS`, `TWILIO_SMS_WEBHOOK_URL`, `TWILIO_STATUS_CALLBACK_URL` et `GOOGLE_REDIRECT_URI` sur le service `admin`
* `APP_BASE_URL`, `TWILIO_STATUS_CALLBACK_URL` et `GOOGLE_REDIRECT_URI` sur le service `worker`

Un déploiement issu d'une ancienne version du modèle contient le domaine Railway écrit dans chacune de ces variables, alors modifiez-les toutes. Faites ensuite pointer le webhook OpenAI et l'URI de redirection Google vers le nouveau domaine. Les numéros de téléphone provisionnés avant le changement gardent leurs anciennes URL de SMS et de rappel de statut dans Twilio jusqu'à ce que vous les y mettiez à jour.

## Base officielle

Le fichier [`docker-compose.yml`](https://github.com/lobbystack/lobbystack/blob/main/docker-compose.yml) du dépôt exécute :

* PostgreSQL avec pgvector pour les données durables, l'état d'authentification et les embeddings des connaissances
* Redis pour les files d'attente, les limites de débit et la coordination en temps réel
* un volume Docker persistant pour les enregistrements et les documents téléversés
* le tableau de bord d'administration Next.js et l'API HTTP
* le worker d'arrière-plan et le répartiteur de l'outbox transactionnelle, qui exécute aussi chaque appel GPT-Live
* Caddy, qui achemine le nom d'hôte du tableau de bord en HTTP simple, derrière le proxy ou l'équilibreur de charge qui termine le HTTPS

LobbyStack n'ajoute pas de conteneurs de surveillance à la pile Compose. Les environnements d'exécution serveur peuvent envoyer des traces, des métriques et des journaux OpenTelemetry vers un backend compatible OTLP configuré.

## Flux de données

1. Le tableau de bord et l'API lisent et écrivent dans PostgreSQL par des connexions propres à chaque rôle et avec la sécurité au niveau des lignes.
2. Les effets de bord durables entrent dans l'outbox PostgreSQL dans la même transaction que les changements d'état de l'entreprise.
3. Le worker répartit les tâches en file d'attente et actualise les instantanés du contexte de l'entreprise.
4. OpenAI héberge l'audio des appels. L'admin démarre chaque appel avec l'instantané de l'entreprise, et le worker répond aux demandes de GPT-Live pour les réservations, les messages et les transferts.
5. L'admin et le worker partagent le fournisseur de stockage configuré. Les déploiements Compose sur un seul hôte utilisent par défaut un volume local persistant.

## Responsabilités

Vous êtes responsable des éléments suivants :

* la durabilité de PostgreSQL, de Redis et du stockage de fichiers
* les sauvegardes, les exercices de restauration, les mises à niveau et la surveillance
* le DNS public et le TLS du tableau de bord
* les identifiants Twilio, OpenAI, de courriel, de calendrier, de facturation et d'analytique
* la rotation des secrets et les rôles de base de données à privilèges minimaux

Poursuivez avec le [guide de déploiement Docker Compose](/fr/self-hosting/docker-compose), les [variables d'environnement](/fr/self-hosting/environment-variables) et la [référence des fournisseurs](/fr/self-hosting/providers).

<Warning>
  Le stockage local exige que l'admin et le worker tournent sur le même hôte Docker. Les déploiements dont les conteneurs d'application sont répartis sur plusieurs hôtes doivent définir `STORAGE_PROVIDER=s3` et utiliser AWS S3 ou un service compatible.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.