إعداد الجهاز
ترشدك هذه الصفحة خلال إعداد جهازك الأول: إنشاء إعداد، وتسجيل خادم، وتجهيزه، وتهيئة البنية التحتية اختيارياً للوصول العام.
الخطوة 1: إنشاء إعداد
الإعداد هو ملف إعداد مسمّى يخزّن بيانات اعتماد SSH، وتعريفات الأجهزة، وربط المستودعات. فكّر فيه كمساحة عمل للمشروع.
rdc config init --name my-infra --ssh-key ~/.ssh/id_ed25519
| الخيار | مطلوب | الوصف |
|---|---|---|
--ssh-key <path> | نعم | مسار مفتاح SSH الخاص بك. يتم توسيع رمز التلدة (~) تلقائياً. |
--renet-path <path> | لا | مسار مخصص لملف renet التنفيذي على الأجهزة البعيدة. القيمة الافتراضية هي موقع التثبيت القياسي. |
ينشئ هذا إعداداً باسم my-infra ويخزّنه في ~/.config/rediacc/my-infra.json. الإعداد الافتراضي (عند عدم تحديد اسم) يُخزَّن باسم ~/.config/rediacc/rediacc.json.
يمكنك إنشاء إعدادات متعددة (مثل
production،staging،dev). بدّل بينها باستخدام خيار--configمع أي أمر.
الخطوة 2: إضافة جهاز
سجّل خادمك البعيد كجهاز في الإعداد:
rdc config machine add --name server-1 --ip 203.0.113.50 --user deploy
| الخيار | مطلوب | الافتراضي | الوصف |
|---|---|---|---|
--ip <address> | نعم | - | عنوان IP أو اسم المضيف للخادم البعيد |
--user <username> | نعم | - | اسم مستخدم SSH على الخادم البعيد |
--port <port> | لا | 22 | منفذ SSH |
--datastore <path> | لا | /mnt/rediacc | المسار على الخادم حيث يخزّن Rediacc المستودعات المشفرة |
بعد إضافة الجهاز، يقوم rdc تلقائياً بتشغيل ssh-keyscan لجلب مفاتيح المضيف الخاصة بالخادم. يمكنك أيضاً تشغيل هذا يدوياً:
rdc config machine scan-keys -m server-1
لعرض جميع الأجهزة المسجلة:
rdc config machine list
الخطوة 3: إعداد الجهاز
قم بتجهيز الخادم البعيد بجميع المتطلبات اللازمة:
rdc config machine setup --name server-1
يقوم هذا الأمر بما يلي:
- رفع ملف renet التنفيذي إلى الخادم عبر SFTP
- تثبيت Docker و containerd و cryptsetup (إن لم تكن موجودة)
- إنشاء مستخدم النظام
rediacc(UID 7111) - إنشاء مجلد مخزن البيانات وتحضيره للمستودعات المشفرة
| الخيار | مطلوب | الافتراضي | الوصف |
|---|---|---|---|
--datastore <path> | لا | /mnt/rediacc | مجلد مخزن البيانات على الخادم |
--datastore-size <size> | لا | 95% | نسبة القرص المتاح المخصصة لمخزن البيانات |
--debug | لا | false | تفعيل المخرجات التفصيلية لاستكشاف الأخطاء |
يجب تشغيل الإعداد مرة واحدة فقط لكل جهاز. من الآمن إعادة تشغيله عند الحاجة.
إدارة مفاتيح المضيف
إذا تغيّر مفتاح SSH الخاص بالخادم (مثلاً بعد إعادة التثبيت)، قم بتحديث المفاتيح المخزّنة:
rdc config machine scan-keys -m server-1
يُحدّث هذا حقل knownHosts في إعداداتك لهذا الجهاز.
اختبار اتصال SSH
بعد إضافة جهاز، تحقق من إمكانية الوصول إليه:
rdc term connect -m server-1 -c "hostname"
يفتح هذا اتصال SSH بالجهاز وينفّذ الأمر. إذا نجح، فإن إعدادات SSH الخاصة بك صحيحة.
للحصول على تشخيصات أكثر تفصيلاً، شغّل:
rdc doctor
محوّل السحابة فقط: يوفر أمر
rdc machine test-connectionتشخيصات SSH مفصّلة ولكنه يتطلب محوّل السحابة. للمحوّل المحلي، استخدمrdc termأوsshمباشرة.
تهيئة البنية التحتية
للأجهزة التي تحتاج إلى تقديم حركة المرور بشكل عام، قم بتهيئة إعدادات البنية التحتية:
تعيين البنية التحتية
rdc config infra set -m server-1 \
--public-ipv4 203.0.113.50 \
--base-domain example.com \
--cert-email admin@example.com \
--cf-dns-token your-cloudflare-api-token
| الخيار | النطاق | الوصف |
|---|---|---|
--public-ipv4 <ip> | Machine | Public IPv4 address, proxy entrypoints are only created for configured address families |
--public-ipv6 <ip> | Machine | Public IPv6 address, proxy entrypoints are only created for configured address families |
--base-domain <domain> | Machine | النطاق الأساسي للتطبيقات (مثل example.com) |
--cert-email <email> | Config | البريد الإلكتروني لشهادات TLS من Let’s Encrypt (مشترك عبر الأجهزة) |
--cf-dns-token <token> | Config | رمز API لـ Cloudflare DNS لتحديات ACME DNS-01 (مشترك عبر الأجهزة) |
--tcp-ports <ports> | Machine | منافذ TCP إضافية مفصولة بفواصل لإعادة التوجيه (مثل 25,143,465,587,993) |
--udp-ports <ports> | Machine | منافذ UDP إضافية مفصولة بفواصل لإعادة التوجيه (مثل 53) |
الخيارات ذات نطاق Machine تُخزّن لكل جهاز. الخيارات ذات نطاق Config (--cert-email، --cf-dns-token) مشتركة عبر جميع الأجهزة في الإعداد, عيّنها مرة واحدة وستُطبّق في كل مكان.
عرض البنية التحتية
rdc config infra show -m server-1
الدفع إلى الخادم
أنشئ وانشر إعدادات وكيل Traefik العكسي على الخادم:
rdc config infra push -m server-1
هذا الأمر:
- ينشر ملف renet التنفيذي على الجهاز البعيد
- يُهيئ وكيل Traefik العكسي والموجّه وخدمات systemd
- يُنشئ سجلات DNS في Cloudflare للنطاق الفرعي للجهاز (
server-1.example.comو*.server-1.example.com) إذا تم تعيين--cf-dns-token
خطوة DNS تلقائية ومتساوية القوة, تُنشئ السجلات المفقودة، وتُحدّث السجلات التي تغيّرت عناوين IP الخاصة بها، وتتخطى السجلات الصحيحة بالفعل. إذا لم يتم تكوين رمز Cloudflare، يتم تخطي DNS مع تحذير. Per-repo wildcard DNS records (for auto-routes) are created automatically when you run rdc repo up.
التزويد السحابي
بدلاً من إنشاء الأجهزة الافتراضية يدوياً، يمكنك تكوين مزود سحابي والسماح لـ rdc بتزويد الأجهزة تلقائياً باستخدام OpenTofu.
المتطلبات الأساسية
قم بتثبيت OpenTofu: opentofu.org/docs/intro/install
تأكد من أن إعدادات SSH تتضمن مفتاحاً عاماً:
rdc config set --key ssh.privateKeyPath --value ~/.ssh/id_ed25519
إضافة مزود سحابي
rdc config provider add --name my-linode \
--provider linode/linode \
--token $LINODE_API_TOKEN \
--region us-east \
--type g6-standard-2
| الخيار | مطلوب | الوصف |
|---|---|---|
--provider <source> | نعم* | مصدر مزود معروف (مثل linode/linode، hetznercloud/hcloud) |
--source <source> | نعم* | مصدر مزود OpenTofu مخصص (للمزودين غير المعروفين) |
--token <token> | نعم | رمز API للمزود السحابي |
--region <region> | لا | المنطقة الافتراضية للأجهزة الجديدة |
--type <type> | لا | نوع/حجم المثيل الافتراضي |
--image <image> | لا | صورة نظام التشغيل الافتراضية |
--ssh-user <user> | لا | اسم مستخدم SSH (الافتراضي: root) |
* يجب تحديد إما --provider أو --source. استخدم --provider للمزودين المعروفين (إعدادات مدمجة). استخدم --source مع خيارات --resource و --ipv4-output و --ssh-key-attr الإضافية للمزودين المخصصين.
تزويد جهاز
rdc machine provision --name prod-2 --provider my-linode
يقوم هذا الأمر الواحد بما يلي:
- إنشاء جهاز افتراضي على المزود السحابي عبر OpenTofu
- انتظار اتصال SSH
- تسجيل الجهاز في إعداداتك
- تثبيت renet وجميع المتطلبات
- Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass
--base-domainexplicitly)
| الخيار | الوصف |
|---|---|
--provider <name> | اسم المزود السحابي (من add-provider) |
--region <region> | تجاوز المنطقة الافتراضية للمزود |
--type <type> | تجاوز نوع المثيل الافتراضي |
--image <image> | تجاوز صورة نظام التشغيل الافتراضية |
--base-domain <domain> | Base domain for infrastructure. Auto-detected from sibling machines if not specified |
--no-infra | Skip infrastructure configuration (proxy + DNS) entirely |
--debug | عرض مخرجات التزويد التفصيلية |
إلغاء تزويد جهاز
rdc machine deprovision --name prod-2
يدمّر الجهاز الافتراضي عبر OpenTofu ويزيله من إعداداتك. يتطلب تأكيداً ما لم يُستخدم --force. يعمل فقط مع الأجهزة التي تم إنشاؤها باستخدام machine provision.
عرض المزودين
rdc config provider list
تعيين القيم الافتراضية
عيّن قيماً افتراضية حتى لا تحتاج إلى تحديدها في كل أمر:
rdc config set --key machine --value server-1 # الجهاز الافتراضي
rdc config set --key team --value my-team # الفريق الافتراضي (محوّل السحابة، تجريبي)
بعد تعيين جهاز افتراضي، يمكنك حذف -m server-1 من الأوامر:
rdc repo create --name my-app -m my-server --size 10G
إعدادات متعددة
أدر بيئات متعددة باستخدام إعدادات مسمّاة:
# إنشاء إعدادات منفصلة
rdc config init --name production --ssh-key ~/.ssh/id_prod
rdc config init --name staging --ssh-key ~/.ssh/id_staging
# استخدام إعداد محدد
rdc repo list -m server-1 --config production
rdc repo list -m staging-1 --config staging
عرض جميع الإعدادات:
rdc config list
عرض تفاصيل الإعداد الحالي:
rdc config show