دليل شامل لإعداد مستودع APT على خوادم Debian و Ubuntu
مقالات تعليمية ومتخصصة حول إعداد مستودع APT على أنظمة التشغيل Debian و Ubuntu لتوزيع حزم البرامج في المؤسسات والشركات.

دليل إعداد مستودع حزم apt على خوادم Debian و Ubuntu

تقدم هذه المقالة دليلاً شاملاً وعملياً لإعداد مستودع APT على خوادم Debian وUbuntu. ستتعرف على طرق مختلفة مثل dpkg-scanpackages وreprepro وaptly، بالإضافة إلى نصائح أمنية لإدارة هذه المستودعات على النحو الأمثل.
0 الأسهم
0
0
0
0

لماذا ينبغي عليّ إنشاء مستودع APT خاص بالمؤسسة؟

في هذا الدليل العملي والمتخصص، نشرح خطوة بخطوة كيفية إعداد وإدارة مستودع APT على خادم Debian/Ubuntu. وهو مناسب للمطورين، ومديري الأنظمة، وفرق DevOps، والشركات التي تحتاج إلى توزيع حزم داخلية (.deb) أو نشر حزم مخصصة.

المزايا: التوزيع الداخلي للحزم دون تحميلات يدوية، والتحكم في الإصدارات والتبعيات، والتكامل مع CI/CD (مثل GitLab CI)، والقدرة على استخدام CDN ومواقع الحافة للتوزيع السريع.

لماذا من المهم إنشاء مستودع APT؟

يُتيح لك مستودع APT نشر الحزم مركزياً، والتحكم في التبعيات، وأتمتة إصدارات البرامج. بالنسبة للمؤسسات التي لديها مستخدمون عالميون، يُقلل استخدام شبكة توصيل المحتوى (CDN) من زمن الاستجابة والضغط على الخادم الأصلي.

بالنسبة للمستودعات العامة، استخدم خدمات مكافحة هجمات DDoS وخدمات CDN للحفاظ على القدرة على الصمود في وجه الهجمات وحركة المرور العالية.

مقارنة سريعة للطرق

dpkg-scanpackagesمناسب للبيئات البسيطة والسريعة والصغيرة. يتميز بسهولة التكوين ولكن إدارة محدودة.

repreproمناسب للمؤسسات؛ إدارة التوزيع المتعدد، ودعم النسخ المتطابق والاستيراد/التصدير.

بشكل مناسب: حديث وقوي؛ التقاط اللقطات، النشر إلى S3، إدارة الإصدارات والنشر المرن.

المتطلبات الأساسية

متطلبات الإعداد:

  • خادم ديبيان/أوبونتو مع إمكانية الوصول جذر أو سودو
  • خادم ويب للخدمة (Nginx/Apache) أو استخدام S3/CDN
  • GPG لتوقيع الإصدار
  • قم بتثبيت الأدوات المطلوبة (مثل reprepro أو aptly)

مثال على تثبيت الحزم الأساسية:

sudo apt update && sudo apt install nginx gnupg2 apt-utils dpkg-dev
# برای reprepro یا aptly:
sudo apt install reprepro
# یا برای aptly (ممکن است پکیج در مخازن رسمی نباشد و نیاز به نصب از بسته‌های پروژه باشد)

الهيكل الأساسي لخزان APT

ينبغي أن يتضمن الهيكل العام لمستودع APT الفروع التالية:

  • dists/ / /ثنائي- /Packages(.gz)
  • حمام سباحة/ /package.deb
  • dists/ /Release and Release.gpg (signature)

مثال على بنية الملف:

/var/www/html/apt-repo/
├── dists/
│   └── focal/
│       └── main/
│           └── binary-amd64/
│               └── Packages.gz
└── pool/
    └── main/
        └── your-package_1.0.0_amd64.deb

طريقة بسيطة: dpkg-scanpackages

مناسب للأحواض الصغيرة والخاصة. الخطوات العامة:

  1. إنشاء دليل وتعيين مالكه:
sudo mkdir -p /var/www/html/apt-repo/{dists/focal/main/binary-amd64,pool/main}
sudo chown -R $USER:$USER /var/www/html/apt-repo

نسخ الحزمة إلى المجموعة:

cp mypackage_1.0.0_amd64.deb /var/www/html/apt-repo/pool/main/

إنشاء ملف الحزم وضغطه:

cd /var/www/html/apt-repo
dpkg-scanpackages pool /dev/null | gzip -9c > dists/focal/main/binary-amd64/Packages.gz

إنشاء ملف الإصدار يدويًا:

cat > dists/focal/Release <<EOF
Origin: MyRepo
Label: MyRepo
Suite: stable
Codename: focal
Architectures: amd64
Components: main
Description: Internal APT repository
EOF

توقيع اتفاقية الإفراج مع GPG (موصى به):

gpg --default-key "[email protected]" --output dists/focal/Release.gpg --detach-sign --armor dists/focal/Release

مثال على إضافة مستودع في العميل باستخدام التوقيع بواسطة:

echo "deb [signed-by=/usr/share/keyrings/myrepo.gpg] https://repo.example.com/apt-repo focal main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt update

طريقة قياسية ومهنية: إعادة إنتاج

يُعد برنامج Reprepro مناسبًا لإدارة التوزيعات والمكونات المتعددة ويتكامل بشكل جيد مع العمليات التنظيمية.

تثبيت:

sudo apt install reprepro

إنشاء الهيكل والمجلدات:

sudo mkdir -p /var/www/html/repo
cd /var/www/html/repo
sudo mkdir conf db dists pool

مثال على ملف conf/distributions:

Origin: MyCompany
Label: MyCompany
Suite: stable
Codename: focal
Architectures: amd64 source
Components: main
Description: MyCompany internal repository
SignWith: <KEYID>

أضف الحزمة إلى المستودع:

sudo reprepro -b /var/www/html/repo includedeb focal /path/to/mypackage_1.0.0_amd64.deb

يقوم برنامج reprepro تلقائيًا بإنشاء ملفات الحزم والإصدارات وتوقيعها إذا تم تعيين SignWith.

مثال على تكوين بسيط لـ Nginx مع SSL لخدمة مستودع:

server {
    listen 443 ssl;
    server_name repo.example.com;

    ssl_certificate /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/private/privkey.pem;

    root /var/www/html/repo;
    location / {
        autoindex on;
    }
}

الأسلوب الحديث: مناسب (مقترح للإنتاج)

يحتوي برنامج aptly على ميزات التقاط اللقطات والنشر إلى S3 والنسخ المتطابق والإدارة المتقدمة، ويوصى به لبيئات الإنتاج والمؤسسات.

سهولة التركيب والاستخدام:

sudo apt install aptly
aptly repo create -distribution=focal -component=main myrepo
aptly repo add myrepo /path/to/*.deb
aptly publish repo -architectures=amd64 myrepo

للنشر على S3/CDN، يمكنك استخدام العديد من الخوادم الخلفية المناسبة ووضع الناتج في حاوية S3 واستخدام مواقع CDN/edge للتوزيع.

نصائح أمنية وأفضل الممارسات

HTTPS: قم دائمًا بنشر المستودع باستخدام بروتوكول TLS لمنع هجمات الوسيط.

استخراج المفتاح العام وتوزيعه:

gpg --export --armor "[email protected]" | sudo tee /usr/share/keyrings/myrepo-archive-keyring.gpg

بخصوص العميل:

deb [signed-by=/usr/share/keyrings/myrepo-archive-keyring.gpg] https://repo.example.com/ubuntu focal main

الوصول المحدود: بالنسبة للمستودعات الخاصة، استخدم المصادقة الأساسية أو شهادة العميل أو القائمة البيضاء لعناوين IP (على سبيل المثال في Nginx).

التسجيل والمراقبة: قم بتسجيل ومراقبة حجم التنزيل والأخطاء والمحاولات الفاشلة.

تهيئة العميل (مثال عملي)

ضع ملف المفتاح وأضف المستودع على جهاز العميل:

sudo mkdir -p /usr/share/keyrings
curl -fsSL https://repo.example.com/keys/myrepo.gpg | sudo tee /usr/share/keyrings/myrepo-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/myrepo-archive-keyring.gpg] https://repo.example.com/apt-repo focal main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt update
sudo apt install mypackage

الأتمتة والتكامل المستمر/التسليم المستمر

يمكنك إنشاء مهمة في GitLab CI لبناء ملف .deb ودفعه إلى المستودع، ثم نشر الحزمة باستخدام reprepro أو aptly.

build-package:
  script:
    - dpkg-buildpackage -us -uc
    - scp ../mypackage_*.deb deploy@repo-server:/tmp
    - ssh deploy@repo-server "reprepro -b /var/www/html/repo includedeb focal /tmp/mypackage_*.deb"

لذلك، يمكنك استخدام واجهة برمجة التطبيقات (API) أو واجهة سطر الأوامر (CLI) للنشر التلقائي.

تحسين الأداء وقابلية التوسع

نصائح أساسية لتحسين الأداء:

  • مواقع شبكة توصيل المحتوى (CDN) ومواقع الحافة: يساهم توزيع المحتوى إلى أقرب نقطة وصول في تقليل زمن الاستجابة والضغط على الخادم الأصلي. وتتيح شركتنا ذلك من خلال أكثر من 85 موقعًا عالميًا وخيارات بروتوكول BGP وشبكة توصيل المحتوى (CDN).
  • الضغط والتخزين المؤقت: قم بضغط ملفات Packages.gz باستخدام Gzip وقم بتعيين رؤوس Cache-Control المناسبة.
  • موازنة الأحمال والتوافر العالي: استخدم موازنات الأحمال والنسخ المتماثلة متعددة المناطق لتحقيق استقرار أعلى.

مثال على رأس Cache-Control في Nginx:

location /apt-repo/ {
    add_header Cache-Control "public, max-age=3600";
}

نصائح محددة لحالات محددة

بالنسبة للمؤسسات التي تحتاج إلى التوزيع على خوادم التداول (خوادم التداول الافتراضية الخاصة) أو خوادم الألعاب، يوصى باستخدام مواقع قريبة من مراكز البيانات الوجهة لتقليل زمن الوصول.

إذا كانت لديك حزم كبيرة مثل نماذج الذكاء الاصطناعي أو ملفات العرض، فاستخدم خوادم الحوسبة السحابية المزودة بوحدات معالجة الرسومات وشبكة عالية السرعة وشبكة توصيل المحتوى (CDN).

للحصول على نشر عالمي قابل للتوسع، فإن استخدام S3 وشبكة توصيل المحتوى (CDN) على الحافة يوفر أفضل أداء.

ملخص وقائمة التحقق لبدء التشغيل

  • اختيار الأداة: dpkg-scanpackages (بسيط) / reprepro (للمؤسسات) / aptly (متقدم)
  • إعداد بنية الدليل (dists, pool)
  • إصدار الحزمة والإصدار
  • التوقيع باستخدام GPG وتوزيع المفتاح العام (باستخدام طريقة التوقيع بواسطة)
  • تقديم الخدمة عبر بروتوكول HTTPS باستخدام Nginx/Apache أو S3+CDN
  • تطبيق قيود الوصول والمراقبة
  • الأتمتة باستخدام التكامل المستمر/التسليم المستمر (CI/CD) لإصدارات مؤتمتة

خدمات الاستضافة الموصى بها

بإمكان شركتنا توفير البنية التحتية الكاملة لتشغيل مستودع APT، بما في ذلك الاستضافة على خادم سحابي عالي الأداء وشبكة BGP، والتوزيع العالمي مع CDN وأكثر من 85 موقعًا، وخيارات خاصة وآمنة (خادم مخصص، ومضاد DDoS، وTLS والمصادقة)، ودعم التخزين المتوافق مع S3 والتكامل مع aptly.

يمكن للفريق التقني المساعدة في اختيار الموقع، وإعداد شبكة توصيل المحتوى (CDN)، وتكوين Nginx، وتنفيذ التكامل المستمر/التسليم المستمر (CI/CD).

الأسئلة الشائعة

قد يعجبك أيضاً