Déploiement rapide d'un bot Telegram sur VPS : De l'exécution locale à une disponibilité 24 h/24, 7 j/7
Vous avez terminé le développement de votre bot Telegram, mais l'exécuter localement ne garantit pas une disponibilité constante. La plupart des développeurs peinent à déployer en production, submergés par une infinité d'informations sur Docker et Kubernetes. En réalité, vous pouvez le déployer en seulement 8 minutes avec des ressources minimales. Ce guide montre comment déployer un bot aiogram sur un VPS bon marché sans configurations complexes, en utilisant des outils Linux basiques.
Préparation de l'infrastructure
Choisir un fournisseur cloud est crucial pour un fonctionnement fiable du bot. Timeweb Cloud offre l'accès à des serveurs dans 12 régions géographiques, y compris des emplacements hors de Russie. C'est essentiel pour utiliser des API bloquées en Russie (Groq, ChatGPT et autres services d'IA). Pour les bots sans dépendances externes, les data centers russes conviennent.
Paramètres clés du serveur :
- OS : Ubuntu 24.04 LTS
- Configuration : minimale (1 vCPU, 1 GB RAM, 25 GB SSD)
- Coût : à partir de 290 ₽/mois
- Sauvegardes : recommandé d'activer
Lors de la création de l'instance, vérifiez la section sauvegardes. Les sauvegardes protègent contre :
- Plantages du serveur
- Corruption de la base de données SQLite
- Erreurs de mise à jour du code
- Suppression accidentelle de fichiers
Le système de sauvegarde de Timeweb permet de restaurer l'état du projet des 7 derniers jours par intervalles de 24 heures. C'est crucial pour éviter la perte de données lors des tests de nouvelles fonctionnalités.
Configuration de l'environnement serveur
Après activation du serveur, connectez-vous via SSH :
ssh root@your_IP_address
Mettez à jour les paquets système et installez les composants requis :
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip git -y
npm install pm2 -g
Important : vérifiez la version de Python avant d'installer les dépendances :
python3 --version
Pour les projets utilisant un environnement virtuel, exécutez :
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Transfert du projet et lancement
Utilisez SFTP pour transférer les fichiers. Dans FileZilla, entrez :
- Hôte : adresse IP du serveur
- Utilisateur : root
- Mot de passe : depuis le panneau de contrôle
- Port : 22
Après avoir copié le projet sur le serveur :
- Naviguez vers le répertoire du projet
- Activez l'environnement virtuel
- Installez les dépendances
- Lancez le bot via PM2
cd /root/your_project
source venv/bin/activate
pm2 start main.py --name "telegram-bot"
PM2 assure le redémarrage automatique après redémarrages et surveille les plantages. Vérifiez l'état du processus :
pm2 status
Maintenance et mises à jour
Lors des modifications de code, suivez cette checklist stricte :
- Éditez les fichiers via SFTP (FileZilla → Affichage/Édition)
- Enregistrez les changements (Ctrl+S)
- Confirmez la synchronisation dans FileZilla
- Redémarrez le processus dans PM2
pm2 restart telegram-bot
Pour le dépannage, utilisez :
pm2 logs— afficher les logs en directpm2 monit— surveiller les ressourcespm2 resurrect— récupérer après plantages
Points clés
- Utilisez toujours .env pour stocker les tokens
- Configurez des sauvegardes automatiques toutes les 24 heures
- Testez les mises à jour dans une branche isolée
- Surveillez l'utilisation de la mémoire avec htop
- Mettez régulièrement à jour les paquets système
Optimisation des performances
Pour les bots à forte charge (plus de 1000 utilisateurs actifs), étapes recommandées :
- Configuration d'un fichier swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- Limitation des ressources PM2
Dans ecosystem.config.js :
module.exports = {
apps: [{
name: 'telegram-bot',
script: 'main.py',
instances: 1,
autorestart: true,
max_memory_restart: '300M'
}]
}
- Configuration du pare-feu
sudo ufw allow OpenSSH
sudo ufw allow 22/tcp
sudo ufw enable
Une erreur courante des débutants est de lancer le bot sans démonisation. Fermer la session SSH tue le processus. PM2 résout cela, mais il nécessite une configuration d'autostart appropriée :
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
Pour la surveillance de disponibilité, ajoutez un point de terminaison health-check simple dans le code de votre bot :
from aiogram import Router
router = Router()
@router.message(Command('health'))
async def health_check(message: Message):
await message.answer('Bot is running')
Vérifiez régulièrement les logs pour les erreurs de connexion API Telegram. Problèmes typiques :
- Token invalide dans .env
- Adresse IP bloquée
- Limites de taux dépassées
- Erreurs de gestion de webhook
Lors de l'utilisation de webhooks, configurez Nginx comme proxy inverse avec un certificat SSL. Pour les bots à faible charge, le mode polling suffit et ne nécessite pas d'infrastructure supplémentaire.
— Editorial Team
Aucun commentaire pour le moment.