मुख्य सामग्री पर जाएं

संस्करण 1.5.0

अवलोकन​

संस्करण 1.5.0 में नई सुविधाएँ पेश की गई हैं, जिनमें एक वैकल्पिक दैनिक सारांश ईमेल सूचना, बाहरी API एक्सेस के लिए IP अनुमति सूची (allowlists) के साथ स्कोप्ड API कुंजियाँ, प्रति-उपयोगकर्ता सर्वर एक्सेस नियंत्रण, और डैशबोर्ड पर प्रदर्शित Duplicati संस्करण बैज शामिल हैं। सूचना ईमेल अब Markdown में फ़ॉर्मेट किए गए हैं। cron सेवा डिफ़ॉल्ट रूप से localhost से बाइंड होती है। इसके अतिरिक्त, स्टार्टअप के दौरान डेटाबेस स्कीमा को संस्करण 4.3 में अपग्रेड किया जाता है।


नई सुविधाएं​

दैनिक सारांश​

  • प्रति दिन एक स्थिति ईमेल: सेटिंग्स → दैनिक सारांश (डिफ़ॉल्ट रूप से बंद) आपके ब्राउज़र टाइमज़ोन में आपके द्वारा चुने गए समय पर हर ज्ञात बैकअप जॉब का एकल स्थानीयकृत स्नैपशॉट भेजता है। शेड्यूल को UTC के रूप में संग्रहीत किया जाता है। नए इंस्टॉलेशन के लिए डिफ़ॉल्ट 01:00 UTC है। cron टास्क उस समय दिन में एक बार चलता है।
  • क्या रोका जाता है: जब दैनिक सारांश चालू होता है, तो डिफ़ॉल्ट ईमेल प्राप्तकर्ता को बैकअप और अतिदेय ईमेल नहीं भेजे जाते। बैकअप सूचनाएं में अतिरिक्त ईमेल गंतव्य अभी भी मिलान होने वाली घटनाएँ प्राप्त करते हैं, और प्रति-जॉब NTFY जारी रहता है। वे प्रति-जॉब सेटिंग्स संग्रहीत रहती हैं और मोड बंद होने पर फिर से शुरू हो जाती हैं।
  • प्राप्तकर्ता और डैशबोर्ड लिंक: एक वैकल्पिक ओवरराइड प्राप्तकर्ता सारांश को ईमेल सेटिंग्स पते के अलावा कहीं और भेजता है। एक वैकल्पिक सार्वजनिक डैशबोर्ड URL (या DUPLISTATUS_PUBLIC_URL एनवायरनमेंट वेरिएबल) ईमेल में {duplistatus_link} भरता है।

बाहरी API सुरक्षा​

  • स्कोप्ड API कुंजियाँ (इशू #79): एडमिन upload और read कुंजियाँ बना सकते हैं। ये वैकल्पिक हैं और डिफ़ॉल्ट रूप से बंद हैं, इसलिए मौजूदा Duplicati जॉब्स काम करते रहते हैं। सीक्रेट एक बार दिखाया जाता है और बाद में फिंगरप्रिंट द्वारा पहचाना जाता है। जब कुंजियाँ आवश्यक नहीं होती हैं, तो एक वैध मिलान कुंजी स्वीकार की जाती है और ट्रैक की जाती है; एक अमान्य, अक्षम, समाप्त, या गलत-स्कोप वाली कुंजी को अनदेखा किया जाता है और अनुरोध फिर भी आगे बढ़ता है।
  • IP एलाउलिस्ट: अलग-अलग CIDR सूचियाँ एडमिन इंटरफ़ेस और बाहरी API (/api/upload, /api/summary, /api/lastbackup*) को प्रतिबंधित कर सकती हैं। दोनों सूचियाँ डिफ़ॉल्ट रूप से बंद हैं और हमेशा 127.0.0.1 और ::1 शामिल करती हैं। फ़ॉरवर्ड किए गए क्लाइंट पते तभी विश्वसनीय माने जाते हैं जब TCP पीयर एक कॉन्फ़िगर किया गया विश्वसनीय प्रॉक्सी हो।
  • अपलोड सीमाएँ: /api/upload में एक कॉन्फ़िगर करने योग्य बॉडी-साइज़ कैप (डिफ़ॉल्ट 5 MB) और प्रति-IP दर सीमाएँ हैं।

एक्सेस और संस्करण​

  • प्रति-उपयोगकर्ता सर्वर एक्सेस: सेटिंग्स → उपयोगकर्ता एक गैर-एडमिन खाते को चुने हुए सर्वरों तक सीमित कर सकते हैं। डिफ़ॉल्ट हर वर्तमान और भविष्य के सर्वर पर बना रहता है। एक कस्टम सूची डैशबोर्ड, विवरण पृष्ठों, चार्ट्स, और सेटिंग्स सूचियों पर अन्य सर्वरों को छिपा देती है। एडमिन हमेशा हर सर्वर देखते हैं।
  • Duplicati संस्करण बैज: डैशबोर्ड कार्ड और तालिका उस चैनल (stable, beta, experimental, canary) के नवीनतम रिलीज़ के मुकाबले हर सर्वर का Duplicati संस्करण दिखाते हैं। वर्तमान संस्करण म्यूटेड टेक्स्ट का उपयोग करते हैं; पुराने संस्करण चेतावनी पीले रंग का उपयोग करते हैं। सेटिंग्स → Duplicati संस्करण कैश किए गए चैनल रिलीज़ दिखाता है और एडमिन को दैनिक, 12-घंटे, या 6-घंटे की जांच सेट करने देता है।
  • डिलीवरी विफलताएँ: जब ईमेल या NTFY डिलीवरी विफल हो रही होती है, तो एडमिन को टूलबार बटन दिखाई देता है। यह त्रुटि दिखाता है और मिलान होने वाले सेटिंग्स पृष्ठ से लिंक करता है।
  • साप्ताहिक डेटाबेस कॉम्पैक्ट: हर रविवार को 04:00 UTC पर cron सेवा उन बैकअप पंक्तियों को हटाती है जिनका सर्वर मौजूद नहीं है, बिना बैकअप वाले सर्वर, बची हुई सूचना सेटिंग्स, और पुरानी दैनिक सारांश डिलीवरी पंक्तियाँ, फिर SQLite को वैक्यूम करती है।
  • UI भाषा में सापेक्ष समय (इशू #74): प्रदर्शन सेटिंग्स → फ़ॉर्मैट लोकेल में एक ऑप्ट-इन चेकबॉक्स है ताकि जब फ़ॉर्मैट लोकेल को ओवरराइड किया जाए तो सापेक्ष-समय वाक्यांश इंटरफ़ेस भाषा में बने रहें।

सुधार​

सूचनाएं​

  • Markdown ईमेल टेम्पलेट: सफलता, चेतावनी/त्रुटि, अतिदेय, और दैनिक सारांश के बॉडी Markdown में हैं, जिन्हें सैनिटाइज़्ड HTML और सादा पाठ में रेंडर किया जाता है। अपरिवर्तित संग्रहीत डिफ़ॉल्ट को नए लेआउट में अपग्रेड किया जाता है; कस्टमाइज़्ड टेम्पलेट बनाए रखे जाते हैं। NTFY संदेश Markdown भेजते हैं और GFM तालिका हेडर पंक्तियों को छोड़ देते हैं।
  • भाषा साइन-इन उपयोगकर्ता का अनुसरण करती है: इंटरफ़ेस भाषा को ब्राउज़र में प्रति खाता संग्रहीत किया जाता है, उसी तरह जैसे थीम और प्रदर्शन सेटिंग्स। NEXT_LOCALE कुकी अभी भी लॉगिन पृष्ठ और सर्वर रेंडरिंग को चलाती है। हिंदी लोकेल कोड अब hi है; मौजूदा hi-Latn कुकीज़ और बुकमार्क अभी भी काम करते हैं।

संचालन​

  • Cron control plane: Cron सेवा डिफ़ॉल्ट रूप से 127.0.0.1 से जुड़ती है (CRON_BIND_HOST)। कहीं और जुड़ने के लिए CRON_SERVICE_SECRET की आवश्यकता होती है। ऐप के माध्यम से Cron कार्यों को बदलने के लिए एडमिन सत्र रूट की आवश्यकता होती है।
  • Database restore size: सेटिंग्स → डेटाबेस रखरखाव 200 MB तक के पुनर्स्थापना अपलोड स्वीकार करता है। यदि आप Nginx को आगे रखते हैं, तो client_max_body_size को कम से कम 256 MB पर सेट करें ताकि प्रॉक्सी पहले फ़ाइल को काट न दे।
  • Development server: pnpm dev Next.js (पोर्ट 8666) और Cron सेवा (पोर्ट 8667) को एक साथ शुरू करता है। CTRL-C दोनों को रोक देता है।

बग फिक्स​

  • अतिदेय अलर्ट अब हर जांच पर दोहराए नहीं जाते हैं: एक विफल अधिसूचना चैनल अब अगली निगरानी पास पर दूसरा अतिदेय अलर्ट नहीं भेजता है जब कोई अन्य चैनल पहले ही डिलीवर हो चुका हो। एक बार, दैनिक, साप्ताहिक, या मासिक विंडो किसी भी सफल चैनल के बाद रिकॉर्ड किया जाता है।
  • Duplicati 2.4 पर लॉग एकत्र करें: बैकअप लॉग एकत्र करना और शेड्यूल सिंक करना अब Duplicati 2.4.0 और उसके बाद के संस्करणों के साथ Could not find machine-id in system options के कारण विफल नहीं होता है। कॉन्फ़िगर किया गया मशीन ID सर्वर सेटिंग्स से पढ़ा जाता है।
  • Docker स्टार्टअप: प्रोडक्शन Cron प्रक्रिया अब कंटेनर शुरू होने पर तुरंत बंद नहीं होती है, और ओवरले फ़ाइल सिस्टम पर निर्भरताएं इंस्टॉल करते समय इमेज बिल्ड विफल नहीं होते हैं।
  • पहला लॉगिन: एक नए इंस्टेंस पर आवश्यक पासवर्ड परिवर्तन के बाद, ऐप डैशबोर्ड खोलता है।
  • दैनिक सारांश शेड्यूल: भेजने का समय बदलने से एक नई घटना बनती है। वह समय अभी सारांश भेजें या उसी दिन किसी अन्य ईमेल के बाद भी भेजा जाता है। जॉब सूची डैशबोर्ड से मेल खाती है (प्रति सर्वर और बैकअप नाम नवीनतम रिपोर्ट)।

सुरक्षा​

प्रोब, टेम्पलेट और निर्भरताएं​

  • Health और ping: GET /api/health अब SQLite टेबल सूचीबद्ध नहीं करता है या डैशबोर्ड क्वेरी नहीं चलाता है। /api/health और /api/ping उन क्लाइंट के लिए प्रति IP रेट-लिमिटेड हैं जो लूपबैक पर नहीं हैं। जब कोई भी IP अनुमति सूची सक्षम होती है, तो वे प्रोब लूपबैक के साथ-साथ एडमिन सूची या बाहरी सूची से पते स्वीकार करते हैं।
  • ईमेल HTML: अधिसूचना बॉडी को कच्चे HTML को अक्षम करके Markdown के रूप में पार्स किया जाता है, फिर भेजने से पहले साफ किया जाता है।
  • निर्भरता सुधार: nodemailer अब 10.0.9 है। दस्तावेज़ीकरण वर्कस्पेस ऑडिट निष्कर्षों को अपडेट किए गए undici, svgo, और image-size-next के साथ साफ कर दिया गया था।

माइग्रेशन नोट्स​

संस्करण 1.4.2 से​

संस्करण 1.5.0 में अपग्रेड करते समय:

  1. डेटाबेस माइग्रेशन स्टार्टअप पर चलते हैं: स्कीमा 4.2 दैनिक सारांश डिलीवरी लेजर जोड़ता है। स्कीमा 4.3 प्रति-उपयोगकर्ता सर्वर एक्सेस जोड़ता है। मौजूदा उपयोगकर्ता हर सर्वर तक पहुंच बनाए रखते हैं।
  2. नए नियंत्रण बंद रहते हैं: दैनिक सारांश, आवश्यक API कुंजियाँ, और दोनों IP अनुमति सूचियाँ डिफ़ॉल्ट रूप से बंद रहती हैं। मौजूदा Duplicati अपलोड URL काम करना जारी रखते हैं जब तक कि आप सुरक्षा चालू नहीं करते।
  3. अनुमति सूचियों में हमेशा लूपबैक शामिल होता है: 127.0.0.1 और ::1 को दोनों सूचियों में मर्ज किया गया है और सेटिंग्स में हटाया नहीं जा सकता।
  4. Cron लोकलहोस्ट से जुड़ता है: Cron पोर्ट अन्य होस्ट से पहुंच योग्य नहीं है जब तक कि आप CRON_BIND_HOST और CRON_SERVICE_SECRET सेट नहीं करते।
  5. डिफ़ॉल्ट अधिसूचना टेम्पलेट: बिना बदलाव वाले सफलता, चेतावनी, अतिदेय, और दैनिक सारांश टेम्पलेट को Markdown डिफ़ॉल्ट से बदल दिया गया है। अनुकूलित टेम्पलेट जैसे हैं वैसे ही छोड़ दिए गए हैं।
  6. निर्भरताएं: अपडेट की गई लॉकफ़ाइल और ओवरराइड लागू करने के लिए pnpm install चलाएं। Node.js 24 या नया संस्करण अभी भी आवश्यक है।

समर्थन​

सहायता प्राप्त करना​

बग रिपोर्ट करना​

बग रिपोर्ट करते समय, कृपया शामिल करें:

  • संस्करण: 1.5.0
  • ऑपरेटिंग सिस्टम और संस्करण
  • Docker/podman संस्करण
  • कंटेनर प्रकार (Docker या podman)
  • त्रुटि संदेश और लॉग
  • पुनरुत्पादन के चरण

विस्तृत चेंजलॉग​

उपरोक्त अनुभाग इस रिलीज़ की मुख्य विशेषताएं हैं। परिवर्तनों की पूरी सूची dev/CHANGELOG.md में [1.5.0] के अंतर्गत है।


लाइसेंस​

इस प्रोजेक्ट को अपाचे लाइसेंस 2.0 के तहत लाइसेंस प्राप्त है।

कॉपीराइट © 2026 वाल्डेमार स्कुडेलर जूनियर।