Aller au contenu
  • Streamlit
  • Python
  • IA

Déployer vos applications Streamlit sur votre propre domaine : Guide complet pour une personnalisation professionnelle

Un guide détaillé pour héberger vos applications Streamlit sur votre propre serveur avec un nom de domaine personnalisé, offrant une solution professionnelle pour les projets d'IA et de data science.
Hébergement de mon code streamlit sur mes serveus, nom de domaines ovh.jpeg

Déployer vos applications Streamlit sur votre propre domaine : Guide complet pour une personnalisation professionnelle

Dans un monde où la data science et l'intelligence artificielle sont devenues des outils incontournables pour les entreprises, la capacité à présenter vos projets Python de manière professionnelle est essentielle. Streamlit s'est imposé comme une solution populaire pour créer rapidement des interfaces web pour vos applications Python, mais l'hébergement standard sur nom_de_domaine.streamlit.app peut manquer de professionnalisme pour des projets d'entreprise.

Dans cet article, nous allons explorer comment déployer votre application Streamlit sur votre propre serveur avec un nom de domaine personnalisé, vous permettant ainsi de présenter vos projets d'IA sous votre propre marque.

Pourquoi héberger votre application Streamlit sur votre propre domaine ?

L'hébergement de votre application Streamlit sur un domaine personnalisé présente plusieurs avantages significatifs :

  • Image de marque professionnelle : Un domaine personnalisé renforce votre identité de marque et inspire confiance.
  • Contrôle total : Maîtrisez l'infrastructure, les performances et la sécurité de votre application.
  • Personnalisation avancée : Intégrez votre application à d'autres services ou à votre écosystème existant.
  • Confidentialité des données : Gardez vos données sensibles sur vos propres serveurs.
  • Évolutivité : Adaptez les ressources serveur en fonction de vos besoins spécifiques.

Prérequis techniques

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un serveur (VPS, dédié ou cloud) avec un système d'exploitation Linux
  • Un nom de domaine enregistré (par exemple via OVH)
  • Des connaissances de base en administration système Linux
  • Votre application Streamlit fonctionnelle

Étape 1 : Préparer votre serveur

Commençons par configurer votre serveur pour accueillir votre application Streamlit :

# Mettre à jour le système
sudo apt update && sudo apt upgrade -y

# Installer Python et pip si nécessaire
sudo apt install python3 python3-pip python3-venv -y

# Installer Docker (optionnel mais recommandé)
sudo apt install docker.io docker-compose -y
sudo systemctl enable docker
sudo systemctl start docker

Étape 2 : Configurer votre application Streamlit pour le déploiement

Pour préparer votre application Streamlit au déploiement, créez un fichier Dockerfile à la racine de votre projet :

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8501

CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]

Créez également un fichier docker-compose.yml :

version: '3'
services:
  streamlit:
    build: .
    ports:
      - "8501:8501"
    restart: always
    volumes:
      - ./:/app

Étape 3 : Configurer Nginx comme proxy inverse

Nginx servira de proxy inverse pour rediriger les requêtes de votre domaine vers votre application Streamlit :

# Installer Nginx
sudo apt install nginx -y

# Configurer un site Nginx
sudo nano /etc/nginx/sites-available/streamlit

Ajoutez la configuration suivante :

server {
    listen 80;
    server_name votre-domaine.com www.votre-domaine.com;

    location / {
        proxy_pass http://localhost:8501;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}

Activez la configuration et redémarrez Nginx :

sudo ln -s /etc/nginx/sites-available/streamlit /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Étape 4 : Configurer votre nom de domaine OVH

Dans votre espace client OVH :

  1. Accédez à la section "Domaines" et sélectionnez votre domaine
  2. Allez dans "Zone DNS"
  3. Ajoutez ou modifiez l'enregistrement A pour pointer vers l'adresse IP de votre serveur
  4. Attendez la propagation DNS (peut prendre jusqu'à 24-48 heures)

Étape 5 : Sécuriser votre application avec HTTPS

Pour une sécurité optimale, configurez HTTPS avec Let's Encrypt :

# Installer Certbot
sudo apt install certbot python3-certbot-nginx -y

# Obtenir un certificat SSL
sudo certbot --nginx -d votre-domaine.com -d www.votre-domaine.com

Étape 6 : Déployer et lancer votre application

Revenez au répertoire de votre projet et déployez votre application :

# Construire et démarrer les conteneurs Docker
sudo docker-compose up -d

# Vérifier que tout fonctionne
sudo docker-compose logs

Bonnes pratiques et optimisations

Pour garantir la stabilité et les performances de votre application :

  • Monitoring : Mettez en place des outils de surveillance comme Prometheus et Grafana
  • Sauvegardes : Planifiez des sauvegardes régulières de votre application et de sa base de données
  • Mise à l'échelle : Configurez un équilibreur de charge si vous prévoyez un trafic important
  • CI/CD : Automatisez le déploiement avec des pipelines CI/CD (GitHub Actions, GitLab CI, etc.)

Cas d'usage concrets

Chez Platane, nous avons accompagné plusieurs clients dans le déploiement d'applications Streamlit personnalisées. Par exemple, pour le projet Epictory, nous avons développé une plateforme d'analyse de données sportives avec une interface utilisateur intuitive basée sur Streamlit, déployée sur une infrastructure AWS personnalisée avec un domaine dédié.

Notre équipe a également mis en place une solution similaire pour notre propre plateforme de gestion de contenu automatisée par l'IA, où l'interface d'administration utilise Streamlit pour permettre une visualisation et une manipulation efficaces des données.

Dépannage courant

Voici quelques problèmes fréquents et leurs solutions :

  1. L'application n'est pas accessible : Vérifiez les pare-feu (ufw) et assurez-vous que les ports nécessaires sont ouverts.
  2. Erreurs de proxy Nginx : Vérifiez les logs Nginx (/var/log/nginx/error.log).
  3. Problèmes de certificat SSL : Assurez-vous que vos certificats sont à jour et correctement configurés.
  4. Performances lentes : Optimisez votre application Streamlit et envisagez d'augmenter les ressources de votre serveur.

Conclusion

Déployer votre application Streamlit sur votre propre domaine est une étape cruciale pour présenter vos projets d'IA et de data science de manière professionnelle. Bien que cela puisse sembler complexe au premier abord, en suivant ce guide étape par étape, vous pouvez créer une solution robuste et personnalisée qui reflète l'identité de votre entreprise.

Chez Platane, nous comprenons l'importance de présenter vos innovations technologiques sous leur meilleur jour. Notre expertise en développement de solutions sur mesure, combinant technologies de pointe comme l'IA générative et déploiements personnalisés, nous permet d'accompagner nos clients dans la réalisation de leurs projets les plus ambitieux.

Vous avez un projet d'application Streamlit ou d'IA que vous souhaitez déployer professionnellement ? N'hésitez pas à prendre rendez-vous via notre formulaire de contact. Notre équipe d'experts se fera un plaisir d'échanger avec vous sur vos besoins spécifiques et de vous proposer une solution adaptée. Collaborer avec Platane, c'est s'assurer d'un accompagnement technique de haut niveau et d'une approche créative pour transformer vos idées en réalisations concrètes.

Revenir au journal

Parlons de ce que vous aimeriez améliorer ou créer.

Une idée précise, un fonctionnement à revoir ou simplement l’envie d’explorer les possibilités : racontez-nous où vous en êtes.

Prenons rendez-vous Un premier échange, sans engagement.

Écrivez-nous.

* Champs obligatoires

Facultatif
Facultatif