Wharf
May 6, 2026 · View on GitHub
خدمة وكيل صور Docker خفيفة الوزن، مصممة لحل مشكلة الوصول المقيد إلى Docker Hub في البر الرئيسي للصين.
📢 برنامج تعليمي للمدونة: قل وداعًا لمهلة اتصال Docker Hub! أنشئ مسرع الصور الحصري الخاص بك باستخدام Wharf
الميزات الأساسية
-
🚀 نشر بنقرة واحدة: يوفر برنامجًا نصيًا آليًا
install.shلإعداد البيئة بنقرة واحدة، وتطبيق الشهادات (Let's Encrypt)، ونشر الخدمة، دون الحاجة إلى تدخل يدوي. -
📦 أوضاع نشر متعددة:
- مستقل: وظيفة TLS مدمجة، توفر خدمة HTTPS مباشرة.
- وكيل Nginx: يمكن أن يعمل مع Nginx كخدمة خلفية.
- أصل CDN: يدعم وضع HTTP، وهو مناسب لتكامل CDN.
-
⚡ تسجيل الدخول لزيادة معدل السحب: يسمح للمستخدمين بالمصادقة باستخدام حساباتهم الشخصية في Docker Hub عبر
docker login، مما يزيد من حد معدل السحب للمستخدمين المجهولين (10 سحوبات/ساعة/IP) إلى المستخدمين المصادق عليهم (100 سحب/ساعة/حساب). -
💎 وكيل شفاف تمامًا: متوافق تمامًا مع Docker Registry V2 API. يحتاج العملاء فقط إلى تعديل عنوان مصدر المرآة، دون منحنى تعليمي إضافي أو تغييرات في عادات الاستخدام.
-
🛡️ أداء عالٍ وأمان: مبني باستخدام Rust و Actix Web، مما يوفر أداءً ممتازًا وأمانًا للذاكرة. يستخدم البث لترحيل الصور، مع الحد الأدنى من النفقات العامة.
التثبيت والنشر
نحن نقدم برنامجًا نصيًا للتثبيت بنقرة واحدة لتبسيط عملية النشر. قبل البدء، يرجى التأكد من حل اسم المجال الخاص بك إلى المضيف الهدف.
bash <(curl -Ls https://raw.githubusercontent.com/harrisonwang/wharf/main/install.sh)
سيرشدك البرنامج النصي خلال التثبيت ويقدم أوضاع النشر الثلاثة التالية:
الوضع الأول: مستقل (HTTPS)
هذا هو الوضع الأبسط والأكثر توصية. سيستمع Wharf مباشرة على المنافذ 80 و 443، ويوفر خدمة وكيل HTTPS كاملة.
الميزات:
- لا حاجة لتكوين خادم ويب إضافي.
- يتعامل تلقائيًا مع إعادة توجيه HTTP إلى HTTPS.
- خيار التقديم التلقائي لشهادات Let's Encrypt أو استخدام شهاداتك الخاصة.
عملية التثبيت:
- قم بتشغيل برنامج التثبيت بنقرة واحدة.
- عند المطالبة باختيار الوضع، أدخل
1أو اضغط Enter ببساطة. - اتبع المطالبات لإدخال اسم المجال الخاص بك واختيار طريقة معالجة الشهادة.
- سيكمل البرنامج النصي تلقائيًا جميع التكوينات ويبدأ الخدمة.
الوضع الثاني: وكيل Nginx العكسي (متقدم)
الوضع الثاني: وكيل Nginx العكسي
هذا الوضع مناسب إذا كان لديك بالفعل Nginx وترغب في إدارة خدمات الويب مركزيًا من خلاله.
الميزات:
- يتعامل Nginx مع تشفير HTTPS وإدارة الشهادات، مع تشغيل Wharf كخلفية HTTP بسيطة.
- يعمل Wharf كخدمة HTTP خلفية على منفذ محدد (على سبيل المثال، 9000).
- مناسب للتكامل مع الخدمات الأخرى.
عملية التثبيت:
- قم بتشغيل برنامج التثبيت بنقرة واحدة.
- عند المطالبة باختيار الوضع، أدخل
2. - اتبع المطالبات لإدخال اسم المجال الخاص بك، ومنفذ الاستماع الخلفي لـ Wharf، ومعلومات الشهادة.
- سيقوم البرنامج النصي تلقائيًا بإنشاء ملف تكوين Nginx نموذجي لك. ستحتاج إلى إضافته يدويًا إلى تكوين Nginx الخاص بك وإعادة تحميل خدمة Nginx.
الوضع الثالث: أصل CDN (HTTP) (متقدم)
الوضع الثالث: أصل CDN (HTTP)
هذا الوضع مناسب إذا كنت ترغب في استخدام Wharf كأصل لـ CDN لتحقيق تسريع عالمي أفضل.
الميزات:
- يستمع Wharf فقط على منافذ HTTP.
- يتعامل مزود CDN مع طلبات HTTPS والشهادات.
- يثق Wharf ويعالج رؤوس
X-Forwarded-*لتحديد عنوان IP العميل والبروتوكول بشكل صحيح.
عملية التثبيت:
- قم بتشغيل برنامج التثبيت بنقرة واحدة.
- عند المطالبة باختيار الوضع، أدخل
3. - اتبع المطالبات لإدخال منفذ HTTP الذي يجب أن يستمع إليه Wharf.
- قم بتكوين خدمة CDN الخاصة بك لتوجيه أصلها إلى عنوان ومنفذ خدمة Wharf.
استخدام عميل Docker
قم بتكوين عميل Docker الخاص بك لاستخدام خدمة الوكيل الخاصة بك.
الطريقة الأولى: الاستخدام المجهول (التكوين الأساسي)
هذا هو التكوين الأساسي، الذي يوجه طلبات Docker الافتراضية إلى خدمة الوكيل الخاصة بك.
-
تكوين Docker Daemon
قم بتحرير ملف
/etc/docker/daemon.json(أنشئه إذا لم يكن موجودًا) وأضف المحتوى التالي. استبدلyour-domain.comباسم المجال الخاص بك.{ "registry-mirrors": ["https://your-domain.com"] } -
إعادة تشغيل خدمة Docker
sudo systemctl restart dockerالآن، سيقوم
docker pullبسحب الصور من خلال الوكيل الخاص بك.
الطريقة الثانية: استخدام تسجيل الدخول (زيادة معدل السحب)
تسمح لك هذه الطريقة بالحصول على معدل سحب صور أعلى عن طريق تسجيل الدخول باستخدام حساب Docker Hub الخاص بك، بالإضافة إلى الاستخدام المجهول.
-
إكمال التكوين الأساسي
يرجى التأكد من إكمال جميع الخطوات في الطريقة الأولى.
-
تسجيل الدخول إلى خدمة الوكيل
استخدم الأمر
docker loginوأدخل اسم المستخدم وكلمة المرور الخاصين بك في Docker Hub.docker login your-domain.com -
مزامنة معلومات المصادقة
بعد تسجيل الدخول بنجاح، تحتاج إلى تحرير ملف
~/.docker/config.jsonيدويًا. انسخ معلوماتauthالتي تم إنشاؤها لـyour-domain.comوالصقها لـhttps://index.docker.io/v1/.قبل التعديل:
{ "auths": { "your-domain.com": { "auth": "aBcDeFgHiJkLmNoPqRsTuVwXyZ..." } } }بعد التعديل:
{ "auths": { "your-domain.com": { "auth": "aBcDeFgHiJkLmNoPqRsTuVwXyZ..." }, "https://index.docker.io/v1/": { "auth": "aBcDeFgHiJkLmNoPqRsTuVwXyZ..." } } }بعد حفظ الملف، سيتم إرسال طلبات
docker pullالخاصة بك كمستخدم مصادق عليه، وبالتالي ستتمتع بحدود معدل أعلى.
التطوير
Note
للحصول على خلفية تقنية مفصلة، وهندسة النظام، ومبادئ التنفيذ، يرجى الرجوع إلى وثيقة البنية التقنية والمبادئ.
-
استنساخ المستودع
git clone https://github.com/harrisonwang/wharf.git cd wharf -
تعديل ملف التكوين افتح
config/default.toml.exampleوانسخه إلىconfig/default.toml، ثم قم بتعديل قسم[server]للتأكد من تمكين خدمة HTTP وتعطيل خدمة HTTPS. يمكنك تعيين المنفذ إلى 8080 لتجنب استخدام المنافذ المميزة في بيئة التطوير.cp config/default.toml.example config/default.tomlثم قم بتحرير
config/default.toml:# config/default.toml [server] http_port = 8080 # استخدم منفذ غير مميز https_port = 8443 http_enabled = true # تمكين HTTP https_enabled = false # تعطيل HTTPS behind_proxy = true -
تشغيل المشروع الآن، يمكنك تشغيل المشروع مباشرة باستخدام
cargo.cargo runستبدأ الخدمة وتستمع على
http://0.0.0.0:8080. -
بناء إصدار الإصدار
cargo build --release
الترخيص
هذا المشروع مرخص بموجب ترخيص MIT. راجع LICENSE لمزيد من المعلومات.