سرور 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:
- از کد و دیتابیس Backup بگیرید.
- Release Note نسخه مقصد را بخوانید.
- در Staging اجرا کنید.
npm run buildو تستهای پروژه را اجرا کنید.- پس از 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 یا سرویس جدا اجرا شود.
منابع و مستندات رسمی
جمعبندی
برای انتخاب هاست 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

دیدگاهها (۰)