FediMeteo: Wie ein 4-Euro-FreeBSD-VPS zu einem Wetterdienst für Tausende Menschen weltweit wurde
(it-notes.dragas.net)- FediMeteo ist ein weltweiter Wetterinformationsdienst, der auf einem 4-Euro-FreeBSD-VPS begann und über das Fediverse automatisch das Wetter für einzelne Städte veröffentlicht
- Jedes Land wird in einem FreeBSD jail getrennt verwaltet; die Daten werden mit der Software snac und der Open-Meteo API abgerufen und im Markdown-Format veröffentlicht
- Das System wird alle 6 Stunden automatisch aktualisiert, unterstützt 39 jails, 2937 Städte in 38 Ländern und ist auf mehr als 7700 Follower gewachsen
- Es gab verschiedene betriebliche Probleme wie geleakte API-Schlüssel, Fehler bei der Koordinatenberechnung und Probleme bei Sprachübersetzungen, die jedoch durch Caching und Verbesserungen bei der Mehrsprachigkeit stabilisiert wurden
- Das Projekt gilt als Beispiel dafür, dass sich auch mit kostengünstiger Infrastruktur effiziente und autonome globale Dienste aufbauen lassen
Projektüberblick
- FediMeteo ist ein automatischer Wetterbenachrichtigungsdienst auf Fediverse-Basis, der aus persönlichem Interesse entstanden ist
- Der Entwickler begann mit dem Wunsch, das Wetter seiner eigenen Stadt direkt in der Timeline zu sehen
- Der Dienst erstellt Konten (Bots) pro Stadt und veröffentlicht regelmäßig das Wetter jeder Stadt
- Als Betriebssystem wurde FreeBSD gewählt; pro Land werden jails getrennt verwaltet, um Verwaltung und Sicherheit zu verbessern
- Die ersten Tests liefen auf einem VPS in Deutschland, derzeit wird der Dienst auf einem 4-Euro-VPS in Mailand, Italien betrieben
Designprinzipien
- Trennung der Instanzen nach Ländern stärkt Verwaltung und Sicherheit und erlaubt bei Bedarf eine individuelle Migration
- Als Datenquelle stehen wttr.in und Open-Meteo zur Wahl, mit Fokus auf Open-Source-Freundlichkeit und Zuverlässigkeit
- Bessere Zugänglichkeit: lokale Sprachen, Kompatibilität mit Textbrowsern, Emoji-Nutzung und keine Abhängigkeit von JavaScript
- Gemäß der Unix-Philosophie bleibt die Struktur aus kleinen, zusammenarbeitenden Komponenten erhalten
- Als Kernsoftware wurde snac gewählt; sie unterstützt ActivityPub, erzeugt RSS, benötigt wenig Ressourcen und kompiliert schnell
Technische Umsetzung
- Jedes jail arbeitet unabhängig; ein Python-Skript ruft die Daten für jede Stadt ab und wandelt sie in Markdown um
- Koordinaten werden mit geopy berechnet, danach wird die Open-Meteo API aufgerufen
- Beiträge werden mit dem
note-Befehl von snac versendet, ohne dass ein externes API-Key-Management nötig ist
- Das Skript post.sh durchläuft alle Städte und erzeugt sowie veröffentlicht Beiträge automatisch
- cron führt es alle 6 Stunden aus, Uptime-Kuma überwacht den Status
- Stadtnamen werden in einer Datei (
cities.txt) verwaltet; neue Städte werden beim Hinzufügen automatisch berücksichtigt
Wachstum und Reaktionen
- Zunächst wurde mit Fokus auf Italien getestet, danach erfolgte die Ausweitung auf europäische Länder
- Nachdem FediFollows das Projekt vorgestellt hatte, stieg die Zahl der Follower sprunghaft an und die Nutzeranfragen aus verschiedenen Ländern nahmen zu
- Ergänzt wurden Mehrsprachigkeit, Emoji-Darstellung und die Funktion für nicht gelistete Beiträge (unlisted)
- Durch schnelles Feedback aus der Entwickler-Community wurden Funktionen kontinuierlich verbessert
Erweiterung und technische Herausforderungen
- Bei der globalen Ausweitung traten Probleme auf wie Einheitenumrechnung (Celsius/Fahrenheit), Zeitzonenunterschiede und die Unterscheidung gleichnamiger Städte
- Mit dem Start in den USA und Kanada kamen mehr als 1200 Städte hinzu; zur Unterscheidung nach Bundesstaaten wurde das Trennzeichen
__verwendet - Nach Überschreitung des Limits der kostenlosen Open-Meteo-API wurde ein dedizierter API-Schlüssel bereitgestellt
- Dank der Effizienz von FreeBSD und snac können selbst auf einem einzelnen VPS viele Länder betrieben werden
Systemleistung und Infrastruktur
- VPS-Spezifikation: FreeBSD 14.3-RELEASE, Verwaltung der jails mit BastilleBSD
- Insgesamt 39 jails, ZFS-Snapshots alle 15 Minuten, externe Backups stündlich
- RAM-Nutzung 501 MB, bei Updates etwas höher
- Durchschnittliche CPU-Last unter 10 %, bei großen Updates Anstieg auf 70–75 %
- Die US-Instanz veröffentlicht mit einem Abstand von 5 Sekunden zwischen den Städten; die komplette Verarbeitung dauert rund zweieinhalb Stunden
Beispiele für Problemlösungen
- API-Schlüssel-Leak: durch Debug-Code offengelegt, sofort behoben und ein neuer Schlüssel ausgestellt
- geopy-Fehler: durch Einführung von Koordinaten-Caching behoben, wenn Nominatim-Antworten ausfielen
- Sprachprobleme: fehlende Übersetzungen und falsche Auswahl lokaler Sprachen wurden korrigiert
Aktueller Stand (Stand: Dezember 2025)
- Unterstützte Länder: 38, Anzahl der Städte: 2937
- Mehr als 7707 Follower im Fediverse; die Zahl der RSS-Abonnenten ist nicht abschätzbar
- Enthält wichtige Städte in Europa, Nordamerika, Asien und Ozeanien
- Das System läuft stabil und bietet Spielraum für eine Ausweitung auf weitere Länder
Fazit
- FediMeteo belegt, dass sich auch mit kostengünstiger Infrastruktur globale Dienste aufbauen lassen
- Das Projekt zeigt den Wert von Datensouveränität, einfacher Struktur und Open-Source-Zusammenarbeit
- Der Entwickler betont, dass das Projekt gezeigt habe, wie das Wetter zu einem sozialen Bindeglied zwischen Menschen werden kann
1 Kommentare
Hacker-News-Kommentare
Es ist wirklich schön zu sehen, wie solche kleinen Projekte erfolgreich wachsen.
Ich habe das Gefühl, dass FreeBSD im Vergleich zu Linux-Distributionen weniger Ballast und geringere Latenzen hat.
Ich habe bei Vultr eine FreeBSD-VM für 4 Dollar im Monat eingerichtet (1 GB RAM, 1 vCPU), und selbst mit Caddy liegt die RAM-Nutzung nur bei 12 %.
Mit einer VM mit 4 GB RAM und 4 vCPU sollte sich wohl ziemlich viel Traffic bewältigen lassen.
Ich möchte meinen persönlichen Blog als textbasierte Web-App im Retro-BBS-Stil bauen — eine Kombination aus Nim-Multithread-Server + sqlite, die auf FreeBSD als einzelne 4-MB-Binärdatei ohne Container oder JS-Bibliotheken läuft.
Dieser Beitrag hat mich in meinem Entschluss bestärkt, auf FreeBSD zu setzen.
Ich habe heute mit mkosi(https://github.com/systemd/mkosi) getestet: Bei einer Minimalinstallation nutzt Fedora 43 ungefähr 130 MiB RAM, Debian etwa 100 MiB.
Als ich früher eine FreeBSD-Minimalinstallation ausprobiert habe, war es ähnlich oder je nach ZFS-Konfiguration etwas mehr.
Wahrscheinlich ist der Umstieg auf x64 einer der Gründe.
Es war schon bemerkenswert, plötzlich doppelt so viel RAM für dieselbe Aufgabe zu brauchen, aber dafür hat man heute praktisch unbegrenzt RAM zur Verfügung.
Selbst der SSH-Login ist deutlich schneller als bei Ubuntu, und auch der Paketmanager apk ist sehr flott.
Beim Lizenzmodell bevorzuge ich zwar GNU, aber der BSD-Stil gefällt mir beim Code selbst besser.
Falls Letzteres gemeint ist, könnte FlaskBB einen Blick wert sein.
Ich baue ebenfalls mit open-meteo ein persönliches Surfvorhersage-System.
Es deckt nur eine Region ab, lässt sich aber leicht erweitern.
Ich kombiniere die Ozeandaten von open-meteo mit kurz- und langfristigen Wettervorhersagen und lasse das Ergebnis von einem LLM quantitative Daten in qualitative Beschreibungen umwandeln.
Im Grunde automatisiert das, was ich sonst im Kopf gemacht habe.
Wenn jemand Ideen hat, würde ich mich freuen.
https://surfrash.xyz/
Mir gefällt die erklärungsorientierte Oberfläche statt einer Datenwand.
Ich würde mir auch die Region Manly (NSW, Australien) wünschen.
Hat Spaß gemacht zu lesen.
Ich wünschte, ich hätte mich in jüngeren Jahren stärker für *BSD interessiert, aber inzwischen bin ich zu sehr an Linux gewöhnt, um leicht zu wechseln.
Dank ZFS und den Jail-Funktionen scheint die Verwaltung sehr reibungslos zu laufen.
Ich nutze zwar podman, habe ZFS unter Linux aber noch nicht ausprobiert.
Ich plane ein persönliches Archiv und möchte dafür die Deduplizierung von ZFS nutzen.
Ich versuche ebenfalls, komplexe Stacks wie Docker zu reduzieren, und obwohl es systemd gibt, finde ich das Jail- oder Sandbox-Konzept ziemlich attraktiv.
Ich bevorzuge Tools, die schon mit den Standardeinstellungen gut funktionieren.
Die Spezifikationen dieser „4-Euro-VPS“ sind erstaunlich.
Zum Beispiel hat die günstigste VPS von Hetzner 2 vCPU, 4 GB RAM und 40 GB NVMe-SSD, aber keine 1-Gb/s-Anbindung.
Das Günstigste, das ich gefunden habe, war Contabo.
Billige Server sind oft älter oder stark überbucht.
4 vCPU können langsamer sein als 2 vCPU auf einem modernen Server.
Für RAM-lastige Anwendungen kann das aber trotzdem eine gute Wahl sein.
Man hört zwar, dass Instanzen schwer zu bekommen sind, aber ich nutze das seit über zwei Jahren problemlos.
Es ist sicherer, auf ein kostenpflichtiges Konto umzusteigen, da kostenlose Accounts beendet werden können.
Es ist schön zu sehen, wie jemand einfache Projekte selbst aufbaut, statt auf riesige Infrastruktur wie Kubernetes, AWS oder DynamoDB zu setzen.
Auch Hacker News selbst läuft auf einem FreeBSD-Server mit 4 Kernen.
Zugehöriger Link
Ich habe ebenfalls einen Server mit ähnlichen Spezifikationen für etwa 5 Dollar gekauft.
Er hat 400–500 GB Speicher und begann mit einer 8-Dollar-Promo für drei Monate.
Danach soll er auf 5 Dollar pro Monat umgestellt werden, und eine VPS selbst zu betreiben macht erstaunlich viel Spaß und zieht einen richtig hinein.
OVH ist preiswert und punktet mit einer unbegrenzten Egress-Richtlinie.
Auch Upcloud hatte ein großartiges Support-Team.
Ich habe außerdem den Tipp gehört, den OVH-Support besser über Twitter oder Discord zu kontaktieren.
Schon der Prozess, Serverpreise und Supportqualität zu vergleichen und zu optimieren, macht Spaß.
Ich hatte einmal die Idee, die Domain „freeofcharge.org“ zu kaufen und darunter per Subdomain kostenlose Dienste, die in den RAM passen, anzubieten.
Das Konzept war, nützliche Dienste zu sammeln, die sich für unter 10 Dollar im Monat betreiben lassen.
Ich möchte auch etwas Ähnliches bauen, nämlich ein Tool, das Unwetterwarnungen für bestimmte Regionen in gut lesbares HTML/Markdown umwandelt.
Nicht für das Fediverse, sondern einfach als leicht zugängliche Wetterwarnung.
Zur Meinung, dass „Vorhersagen in der lokalen Sprache angeboten werden sollten“:
Da es viele Nutzer gibt, die die lokale Sprache nicht sprechen, halte ich es für unnötig, die Standardspracheinstellung des Browsers zu überschreiben.
Stattdessen bietet es intuitive Ausdrücke mit Emojis, um Sprachbarrieren zu verringern.