# راهنمای دیپلوی با 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 در سرور: بستگی به سرعت سرور داره
