- FediMeteo est un service mondial d’information météo né sur un VPS FreeBSD à 4 euros, qui publie automatiquement la météo de chaque ville via le Fediverse
- Chaque pays est géré de façon isolée dans une jail FreeBSD, et les données sont récupérées avec le logiciel snac et l’API Open-Meteo puis publiées au format Markdown
- Le système se met à jour automatiquement toutes les 6 heures, prend en charge 39 jails, 2937 villes dans 38 pays, et a dépassé 7700 abonnés
- Le service a rencontré divers problèmes d’exploitation, comme une fuite de clé API, des erreurs de calcul de coordonnées et des problèmes de traduction, mais il a été stabilisé grâce au cache et à l’amélioration du support multilingue
- Il est considéré comme un exemple montrant qu’il est possible de construire un service mondial efficace et autonome avec une infrastructure à faible coût
Présentation du projet
- FediMeteo est un service automatisé d’alertes météo basé sur le Fediverse, né d’un intérêt personnel
- Son créateur est parti de l’idée qu’il voulait voir directement la météo de sa propre ville dans sa timeline
- Le service crée des comptes par ville (bots) qui publient régulièrement la météo de chaque ville
- FreeBSD a été choisi comme système d’exploitation, avec des jails séparées par pays pour faciliter l’administration et renforcer la sécurité
- Les premiers tests ont été réalisés sur un VPS en Allemagne, et le service fonctionne aujourd’hui sur un VPS à 4 euros à Milan, en Italie
Principes de conception
- Séparation des instances par pays pour renforcer l’administration et la sécurité, avec possibilité de migration individuelle si nécessaire
- Sources de données au choix entre wttr.in et Open-Meteo, avec une préférence pour l’open source et la fiabilité
- Accessibilité renforcée : langue locale, compatibilité avec les navigateurs texte, usage des émojis, sans dépendance à JavaScript
- Maintien d’une architecture où de petits composants coopèrent, conformément à la philosophie Unix
- Adoption de snac comme logiciel central, avec prise en charge d’ActivityPub, génération de RSS, faible consommation de ressources et compilation rapide
Implémentation technique
- Chaque jail fonctionne de manière indépendante, et des scripts Python récupèrent les données de chaque ville avant de les convertir en Markdown
- Calcul des coordonnées avec geopy, puis appel à l’API Open-Meteo
- Envoi des publications avec la commande
note de snac, sans nécessité de gérer des clés API externes
- Le script post.sh parcourt toutes les villes pour générer et publier automatiquement les messages
- cron l’exécute toutes les 6 heures, avec Uptime-Kuma pour la supervision de l’état du service
- Les noms de villes sont gérés dans un fichier (
cities.txt), et l’ajout d’une nouvelle ville est pris en compte automatiquement
Croissance et retours
- Les tests ont d’abord été centrés sur l’Italie, avant une extension à différents pays européens
- FediFollows a présenté le projet, entraînant une forte hausse du nombre d’abonnés et des demandes d’utilisateurs de plusieurs pays
- Ajout du support multilingue, des émojis et de la fonction de publication non listée (unlisted)
- Les fonctionnalités continuent d’être améliorées grâce aux retours rapides de la communauté de développeurs
Extension et défis techniques
- Lors de l’extension à l’échelle mondiale, des problèmes sont apparus autour de la conversion d’unités (Celsius/Fahrenheit), des décalages horaires et de la distinction entre villes homonymes
- L’arrivée aux États-Unis et au Canada a ajouté plus de 1200 villes, avec usage du séparateur
__ pour distinguer les États ou provinces
- Après avoir dépassé la limite de l’API gratuite d’Open-Meteo, le projet a obtenu une clé API dédiée
- Grâce à l’efficacité de FreeBSD et de snac, il est possible d’exploiter de nombreux pays sur un seul VPS
Performances du système et infrastructure
- Configuration du VPS : FreeBSD 14.3-RELEASE, avec BastilleBSD pour gérer les jails
- Au total 39 jails, snapshots ZFS toutes les 15 minutes et sauvegardes externes chaque heure
- 501 Mo de RAM utilisés, avec une légère hausse pendant les mises à jour
- Charge CPU moyenne inférieure à 10 %, avec des pointes à 70–75 % lors des mises à jour massives
- L’instance américaine publie avec un intervalle de 5 secondes entre les villes, pour un traitement complet d’environ 2 h 30
Exemples de résolution de problèmes
- Fuite de clé API : exposition due à du code de débogage, corrigée immédiatement avec émission d’une nouvelle clé
- Erreur geopy : mise en place d’un cache des coordonnées pour pallier les échecs de réponse de Nominatim
- Problèmes de langue : correction d’omissions dans les traductions multilingues et d’erreurs dans le choix de la langue locale
État actuel (en décembre 2025)
- Pays pris en charge : 38 pays, pour 2937 villes
- Plus de 7707 abonnés sur le Fediverse, nombre d’abonnés RSS impossible à estimer
- Présence des principales villes en Europe, Amérique du Nord, Asie et Océanie
- Le système fonctionne de manière stable et conserve une marge d’extension vers d’autres pays
Conclusion
- FediMeteo prouve qu’il est possible de construire un service mondial même avec une infrastructure à faible coût
- C’est un exemple des valeurs de souveraineté des données, de structure simple et de coopération open source
- Son créateur souligne qu’à travers ce projet, la météo est devenue un lien social entre les personnes
Aucun commentaire pour le moment.