प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं। नया गेटवे स्वस्थ न हो तो पुरानी, स्थानीय रूप से सुरक्षित इमेज से वापस लौटने की योजना है। ईमेल कंटेनर को अपडेट के दौरान नहीं छूना चाहिए। इंटरनेट पर डाइजेस्ट जांच हर बार एक सेकंड से कम में पू...
प्रकाशितकर्ताGPT Image 2 से चित्र बनाए गए
शोध उत्तर
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
दो दूरस्थ VPS पर Docker से चल रहे गेटवे को अपने-आप अपडेट करना संभव है, लेकिन सुरक्षित तरीका सिर्फ नई इमेज खींचकर कंटेनर फिर से शुरू करना नहीं है। पहले चल रही इमेज का सुरक्षित रिकॉर्ड चाहिए, नई इमेज को जांचना होगा, और असफल होने पर बिना नेटवर्क पर निर्भर हुए पुराने संस्करण पर लौटना होगा।
प्रस्तावित तरीका है: होस्ट मशीन का systemd टाइमर, डाइजेस्ट से तय इमेज, टिकाऊ ट्रांजैक्शन स्थिति और स्थानीय इमेज से रोलबैक। इसमें अलग अपडेटर कंटेनर नहीं जोड़ा जाता। यह योजना अभी लागू या सत्यापित नहीं है।
रिपॉज़िटरी की जांच के मुताबिक, रिलीज़ वर्कफ़्लो v3.12 जैसे टैग स्वीकार करता है और latest, 3.12, v3.12 तथा छोटे commit SHA टैग प्रकाशित करता है। वह अपने-आप v3.x नाम का सीरीज़ टैग नहीं बनाता। वर्कफ़्लो में चार आर्किटेक्चर कॉन्फ़िगर हैं, लेकिन इससे यह साबित नहीं होता कि हर रिलीज़ सभी आर्किटेक्चर के लिए सफलतापूर्वक प्रकाशित हुई है। (संदर्भ: .github/workflows/build_docker.yml:19)
मौजूदा Compose कॉन्फ़िगरेशन में गेटवे का स्रोत से build होता है और वह स्थानीय पोर्ट 8080 पर bind है। ईमेल सेवा इन-मेमोरी स्टोरेज इस्तेमाल करती है, इसलिए अपडेट के दौरान उसके कंटेनर को न छूना एक अहम शर्त है। (संदर्भ: docker-compose.yml:1)
रिलीज़ इमेज मुख्य entry point चलाती है, लेकिन मॉडल रजिस्ट्री की स्थानीय कॉन्फ़िगरेशन फ़ाइल इमेज में शामिल नहीं है। इसलिए दूरस्थ मशीन पर कॉन्फ़िगरेशन फाइलें मौजूद रहनी चाहिए; सिर्फ इमेज पहुंचाना पर्याप्त नहीं। (संदर्भ: Dockerfile:13, main.go:21)
मौजूदा मॉडल डायरेक्टरी हैंडलर रजिस्ट्री का स्नैपशॉट पढ़ता है, जबकि हेल्थ endpoint केवल स्थिर जीवित होने का संकेत देता है। इनमें से कोई भी असली चैट अनुरोध या upstream खाते की उपलब्धता साबित नहीं करता। ऐप को termination signal मिलने पर वह पांच सेकंड की HTTP बंद करने की अवधि रखता है; इसलिए लंबा stop timeout अपने-आप में स्ट्रीमिंग अनुरोधों को बिना नुकसान पूरा होने की गारंटी नहीं देता। (संदर्भ: internal/api/models.go:23, internal/api/chat.go:2078, main.go:233)
इस काम का दायरा ईमेल सेवा बदलना, निर्भरताएं अपडेट करना, दूरस्थ मशीनों पर स्रोत कोड रखना या शून्य-डाउनटाइम का दावा करना नहीं है। एकल गेटवे कंटेनर को दोबारा बनाते समय थोड़ी सेवा बाधा हो सकती है। बिना नुकसान स्विच करने के लिए अलग से दो इंस्टेंस, ट्रैफ़िक स्विच और कनेक्शन ड्रेनिंग की योजना चाहिए।
अपडेट स्क्रिप्ट का प्रस्तावित स्थान scripts/auto-update.sh है, लेकिन यह फाइल अभी बनाई नहीं गई है। होस्ट पर Bash, Docker Engine, Compose plugin, curl, jq, flock और इमेज मैनिफेस्ट पढ़ने के लिए Skopeo की जरूरत होगी। वास्तविक ऑपरेटिंग सिस्टम और टूल संस्करण लागू करने से पहले जांचने होंगे।
स्क्रिप्ट होस्ट मशीन पर संरक्षित खाते से Docker चलाएगी। किसी कंटेनर में Docker socket या रजिस्ट्री पासवर्ड नहीं माउंट किया जाएगा। हालांकि Docker चलाने वाले खाते के पास होस्ट पर व्यापक अधिकार रहते हैं; socket माउंट न करना इस जोखिम को खत्म नहीं करता।
latest जैसे टैग का इस्तेमाल केवल नई रिलीज़ खोजने के लिए हो। वास्तविक deployment में इमेज को registry पते और डाइजेस्ट से pin किया जाए। Compose में डाइजेस्ट-आधारित इमेज पता समर्थित है। Compose का --no-deps, --no-build और --pull never इस्तेमाल करने से संबंधित सेवा को बिना build या अतिरिक्त pull के चलाया जा सकता है। कमांड में केवल गेटवे सेवा होनी चाहिए; पूरे प्रोजेक्ट को रीस्टार्ट या दूसरे कंटेनरों को हटाना इस योजना का हिस्सा नहीं है। 2
कमांड का timeout खत्म होना यह साबित नहीं करता कि Docker का बैकग्राउंड काम भी रुक गया है। ऐसी स्थिति में अगला स्विच शुरू करने से पहले असली कंटेनर स्थिति जांचना जरूरी है। जबरन बंद होने या बिजली जाने पर exit trap पर भरोसा नहीं किया जा सकता; अगली बार स्क्रिप्ट शुरू होने पर उसे पहले सहेजे गए ट्रांजैक्शन से रिकवरी करनी होगी।
शुरुआती प्रस्ताव में कुल 60 सेकंड की जांच अवधि, एक सेकंड का connection timeout, तीन सेकंड की request सीमा, दो सेकंड के अंतराल और लगातार तीन सफल जांचों का विचार है। ये परीक्षण के लिए प्रस्तावित मान हैं, वास्तविक प्रदर्शन का प्रमाण नहीं।
जांच में स्थानीय मॉडल डायरेक्टरी endpoint से HTTP 200 और अपेक्षित JSON संरचना की पुष्टि की जा सकती है। redirect, login पेज या proxy त्रुटि को सफलता नहीं मानना चाहिए। साथ में यह भी जांचना चाहिए कि अनुरोध सचमुच नए कंटेनर से आया है और उसका restart count लगातार नहीं बढ़ रहा। मॉडल सूची में आइटमों की कोई तय संख्या तभी लागू करें जब मौजूदा रजिस्ट्री अनुबंध इसकी मांग करता हो।
ऐप का स्वास्थ्य endpoint जो सीमित संकेत देता है, उससे आगे बढ़कर अपने-आप ऐसा असली चैट अनुरोध न भेजें जो उपयोग या लागत पैदा कर सकता हो। वास्तविक चैट उपलब्धता अलग स्वीकृति जांच है।
दूरस्थ deployment कॉन्फ़िगरेशन में केवल इमेज स्रोत बदलने का प्रस्ताव है। पोर्ट, मेमोरी सीमा, लॉगिंग, environment variables, read-only कॉन्फ़िगरेशन mount और ईमेल सेवा की सेटिंग जस की तस रहें। स्थानीय विकास वाली docker-compose.yml को बदलना इस योजना में शामिल नहीं है।
गेटवे सेवा में build की जगह आवश्यक इमेज संदर्भ लगाने का प्रस्ताव है, उदाहरण के लिए image: "${APP_IMAGE:?इमेज संदर्भ देना जरूरी है}" और pull_policy: never। यह केवल बदलाव का नमूना है, पूरी Compose फ़ाइल नहीं। दूरस्थ निर्देशिका में बाकी सभी मौजूदा service definitions भी चाहिए। मैन्युअल restart के समय इमेज संदर्भ latest पर वापस न जाए।
Compose project का वास्तविक नाम और दूरस्थ environment values पहले जांचें। Compose में interpolation के लिए इस्तेमाल होने वाली फ़ाइल और कंटेनर के भीतर उपलब्ध environment variables एक ही चीज नहीं हैं। मौजूदा कॉन्फ़िगरेशन में दो experimental सुविधाएं स्पष्ट रूप से चालू हैं; यह परियोजना की सामान्य सीमाओं से अलग है। उन्हें अपने-आप बदलने के बजाय हर VPS पर मौजूद वास्तविक मानों की पुष्टि करनी होगी। (संदर्भ: docker-compose.yml:26, docker-compose.yml:38, _bmad-output/project-context.md:246)
यदि GHCR पैकेज निजी है, तो VPS के लिए package पढ़ने की अनुमति वाला classic personal access token सुझाया गया है। read:packages scope चाहिए और यह भी जांचना होगा कि token का खाता उस पैकेज को पढ़ सकता है। संगठन की नीति के अनुसार SSO अनुमति भी जरूरी हो सकती है। CI का write token VPS पर न दें और package या source code लिखने/हटाने की अनुमति न दें। 9
हर VPS के लिए अलग, वापस लिया जा सकने वाला read-only credential रखना बेहतर है। Docker login मानक input से करें, ताकि token कमांड लाइन या audit log में न आए। प्रमाण-पत्र अपडेटर के लिए अलग, केवल प्रशासक-पठनीय स्थान पर रखें; उसे गेटवे या ईमेल कंटेनर तक न पहुंचाएं। प्रमाणीकरण विफल हो तो अपडेट रुकना चाहिए, पुरानी सेवा नहीं।
systemd को प्राथमिकता दी गई है। प्रस्तावित deploy/systemd/aurora-update.service और deploy/systemd/aurora-update.timer अभी बनाए या इंस्टॉल नहीं किए गए हैं। नमूने में सेवा Docker और नेटवर्क उपलब्ध होने के बाद चलती है और स्क्रिप्ट को 20 मिनट की सीमा देती है। टाइमर बूट के एक मिनट बाद और पिछली सेवा पूरी होने के पांच मिनट बाद जांच कर सकता है; 30 सेकंड तक यादृच्छिक देरी दोनों VPS को एक ही समय काम शुरू करने से बचाने में मदद कर सकती है।
टाइमर चालू करने से पहले निर्भरताएं और कॉन्फ़िगरेशन जांचें, पुरानी स्वस्थ इमेज सुरक्षित करें और रिकवरी का अभ्यास करें। सेवा-आधारित अंतराल तथा साझा फ़ाइल लॉक से दो अपडेट एक साथ चलने से रोके जा सकते हैं। फिर भी दोनों VPS का एक साथ बदलना सुनिश्चित नहीं होता: यह अंतिम स्थिति में समन्वय है, परमाणु स्विच नहीं। एक मशीन खराब इमेज से वापस लौटे तो उसे पुरानी इमेज पर रहने देना, केवल दूसरी मशीन से संस्करण मिलाने के लिए खराब इमेज दोबारा चलाने से सुरक्षित है।
अपडेटर की प्राथमिकता घटाने से Docker daemon पर इमेज खोलने के दौरान CPU का उछाल सीमित होने की गारंटी नहीं मिलती। कम संसाधन वाले सर्वर पर इसे अलग से जांचना होगा। “शांत” संचालन का अर्थ यह हो सकता है कि बिना बदलाव के स्क्रिप्ट कोई अपडेट संदेश न लिखे; systemd फिर भी सेवा शुरू और खत्म होने के रिकॉर्ड रख सकता है।
ऑडिट में UTC समय, VPS पहचान, ट्रांजैक्शन पहचान, पुराने और नए डाइजेस्ट, चरण, समयावधि, स्वास्थ्य जांच और रोलबैक का परिणाम दर्ज हो। token, पूरे environment, ईमेल खाते या response body लॉग में न आएं। प्रस्तावित logrotate नीति है: हर सप्ताह घुमाव, 1 MB से बड़ा होने पर पहले घुमाव, और संपीड़ित 26 प्रतियां रखना। यह पुष्टि के लिए प्रस्ताव है, होस्ट की सभी logs पर लागू बदलाव नहीं।
सफाई केवल अपडेटर द्वारा दर्ज की गई अपनी पुरानी इमेज पर हो और वही ट्रांजैक्शन लॉक ले। वर्तमान संस्करण, पिछला कामयाब संस्करण और अधूरे ट्रांजैक्शन की इमेज हमेशा सुरक्षित रहें। हटाने से पहले जांचें कि कोई मौजूदा कंटेनर या दूसरे उपयोग का tag उस इमेज पर निर्भर तो नहीं।
चौदह दिन से पुरानी इमेज हटाने का सुझाव भी अभी प्रस्तावित नीति है। पहले अपना सुरक्षित टैग हटाएं, फिर बिना force के deletion आजमाएं। हटाना विफल हो तो उसे रहने दें और रिकॉर्ड करें। केवल dangling दिखने से यह साबित नहीं होता कि कोई इमेज इंसानी rollback के काम की नहीं है। डिस्क में जगह कम हो तो अकेली rollback इमेज हटाकर अपडेट की जगह न बनाएं।
स्वीकृति परीक्षण में यह साबित करना होगा कि डाइजेस्ट न बदले तो image-layer download, container recreation और update log न हों—और ऑनलाइन जांच का समय अलग मापा जाए। ईमेल कंटेनर की पहचान, शुरू होने का समय और पहले से मौजूद संदेश अपडेट तथा rollback के बाद समान रहने चाहिए। खराब इमेज, गैर-200 जवाब, स्वास्थ्य timeout और recreation failure पर पुरानी इमेज से वापसी जांचें; GHCR से संपर्क काटकर भी स्थानीय rollback सफल होना चाहिए। ट्रांजैक्शन के अलग-अलग चरणों में updater रोककर देखें कि अगली बार वह पहले recovery करे और अलग रखी गई खराब इमेज फिर न लगाए।
निष्कर्ष: इस शर्त पर यह होस्ट-आधारित योजना उचित है कि थोड़ी गेटवे बाधा स्वीकार्य हो, इंटरनेट पर हर जांच को एक सेकंड से कम रखने की गारंटी न मांगी जाए, और दोनों दूरस्थ मशीनों की वास्तविक स्थिति पहले जांची जाए। अभी किसी VPS पर इसे लागू या परखा नहीं गया है; इसलिए प्रदर्शन, अनुकूलता और rollback को सत्यापित मानना सही नहीं होगा।
Studio Global AI
इस पृष्ठ में एक स्रोत-समर्थित उत्तर शामिल है जिसे आप Studio Global के अंदर जारी रख सकते हैं।
प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं।
प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं। नया गेटवे स्वस्थ न हो तो पुरानी, स्थानीय रूप से सुरक्षित इमेज से वापस लौटने की योजना है। ईमेल कंटेनर को अपडेट के दौरान नहीं छूना चाहिए।
इंटरनेट पर डाइजेस्ट जांच हर बार एक सेकंड से कम में पूरी होगी, इसकी गारंटी नहीं; एकल गेटवे कंटेनर के दोबारा बनने में थोड़ी सेवा रुकावट भी संभव है।
प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं। नया गेटवे स्वस्थ न हो तो पुरानी, स्थानीय रूप से सुरक्षित इमेज से वापस लौटने की योजना है। ईमेल कंटेनर को अपडेट के दौरान नहीं छूना चाहिए। इंटरनेट पर डाइजेस्ट जांच हर बार एक सेकंड से कम में पू...
प्रकाशितकर्ताGPT Image 2 से चित्र बनाए गए
शोध उत्तर
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
दो दूरस्थ VPS पर Docker से चल रहे गेटवे को अपने-आप अपडेट करना संभव है, लेकिन सुरक्षित तरीका सिर्फ नई इमेज खींचकर कंटेनर फिर से शुरू करना नहीं है। पहले चल रही इमेज का सुरक्षित रिकॉर्ड चाहिए, नई इमेज को जांचना होगा, और असफल होने पर बिना नेटवर्क पर निर्भर हुए पुराने संस्करण पर लौटना होगा।
प्रस्तावित तरीका है: होस्ट मशीन का systemd टाइमर, डाइजेस्ट से तय इमेज, टिकाऊ ट्रांजैक्शन स्थिति और स्थानीय इमेज से रोलबैक। इसमें अलग अपडेटर कंटेनर नहीं जोड़ा जाता। यह योजना अभी लागू या सत्यापित नहीं है।
रिपॉज़िटरी की जांच के मुताबिक, रिलीज़ वर्कफ़्लो v3.12 जैसे टैग स्वीकार करता है और latest, 3.12, v3.12 तथा छोटे commit SHA टैग प्रकाशित करता है। वह अपने-आप v3.x नाम का सीरीज़ टैग नहीं बनाता। वर्कफ़्लो में चार आर्किटेक्चर कॉन्फ़िगर हैं, लेकिन इससे यह साबित नहीं होता कि हर रिलीज़ सभी आर्किटेक्चर के लिए सफलतापूर्वक प्रकाशित हुई है। (संदर्भ: .github/workflows/build_docker.yml:19)
मौजूदा Compose कॉन्फ़िगरेशन में गेटवे का स्रोत से build होता है और वह स्थानीय पोर्ट 8080 पर bind है। ईमेल सेवा इन-मेमोरी स्टोरेज इस्तेमाल करती है, इसलिए अपडेट के दौरान उसके कंटेनर को न छूना एक अहम शर्त है। (संदर्भ: docker-compose.yml:1)
रिलीज़ इमेज मुख्य entry point चलाती है, लेकिन मॉडल रजिस्ट्री की स्थानीय कॉन्फ़िगरेशन फ़ाइल इमेज में शामिल नहीं है। इसलिए दूरस्थ मशीन पर कॉन्फ़िगरेशन फाइलें मौजूद रहनी चाहिए; सिर्फ इमेज पहुंचाना पर्याप्त नहीं। (संदर्भ: Dockerfile:13, main.go:21)
मौजूदा मॉडल डायरेक्टरी हैंडलर रजिस्ट्री का स्नैपशॉट पढ़ता है, जबकि हेल्थ endpoint केवल स्थिर जीवित होने का संकेत देता है। इनमें से कोई भी असली चैट अनुरोध या upstream खाते की उपलब्धता साबित नहीं करता। ऐप को termination signal मिलने पर वह पांच सेकंड की HTTP बंद करने की अवधि रखता है; इसलिए लंबा stop timeout अपने-आप में स्ट्रीमिंग अनुरोधों को बिना नुकसान पूरा होने की गारंटी नहीं देता। (संदर्भ: internal/api/models.go:23, internal/api/chat.go:2078, main.go:233)
इस काम का दायरा ईमेल सेवा बदलना, निर्भरताएं अपडेट करना, दूरस्थ मशीनों पर स्रोत कोड रखना या शून्य-डाउनटाइम का दावा करना नहीं है। एकल गेटवे कंटेनर को दोबारा बनाते समय थोड़ी सेवा बाधा हो सकती है। बिना नुकसान स्विच करने के लिए अलग से दो इंस्टेंस, ट्रैफ़िक स्विच और कनेक्शन ड्रेनिंग की योजना चाहिए।
अपडेट स्क्रिप्ट का प्रस्तावित स्थान scripts/auto-update.sh है, लेकिन यह फाइल अभी बनाई नहीं गई है। होस्ट पर Bash, Docker Engine, Compose plugin, curl, jq, flock और इमेज मैनिफेस्ट पढ़ने के लिए Skopeo की जरूरत होगी। वास्तविक ऑपरेटिंग सिस्टम और टूल संस्करण लागू करने से पहले जांचने होंगे।
स्क्रिप्ट होस्ट मशीन पर संरक्षित खाते से Docker चलाएगी। किसी कंटेनर में Docker socket या रजिस्ट्री पासवर्ड नहीं माउंट किया जाएगा। हालांकि Docker चलाने वाले खाते के पास होस्ट पर व्यापक अधिकार रहते हैं; socket माउंट न करना इस जोखिम को खत्म नहीं करता।
latest जैसे टैग का इस्तेमाल केवल नई रिलीज़ खोजने के लिए हो। वास्तविक deployment में इमेज को registry पते और डाइजेस्ट से pin किया जाए। Compose में डाइजेस्ट-आधारित इमेज पता समर्थित है। Compose का --no-deps, --no-build और --pull never इस्तेमाल करने से संबंधित सेवा को बिना build या अतिरिक्त pull के चलाया जा सकता है। कमांड में केवल गेटवे सेवा होनी चाहिए; पूरे प्रोजेक्ट को रीस्टार्ट या दूसरे कंटेनरों को हटाना इस योजना का हिस्सा नहीं है। 2
कमांड का timeout खत्म होना यह साबित नहीं करता कि Docker का बैकग्राउंड काम भी रुक गया है। ऐसी स्थिति में अगला स्विच शुरू करने से पहले असली कंटेनर स्थिति जांचना जरूरी है। जबरन बंद होने या बिजली जाने पर exit trap पर भरोसा नहीं किया जा सकता; अगली बार स्क्रिप्ट शुरू होने पर उसे पहले सहेजे गए ट्रांजैक्शन से रिकवरी करनी होगी।
शुरुआती प्रस्ताव में कुल 60 सेकंड की जांच अवधि, एक सेकंड का connection timeout, तीन सेकंड की request सीमा, दो सेकंड के अंतराल और लगातार तीन सफल जांचों का विचार है। ये परीक्षण के लिए प्रस्तावित मान हैं, वास्तविक प्रदर्शन का प्रमाण नहीं।
जांच में स्थानीय मॉडल डायरेक्टरी endpoint से HTTP 200 और अपेक्षित JSON संरचना की पुष्टि की जा सकती है। redirect, login पेज या proxy त्रुटि को सफलता नहीं मानना चाहिए। साथ में यह भी जांचना चाहिए कि अनुरोध सचमुच नए कंटेनर से आया है और उसका restart count लगातार नहीं बढ़ रहा। मॉडल सूची में आइटमों की कोई तय संख्या तभी लागू करें जब मौजूदा रजिस्ट्री अनुबंध इसकी मांग करता हो।
ऐप का स्वास्थ्य endpoint जो सीमित संकेत देता है, उससे आगे बढ़कर अपने-आप ऐसा असली चैट अनुरोध न भेजें जो उपयोग या लागत पैदा कर सकता हो। वास्तविक चैट उपलब्धता अलग स्वीकृति जांच है।
दूरस्थ deployment कॉन्फ़िगरेशन में केवल इमेज स्रोत बदलने का प्रस्ताव है। पोर्ट, मेमोरी सीमा, लॉगिंग, environment variables, read-only कॉन्फ़िगरेशन mount और ईमेल सेवा की सेटिंग जस की तस रहें। स्थानीय विकास वाली docker-compose.yml को बदलना इस योजना में शामिल नहीं है।
गेटवे सेवा में build की जगह आवश्यक इमेज संदर्भ लगाने का प्रस्ताव है, उदाहरण के लिए image: "${APP_IMAGE:?इमेज संदर्भ देना जरूरी है}" और pull_policy: never। यह केवल बदलाव का नमूना है, पूरी Compose फ़ाइल नहीं। दूरस्थ निर्देशिका में बाकी सभी मौजूदा service definitions भी चाहिए। मैन्युअल restart के समय इमेज संदर्भ latest पर वापस न जाए।
Compose project का वास्तविक नाम और दूरस्थ environment values पहले जांचें। Compose में interpolation के लिए इस्तेमाल होने वाली फ़ाइल और कंटेनर के भीतर उपलब्ध environment variables एक ही चीज नहीं हैं। मौजूदा कॉन्फ़िगरेशन में दो experimental सुविधाएं स्पष्ट रूप से चालू हैं; यह परियोजना की सामान्य सीमाओं से अलग है। उन्हें अपने-आप बदलने के बजाय हर VPS पर मौजूद वास्तविक मानों की पुष्टि करनी होगी। (संदर्भ: docker-compose.yml:26, docker-compose.yml:38, _bmad-output/project-context.md:246)
यदि GHCR पैकेज निजी है, तो VPS के लिए package पढ़ने की अनुमति वाला classic personal access token सुझाया गया है। read:packages scope चाहिए और यह भी जांचना होगा कि token का खाता उस पैकेज को पढ़ सकता है। संगठन की नीति के अनुसार SSO अनुमति भी जरूरी हो सकती है। CI का write token VPS पर न दें और package या source code लिखने/हटाने की अनुमति न दें। 9
हर VPS के लिए अलग, वापस लिया जा सकने वाला read-only credential रखना बेहतर है। Docker login मानक input से करें, ताकि token कमांड लाइन या audit log में न आए। प्रमाण-पत्र अपडेटर के लिए अलग, केवल प्रशासक-पठनीय स्थान पर रखें; उसे गेटवे या ईमेल कंटेनर तक न पहुंचाएं। प्रमाणीकरण विफल हो तो अपडेट रुकना चाहिए, पुरानी सेवा नहीं।
systemd को प्राथमिकता दी गई है। प्रस्तावित deploy/systemd/aurora-update.service और deploy/systemd/aurora-update.timer अभी बनाए या इंस्टॉल नहीं किए गए हैं। नमूने में सेवा Docker और नेटवर्क उपलब्ध होने के बाद चलती है और स्क्रिप्ट को 20 मिनट की सीमा देती है। टाइमर बूट के एक मिनट बाद और पिछली सेवा पूरी होने के पांच मिनट बाद जांच कर सकता है; 30 सेकंड तक यादृच्छिक देरी दोनों VPS को एक ही समय काम शुरू करने से बचाने में मदद कर सकती है।
टाइमर चालू करने से पहले निर्भरताएं और कॉन्फ़िगरेशन जांचें, पुरानी स्वस्थ इमेज सुरक्षित करें और रिकवरी का अभ्यास करें। सेवा-आधारित अंतराल तथा साझा फ़ाइल लॉक से दो अपडेट एक साथ चलने से रोके जा सकते हैं। फिर भी दोनों VPS का एक साथ बदलना सुनिश्चित नहीं होता: यह अंतिम स्थिति में समन्वय है, परमाणु स्विच नहीं। एक मशीन खराब इमेज से वापस लौटे तो उसे पुरानी इमेज पर रहने देना, केवल दूसरी मशीन से संस्करण मिलाने के लिए खराब इमेज दोबारा चलाने से सुरक्षित है।
अपडेटर की प्राथमिकता घटाने से Docker daemon पर इमेज खोलने के दौरान CPU का उछाल सीमित होने की गारंटी नहीं मिलती। कम संसाधन वाले सर्वर पर इसे अलग से जांचना होगा। “शांत” संचालन का अर्थ यह हो सकता है कि बिना बदलाव के स्क्रिप्ट कोई अपडेट संदेश न लिखे; systemd फिर भी सेवा शुरू और खत्म होने के रिकॉर्ड रख सकता है।
ऑडिट में UTC समय, VPS पहचान, ट्रांजैक्शन पहचान, पुराने और नए डाइजेस्ट, चरण, समयावधि, स्वास्थ्य जांच और रोलबैक का परिणाम दर्ज हो। token, पूरे environment, ईमेल खाते या response body लॉग में न आएं। प्रस्तावित logrotate नीति है: हर सप्ताह घुमाव, 1 MB से बड़ा होने पर पहले घुमाव, और संपीड़ित 26 प्रतियां रखना। यह पुष्टि के लिए प्रस्ताव है, होस्ट की सभी logs पर लागू बदलाव नहीं।
सफाई केवल अपडेटर द्वारा दर्ज की गई अपनी पुरानी इमेज पर हो और वही ट्रांजैक्शन लॉक ले। वर्तमान संस्करण, पिछला कामयाब संस्करण और अधूरे ट्रांजैक्शन की इमेज हमेशा सुरक्षित रहें। हटाने से पहले जांचें कि कोई मौजूदा कंटेनर या दूसरे उपयोग का tag उस इमेज पर निर्भर तो नहीं।
चौदह दिन से पुरानी इमेज हटाने का सुझाव भी अभी प्रस्तावित नीति है। पहले अपना सुरक्षित टैग हटाएं, फिर बिना force के deletion आजमाएं। हटाना विफल हो तो उसे रहने दें और रिकॉर्ड करें। केवल dangling दिखने से यह साबित नहीं होता कि कोई इमेज इंसानी rollback के काम की नहीं है। डिस्क में जगह कम हो तो अकेली rollback इमेज हटाकर अपडेट की जगह न बनाएं।
स्वीकृति परीक्षण में यह साबित करना होगा कि डाइजेस्ट न बदले तो image-layer download, container recreation और update log न हों—और ऑनलाइन जांच का समय अलग मापा जाए। ईमेल कंटेनर की पहचान, शुरू होने का समय और पहले से मौजूद संदेश अपडेट तथा rollback के बाद समान रहने चाहिए। खराब इमेज, गैर-200 जवाब, स्वास्थ्य timeout और recreation failure पर पुरानी इमेज से वापसी जांचें; GHCR से संपर्क काटकर भी स्थानीय rollback सफल होना चाहिए। ट्रांजैक्शन के अलग-अलग चरणों में updater रोककर देखें कि अगली बार वह पहले recovery करे और अलग रखी गई खराब इमेज फिर न लगाए।
निष्कर्ष: इस शर्त पर यह होस्ट-आधारित योजना उचित है कि थोड़ी गेटवे बाधा स्वीकार्य हो, इंटरनेट पर हर जांच को एक सेकंड से कम रखने की गारंटी न मांगी जाए, और दोनों दूरस्थ मशीनों की वास्तविक स्थिति पहले जांची जाए। अभी किसी VPS पर इसे लागू या परखा नहीं गया है; इसलिए प्रदर्शन, अनुकूलता और rollback को सत्यापित मानना सही नहीं होगा।
Studio Global AI
इस पृष्ठ में एक स्रोत-समर्थित उत्तर शामिल है जिसे आप Studio Global के अंदर जारी रख सकते हैं।
प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं।
प्रस्तावित तरीका होस्ट पर systemd टाइमर चलाकर Docker इमेज का डाइजेस्ट जांचना और अपडेट करना है; अलग अपडेटर कंटेनर की जरूरत नहीं। नया गेटवे स्वस्थ न हो तो पुरानी, स्थानीय रूप से सुरक्षित इमेज से वापस लौटने की योजना है। ईमेल कंटेनर को अपडेट के दौरान नहीं छूना चाहिए।
इंटरनेट पर डाइजेस्ट जांच हर बार एक सेकंड से कम में पूरी होगी, इसकी गारंटी नहीं; एकल गेटवे कंटेनर के दोबारा बनने में थोड़ी सेवा रुकावट भी संभव है।