Files
football-next/DEPLOY_RUNFLARE.md

163 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# راهنمای دیپلوی با 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 در سرور: بستگی به سرعت سرور داره