FediMeteo: 4 यूरो के FreeBSD VPS से दुनिया भर के हज़ारों लोगों के लिए मौसम सेवा बनने तक
(it-notes.dragas.net)- FediMeteo एक वैश्विक मौसम सूचना सेवा है, जिसकी शुरुआत 4 यूरो के FreeBSD VPS से हुई, और यह Fediverse के ज़रिए हर शहर का मौसम अपने-आप पोस्ट करती है
- हर देश को FreeBSD jail के ज़रिए अलग करके मैनेज किया जाता है, और snac सॉफ़्टवेयर व Open-Meteo API की मदद से डेटा लाकर Markdown फ़ॉर्मैट में पोस्ट किया जाता है
- सिस्टम हर 6 घंटे में अपने-आप अपडेट होता है, 39 jail, 38 देशों के 2937 शहरों को सपोर्ट करता है, और फॉलोअर संख्या 7700 से अधिक तक बढ़ चुकी है
- API key लीक, coordinates calculation error, language translation issues जैसी कई ऑपरेशनल समस्याएँ आईं, लेकिन caching और बहुभाषी सपोर्ट में सुधार से सिस्टम स्थिर हुआ
- इसे इस बात के उदाहरण के रूप में देखा जाता है कि कम-लागत वाले इंफ्रास्ट्रक्चर पर भी कुशल और स्वायत्त वैश्विक सेवा बनाई जा सकती है
प्रोजेक्ट अवलोकन
- FediMeteo एक Fediverse-आधारित ऑटोमेटेड मौसम अलर्ट सेवा है, जिसकी शुरुआत व्यक्तिगत रुचि से हुई
- निर्माता ने यह सोचकर शुरुआत की कि वह अपनी टाइमलाइन में अपने शहर का मौसम सीधे देखना चाहता था
- सेवा शहर-वार अकाउंट (bot) बनाती है और हर शहर का मौसम नियमित रूप से पोस्ट करती है
- ऑपरेटिंग सिस्टम के रूप में FreeBSD चुना गया, और हर देश के लिए अलग jail रखकर मैनेजमेंट और सुरक्षा सुनिश्चित की गई
- शुरुआती टेस्ट जर्मनी के VPS पर किए गए थे, और अब यह इटली के मिलान में 4 यूरो वाले VPS पर चल रही है
डिज़ाइन सिद्धांत
- देश-वार instance separation के ज़रिए मैनेजमेंट और सुरक्षा को मज़बूत करना, और ज़रूरत पड़ने पर अलग-अलग माइग्रेट करने की सुविधा
- डेटा स्रोत के रूप में wttr.in और Open-Meteo में से चयन, जिसमें open source अनुकूलता और विश्वसनीयता को महत्व दिया गया
- accessibility enhancement: स्थानीय भाषा, text browser compatibility, emoji का उपयोग, JavaScript पर निर्भरता नहीं
- Unix philosophy के अनुसार छोटे-छोटे components के सहयोग से बना ढांचा बनाए रखना
- snac को मुख्य सॉफ़्टवेयर के रूप में अपनाया गया, जिसमें ActivityPub support, RSS generation, कम resource usage, और तेज़ compilation speed है
तकनीकी कार्यान्वयन
- हर jail स्वतंत्र रूप से काम करता है, और Python script शहर-वार डेटा लाकर उसे Markdown में बदलती है
- geopy से coordinates निकालने के बाद Open-Meteo API call की जाती है
- snac के
noteकमांड से पोस्ट भेजी जाती है, और external API key management की ज़रूरत नहीं पड़ती
- post.sh script सभी शहरों पर क्रम से चलकर पोस्ट अपने-आप बनाती और प्रकाशित करती है
- cron इसे हर 6 घंटे में चलाता है, और Uptime-Kuma से स्थिति मॉनिटर की जाती है
- शहरों के नाम फ़ाइल (
cities.txt) में मैनेज किए जाते हैं, और नया शहर जोड़ने पर वह अपने-आप लागू हो जाता है
वृद्धि और प्रतिक्रिया
- शुरुआत में इटली-केंद्रित परीक्षण के बाद इसे यूरोप के अलग-अलग देशों तक बढ़ाया गया
- FediFollows द्वारा प्रोजेक्ट का परिचय दिए जाने के बाद फॉलोअर्स तेज़ी से बढ़े, और अलग-अलग देशों के उपयोगकर्ताओं के अनुरोध भी बढ़े
- बहुभाषी समर्थन, emoji अभिव्यक्ति, और unlisted post फीचर जोड़े गए
- डेवलपर कम्युनिटी से मिले तेज़ फीडबैक के आधार पर फीचर्स में लगातार सुधार होता रहा
विस्तार और तकनीकी चुनौतियाँ
- वैश्विक विस्तार के दौरान unit conversion (Celsius/Fahrenheit), time zone differences, और एक ही नाम वाले शहरों में भेद जैसी समस्याएँ सामने आईं
- अमेरिका और कनाडा में विस्तार के समय 1200 से अधिक शहर जोड़े गए, और राज्य-आधारित पहचान के लिए
__delimiter इस्तेमाल किया गया - Open-Meteo के free API limit पार होने के बाद dedicated API key उपलब्ध कराई गई
- FreeBSD और snac की दक्षता की वजह से एक ही VPS पर कई देशों को चलाना संभव हुआ
सिस्टम प्रदर्शन और इंफ्रास्ट्रक्चर
- VPS स्पेसिफिकेशन: FreeBSD 14.3-RELEASE, और jail मैनेजमेंट के लिए BastilleBSD
- कुल 39 jail, हर 15 मिनट में ZFS snapshot, और हर घंटे external backup किया जाता है
- RAM उपयोग 501MB, और अपडेट के समय इसमें थोड़ी बढ़ोतरी होती है
- CPU load औसतन 10% से कम रहता है, जबकि बड़े अपडेट के दौरान यह 70~75% तक पहुँच जाता है
- अमेरिका instance में शहरों के बीच 5 सेकंड के अंतर से पोस्ट किया जाता है, और पूरी प्रोसेस में लगभग 2 घंटे 30 मिनट लगते हैं
समस्या समाधान के उदाहरण
- API key leak: debug code की वजह से key उजागर हुई, जिसे तुरंत ठीक किया गया और नई key जारी हुई
- geopy error: Nominatim response failure की स्थिति में coordinates caching लागू कर समस्या हल की गई
- भाषा समस्याएँ: बहुभाषी अनुवाद छूटना और स्थानीय भाषा चयन की गलतियाँ ठीक की गईं
वर्तमान स्थिति (दिसंबर 2025 के अनुसार)
- समर्थित देश: 38 देश, शहरों की संख्या 2937
- Fediverse पर 7707 से अधिक फॉलोअर्स, जबकि RSS subscribers की संख्या का अनुमान नहीं है
- यूरोप, उत्तर अमेरिका, एशिया, और ओशिआनिया के प्रमुख शहर शामिल
- सिस्टम स्थिर रूप से चल रहा है, और अतिरिक्त देशों तक विस्तार की क्षमता मौजूद है
निष्कर्ष
- FediMeteo ने यह साबित किया है कि कम-लागत वाले इंफ्रास्ट्रक्चर पर भी वैश्विक सेवा बनाई जा सकती है
- यह data sovereignty, सरल संरचना, और open source collaboration के मूल्य को दिखाने वाला उदाहरण है
- निर्माता ज़ोर देता है कि इस प्रोजेक्ट के माध्यम से मौसम लोगों को जोड़ने वाला एक सामाजिक माध्यम बन गया है
1 टिप्पणियां
Hacker News की राय
ऐसे छोटे प्रोजेक्ट्स को सफलतापूर्वक बढ़ते हुए देखना सच में बहुत सुखद है
मुझे लगता है कि FreeBSD में Linux distributions की तुलना में अनावश्यक चीजें कम हैं और latency भी कम है
मैंने Vultr पर $4/महीना वाला FreeBSD VM (1GB RAM, 1vCPU) सेट किया, और Caddy चलाने पर भी RAM usage सिर्फ 12% है
4GB RAM, 4vCPU वाला VM काफी ट्रैफ़िक संभाल सकता है, ऐसा लगता है
मैं अपना निजी ब्लॉग retro BBS शैली का text-based web app बनाना चाहता हूँ — Nim multithreaded server + sqlite के साथ, containers या JS libraries के बिना, FreeBSD पर 4MB के एक single binary के रूप में
इस लेख ने FreeBSD की तरफ जाने के मेरे भरोसे को और मजबूत किया
आज mkosi(https://github.com/systemd/mkosi) से टेस्ट किया तो minimal install के आधार पर Fedora 43 लगभग 130MiB और Debian लगभग 100MiB RAM इस्तेमाल कर रहे थे
पहले जब FreeBSD minimal install आज़माया था, तब भी usage ऐसा ही था, या ZFS configuration के हिसाब से थोड़ा ज़्यादा था
शायद x64 migration भी एक कारण हो सकता है
वही काम करने के लिए RAM दोगुनी लगने लगी, यह दिलचस्प था, लेकिन अब बदले में लगभग असीमित RAM उपलब्ध है
सिर्फ SSH login भी Ubuntu से बहुत तेज़ लगता है, और apk package manager भी बेहद तेज़ है
license model के मामले में मैं GNU को पसंद करता हूँ, लेकिन code खुद BSD style का ज़्यादा अच्छा लगता है
अगर दूसरा वाला है, तो FlaskBB देखना उपयोगी हो सकता है
मैं भी इसी तरह open-meteo का उपयोग करके निजी surfing forecast system बना रहा हूँ
यह सिर्फ एक क्षेत्र को कवर करता है, लेकिन इसे बढ़ाना आसान है
मैं open-meteo के marine data को short-term और long-term weather forecasts के साथ जोड़ता हूँ, और फिर LLM से quantitative data को qualitative description में बदलवाता हूँ
यानी जो काम मैं दिमाग में करता था, उसे automate कर दिया है
अगर किसी के पास ideas हों तो बताना अच्छा लगेगा
https://surfrash.xyz/
data wall की जगह description-focused interface अच्छा लगा
Manly(NSW, Australia) क्षेत्र भी जोड़ने का अनुरोध है
पढ़ने में मज़ा आया
काश युवावस्था में *BSD में ज़्यादा दिलचस्पी ली होती; अब Linux की इतनी आदत हो गई है कि आसानी से बदलना मुश्किल है
ZFS और jail feature की वजह से management काफी smooth लगता है
मैं podman इस्तेमाल करता हूँ, लेकिन Linux पर अभी ZFS नहीं आज़माया
मैं एक personal archive बनाने की योजना कर रहा हूँ, इसलिए ZFS deduplication का उपयोग करने वाला हूँ
मैं Docker जैसी जटिल stacks कम करने की कोशिश कर रहा हूँ, और systemd मौजूद होने के बावजूद jail या sandbox की concept काफी आकर्षक लगती है
मुझे ऐसे tools पसंद हैं जो default settings पर ही अच्छे से काम करें
“4 euro VPS” की specs चौंकाने वाली हैं
उदाहरण के लिए Hetzner का सबसे सस्ता VPS 2 vCPU, 4GB RAM, 40GB NVMe SSD देता है, लेकिन 1Gb/s connection नहीं है
मुझे जो सबसे सस्ता मिला, वह Contabo था
सस्ते servers अक्सर पुराने generation के होते हैं या बहुत ज़्यादा shared होते हैं
4 vCPU भी किसी आधुनिक server के 2 vCPU से धीमे हो सकते हैं
लेकिन अगर app RAM-centric है, तो यह अच्छा विकल्प हो सकता है
कुछ लोग कहते हैं कि instance पाना मुश्किल है, लेकिन मैं इसे 2 साल से ज़्यादा समय से ठीक से इस्तेमाल कर रहा हूँ
free account बंद हो सकता है, इसलिए paid पर switch करना सुरक्षित है
यह अच्छा लगा कि विशाल infrastructure (Kubernetes, AWS, DynamoDB आदि) के बिना सरल प्रोजेक्ट खुद बनाकर चलाया जा रहा है
Hacker News खुद भी FreeBSD आधारित 4-core server पर चलता है
संबंधित लिंक
मैंने भी लगभग इसी specs का server करीब $5 में लिया है
उसमें 400~500GB storage है, और शुरुआत 3 महीने के लिए $8 promotion से हुई थी
उसके बाद यह $5/महीना पर आ जाएगा, और VPS को खुद चलाने का मज़ा और immersion काफी बड़ा है
OVH सस्ता है और इसकी unlimited egress policy एक बड़ा फ़ायदा है
Upcloud की support team भी शानदार थी
यह सलाह भी सुनी कि OVH support से Twitter या Discord के ज़रिए संपर्क करना बेहतर है
server pricing और support quality की तुलना करके optimize करने की प्रक्रिया खुद में मज़ेदार है
मैंने कभी “freeofcharge.org” डोमेन खरीदकर, RAM में समा जाने वाली मुफ्त services को subdomains के रूप में देने का विचार किया था
अवधारणा यह थी कि $10/महीना से कम में चल सकने वाली उपयोगी services को एक जगह इकट्ठा किया जाए
मैं भी इसी तरह का एक tool बनाना चाहता हूँ, जो किसी खास क्षेत्र की weather alerts को HTML/Markdown रूप में पढ़ने में आसान बनाए
यह fediverse के लिए नहीं होगा, बस अधिक accessible weather notifications के लिए होगा
“पूर्वानुमान स्थानीय भाषा में देना चाहिए” इस राय पर,
मुझे लगता है कि कई उपयोगकर्ता स्थानीय भाषा नहीं जानते, इसलिए browser की default language setting को override करना अनावश्यक है
इसके बजाय emoji के ज़रिए सहज अभिव्यक्ति दी जाती है, जिससे language barrier कम हो