2 points par GN⁺ 2025-12-31 | 1 commentaires | Partager sur WhatsApp
  • 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

1 commentaires

 
GN⁺ 2025-12-31
Commentaires Hacker News
  • C’est vraiment un plaisir de voir ce genre de petit projet grandir avec succès
    J’ai l’impression que FreeBSD a moins d’éléments superflus et une latence plus faible qu’une distribution Linux
    J’ai configuré une VM FreeBSD à 4 $/mois chez Vultr (1 Go de RAM, 1 vCPU), et même avec Caddy en fonctionnement, l’utilisation de la RAM n’est que de 12 %
    Avec une VM à 4 Go de RAM et 4 vCPU, on dirait qu’on peut encaisser pas mal de trafic
    J’aimerais transformer mon blog perso en web app textuelle au style BBS rétro — avec un serveur multithread en Nim + sqlite, tournant sur FreeBSD sous la forme d’un unique binaire de 4 Mo, sans conteneurs ni bibliothèque JS
    Cet article me conforte dans l’idée de passer à FreeBSD

    • Linux, ça dépend de la distribution et de la configuration
      J’ai fait un test aujourd’hui avec mkosi(https://github.com/systemd/mkosi) : sur une installation minimale, Fedora 43 utilise environ 130 MiB de RAM, Debian autour de 100 MiB
      Quand j’avais essayé une installation minimale de FreeBSD il y a quelque temps, j’avais le souvenir d’une consommation similaire, voire un peu plus selon la configuration ZFS
    • Je me souviens qu’il y a 20 ans, Linux utilisait deux fois moins de ressources qu’aujourd’hui
      Le passage au x64 en est peut-être une des causes
      Ça m’avait surpris de voir qu’on en était arrivé à utiliser deux fois plus de RAM pour faire la même chose, mais en échange on a maintenant accès à une quantité de RAM pratiquement illimitée
    • Il existe aussi des distributions légères comme Alpine
      Même la connexion SSH est bien plus rapide que sur Ubuntu, et le gestionnaire de paquets apk est lui aussi très rapide
    • Les utilitaires BSD sont bien plus faciles à lire que les utilitaires GNU quand on veut comprendre leur fonctionnement interne
      Je préfère le modèle de licence côté GNU, mais pour le code lui-même, le style BSD me plaît davantage
    • Par « retro BBS-like web app », je me demande si tu parles des anciens BBS sur modem, ou d’un forum de discussion classique
      Si c’est le second cas, FlaskBB peut valoir le coup d’œil
  • Je suis moi aussi en train de construire un système perso de prévision surf en utilisant open-meteo
    Ça ne couvre qu’une seule zone, mais c’est facile à étendre
    Je combine les données marines d’open-meteo avec les prévisions météo à court et long terme, puis j’utilise un LLM pour transformer des données quantitatives en descriptions qualitatives
    En gros, ça automatise ce que je faisais mentalement
    Si vous avez des idées, je suis preneur
    https://surfrash.xyz/

    • Très cool. Ça a l’air utile pour n’importe quelle plage
      J’aime bien l’interface centrée sur l’explication plutôt qu’un mur de données
      Je demande aussi l’ajout de la zone de Manly (NSW, Australie)
  • Lecture très sympa
    J’aurais aimé m’intéresser davantage aux *BSD quand j’étais plus jeune, mais maintenant je suis trop habitué à Linux pour changer facilement
    Avec ZFS et les jails, on dirait que l’administration devient très fluide
    J’utilise podman, mais je n’ai pas encore essayé ZFS sur Linux
    Je prévois de créer une archive personnelle et d’exploiter la déduplication de ZFS

    • Je pense pareil
      J’essaie de réduire les stacks complexes de type Docker, et même si systemd existe, le concept de jail ou de sandbox est assez séduisant
      Je préfère les outils qui fonctionnent bien avec la configuration par défaut
  • Les spécifications d’un « VPS à 4 euros » sont impressionnantes
    Par exemple, le VPS le moins cher de Hetzner propose 2 vCPU, 4 Go de RAM, 40 Go de SSD NVMe, mais sans connexion à 1 Gb/s
    Le moins cher que j’ai trouvé, c’était Contabo

    • LowEndBox est un site populaire qui recense ce type de VPS
    • Netcup VPS 500 G11s mérite aussi d’être regardé
    • Il faut faire attention à la comparaison des performances vCPU selon les fournisseurs de VPS
      Les serveurs bon marché sont souvent d’anciennes générations ou trop fortement mutualisés
      4 vCPU peuvent être plus lents que 2 vCPU sur un serveur récent
      Cela dit, pour une application surtout centrée sur la RAM, ça peut être un bon choix
    • Oracle Cloud offre gratuitement 4 oCPU (ARM), 24 Go de RAM, 200 Go de SSD NVMe et 4 Gb/s de bande passante
      Certains disent qu’il est difficile d’obtenir une instance, mais moi je l’utilise sans problème depuis plus de deux ans
      Comme un compte gratuit peut être fermé, mieux vaut passer à une offre payante pour être tranquille
    • J’ai déjà utilisé chez buyvm un VPS à 5 $ par an (256 Mo de RAM), et c’était plutôt utile pour des besoins simples
  • C’est agréable de voir quelqu’un construire lui-même un projet simple sans s’appuyer sur une énorme infrastructure (Kubernetes, AWS, DynamoDB, etc.)

  • Hacker News lui-même tourne sur un serveur FreeBSD à 4 cœurs
    Lien associé

    • En réalité, c’est une architecture avec 2 sockets CPU × 4 cœurs × 2 threads, donc 16 threads au total
    • Mais ce sont quand même des cœurs dédiés, non partagés avec d’autres locataires
  • J’ai moi aussi acheté un serveur avec des caractéristiques similaires pour environ 5 $
    Il a 400 à 500 Go de stockage, et j’ai commencé avec une promotion à 8 $ pour 3 mois
    Ensuite, il passera à 5 $ par mois, et le plaisir et l’immersion qu’apporte l’exploitation directe d’un VPS sont importants
    OVH a des prix bas et l’avantage d’une politique d’egress illimitée
    Upcloud avait aussi une excellente équipe support
    J’ai aussi entendu dire qu’il valait mieux contacter le support OVH via Twitter ou Discord
    Comparer les prix des serveurs et la qualité du support pour optimiser son choix fait partie du plaisir

  • J’avais déjà pensé à acheter le domaine « freeofcharge.org » pour proposer, en sous-domaines, des services gratuits tenant en RAM
    L’idée était de regrouper des services utiles pouvant tourner pour moins de 10 $ par mois

  • J’aimerais aussi créer un outil qui convertit des alertes météo d’une région donnée en HTML/Markdown facile à lire
    Ce ne serait pas pour le fediverse, juste pour des alertes météo plus accessibles

  • À propos de l’idée selon laquelle « il faudrait fournir les prévisions dans la langue locale »,
    comme beaucoup d’utilisateurs ne parlent pas cette langue, je pense qu’écraser la langue par défaut du navigateur n’est pas nécessaire

    • Le but du projet n’est pas de prendre en charge plusieurs langues, mais de transmettre directement les prévisions à l’utilisateur
      À la place, il fournit une expression intuitive via des emoji, ce qui réduit la barrière de la langue