Skip to main content
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.
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.

Déployer sur Railway

Le modèle Railway de 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

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 (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 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, les variables d’environnement et la référence des fournisseurs.
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.