# راهنمای دیپلوی با Runflare (بدون دسترسی بین‌الملل) ## مشکل سرور فقط به mirror داخلی (Runflare) دسترسی دارد و نمی‌تواند Prisma engines را دانلود کند. ## راه‌حل: Pre-generate کردن Prisma Client ### مرحله ۱: Generate کردن Prisma Client (روی سیستم محلی با VPN) ```bash # نصب dependencies npm install # Generate کردن Prisma Client npx prisma generate # این فایل‌ها ساخته می‌شوند: # - node_modules/.prisma/client/ # - node_modules/@prisma/client/ ``` ### مرحله ۲: کپی کردن Generated Files به پروژه ```bash # ساخت پوشه برای Prisma generated files mkdir -p prisma/generated # کپی کردن فایل‌های generate شده cp -r node_modules/.prisma/client prisma/generated/.prisma-client cp -r node_modules/@prisma/client prisma/generated/@prisma-client # یا در Windows PowerShell: # New-Item -ItemType Directory -Force -Path "prisma/generated" # Copy-Item -Recurse "node_modules/.prisma/client" "prisma/generated/.prisma-client" # Copy-Item -Recurse "node_modules/@prisma/client" "prisma/generated/@prisma-client" ``` ### مرحله ۳: Commit و Push ```bash git add prisma/generated git add Dockerfile git commit -m "Add pre-generated Prisma client for Runflare deployment" git push ``` ### مرحله ۴: تنظیم Coolify برای استفاده از Runflare در تنظیمات Coolify یا در سرور: ```bash # تنظیم Docker برای استفاده از Runflare sudo mkdir -p /etc/docker sudo nano /etc/docker/daemon.json ``` اضافه کردن: ```json { "registry-mirrors": ["https://docker.runflare.com"] } ``` ```bash sudo systemctl restart docker ``` ## Dockerfile جدید Dockerfile جدید این کارها رو انجام می‌ده: 1. از NPM mirror استفاده می‌کنه 2. Prisma postinstall رو skip می‌کنه 3. از فایل‌های pre-generated استفاده می‌کنه ## راه‌حل جایگزین: استفاده از Base Image آماده اگر روش بالا کار نکرد: ### گام ۱: Build روی سیستم با VPN ```bash docker build -t football-next:latest \ --build-arg DATABASE_URL="postgresql://user:pass@host:5432/db" \ --build-arg NEXTAUTH_URL="https://yourdomain.com" \ --build-arg NEXTAUTH_SECRET="your-secret" \ . docker save football-next:latest | gzip > football-next.tar.gz ``` ### گام ۲: آپلود به سرور فایل ایرانی ```bash # آپلود به سرویس فایل ایرانی مثل: # - files.ir # - uploadboy.com # - یا هر سرویس دیگر # یا مستقیم با SCP اگر IP سرور دارید scp football-next.tar.gz user@server:/tmp/ ``` ### گام ۳: Load در سرور ```bash ssh user@server cd /tmp gunzip -c football-next.tar.gz | docker load docker images # بررسی ``` ### گام ۴: استفاده در Coolify در Coolify: - Source Type: Docker Image - Image Name: `football-next:latest` - تنظیم Environment Variables ## تنظیمات NPM برای Runflare اگر می‌خواهید روی سرور npm کار کنه: ```bash npm config set registry https://registry.npmmirror.com # یا npm config set registry https://npm.runflare.com ``` ## عیب‌یابی ### خطا: Cannot find module '@prisma/client' راه‌حل: ```bash # روی سیستم محلی npm install npx prisma generate # کپی کردن فایل‌های generated به prisma/generated # commit و push ``` ### خطا: Prisma engines not found راه‌حل: استفاده از روش "Build روی سیستم با VPN" ## خلاصه **بهترین روش برای سرور بدون دسترسی بین‌الملل:** 1. ✅ Build image روی سیستم با VPN 2. ✅ Save کردن image به فایل 3. ✅ آپلود به سرور فایل ایرانی 4. ✅ دانلود و Load در سرور 5. ✅ استفاده در Coolify این روش ۱۰۰٪ کار می‌کنه و دیگه نیازی به دسترسی بین‌الملل نیست. ## حجم فایل - Image فشرده شده: ~200-300 MB - زمان آپلود با اینترنت ۱۰ مگ: ~5 دقیقه - زمان download در سرور: بستگی به سرعت سرور داره