مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
سرور مجازی

سرور Next.js؛ آموزش اجرای Next.js روی VPS و انتخاب هاست مناسب

سرور Next.js چیست و چه زمانی به VPS نیاز داریم؟ اگر پروژه‌ای با Next.js ساخته‌اید و حالا دنبال «سرور Next.js»، «هاست Next.js» یا راهی برای اجرای Next.js روی VPS هستید، مهم‌ترین نکته این است…

سرور Next.js؛ آموزش اجرای Next.js روی VPS و انتخاب هاست مناسب
خلاصه سریع این آموزش

سرور Next.js چیست و چه زمانی به VPS نیاز داریم؟ اگر پروژه‌ای با Next.js ساخته‌اید و حالا دنبال «سرور Next.js»، «هاست Next.js» یا راهی برای اجرای Next.js روی VPS هستید،…

۱۲ دقیقه مطالعه ۰ دیدگاه ۲۰ مهر ۱۴۰۵ آخرین به‌روزرسانی

فهرست مطالب

سرور Next.js چیست و چه زمانی به VPS نیاز داریم؟

اگر پروژه‌ای با Next.js ساخته‌اید و حالا دنبال «سرور Next.js»، «هاست Next.js» یا راهی برای اجرای Next.js روی VPS هستید، مهم‌ترین نکته این است که اول نوع خروجی پروژه را مشخص کنید. بعضی پروژه‌ها را می‌توان به فایل‌های کاملاً استاتیک تبدیل کرد، اما پروژه‌هایی که از Server-Side Rendering، Route Handler، Server Action، احراز هویت سمت سرور یا منطق Node.js استفاده می‌کنند به محیطی نیاز دارند که بتواند برنامه Next.js را به‌صورت یک سرویس اجرا کند.

طبق مستندات فعلی Next.js، این فریم‌ورک برای ساخت اپلیکیشن‌های Full-stack مبتنی بر React طراحی شده و نسخه‌های جدید App Router از قابلیت‌های Server Components و اجرای منطق سمت سرور استفاده می‌کنند. در زمان نگارش این راهنما، شاخه Next.js 16.x در وضعیت Active LTS قرار دارد و مستندات رسمی برای محیط توسعه جدید حداقل Node.js 20.9 را اعلام می‌کنند.

پاسخ سریع: اگر پروژه شما فقط Static Export است، هاست معمولی یا CDN هم می‌تواند کافی باشد. اگر SSR، API Route/Route Handler، Server Action، Middleware/Proxy یا پردازش سمت سرور دارید، یک VPS لینوکسی با Node.js، Process Manager و Reverse Proxy معمولاً کنترل بیشتری در اختیار شما می‌گذارد.

هاست Next.js با سرور Next.js چه فرقی دارد؟

اصطلاح «هاست Next.js» معمولاً برای هر سرویسی استفاده می‌شود که بتواند پروژه Next.js را Deploy کند. اما از نظر فنی چند مدل میزبانی متفاوت وجود دارد:

نوع میزبانی مناسب برای محدودیت اصلی
Static Hosting خروجی کاملاً استاتیک قابلیت‌های سروری Next.js در دسترس نیست
پلتفرم Managed Deploy سریع و مدیریت ساده کنترل زیرساخت کمتر و وابستگی به Platform
VPS / سرور مجازی SSR، API، اپلیکیشن Full-stack، سرویس دائمی مدیریت امنیت، آپدیت و مانیتورینگ با خود شماست

آیا Next.js روی هاست اشتراکی اجرا می‌شود؟

اگر هاست اشتراکی فقط PHP و فایل استاتیک ارائه کند، اجرای مستقیم یک برنامه Next.js با SSR معمولاً ممکن نیست. برای اجرای کامل، سرویس میزبانی باید Node.js، Process دائمی و امکان تعریف Port یا Proxy را پشتیبانی کند.

در مقابل، اگر پروژه را با Static Export منتشر کنید و همه Routeها قابل خروجی‌گیری استاتیک باشند، می‌توانید فایل‌های خروجی را روی هاست استاتیک یا CDN قرار دهید. بنابراین سؤال درست این نیست که «Next.js روی هاست اشتراکی اجرا می‌شود یا نه؟»؛ سؤال درست این است که پروژه شما به Runtime سروری نیاز دارد یا نه.

SSR، SSG و Static Export؛ کدام روی VPS لازم است؟

برای انتخاب هاست Next.js باید روش رندر پروژه را بشناسید:

  • Static Generation / Pre-rendering: بخشی از صفحات در زمان Build تولید می‌شوند.
  • Dynamic Rendering / SSR: صفحه یا بخشی از آن هنگام Request روی سرور ساخته می‌شود.
  • Static Export: خروجی پروژه به فایل‌های استاتیک تبدیل می‌شود و به Node.js Runtime نیاز ندارد.
  • Route Handlers و Server Actions: منطق سمت سرور دارند و برای اجرای واقعی به Runtime سازگار نیاز دارند.

نکته مهم: قبل از خرید سرور، پروژه را با تنظیم Production واقعی Build کنید. بعضی پروژه‌ها در Development بدون مشکل اجرا می‌شوند اما در Build یا Runtime سرور به Environment Variable، حافظه بیشتر یا قابلیت سروری خاص نیاز پیدا می‌کنند.

برای Next.js چقدر RAM و CPU لازم است؟

Next.js عدد ثابت و رسمی برای RAM سرور تعیین نمی‌کند، چون مصرف واقعی به تعداد Routeها، حجم Build، تعداد کاربران هم‌زمان، Queryهای دیتابیس، Image Optimization و سرویس‌های جانبی بستگی دارد. جدول زیر فقط یک نقطه شروع عملی برای انتخاب VPS است:

نوع پروژه RAM پیشنهادی شروع CPU پیشنهادی شروع توضیح
لندینگ / سایت سبک 2GB 1 تا 2 vCPU برای شروع و ترافیک کم
سایت SSR متوسط 4GB 2 تا 4 vCPU برای پروژه سازمانی/محتوایی متوسط
فروشگاه یا SaaS 6 تا 8GB+ 4 vCPU+ بسته به API، DB و هم‌زمانی

این اعداد تضمین عملکرد نیستند. بعد از Deploy با ابزارهایی مثل htop، لاگ PM2 و متریک‌های Reverse Proxy مصرف واقعی را اندازه بگیرید و در صورت نیاز منابع را افزایش دهید.

پیش‌نیازهای نصب Next.js روی Ubuntu

در این آموزش فرض می‌کنیم یک VPS با Ubuntu دارید و با کاربر دارای دسترسی sudo وارد شده‌اید. برای نسخه‌های جدید Next.js بهتر است از یک نسخه پشتیبانی‌شده و جدید Node.js استفاده کنید؛ مستندات فعلی Next.js حداقل Node.js 20.9 را ذکر می‌کنند.

sudo apt update
sudo apt upgrade -y
sudo apt install -y curl git nginx

مرحله ۱: نصب Node.js روی سرور

برای Production بهتر است Node.js را از منبع معتبر و نسخه LTS نصب کنید. اگر از NodeSource یا مدیر نسخه‌ای مثل nvm استفاده می‌کنید، نسخه نهایی را بعد از نصب بررسی کنید:

node -v
npm -v

نسخه Node باید با نسخه Next.js پروژه شما سازگار باشد. در پروژه‌های قدیمی‌تر قبل از ارتقای Node، فایل package.json و وابستگی‌ها را بررسی کنید.

مرحله ۲: انتقال پروژه Next.js به VPS

یکی از روش‌های رایج، Clone کردن Repository از Git است:

cd /var/www
sudo git clone https://github.com/USERNAME/PROJECT.git nextapp
sudo chown -R $USER:$USER /var/www/nextapp
cd /var/www/nextapp

اگر Repository خصوصی است، از SSH Key یا Token محدود استفاده کنید و Token را داخل دستور، فایل عمومی یا Log قرار ندهید.

مرحله ۳: نصب Dependencyها و Build پروژه

اگر پروژه فایل Lock دارد، بهتر است همان Package Manager پروژه را استفاده کنید. برای پروژه npm:

npm ci
npm run build

اگر Build موفق باشد، Next.js خروجی Production را آماده می‌کند. در پروژه معمولی دستور اجرا چنین است:

npm run start

در حالت پیش‌فرض برنامه معمولاً روی Port 3000 اجرا می‌شود. برای تست محلی روی خود سرور:

curl -I http://127.0.0.1:3000

مرحله ۴: اجرای دائمی Next.js با PM2

اگر Terminal را ببندید، اجرای مستقیم npm run start متوقف می‌شود. Process Manager مثل PM2 کمک می‌کند سرویس را مدیریت، Restart و Logها را بررسی کنید.

sudo npm install -g pm2
cd /var/www/nextapp
pm2 start npm --name "nextapp" -- start
pm2 save
pm2 startup

دستور آخر یک دستور مخصوص سیستم شما چاپ می‌کند؛ همان را اجرا کنید تا PM2 بعد از Reboot هم بالا بیاید.

بررسی وضعیت و Logها

pm2 status
pm2 logs nextapp
pm2 monit

مرحله ۵: اتصال دامنه با Nginx Reverse Proxy

بهتر است Port 3000 را مستقیماً عمومی نکنید. Nginx روی Portهای 80 و 443 درخواست را دریافت می‌کند و به برنامه Next.js روی localhost می‌فرستد.

sudo nano /etc/nginx/sites-available/nextapp

نمونه پیکربندی:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

سپس:

sudo ln -s /etc/nginx/sites-available/nextapp /etc/nginx/sites-enabled/nextapp
sudo nginx -t
sudo systemctl reload nginx

اگر خطای 502 Bad Gateway گرفتید: اول با pm2 status بررسی کنید برنامه فعال است؛ بعد curl http://127.0.0.1:3000 را تست کنید. اگر این دستور هم پاسخ نداد، مشکل از خود Next.js یا Port است، نه Nginx.

مرحله ۶: فعال‌سازی HTTPS

بعد از اینکه DNS دامنه به IP سرور اشاره کرد، می‌توانید با Certbot برای Nginx گواهی Let’s Encrypt بگیرید:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

پس از صدور گواهی، تمدید خودکار را بررسی کنید:

sudo systemctl status certbot.timer

Environment Variableها را کجا قرار دهیم؟

کلید API، رمز دیتابیس و Secretها را داخل Git قرار ندهید. در سرور می‌توانید فایل Environment محدود یا Secret Manager استفاده کنید. دقت کنید متغیرهایی که با NEXT_PUBLIC_ شروع می‌شوند برای استفاده سمت Client طراحی شده‌اند و نباید Secret واقعی داخل آن‌ها قرار دهید.

قبل از Build: بعضی Environment Variableها در زمان Build خوانده می‌شوند. اگر مقدار Production را بعداً تغییر دهید ممکن است لازم باشد دوباره npm run build اجرا کنید.

آیا Docker برای Next.js بهتر است؟

Docker اجباری نیست، اما اگر محیط Deploy استاندارد، CI/CD یا چند سرویس دارید می‌تواند مدیریت Dependency و Rollback را ساده‌تر کند. برای پروژه‌ای که فقط یک Next.js App دارد، PM2 + Nginx معمولاً ساده‌تر است.

اگر Docker استفاده می‌کنید، بهتر است Build چندمرحله‌ای و Image کم‌حجم داشته باشید. Next.js همچنین حالت output: 'standalone' دارد که برای ساخت Deployment کوچک‌تر و Self-hosting کاربردی است.

// next.config.js
module.exports = {
  output: 'standalone',
}

Next.js روی VPS یا Vercel؛ کدام بهتر است؟

Vercel ساده‌ترین مسیر Deploy برای بسیاری از پروژه‌های Next.js است و با این فریم‌ورک یکپارچگی عمیقی دارد. VPS در مقابل کنترل بیشتری روی IP، شبکه، Runtime، Nginx، دیتابیس، سرویس‌های جانبی و محل میزبانی می‌دهد.

معیار VPS Managed Platform
کنترل سرور زیاد کمتر
راه‌اندازی اولیه فنی‌تر ساده‌تر
Nginx / DB / Worker اختصاصی آزاد وابسته به Platform
نگهداری امنیت با شما بخش زیادی Managed

سرور Next.js ایران یا خارج؟

اگر بخش عمده کاربران شما داخل ایران هستند و Backend، دیتابیس و سرویس‌های وابسته هم داخل کشور قرار دارند، VPS ایران می‌تواند مسیر شبکه کوتاه‌تری برای کاربران داخلی ایجاد کند. در مقابل اگر پروژه وابستگی سنگینی به APIها، CDNها یا سرویس‌های خارجی دارد، کیفیت دسترسی خارجی هم باید در تصمیم لحاظ شود.

برای Next.js بهتر است فقط Ping را معیار قرار ندهید؛ CPU، RAM، سرعت دیسک، امکان ارتقا، پایداری شبکه و محل دیتابیس هم روی تجربه واقعی اثر دارند.

اگر Backend شما WordPress است چه؟

یک سناریوی مهم این است که WordPress فقط نقش CMS را داشته باشد و Frontend با Next.js ساخته شود. در این معماری WordPress و Next.js می‌توانند روی دو سرویس جدا باشند و از REST API یا GraphQL برای تبادل محتوا استفاده کنند.

اگر دقیقاً همین معماری را می‌خواهید، مقاله وردپرس هدلس با Next.js روی هاست ایرانی را بخوانید؛ آن صفحه مخصوص Headless WordPress است و با این مقاله عمومی «سرور Next.js» هم‌پوشانی مستقیم ندارد.

خطاهای رایج Next.js روی VPS و روش عیب‌یابی

خطای 502 Bad Gateway

معمولاً Nginx به Port برنامه دسترسی ندارد یا Process Next.js متوقف شده است.

pm2 status
curl -I http://127.0.0.1:3000
sudo nginx -t
sudo tail -n 100 /var/log/nginx/error.log

Build با خطای Out of Memory متوقف می‌شود

Build بعضی پروژه‌ها حافظه زیادی مصرف می‌کند. مصرف RAM و Swap را بررسی کنید و در صورت نیاز موقتاً منابع بیشتری اختصاص دهید یا Build را در CI انجام دهید و Artifact را Deploy کنید.

بعد از تغییر .env مقدار جدید اعمال نمی‌شود

بعضی متغیرها در زمان Build وارد Bundle می‌شوند. پس از تغییر Environment ابتدا بررسی کنید آیا پروژه نیاز به Build مجدد دارد یا فقط Restart کافی است.

تصاویر یا فایل‌های Static لود نمی‌شوند

مسیر public/، Base Path، تنظیم دامنه و Reverse Proxy را بررسی کنید. اگر Image Optimization استفاده می‌کنید، تنظیمات next/image و Hostهای مجاز هم اهمیت دارند.

PM2 اجراست اما سایت قدیمی نمایش داده می‌شود

اگر Build جدید انجام شده اما Process هنوز نسخه قبلی را سرو می‌کند:

npm run build
pm2 restart nextapp
pm2 logs nextapp --lines 100

چک‌لیست Production برای سرور Next.js

  • نسخه پشتیبانی‌شده Node.js و Next.js
  • Build موفق بدون Warningهای بحرانی
  • Process Manager یا Container Runtime
  • Nginx یا Reverse Proxy
  • HTTPS معتبر
  • Firewall و بسته بودن Portهای غیرضروری
  • Secretها خارج از Git
  • Backup از دیتابیس و Config
  • Monitoring برای RAM، CPU، Disk و Error Rate
  • ثبت Logهای Nginx و Application
  • روش Rollback مشخص قبل از Deploy

آپدیت Next.js در Production را چطور انجام دهیم؟

Next.js سیاست LTS دارد و شاخه 16.x در زمان نگارش Active LTS است. برای Production بهتر است روی نسخه Stable/LTS بمانید و اطلاعیه‌های امنیتی را دنبال کنید. قبل از هر Upgrade:

  1. از کد و دیتابیس Backup بگیرید.
  2. Release Note نسخه مقصد را بخوانید.
  3. در Staging اجرا کنید.
  4. npm run build و تست‌های پروژه را اجرا کنید.
  5. پس از Deploy Error Log و Performance را بررسی کنید.

سؤالات متداول درباره هاست و سرور Next.js

برای Next.js هاست بگیرم یا VPS؟

اگر پروژه Static Export است، هاست استاتیک کافی است. برای SSR، API و Runtime دائمی Node.js، VPS کنترل بیشتری روی محیط اجرا می‌دهد.

Next.js روی Ubuntu اجرا می‌شود؟

بله. Linux یکی از سیستم‌عامل‌های پشتیبانی‌شده است و می‌توانید Node.js، Next.js، Nginx و PM2 را روی Ubuntu اجرا کنید.

حداقل Node.js برای Next.js جدید چیست؟

مستندات فعلی Next.js برای مسیر جدید App Router حداقل Node.js 20.9 را ذکر می‌کنند. برای هر پروژه نسخه دقیق Next.js و بخش engines در package.json را هم بررسی کنید.

آیا PM2 برای Next.js اجباری است؟

خیر. PM2 یکی از گزینه‌های مدیریت Process است. می‌توانید از systemd، Docker یا Orchestratorهای دیگر هم استفاده کنید.

آیا Next.js روی هاست وردپرس اجرا می‌شود؟

هاست وردپرس برای اجرای WordPress طراحی شده است. در معماری Headless بهتر است WordPress روی هاست وردپرس بماند و Next.js روی محیطی که Node.js Runtime مناسب دارد اجرا شود.

سرور ایران برای Next.js مناسب است؟

برای پروژه‌ای که کاربران، دیتابیس و سرویس‌های اصلی آن داخل ایران هستند می‌تواند گزینه مناسبی باشد. وابستگی به APIهای خارجی و مسیر شبکه را هم قبل از انتخاب بررسی کنید.

آیا می‌توان WordPress و Next.js را جدا میزبانی کرد؟

بله. در معماری Headless، WordPress می‌تواند CMS باشد و Next.js به‌عنوان Frontend روی VPS یا سرویس جدا اجرا شود.

منابع و مستندات رسمی

مرجع App Router، Pages Router، APIها، Deployment و قابلیت‌های نسخه‌های فعلی Next.js.
وضعیت شاخه‌های Active LTS، Maintenance LTS و نسخه‌های خارج از پشتیبانی.
راهنمای رسمی Build و اجرای Next.js روی ارائه‌دهنده‌ای که Node.js را پشتیبانی می‌کند.

جمع‌بندی

برای انتخاب هاست Next.js ابتدا مشخص کنید پروژه Static است یا Runtime سروری دارد. پروژه‌های SSR، API و Full-stack معمولاً از VPS انعطاف بیشتری می‌گیرند. روی Ubuntu می‌توانید Node.js، PM2، Nginx و HTTPS را راه‌اندازی کنید و Next.js را پشت Reverse Proxy اجرا کنید. اگر Backend شما WordPress است، معماری جداگانه WordPress روی هاست وردپرس و Next.js روی VPS می‌تواند انتخاب تمیزی باشد. مهم‌تر از نام سرویس، تطابق منابع و Runtime با نوع واقعی پروژه شماست.

برای انتخاب هاست WordPress یا VPS Next.js مطمئن نیستید؟

اگر پروژه فقط WordPress است، هاست وردپرس انتخاب ساده‌تری است؛ اگر Next.js به Node.js Runtime و SSR نیاز دارد، VPS انعطاف بیشتری می‌دهد. برای معماری Headless می‌توانید این دو سرویس را جدا کنید.

تماس با پشتیبانی ایرانیکاسرور: 021-91302467

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *