Chạy Next.js trên VPS từ A-Z: Cách triển khai nhanh, ổn định cho người mới
Triển khai Next.js lên VPS nghe “devops”, dễ gây ngại cho người mới. Thực tế: nếu đi đúng quy trình, việc này khá thẳng. Bạn không cần Kubernetes, không cần CI/CD phức tạp, không cần hạ tầng đắt tiền. Chỉ cần 1 VPS sạch, domain, Node.js, Nginx, PM2 → đủ để đưa app Next.js chạy ổn định, truy cập qua HTTPS, tự restart khi lỗi.
Bài này đi từ A-Z: chọn VPS, chuẩn bị server, deploy app, reverse proxy bằng Nginx, bật SSL, tối ưu vận hành. Mục tiêu: nhanh triển khai, dễ hiểu, đủ chắc để chạy production nhỏ-vừa.
Khi nào nên chọn VPS cho Next.js?
VPS hợp khi bạn muốn:
– Toàn quyền server: cài gì cũng được.
– Chi phí thấp: thường rẻ hơn nhiều nền tảng managed.
– Dễ mở rộng từng bước: từ 1 app nhỏ → nhiều app.
– Học deployment thực chiến: SSH, process manager, reverse proxy, SSL.
VPS đặc biệt hợp với:
– Website công ty
– Landing page
– Dashboard nội bộ
– SaaS nhỏ
– Blog, CMS headless
Nếu bạn cần “push code → auto live” cực nhanh, ít quản trị → Vercel dễ hơn. Nhưng nếu cần kiểm soát, tiết kiệm, linh hoạt → VPS rất đáng.
Tổng quan kiến trúc triển khai
Mô hình phổ biến, đơn giản:
– Next.js app chạy cổng 3000
– PM2 giữ tiến trình luôn sống
– Nginx làm reverse proxy cổng 80/443
– Certbot cấp SSL Let’s Encrypt
– Domain trỏ về IP VPS
Luồng request:
– User vào https://yourdomain.com
– Nginx nhận request
– Nginx chuyển tiếp tới 127.0.0.1:3000
– Next.js render/trả nội dung
– PM2 giữ app chạy nền, tự restart nếu crash
– xác thực domain
– cấp chứng chỉ
– tự sửa config Nginx
– có thể redirect HTTP → HTTPS
Kiểm tra auto-renew:
systemctl status certbot.timer
Test renew:
certbot renew --dry-run
Đến đây, app Next.js đã chạy production cơ bản, có SSL, khá ổn cho người mới.
Bước 9: Quy trình cập nhật app sau này
Mỗi lần deploy bản mới:
cd your-next-app
git pull
npm install
npm run build
pm2 restart next-app
Nếu thay đổi env:
– sửa file .env.production
– build lại
– restart PM2
Quy trình chuẩn:
1. Pull code
2. Cài package mới nếu có
3. Build lại
4. Restart app
5. Check logs
Các lỗi phổ biến người mới hay gặp
1. App chạy local nhưng domain không vào được
Nguyên nhân thường là:
– DNS chưa trỏ đúng
– Nginx config sai
– firewall chặn cổng 80/443
– PM2 chưa chạy app
Kiểm tra:
pm2 status
nginx -t
systemctl status nginx
ss -tulpn
2. Build lỗi vì thiếu biến môi trường
Biểu hiện:
– npm run build fail
– Trang trắng
– API gọi sai URL
Fix:
– kiểm tra .env.production
– phân biệt biến server/client
– rebuild sau khi sửa env
3. VPS ít RAM → app crash
Next.js build khá tốn RAM, nhất là app lớn.
Fix:
– chọn VPS 2 GB RAM nếu có thể
– thêm swap
– tránh chạy nhiều process thừa
4. Dùng npm run dev cho production
Sai rất phổ biến.
dev mode → chậm, không tối ưu, dễ lỗi.
Production đúng → npm run build rồi npm run start.
Mẹo tối ưu ổn định cho người mới
– Dùng Ubuntu LTS → ít lỗi vặt
– Dùng Node LTS → tương thích tốt
– Tách user deploy → an toàn hơn root
– Backup file env → tránh mất config
– Xem log định kỳ:
pm2 logs next-app
– Giới hạn scope ban đầu: 1 VPS, 1 app, 1 Nginx config
– Đừng tối ưu quá sớm: Docker, CI/CD, multi-server để sau
Nếu muốn gọn hơn nữa, bạn có thể viết script deploy. Nhưng với người mới, hiểu tay từng bước trước → rất quan trọng.
Có nên dùng Docker không?
Có thể, nhưng chưa bắt buộc.
Với người mới:
– Không Docker → dễ hiểu hơn
– PM2 + Nginx → đủ tốt cho phần lớn case nhỏ-vừa
Docker hợp khi bạn cần:
– môi trường đồng nhất
– nhiều service
– team làm việc chung
– CI/CD rõ ràng
Nếu mới bắt đầu triển khai Next.js, đi theo mô hình truyền thống trước thường ít rối hơn.
Kết luận
Chạy Next.js trên VPS không khó nếu chia đúng lớp:
– VPS → nơi chạy app
– Node.js → runtime
– PM2 → giữ app sống
– Nginx → nhận traffic, proxy
– Certbot → HTTPS
Cho người mới, đây là combo cân bằng nhất giữa dễ làm, rẻ, ổn định. Bạn không cần hạ tầng cầu kỳ để có một website chạy production tử tế. Chỉ cần làm đúng các bước: chuẩn bị VPS, build app, chạy bằng PM2, cấu hình Nginx, trỏ domain, bật SSL.
Sau khi quen, bạn có thể nâng cấp dần: deploy tự động bằng GitHub Actions, dùng Docker, thêm monitoring, backup, scale nhiều app. Nhưng điểm khởi đầu tốt nhất vẫn là: 1 VPS sạch, 1 app Next.js, 1 quy trình deploy rõ ràng.
Nếu mục tiêu của bạn là “đưa dự án lên mạng nhanh, ổn định, ít đau đầu” → cách làm trong bài này là lựa chọn rất thực tế.