مقدمه
در این آموزش، من شما را از طریق فرآیند نصب Dify، یک پلتفرم متنباز LLMOps، روی سرور لینوکس (اوبونتو، دبیان یا سنتاواس) هدایت میکنم. همچنین پشتیبانگیری خودکار با استفاده از Restic و ذخیرهسازی شیء سازگار با S3 (مثلاً Cloudflare R2) را تنظیم میکنم. در پایان این آموزش، شما یک نمونه کامل Dify بر روی سرور خود خواهید داشت که با پشتیبانگیریهای منظم اجرا میشود.
Dify ابزاری قدرتمند است که به شما این امکان را میدهد تا برنامههای هوش مصنوعی ایجاد، مستقر و مدیریت کنید. این پلتفرم یک رابط کاربری ساده برای ساخت برنامههای هوش مصنوعی بدون نیاز به دانش گسترده کدنویسی فراهم میکند و مدلها و سرویسهای مختلف هوش مصنوعی را ادغام میکند.
این تنظیمات به شما محیطی قوی برای توسعه و اجرای برنامههای هوش مصنوعی میدهد.
پیش نیازها
قبل از شروع، شما به موارد زیر نیاز دارید:
- یک سرور لینوکس (اوبونتو، دبیان یا سنتاواس) و دسترسی به یک کاربر با مجوزهای sudo.
- یک نام دامنه که به آدرس IP سرور شما اشاره کند.
- یک گواهی SSL برای دامنه شما (مثلاً از طریق Cloudflare).
برای تولید گواهی SSL با Cloudflare، ابتدا ثبتنام کرده و:
- یک دامنه خریداری کنید یا دامنه موجود خود را به سرورهای نام Cloudflare ارجاع دهید.
- گواهی SSL را با انتخاب دامنه خود و مراجعه به مسیر SSL/TLS » Origin Server » Create Certificate تولید کنید.
گواهی 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
ممکن است نیاز باشد که از سیستم خارج شوید و دوباره وارد شوید تا گروهها بهروزرسانی شوند.
مرحله 2 – کلون کردن مخزن Dify
اکنون مخزن Dify را کلون میکنیم:
cd ~ && git clone https://github.com/langgenius/dify.git
این دستور کد منبع Dify را به سرور شما دانلود میکند.
مرحله 3 – پیکربندی Dify
در ادامه، فایل پیکربندی را تنظیم میکنیم:
cd ~/dify/docker
cp .env.example .env
nano .env
این دستورات:
- به دایرکتوری داکر Dify تغییر مسیر میدهند.
- یک نسخه از فایل محیطی نمونه را ایجاد میکنند.
- فایل جدید .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 را فشار دهید و برای خروج از ویرایشگر nano، Ctrl+X را فشار دهید.
مرحله 4 – تنظیم گواهیهای SSL
حالا گواهی SSL را اضافه میکنیم.
اگر از گواهی خود استفاده میکنید، میتوانید آن را در فایلهای dify.crt و dify.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
گواهی 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
دستورهای بالا ما را به دایرکتوری ریشه میبرند. حالا، Restic را نصب میکنیم:
sudo apt update
sudo apt install restic
مرحله 6.2 – آمادهسازی سطل سازگار با S3
اگر هنوز سطل (bucket) خود را ایجاد نکردهاید، یک سطل جدید از ارائهدهنده خود یا یک سطل R2 در حساب Cloudflare خود ایجاد کنید. اطلاعات زیر را یادداشت کنید:
- نام سطل
- کلید دسترسی ID
- کلید دسترسی مخفی
- 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
گذرواژه را در یک فایل جدید برای کرونجاب ذخیره میکنیم:
echo "YOUR_PASSWORD" > /etc/restic-password
chmod 600 /etc/restic-password
مرحله 6.5 – تنظیم پشتیبانگیری روزانه
فایل کرون را باز کرده و خط زیر را در انتهای فایل اضافه کنید:
crontab -e
0 3 * * * /root/restic/backup.sh > /root/restic/backup.log 2>&1
این دستور پشتیبانگیری روزانه را در ساعت 3 صبح تنظیم میکند. فایل را ذخیره و از ویرایشگر خارج شوید.
مرحله 7 – بررسی تنظیمات
برای اطمینان از صحت تنظیمات:
- اسکریپت پشتیبانگیری را بهصورت دستی اجرا کنید:
/root/restic/backup.sh
- مخزن Restic را برای بررسی عکسها مشاهده کنید:
restic snapshots
مرحله 8 – بهروزرسانی Dify در آینده
برای بهروزرسانی Dify در آینده، این دستورات را اجرا کنید:
cd ~/dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
این دستورات کانتینرهای فعلی را متوقف کرده، تغییرات جدید را بارگیری کرده، تصاویر بهروزرسانی شده را دانلود کرده و کانتینرهای جدید را شروع میکنند.
نتیجه
تبریک میگویم! شما با موفقیت Dify را روی سرور لینوکس خود نصب کرده، گواهیهای SSL را تنظیم کرده و پشتیبانگیری خودکار را پیکربندی کردهاید. حالا نمونه Dify شما آماده استفاده است و پشتیبانگیریهای روزانه از ایمنی دادههای شما اطمینان میدهد.