تثبيت Dify على Linux مع النسخ الاحتياطية التلقائية

0 الأسهم
0
0
0
0

مقدمة

في هذا الدرس، سأشرح لكم بالتفصيل كيفية تثبيت Dify، وهي منصة LLMOps مفتوحة المصدر، على خادم لينكس (أوبونتو، ديبيان، أو سنت أو إس). سأقوم أيضًا بإعداد نسخ احتياطية تلقائية باستخدام Restic ووحدات تخزين كائنات متوافقة مع S3 (مثل Cloudflare R2). بنهاية هذا الدرس، سيكون لديكم نسخة Dify تعمل بكامل طاقتها على خادمكم مع نسخ احتياطية منتظمة.

ديفي أداة قوية تتيح لك إنشاء تطبيقات الذكاء الاصطناعي ونشرها وإدارتها. توفر المنصة واجهة مستخدم بسيطة لبناء تطبيقات الذكاء الاصطناعي دون الحاجة إلى معرفة واسعة بالبرمجة، كما أنها تدمج نماذج وخدمات ذكاء اصطناعي متنوعة.

يوفر لك هذا الإعداد بيئة قوية لتطوير وتشغيل تطبيقات الذكاء الاصطناعي.

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

قبل أن تبدأ، ستحتاج إلى ما يلي:

  • خادم لينكس (أوبونتو، ديبيان، أو سنت أو إس) وإمكانية الوصول إلى مستخدم لديه صلاحيات sudo.
  • اسم نطاق يشير إلى عنوان IP الخاص بخادمك.
  • شهادة SSL لنطاقك (على سبيل المثال من خلال Cloudflare).

لإنشاء شهادة SSL باستخدام Cloudflare، قم أولاً بالتسجيل ثم:

  • قم بشراء نطاق أو قم بتوجيه نطاقك الحالي إلى خوادم أسماء Cloudflare.
  • قم بإنشاء شهادة SSL عن طريق تحديد نطاقك والانتقال إلى SSL/TLS » خادم الأصل » إنشاء شهادة.
شهادة SSL من Cloudflare

سنستخدم نظام التشغيل أوبونتو كمثال، لكن الخطوات ستكون متشابهة بالنسبة لنظامي التشغيل ديبيان وسينت أو إس.

الخطوة 1 - تجهيز الخادم

أولاً، سنقوم بتحديث النظام، وتثبيت Docker وDocker Compose، وإعداد Git. سيقوم هذا الأمر بكل ذلك نيابةً عنا:

sudo apt update -y && \
sudo apt upgrade -y && \
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \
sudo apt-get update -y && \
sudo apt-get install -y docker-ce && \
sudo usermod -aG docker $USER && \
sudo curl -L https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo apt install git -y

يقوم هذا الأمر بتنفيذ الإجراءات التالية:

  • يقوم بتحديث قائمة حزم النظام وتحديث الحزم المثبتة.
  • يقوم بتثبيت التبعيات المطلوبة.
  • يضيف مفتاح GPG ومستودع Docker الرسمي.
  • يقوم بتثبيت Docker و Docker Compose.
  • يضيف المستخدم الخاص بك إلى مجموعة Docker.
  • يقوم بتثبيت Git.

للتأكد، يمكنك تشغيل الأمر التالي:

docker --version && docker compose version && git version

قد تحتاج إلى تسجيل الخروج ثم تسجيل الدخول مرة أخرى لتحديث المجموعات.

الخطوة الثانية - استنساخ مستودع Dify

والآن نقوم باستنساخ مستودع Dify:

cd ~ && git clone https://github.com/langgenius/dify.git

سيقوم هذا الأمر بتنزيل شفرة المصدر الخاصة بـ Dify إلى خادمك.

الخطوة 3 - تهيئة Dify

بعد ذلك، قمنا بإعداد ملف التكوين:

cd ~/dify/docker
cp .env.example .env
nano .env

هذه الأوامر:

  • يُعيد التوجيه إلى دليل Dify Docker.
  • أنشئ نسخة من ملف بيئة العينة.
  • افتح ملف .env الجديد في محرر النصوص nano.

في ملف .env، قم بتعيين المتغيرات التالية وفقًا لاحتياجاتك:

    • تحديث متغيرات المجال:
APP_WEB_URL=your_domain_name
NGINX_HTTPS_ENABLED=true
    • تحديث متغيرات الشهادة:
      • إذا كنت تستخدم شهادتك الخاصة، فيمكنك الاحتفاظ بالقيم الافتراضية وإضافة ملفات المفاتيح ذات الصلة في الخطوة التالية.
      • إذا كنت تستخدم شهادة Cloudflare، فقم بتحديث قيم متغيرات الشهادة على النحو التالي:
NGINX_SSL_CERT_FILENAME=cert.pem
NGINX_SSL_CERT_KEY_FILENAME=key.pem
      • تحديث المتغيرات الأخرى:

    تحقق أيضًا من المتغيرات الأخرى في ملف .env وقم بتعديلها وفقًا لاحتياجاتك.

    بعد إجراء التغييرات، اضغط على Ctrl+S لحفظ الملف واضغط على Ctrl+X للخروج من محرر nano.

    الخطوة 4 - إعداد شهادات SSL

    والآن سنضيف شهادة SSL.

    إذا كنت تستخدم شهادتك الخاصة، فيمكنك تضمينها في ملفي diify.crt و diify.key.

    إذا كنت تستخدم شهادة Cloudflare، فأنت بحاجة إلى تضمينها في ملفي cert.pem و key.pem.

    شهادة شخصية

    أنشئ ملفين جديدين:

    nano ~/dify/docker/nginx/ssl/dify.crt
    nano ~/dify/docker/nginx/ssl/dify.key

    انسخ والصق شهادتك ومفتاحك في هذه الملفات. ثم احفظ الملف واخرج من المحرر (Ctrl+S، Ctrl+X).

    شهادة كلاود فلير

    أضف شهادة Cloudflare على النحو التالي:

    nano ~/dify/docker/nginx/ssl/cert.pem
    nano ~/dify/docker/nginx/ssl/key.pem

    انسخ محتويات شهادة Cloudflare إلى هذه الملفات. ثم احفظ الملف واخرج من المحرر (Ctrl+S، Ctrl+X).

    الخطوة 5 - نشر Dify

    الآن نحن جاهزون لنشر Dify:

    cd ~/dify/docker docker
    compose up -d

    يبدأ هذا الأمر تشغيل جميع الحاويات التي يحتاجها برنامج Dify. الخيار -d يشغل الحاويات في وضع منفصل (في الخلفية).

    بعد دقيقة أو نحو ذلك، ستتمكن من رؤية مثيل Dify الخاص بك عن طريق زيارة نطاقك في متصفح الويب.

    للتحقق من حالة الحاويات، يمكنك تشغيل الأمر التالي:

    docker ps -a

    الخطوة 6 - إعداد النسخ الاحتياطية التلقائية

    بعد تثبيت Dify، لنقم بإعداد نسخ احتياطية تلقائية باستخدام Restic وتخزين الكائنات المتوافق مع S3 (مثل Cloudflare R2). أولاً، نحتاج إلى التبديل إلى حساب المستخدم الجذر:

    sudo su
    cd ~

    الخطوة 6.1 - تركيب ريستيك

    ستنقلنا الأوامر المذكورة أعلاه إلى المجلد الرئيسي. الآن، لنقم بتثبيت Restic:

    sudo apt update
    sudo apt install restic

    الخطوة 6.2 - تجهيز حاوية متوافقة مع S3

    إذا لم تقم بإنشاء حاوية التخزين الخاصة بك بعد، فأنشئ حاوية جديدة من مزود الخدمة أو حاوية R2 في حساب Cloudflare الخاص بك. لاحظ المعلومات التالية:

    • اسم الدلو
    • مفتاح الوصول إلى الهوية
    • مفتاح الوصول السري
    • عنوان URL لنقطة النهاية

    الخطوة 6.3 - إنشاء برنامج نصي للنسخ الاحتياطي

    نقوم بإنشاء دليل جديد وإعداد برنامج النسخ الاحتياطي:

    mkdir -p /root/restic
    nano /root/restic/backup.sh

    انسخ والصق المحتوى التالي في الملف:

    #!/bin/bash
    # Set environment variables for Restic
    export RESTIC_REPOSITORY="s3:YOUR_S3_ENDPOINT_URL/YOUR_BUCKET_NAME"
    export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
    export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
    export RESTIC_PASSWORD_FILE="/etc/restic-password"
    # Set the backup source
    # Replace "YOUR_USER" with the user that installed Dify
    BACKUP_SOURCE="/home/YOUR_USER/dify/docker/volumes"
    # Perform the backup
    restic backup $BACKUP_SOURCE
    # Prune old snapshots (keep last 7 daily, last 4 weekly, and last 12 monthly backups)
    restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
    # Check the repository for errors
    restic check

    استبدل القيم الأولية بالمعلومات الفعلية من حاوية S3 الخاصة بك، واستبدل "YOUR_USER" باسم المستخدم الذي قام بتثبيت Dify. ثم احفظ الملف واخرج من المحرر (Ctrl+S، Ctrl+X).

    الخطوة 6.4 - إعداد مستودع Restic

    نقوم بتعيين متغيرات البيئة ونبدأ تشغيل المستودع:

    export RESTIC_REPOSITORY="s3:YOUR_S3_ENDPOINT_URL/YOUR_BUCKET_NAME"
    export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
    export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
    restic init

    نقوم بتخزين كلمة المرور في ملف جديد لوظيفة cronjob:

    echo "YOUR_PASSWORD" > /etc/restic-password
    chmod 600 /etc/restic-password

    الخطوة 6.5 - إعداد النسخ الاحتياطية اليومية

    افتح ملف cron وأضف السطر التالي في نهاية الملف:

    crontab -e 0 3 * * * /root/restic/backup.sh > /root/restic/backup.log 2>&1

    يقوم هذا الأمر بضبط النسخ الاحتياطي اليومي في الساعة 3 صباحًا. احفظ الملف واخرج من المحرر.

    الخطوة 7 - التحقق من الإعدادات

    للتأكد من صحة الإعدادات:

      • قم بتشغيل برنامج النسخ الاحتياطي يدويًا:
    /root/restic/backup.sh
      • قم بزيارة مستودع Restic للاطلاع على الصور:
    لقطات ريستيك

    الخطوة 8 – تحديثات Dify المستقبلية

    لتحديث Dify في المستقبل، قم بتشغيل هذه الأوامر:

    cd ~/dify/docker
    docker compose down
    git pull origin main
    docker compose pull
    docker compose up -d

    تقوم هذه الأوامر بإيقاف الحاويات الحالية، وتحميل التغييرات الجديدة، وتنزيل الصور المحدثة، وبدء الحاويات الجديدة.

    نتيجة

    تهانينا! لقد نجحت في تثبيت Dify على خادم Linux الخاص بك، وإعداد شهادات SSL، وتكوين النسخ الاحتياطية التلقائية. الآن، أصبح Dify جاهزًا للاستخدام، وتضمن النسخ الاحتياطية اليومية سلامة بياناتك.

    اترك تعليقاً

    لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


    قد يعجبك أيضاً
    فهم الاختلافات الرئيسية بين بروتوكولي TLS وSSL وأهميتها

    TLS مقابل SSL - الاختلافات والتاريخ والأهمية لأمان الويب

    عندما يتعلق الأمر بأمن الويب، غالبًا ما نسمع مصطلحي "SSL" و"TLS". ولكن ما الفرق بينهما تحديدًا؟ لماذا يُستخدم TLS كمعيار أمان للويب اليوم، بينما يُهمَل SSL تقريبًا؟ في هذه المقالة، سنتناول هذا الموضوع بنظرة احترافية لنمنحك فهمًا أفضل لبروتوكولات أمن الويب وأهمية اختيار البروتوكول المناسب.