Skip to content

Hetzner, Vultr या Linode पर Potato तैनात करना

potato deploy से Potato एनोटेशन अध्ययन को Hetzner, Vultr या Linode की वर्चुअल मशीन पर लगभग €6 प्रति माह से चलाएँ, HTTPS और स्थायी डिस्क के साथ।

potato deploy up --provider hetzner एक एनोटेशन अध्ययन को Hetzner Cloud की वर्चुअल मशीन पर लगभग €6 प्रति माह में चलाता है, जो Potato के सशुल्क VM टारगेट में सबसे कम डिफ़ॉल्ट कीमत है। --provider vultr और --provider linode यही काम Vultr और Akamai के Linode पर $10 और $12 प्रति माह में करते हैं। हर एक एक सामान्य वर्चुअल मशीन है जिसकी डिस्क रीस्टार्ट के बाद बची रहती है, इसलिए उस पर कोई अध्ययन बिना बैकअप सेवा के हफ़्तों चलता है। Potato तीनों को एक ही तरह से सेट करता है: केवल पोर्ट 22, 80 और 443 खोलने वाला फ़ायरवॉल, Docker, Let's Encrypt प्रमाणपत्र के साथ Caddy वेब सर्वर, और सिस्टम सर्विस के रूप में चलता Potato। इस पृष्ठ के लिए Potato 2.10 या उसके बाद का संस्करण और ऐसा कॉन्फ़िग चाहिए जिसे आप potato start से चला चुके हों।

तीनों में से चुनना

तीनों में कीमत, मेमोरी, बिल की मुद्रा और डिफ़ॉल्ट रूप से मशीन के चलने की जगह का फ़र्क है। तालिका वह आकार दिखाती है जो Potato तब बनाता है जब आप --size नहीं देते, साथ में वह मासिक कीमत भी जो वह प्रिंट करता है:

--provider hetzner--provider vultr--provider linode
डिफ़ॉल्ट आकारcx23, 2 vCPU और 4 GBvc2-1c-2gb, 1 vCPU और 2 GBg6-standard-1, 1 vCPU और 2 GB
मासिक कीमतलगभग €6, IPv4 पते के साथ$10$12
डिफ़ॉल्ट स्थानnbg1, न्यूरेमबर्गewr, न्यू जर्सीus-east, नेवार्क
टोकन वेरिएबलHCLOUD_TOKENVULTR_API_KEYLINODE_TOKEN

Hetzner कीमत के हिसाब से सबसे ज़्यादा मेमोरी देता है, और Potato आइटम सेट को मेमोरी में रखता है, इसलिए छोटे बजट में बड़े कॉर्पस के लिए Hetzner ठीक बैठता है। Hetzner जर्मनी की एक कंपनी से यूरो में बिल करता है, जिसकी अनुमति कुछ संस्थानों के ख़रीद नियम नहीं देते। Vultr और Linode अमेरिकी डॉलर में बिल करते हैं।

API टोकन बनाना

हर प्रदाता एक API टोकन से प्रमाणीकरण करता है, जिसे आप उसके कंसोल में बनाते हैं और अपने एनवायरनमेंट में रखते हैं:

  • Hetzner. Hetzner Cloud कंसोल में प्रोजेक्ट का Security खंड खोलें और read और write अनुमति वाला API टोकन बनाएँ।
  • Vultr. Vultr डैशबोर्ड में एक API key बनाएँ और अपनी मशीन का IP पता उस key की access-control सूची में जोड़ें, वरना Vultr हर अनुरोध अस्वीकार कर देगा।
  • Linode. Linodes, Firewalls और Volumes के लिए read और write access वाला personal access token बनाएँ।

deploy extra इंस्टॉल करें, टोकन export करें, और जाँचें कि Potato उसे इस्तेमाल कर सकता है:

bash
pip install 'potato-annotation[deploy]'
export HCLOUD_TOKEN=...
potato deploy providers --verify

तय करना कि कौन साइन इन कर सकता है

potato deploy आपकी साइन-इन सेटिंग्स नहीं बदलता, और मशीन का पता सार्वजनिक होता है। अगर कॉन्फ़िग किसी को भी रजिस्टर करने देता है, तो नीचे का ड्राई रन चेतावनी D003 दिखाता है, "Anyone who finds the URL can register and annotate." (URL ढूँढने वाला कोई भी व्यक्ति रजिस्टर करके एनोटेट कर सकता है।) क्राउडसोर्स किए गए अध्ययन में खुला पंजीकरण आम तौर पर जान-बूझकर रखा जाता है। नामित एनोटेटरों के लिए, तैनात करने से पहले उन्हें allow_all_users: false के साथ user_config.users में सूचीबद्ध करें (पासवर्ड प्रबंधन) या उन्हें Google, GitHub या अपने संस्थान से साइन इन करवाएँ (SSO और OAuth प्रमाणीकरण)।

योजना जाँचना और तैनात करना

ड्राई रन के लिए किसी खाते की ज़रूरत नहीं है और यह कुछ नहीं बनाता। यह हर चरण, अनुमानित लागत और कॉन्फ़िग की कोई भी जोखिम भरी सेटिंग प्रिंट करता है:

bash
potato deploy up myproject/config.yaml --provider hetzner --dry-run
potato deploy up myproject/config.yaml --provider hetzner

दूसरी कमांड आपके द्वारा योजना की पुष्टि करने के बाद तैनात करती है। अंत में यह URL प्रिंट करती है, यानी मशीन के IP पर एक https:// पता, और एडमिन कुंजी फ़ाइल का पाथ, जो आपके कॉन्फ़िग के बगल में .potato/secrets.json है। एडमिन कुंजी /admin पर एडमिन डैशबोर्ड खोलती है। कॉन्फ़िग बदलने के बाद up दोबारा चलाने से नया संस्करण उसी मशीन पर अपलोड होता है। अध्ययन के दौरान potato deploy logs myproject/config.yaml -f तीनों प्रदाताओं पर सर्वर लॉग पर नज़र रखता है।

--region और --size स्थान और मशीन बदलते हैं, और --volume-gb टास्क के डेटा के लिए एक अलग डिस्क जोड़ता है। Hetzner अपनी cx मशीनें केवल अपने यूरोपीय स्थानों में बेचता है, इसलिए उसके अमेरिकी स्थानों, ash और hil, पर तैनाती के लिए --size के साथ एक cpx टाइप देना होगा। अगर वह टाइप आपके चुने स्थान में नहीं बिकता, तो Potato कुछ भी बनाने से पहले रुक जाता है और उन स्थानों की सूची देता है जहाँ वह बिकता है।

डोमेन नाम के बिना प्रमाणपत्र

डोमेन नाम के बिना Let's Encrypt प्रमाणपत्र मशीन के IP पते के लिए जारी करता है। यह लगभग छह दिन चलता है और अपने आप नवीनीकृत होता है। potato deploy status असफल नवीनीकरण की सूचना देता है, इसलिए अगर अध्ययन बिना निगरानी के चलता है तो इसे हर कुछ दिनों में जाँचें। अपना डोमेन इस्तेमाल करने के लिए मशीन के IP की ओर एक DNS A रिकॉर्ड बनाएँ और --domain annotate.example.edu के साथ फिर से तैनात करें। Let's Encrypt खाता आपके git config user.email के पते को संपर्क के रूप में इस्तेमाल करता है, और --acme-email कोई दूसरा पता सेट करता है।

प्रदाताओं से जुड़ी बातें

मशीन बनाते समय Linode root पासवर्ड माँगता है, भले ही SSH keys दी गई हों। Potato एक पासवर्ड बनाता है, उसे .potato/secrets.json में रखता है, और SSH पर पासवर्ड लॉगिन बंद कर देता है, इसलिए उस पासवर्ड से साइन इन नहीं किया जा सकता। Vultr पर --volume-gb से बनी अलग डिस्क मशीन शुरू होने के बाद जोड़ी जाती है, और सेटअप उसे फ़ॉर्मैट और माउंट करने से पहले डिवाइस के दिखने का इंतज़ार करता है।

अध्ययन समाप्त करना

एनोटेशन मशीन की डिस्क पर हैं, जो मशीन के साथ ही मिट जाती है। पहले उन्हें अपने कंप्यूटर पर निकालें, जाँचें, और फिर सर्वर हटाएँ:

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

pull तैनाती का इकट्ठा किया हुआ सब कुछ एक नई potato-pull-<name>-<timestamp> डायरेक्टरी में लिखता है और डेटाबेस को SQLite के backup कमांड से कॉपी करता है। destroy ऐसी तैनाती पर नहीं चलता जिसका कभी pull नहीं हुआ।

आगे पढ़ें