Skip to content

نشر Potato على Hetzner أو Vultr أو Linode

ضع دراسة تعليق توضيحي على Potato في جهاز افتراضي على Hetzner أو Vultr أو Linode باستخدام potato deploy، بدءًا من نحو €6 شهريًا، مع HTTPS وقرص يبقى.

يضع potato deploy up --provider hetzner دراسة تعليق توضيحي على جهاز افتراضي في Hetzner Cloud مقابل نحو €6 شهريًا، وهو أدنى سعر افتراضي بين أهداف الأجهزة الافتراضية المدفوعة في Potato. ويفعل --provider vultr و--provider linode الشيء نفسه على Vultr وعلى Linode التابع لـ Akamai مقابل $10 و$12 شهريًا. كل منها جهاز افتراضي عادي بقرص يبقى بعد إعادة التشغيل، فتعمل عليه الدراسة أسابيع دون خدمة نسخ احتياطي. يُعِدّ Potato الثلاثة بالطريقة نفسها، بجدار حماية لا يفتح إلا المنافذ 22 و80 و443، وDocker، وخادم الويب Caddy مع شهادة Let's Encrypt، و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 في المشروع وأنشئ رمز API بصلاحية القراءة والكتابة.
  • Vultr. أنشئ مفتاح API في لوحة تحكم Vultr وأضف عنوان IP لجهازك إلى قائمة التحكم في الوصول الخاصة بالمفتاح، وإلا رفض Vultr كل طلب.
  • Linode. أنشئ رمز وصول شخصيًا بصلاحية القراءة والكتابة على Linodes وFirewalls وVolumes.

ثبّت إضافة النشر، وصدّر الرمز، وتحقق من أن 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 أن يسجّل ويعلّق). في دراسة تعهيد جماعي يكون التسجيل المفتوح مقصودًا عادةً. أما للمعلّقين المسمَّين، فاسردهم تحت user_config.users مع allow_all_users: false (إدارة كلمات المرور) أو اجعلهم يسجّلون الدخول عبر Google أو GitHub أو مؤسستك (مصادقة SSO وOAuth) قبل أن تنشر.

مراجعة الخطة والنشر

لا يحتاج التشغيل التجريبي إلى حساب ولا ينشئ شيئًا. فهو يطبع كل خطوة، والتكلفة التقديرية، وأي إعداد خطر في ملف الإعداد:

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

ينشر الأمر الثاني بعد أن تؤكد الخطة. وينتهي بطباعة عنوان URL، وهو عنوان https:// على عنوان IP للجهاز، ومسار ملف مفتاح المشرف، .potato/secrets.json بجانب ملف الإعداد. يفتح مفتاح المشرف لوحة تحكم المشرف على /admin. وتشغيل up مرة أخرى بعد تعديل ملف الإعداد يرفع النسخة الجديدة إلى الجهاز نفسه. وأثناء الدراسة، يتابع potato deploy logs myproject/config.yaml -f سجل الخادم لدى المزوّدين الثلاثة.

يغيّر --region و--size الموقع والجهاز، ويضيف --volume-gb قرصًا منفصلًا لبيانات المهمة. لا يبيع Hetzner أجهزته من فئة cx إلا في مواقعه الأوروبية، لذا فإن النشر في موقعيه في الولايات المتحدة، ash وhil، يحتاج إلى نوع cpx يُمرَّر باستخدام --size. وإذا لم يكن النوع معروضًا في الموقع الذي اخترته، يتوقف Potato قبل إنشاء أي شيء ويسرد المواقع التي تبيعه.

الشهادات دون اسم نطاق

من دون اسم نطاق، تصدر Let's Encrypt الشهادة لعنوان IP الخاص بالجهاز. تدوم الشهادة نحو ستة أيام وتتجدد تلقائيًا. ويبلّغ potato deploy status عن أي تجديد يفشل، لذا افحصه كل بضعة أيام إذا كانت الدراسة تعمل دون متابعة. ولاستخدام نطاقك الخاص، وجّه سجل DNS من نوع A إلى عنوان IP الخاص بالجهاز وأعد النشر باستخدام --domain annotate.example.edu. يستخدم حساب Let's Encrypt العنوان الموجود في git config user.email لديك عنوانًا للتواصل، ويضبط --acme-email عنوانًا آخر.

تفاصيل المزوّدين

يطلب Linode كلمة مرور للمستخدم root عند إنشاء الجهاز، حتى عند تقديم مفاتيح SSH. يولّد 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. ولا يعمل destroy على نشر لم يُسحب قط.

قراءة إضافية