جایگزین Vercel و Netlify برای Next.js و سایت استاتیک

جایگزین Vercel و Netlify در ایران؛ ۶ گزینه برای Next.js و سایت استاتیک

پروژهٔ Next.js یا سایت استاتیکت را روی Vercel یا Netlify ساخته‌ای و حالا یکی از این مشکل‌ها جلوی راهت است: پرداخت با کارت ایرانی ممکن نیست، حساب ناگهان محدود می‌شود، یا کاربرهای داخل ایران سایت را کند و ناپایدار باز می‌کنند. این مقاله شش جایگزین Vercel و Netlify را کنار هم می‌گذارد، هر کدام با نقطه‌ضعفش، تا بسته به نوع پروژه‌ات (Next.js با SSR، خروجی استاتیک یا React معمولی) انتخاب کنی.

اگر هنوز با خود این دو سرویس آشنا نیستی، اول Vercel چیست و Netlify چیست را بخوان. اینجا فرض می‌کنیم می‌دانی هر کدام چه کاری می‌کند.

 

سه نوع پروژه Next.js و استاتیک قبل از انتخاب جایگزین Vercel

 

قبل از انتخاب جایگزین Vercel، نوع پروژه‌ات را مشخص کن

بیشتر انتخاب‌های اشتباه از همین‌جا شروع می‌شود. Vercel و Netlify هر نوع پروژه‌ای را با یک دکمه بالا می‌آورند، ولی بیشتر جایگزین‌ها فقط یکی دو نوع را خوب پشتیبانی می‌کنند. فایل package.json و next.config را باز کن و ببین کدام حالت هستی:

  • Next.js با SSR یا API Route: صفحه‌ها موقع درخواست روی سرور ساخته می‌شوند، یا پوشهٔ app/api داری. این پروژه یک سرور Node.js همیشه‌روشن می‌خواهد.
  • Next.js با خروجی استاتیک: در تنظیمات output: 'export' گذاشته‌ای و بعد از build یک پوشهٔ out داری. هر هاست استاتیکی کافی است.
  • React با Vite، Astro، Hugo یا HTML ساده: خروجی یک پوشه فایل است و سرور لازم نیست.

اگر پروژه‌ات SSR ندارد، تبدیلش به خروجی استاتیک ساده است:

// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'export',
  images: { unoptimized: true },
};
module.exports = nextConfig;

با این تنظیم، next/image دیگر تصویر را روی سرور بهینه نمی‌کند و Middleware و API Routeها هم کار نمی‌کنند. اگر به این‌ها وابسته‌ای، سراغ گزینه‌هایی برو که Node.js اجرا می‌کنند.

۱. Cloudflare Pages و Workers

نزدیک‌ترین تجربه به Vercel برای سایت استاتیک. مخزن GitHub یا GitLab را وصل می‌کنی، با هر push سایت دوباره build می‌شود و برای هر برنچ یک آدرس پیش‌نمایش می‌گیری. برای Next.js کامل با SSR، Server Actions و Middleware، مستندات Cloudflare حالا اجرای پروژه با vinext روی Workers را پیشنهاد می‌کند و Pages را برای خروجی استاتیک Next.js نگه داشته است.

نقطه‌ضعف‌ها: vinext یک پیاده‌سازی جایگزین از Next.js است و پروژه روی runtime خود Cloudflare اجرا می‌شود، نه Node.js کامل؛ بعضی پکیج‌ها که به APIهای Node وابسته‌اند خطا می‌دهند و باید تست کنی. ثبت‌نام و پرداخت با حساب و کارت ایرانی ممکن نیست، و آدرس‌های pages.dev از داخل ایران همیشه پایدار باز نمی‌شوند.

۲. GitHub Pages

اگر کدت از قبل در GitHub است، ساده‌ترین راه برای سایت استاتیک، مستندات یا پورتفولیو. با یک workflow در GitHub Actions، خروجی out یا dist بعد از هر push منتشر می‌شود و دامنهٔ اختصاصی با HTTPS هم پشتیبانی می‌شود.

نقطه‌ضعف‌ها: فقط فایل استاتیک سرو می‌کند؛ SSR، API Route و متغیر محیطی سمت سرور در کار نیست. برای SPAها رفرش روی مسیرهای داخلی ۴۰۴ می‌دهد مگر اینکه با ترفند 404.html دورش بزنی. سیاست GitHub هم استفادهٔ تجاری سنگین از Pages را محدود می‌کند، و حساب‌های مرتبط با ایران قبلاً محدودیت گرفته‌اند.

۳. Render

Render دو نوع سرویس دارد که اینجا به کار می‌آید: Static Site برای خروجی استاتیک، و Web Service که next start را روی Node.js کامل اجرا می‌کند. یعنی Next.js با SSR بدون آداپتور و تغییر کد بالا می‌آید. Preview برای Pull Request و دیپلوی از Git هم دارد.

نقطه‌ضعف‌ها: Web Serviceهای رایگانش بعد از ۱۵ دقیقه بدون ترافیک خاموش می‌شوند و طبق مستندات Render، بالا آمدن دوباره با اولین درخواست حدود یک دقیقه طول می‌کشد. دیتاسنترهایش در آمریکا، اروپا و سنگاپور است، پس برای کاربر ایرانی تأخیر شبکه بالاست. پرداخت ارزی هم مثل بقیهٔ سرویس‌های خارجی مانع است.

۴. Firebase Hosting و App Hosting

Firebase Hosting برای سایت استاتیک CDN سریعی دارد و با Firebase CLI در چند دستور منتشر می‌شود. برای Next.js با SSR، گوگل سرویس App Hosting را ساخته که پشت صحنه روی Cloud Run اجرا می‌شود و به Firestore و Authentication خود Firebase راحت وصل است.

نقطه‌ضعف‌ها: طبق مستندات Firebase، App Hosting فقط روی پلن پرداخت به‌ازای مصرف Blaze فعال می‌شود که کارت بانکی بین‌المللی می‌خواهد. گوگل سرویس‌هایش را برای کاربران ایرانی محدود کرده و کنسول Firebase از داخل ایران باز نمی‌شود. اگر پروژه‌ات به Firestore گره بخورد، جابه‌جایی بعدی سخت‌تر است.

۵. سرور مجازی با Coolify یا Docker

اگر کنترل کامل می‌خواهی، یک سرور لینوکس بگیر و Coolify را رویش نصب کن. Coolify یک پنل متن‌باز است که شبیه Vercel از Git دیپلوی می‌کند، SSL می‌گیرد و Next.js را با Node.js یا Docker اجرا می‌کند. راه سنتی‌ترش هم خروجی output: 'standalone' در یک کانتینر Docker پشت nginx است.

نقطه‌ضعف‌ها: به‌روزرسانی سیستم‌عامل، امنیت، بکاپ و مانیتورینگ با خودت است. اگر سرور از دسترس خارج شود، کسی جز خودت بیدار نیست. برای یک سایت شخصی کوچک، این حجم کار معمولاً ارزشش را ندارد.

۶. هاست ابری چابکان

چابکان برای هر سه نوع پروژه سرویس جدا دارد: هاست Next.js که next build و next start را روی Node.js کامل اجرا می‌کند و SSR و API Route بدون آداپتور کار می‌کنند، هاست React برای پروژه‌های Vite، و هاست استاتیک برای HTML یا خروجی out. کد را از Git یا با فایل منیجر بالا می‌آوری، دامنهٔ خودت را وصل می‌کنی و SSL صادر می‌شود. پرداخت ریالی است و هزینه از کیف پول کم می‌شود.

نقطه‌ضعف‌ها: شبکهٔ Edge جهانی و Edge Function مثل Vercel یا Cloudflare نداری؛ اگر بیشتر کاربرهایت خارج از ایران‌اند، یک CDN جهانی جلوی Vercel یا Cloudflare سریع‌تر جواب می‌دهد. پیش‌نمایش خودکار برای هر Pull Request هم ساخته نمی‌شود و برای محیط تست باید یک سرویس جدا بسازی. Image Optimization و ISR هم به منابع همان سرویس وابسته‌اند، نه زیرساخت سراسری.

مراحل دیپلوی پروژهٔ Next.js روی چابکان در مستندات سرویس Next.js آمده است.

 

نقطه‌ضعف شش جایگزین Vercel و Netlify در یک نگاه

 

جدول مقایسهٔ جایگزین‌های Vercel و Netlify

گزینه Next.js با SSR سایت استاتیک پیش‌نمایش برنچ پرداخت ریالی مدیریت سرور
Cloudflare Pages / Workers با vinext روی Workers بله بله خیر ندارد
GitHub Pages خیر بله خیر خیر ندارد
Render بله (Node.js کامل) بله بله خیر ندارد
Firebase App Hosting بله بله محدود خیر ندارد
سرور مجازی + Coolify بله بله بله (با تنظیم) بسته به ارائه‌دهنده با خودت
هاست ابری چابکان بله (Node.js کامل) بله خیر بله ندارد

کدام را انتخاب کنم؟

  • سایت استاتیک یا مستندات با مخاطب جهانی: Cloudflare Pages یا GitHub Pages، به شرط اینکه حساب و دسترسی‌اش برایت مشکلی نداشته باشد.
  • Next.js با SSR و مخاطب خارجی: Render یا Firebase App Hosting، با پذیرش تأخیر شبکه برای کاربرهای ایرانی.
  • Next.js یا React با مخاطب ایرانی و پرداخت ریالی: هاست Next.js یا React چابکان.
  • چند پروژه و تیمی که لینوکس بلد است: سرور مجازی با Coolify.

اگر پروژه‌ات را با Lovable یا Bolt ساخته‌ای، مسیر کامل گرفتن کد و انتشارش در دیپلوی پروژه Lovable و Bolt روی هاست ابری آمده است.

جابه‌جایی از Vercel بدون از کار افتادن سایت

  1. متغیرهای محیطی را از تنظیمات پروژه در Vercel یا Netlify کپی کن. این‌ها همراه کد منتقل نمی‌شوند.
  2. اگر از vercel.json یا netlify.toml برای ریدایرکت و هدر استفاده کرده‌ای، معادلش را در next.config یا تنظیمات nginx سرویس جدید بنویس.
  3. پروژه را روی سرویس جدید با آدرس موقت بالا بیاور و صفحه‌ها، فرم‌ها و API را تست کن.
  4. TTL رکوردهای DNS را یک روز قبل پایین بیاور، بعد رکورد دامنه را به سرویس جدید ببر.
  5. تا چند روز پروژهٔ قدیمی را پاک نکن تا اگر DNS در جایی دیر به‌روز شد، سایت پایین نیاید.

سوالات متداول دربارهٔ جایگزین Vercel

بهترین جایگزین Vercel برای Next.js کدام است؟

سرویسی که next start را روی Node.js کامل اجرا کند، کمترین تغییر کد را می‌خواهد: Render، سرور مجازی با Coolify یا هاست Next.js چابکان. Cloudflare هم با vinext کار می‌کند ولی باید سازگاری پکیج‌هایت را با runtime آن تست کنی.

آیا Netlify برای Next.js بهتر از Vercel است؟

Netlify با آداپتور رسمی‌اش بیشتر قابلیت‌های Next.js را پشتیبانی می‌کند، ولی Vercel سازندهٔ Next.js است و قابلیت‌های جدید اول آنجا کار می‌کنند. برای کاربر ایرانی هر دو مشکل پرداخت و دسترسی یکسانی دارند.

سایت Next.js را می‌شود روی هاست اشتراکی cPanel گذاشت؟

فقط اگر خروجی استاتیک بگیری. SSR به یک پروسهٔ Node.js همیشه‌روشن نیاز دارد که بیشتر هاست‌های اشتراکی اجازه نمی‌دهند.

بعد از انتقال، رفرش صفحه ۴۰۴ می‌دهد. چرا؟

در پروژه‌های SPA، مسیرهایی مثل /about فایل واقعی ندارند و سرور باید همه را به index.html بفرستد. Vercel این را خودکار انجام می‌داد. روی سرویس جدید یک قانون rewrite یا try_files لازم است؛ در هاست استاتیک چابکان این مشکل پیش نمی‌آید و در هاست React هم تنظیم پیش‌فرض nginx همین try_files را دارد (مستندات تنظیمات NGINX در React).

دامنهٔ ‎.ir را می‌شود به Vercel یا Netlify وصل کرد؟

از نظر فنی بله، با رکورد CNAME یا A. ولی مشکل اصلی، پرداخت و پایداری دسترسی از داخل ایران است، نه دامنه.

دیدگاه خود را بنویسید:

آدرس ایمیل شما نمایش داده نخواهد شد.

فوتر سایت