Đưa code lên host là bước khiến nhiều người gặp khó sau khi vibe coding. Website hoặc ứng dụng đã chạy ổn định trên máy, nhưng vẫn chỉ truy cập được qua localhost và chưa thể chia sẻ cho người khác. Trong bài viết này, bạn sẽ được hướng dẫn từng bước đưa web tĩnh, landing page, web app hoặc API lên môi trường thực tế, kèm theo các câu lệnh cần thiết và cách xử lý những lỗi thường gặp. Cùng InterData bắt đầu triển khai sản phẩm của bạn ngay hôm nay.
NỘI DUNG BÀI VIẾT
- Vibe coding xong rồi sao? “Đưa code lên host” thực chất là gì?
- Có mấy cách đưa code lên host? So sánh hosted builder, Shared Hosting và VPS
- Chuẩn bị gì trước khi deploy? Checklist đầu vào
- Deploy thủ công lên VPS từng bước (SSH → pm2 → Nginx → domain → SSL)
- Đường tắt cho người không rành server: VPS Vibe Coding
- Lỗi deploy thường gặp và cách xử lý
- Khi nào cần nâng lên Cloud Server?
- Câu hỏi thường gặp khi đưa code lên host
Vibe coding xong rồi sao? “Đưa code lên host” thực chất là gì?
Đưa code lên host nghĩa là chuyển sản phẩm bạn vừa dựng từ máy local (hoặc từ nền tảng AI) sang một máy chủ luôn bật, có địa chỉ IP hoặc tên miền công khai, để bất kỳ ai có link đều truy cập được. Nói ngắn gọn: biến localhost:3000 thành https://tencuaban.com.
Sau khi vibe coding là gì đã rõ và bạn có sản phẩm trong tay, khâu tiếp theo mới là chỗ nghẽn thật. Code chạy trên máy bạn vì máy bạn đang bật, đang có Node hoặc Python, và trình duyệt trỏ vào chính máy đó. Người khác không có gì trong số đó.
“Code” sau vibe coding rất đa dạng, và cách deploy phụ thuộc vào dạng của nó:
- Web tĩnh / landing page / file HTML: chỉ gồm HTML, CSS, JS chạy ở trình duyệt. Deploy là đưa file lên một web server phục vụ nội dung tĩnh.
- Web app (React, Next.js, Vue): cần build ra bản production, rồi hoặc phục vụ file tĩnh, hoặc chạy một tiến trình Node nếu có render phía server.
- Full-stack có backend + database: có tiến trình chạy nền (Node, Python, PHP), kết nối cơ sở dữ liệu, cần chạy 24/7 và mở port ra ngoài.
- API, bot, background job: không có giao diện nhưng phải sống liên tục để nhận request hoặc xử lý tác vụ định kỳ.
Điểm chung: bạn cần một chỗ đặt code luôn chạy. Đó là lý do phần lớn người vibe coding cuối cùng đều tìm tới VPS — VPS là gì và vì sao nên dùng để chạy sản phẩm sẽ cho bạn nền tảng để hiểu vì sao một máy chủ riêng lại là đích đến tự nhiên khi sản phẩm vượt khỏi mức web tĩnh đơn thuần.

Có mấy cách đưa code lên host? So sánh hosted builder, Shared Hosting và VPS
Có ba nhóm đích đến chính khi đưa code lên host: nền tảng hosted builder (Vercel, Netlify), Shared Hosting, và VPS. Chúng khác nhau ở quyền kiểm soát, khả năng chạy backend/database, chi phí và độ khó. Chọn sai nhóm là lý do phổ biến khiến deploy thất bại hoặc phải làm lại từ đầu.
| Tiêu chí | Hosted builder | Shared Hosting | VPS |
|---|---|---|---|
| Hợp nhất với | Web tĩnh, Next.js, front-end | Website tĩnh, blog, site nhỏ | Web app, API, bot, full-stack |
| Chạy backend/DB riêng | Hạn chế, thường qua serverless | Rất hạn chế | Có, toàn quyền |
| Quyền kiểm soát | Thấp, theo khuôn nền tảng | Thấp, dùng chung tài nguyên | Cao, có quyền root |
| Chạy nền 24/7 (bot, job) | Khó với tác vụ chạy dài | Không phù hợp | Phù hợp |
| Độ khó | Dễ với front-end | Dễ | Cần biết lệnh cơ bản |
| Khả năng scale | Tự động nhưng phụ thuộc nền tảng | Gần như không | Nâng cấu hình chủ động |
Quan điểm: nếu sản phẩm chỉ là web tĩnh hoặc front-end thuần, hosted builder deploy nhanh và không cần server. Nhưng khi bạn có backend, database, bot hay API cần sống 24/7 và muốn tự chủ code lẫn dữ liệu, VPS là lựa chọn kiểm soát tốt nhất. Shared Hosting hợp giai đoạn web tĩnh và site nhỏ; khi cần chạy Node/Python/Docker, cần quyền root và tài nguyên riêng thì nên lên VPS.

Về chi phí, đừng chọn chỉ theo giá niêm yết. Trước khi quyết, bạn có thể săn ưu đãi VPS & Cloud Server mới nhất tại Canh Me để xem mã giảm giá, thời gian áp dụng và điều kiện đăng ký, tránh trả nhiều hơn mức cần thiết cho cùng một cấu hình.
Chuẩn bị gì trước khi deploy? Checklist đầu vào
Trước khi đưa code lên host, kiểm tra bốn nhóm đầu vào: code đã sẵn sàng chưa, chạy trên runtime gì, đã có VPS và hệ điều hành nào, đã có domain chưa. Thiếu một trong bốn thứ này là nguyên nhân khiến quá trình deploy đứt giữa chừng.
- Code đẩy lên Git: đưa dự án lên GitHub hoặc GitLab. Kéo code từ Git về VPS sạch sẽ và dễ cập nhật hơn copy tay. Nhớ thêm
.gitignorechonode_modulesvà file cấu hình bí mật. - Xác định runtime và phiên bản: app Node cần đúng version Node (kiểm tra bằng
node -vở máy local), app Python cần đúng version Python và filerequirements.txt. Đây là lúc nắm rõ ứng dụng Node.js của bạn đang phụ thuộc những gì. - Biến môi trường: gom API key, chuỗi kết nối database, secret vào file
.env. Không hardcode vào code, không commit lên Git. - VPS và hệ điều hành: hầu hết hướng dẫn deploy mặc định Ubuntu LTS. Chọn cùng dòng OS để lệnh khớp và tránh khác biệt về trình quản lý gói.
- Domain (nếu cần link đẹp): có thể chạy tạm bằng IP, nhưng để chia sẻ cho khách thì nên có tên miền và trỏ về VPS.
- Cân nhắc Docker: với app nhiều phụ thuộc, đóng gói app bằng Docker giúp môi trường ở VPS giống hệt máy local, tránh lỗi “máy tôi chạy được mà server thì không”.
Làm xong checklist này, bạn đã có đủ nguyên liệu để bắt tay vào các bước deploy thật sự.
Đưa website/app lên VPS gồm mấy bước? Deploy thủ công từng bước
Đưa code lên host thủ công trên VPS gồm sáu bước: kết nối SSH, cài môi trường chạy, kéo code từ Git, chạy tiến trình nền, đặt Nginx làm reverse proxy, rồi trỏ domain và cấp SSL. Phần dưới giả định VPS chạy Ubuntu LTS và app là một ứng dụng Node.js nghe ở port 3000 — bạn đổi lệnh theo runtime của mình.
Bước 1 — Kết nối SSH vào VPS
SSH là cách bạn điều khiển VPS từ máy mình qua dòng lệnh. Chi tiết về giao thức này có ở bài kết nối SSH vào máy chủ. Mở terminal và chạy:
# Giả định VPS chạy Ubuntu LTS
ssh root@your-server-ip
# Sau khi vào, cập nhật hệ thống
apt update && apt upgrade -y
Bước 2 — Cài môi trường chạy (Node.js)
Cài đúng phiên bản Node để khớp với môi trường bạn đã dev. Ví dụ cài Node 20 LTS qua NodeSource:
# Cài Node.js 20 LTS trên Ubuntu
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
# Kiểm tra
node -v
npm -v
Bước 3 — Kéo code từ GitHub về VPS
# Cài git nếu chưa có
apt install -y git
# Kéo code về và cài phụ thuộc
git clone https://github.com/tai-khoan/du-an.git
cd du-an
npm install
npm run build # nếu là app cần build, ví dụ Next.js/React
Tạo file .env trên VPS với các biến môi trường thật, đừng dùng lại giá trị dev.
Bước 4 — Chạy nền bằng pm2 (để app không tắt khi thoát SSH)
Nếu chạy npm start trực tiếp, app sẽ chết ngay khi bạn đóng phiên SSH. pm2 là process manager giữ app sống 24/7 và tự khởi động lại khi VPS reboot.
# Cài pm2 toàn cục
npm install -g pm2
# Chạy app (đổi index.js theo entry point của bạn)
pm2 start npm --name "my-app" -- start
# Cho pm2 tự chạy lại sau reboot
pm2 startup
pm2 save
# Kiểm tra trạng thái
pm2 status
Bước 5 — Cài Nginx làm reverse proxy
App đang nghe ở localhost:3000, chưa ra internet. Nginx đứng trước, nhận request ở port 80/443 rồi chuyển vào port nội bộ. Xem chi tiết ở bài cài đặt Nginx làm reverse proxy.
apt install -y nginx
# Tạo file cấu hình site
nano /etc/nginx/sites-available/my-app
Nội dung file cấu hình mẫu:
server {
listen 80;
server_name tencuaban.com www.tencuaban.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# Kích hoạt site và reload
ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
nginx -t # kiểm tra cú pháp
systemctl reload nginx
# Mở firewall cho Nginx
ufw allow 'Nginx Full'
Với web tĩnh, bạn không cần pm2 — chỉ cần trỏ root của Nginx vào thư mục chứa file build và bỏ khối proxy_pass.
Bước 6 — Trỏ domain và cấp SSL
Vào trang quản lý tên miền, tạo bản ghi A trỏ về IP của VPS. Nếu chưa nắm khái niệm này, đọc trỏ tên miền để hiểu bản ghi DNS hoạt động ra sao. DNS có thể mất từ vài phút tới vài giờ để cập nhật.
Sau khi domain đã trỏ đúng, cấp chứng chỉ HTTPS miễn phí bằng Let’s Encrypt qua Certbot. Tham khảo thêm cài chứng chỉ SSL cho website:
# Cài Certbot cho Nginx
apt install -y certbot python3-certbot-nginx
# Cấp và gắn SSL tự động vào cấu hình Nginx
certbot --nginx -d tencuaban.com -d www.tencuaban.com
# Certbot tự gia hạn; kiểm tra tiến trình gia hạn
certbot renew --dry-run
Xong sáu bước, mở https://tencuaban.com là thấy sản phẩm chạy thật. Đây là con đường tự chủ hoàn toàn — bạn nắm quyền root, kiểm soát mọi thứ.
Đường tắt đưa code lên host cho người không rành server: VPS Vibe Coding
Nếu sáu bước ở trên khiến bạn ngợp — SSH, firewall, Nginx, DNS, Certbot — thì có một con đường rút gọn. VPS Vibe Coding gộp hạ tầng VPS của InterData với nền tảng low-code EzyPlatform, biến quy trình thành: mô tả ý tưởng → AI hỗ trợ viết code → xem preview → publish.
Khác biệt so với tự dựng server là bạn không phải chạm vào phần hạ tầng. Nền tảng lo sẵn những thứ mà người mới thường vấp:
- API và MCP Server: để AI làm việc trực tiếp với dữ liệu thật, không dừng ở giao diện tĩnh.
- Cấu trúc chuẩn hóa: giúp AI hiểu và sửa đúng chỗ, giảm cảnh sửa một dòng hỏng cả app.
- CMS, nền tảng E-commerce, hệ thống tài khoản người dùng: có sẵn để lắp vào sản phẩm.
- EzyMail và Marketplace plugin: gửi email và mở rộng tính năng mà không cần code lại từ đầu.
Nền tảng hạ tầng vẫn là VPS InterData với CPU đời mới, lưu trữ NVMe U.2 Gen4, băng thông không giới hạn, IPv4 riêng, backup định kỳ, Anti-DDoS và hỗ trợ kỹ thuật 24/7.
Nếu bạn là marketer hay freelancer vừa vibe coding xong và mục tiêu là có link chạy thật nhanh nhất, đây là đường ngắn hơn hẳn việc tự cấu hình từng dòng lệnh. Người muốn kiểm soát tuyệt đối thì vẫn nên chọn tự deploy trên Thuê VPS.

Sản phẩm tắt khi đóng SSH và các lỗi deploy thường gặp — xử lý thế nào?
App tắt khi đóng SSH vì tiến trình gắn với phiên đăng nhập, hết phiên là hết tiến trình. Cách xử lý là chạy app dưới một process manager như pm2 để nó tồn tại độc lập và tự khởi động lại. Đây là lỗi số một của người mới, cùng vài lỗi hay gặp khác dưới đây.
- App chết khi thoát SSH: đừng dùng
npm starttrực tiếp. Dùngpm2 startkèmpm2 startupvàpm2 saveđể app sống qua reboot. - Truy cập IP:port không ra: app nghe ở
localhostnên chỉ nội bộ thấy. Đặt Nginx reverse proxy ra port 80/443, hoặc kiểm tra app có bind vào0.0.0.0không. - Firewall chặn port: mở port cần thiết bằng
ufw allow 'Nginx Full'hoặcufw allow 443. Kiểm tra bằngufw status. - Sai hoặc thiếu phiên bản runtime: lỗi build thường do Node/Python trên VPS khác local. Đối chiếu
node -vhai bên, cài đúng version. - Domain chưa trỏ hoặc DNS chưa cập nhật: kiểm tra bản ghi A bằng
dig tencuaban.com; chờ DNS lan truyền trước khi chạy Certbot. - Certbot báo lỗi cấp SSL: phần lớn do domain chưa trỏ đúng IP hoặc port 80 bị chặn. Sửa DNS và firewall rồi chạy lại.
- App chạy nhưng lỗi 502 Bad Gateway: Nginx không kết nối được tới app. Kiểm tra
pm2 statusxem app còn sống và đúng port trongproxy_passchưa.
Khi kẹt, ba lệnh soi lỗi đắt giá nhất là pm2 logs, systemctl status nginx và tail -f /var/log/nginx/error.log. Đọc log trước khi đoán.
Khi nào cần nâng lên Cloud Server?
VPS thừa sức cho giai đoạn đầu và phần lớn app nhỏ–vừa. Bạn nên cân nhắc chuyển lên Cloud Server khi sản phẩm đã có người dùng thật và tải bắt đầu vượt khỏi một máy chủ cố định.
- Nhiều người dùng đồng thời: app bắt đầu chậm hoặc CPU/RAM chạm trần vào giờ cao điểm.
- Traffic biến động mạnh: chạy campaign, ra mắt sản phẩm, mùa cao điểm — cần scale tài nguyên nóng thay vì dựng lại máy.
- Database lớn dần: dữ liệu và truy vấn nặng hơn, cần thêm tài nguyên mà không muốn gián đoạn dịch vụ.
Câu hỏi thường gặp khi đưa code lên host
Vibe coding xong nên deploy lên đâu?
Tùy dạng sản phẩm. Web tĩnh hoặc front-end thuần có thể lên hosted builder rất nhanh. Có backend, database, bot hay API cần chạy 24/7 thì nên dùng VPS để tự chủ. Người ngại thao tác server nên chọn VPS Vibe Coding để rút ngắn từ code tới link chạy thật.
Có cần biết code mới đưa website/app lên host được không?
Không bắt buộc. Tự deploy trên VPS cần biết vài lệnh cơ bản như SSH, cài môi trường và cấu hình Nginx. Nếu không rành, nền tảng như VPS Vibe Coding lo phần hạ tầng để bạn chỉ cần mô tả ý tưởng, xem preview rồi publish mà không đụng tới dòng lệnh nào.
Deploy một web tĩnh khác gì deploy full-stack có backend?
Web tĩnh chỉ cần đưa file HTML/CSS/JS lên và cho web server phục vụ, không có tiến trình chạy nền. Full-stack có backend cần chạy một tiến trình liên tục qua pm2, kết nối database, mở port và đặt reverse proxy. Full-stack nhiều bước hơn và gần như luôn cần VPS.
Vì sao sản phẩm tắt khi tôi đóng SSH?
Vì tiến trình app gắn với phiên SSH, đóng phiên là hệ điều hành kết thúc tiến trình. Giải pháp là chạy app dưới process manager như pm2, kèm pm2 startup và pm2 save, để app chạy độc lập với phiên đăng nhập và tự bật lại sau khi VPS khởi động lại.
Nên chọn hosted builder hay VPS?
Chọn theo mức kiểm soát bạn cần. Hosted builder deploy nhanh, hợp front-end và web tĩnh, nhưng bị khuôn theo nền tảng. VPS cho toàn quyền root, chạy được backend, database, bot, API và tự chủ dữ liệu. Cần backend hoặc muốn kiểm soát hạ tầng thì VPS là lựa chọn hợp lý hơn.
Từ code trên máy tới link chạy thật: chọn đúng đường cho mình
Đưa code lên host không phải một nút bấm, nhưng cũng không đáng sợ như lần đầu bạn nhìn thấy dòng lệnh SSH. Nếu bạn cần kiểm soát tuyệt đối, sáu bước deploy thủ công trên VPS cho bạn điều đó. Nếu mục tiêu là có link chạy thật nhanh nhất mà không dựng server từ đầu, VPS Vibe Coding gói sẵn cả hạ tầng lẫn nền tảng để bạn đi thẳng từ ý tưởng tới publish. Xác định đúng dạng sản phẩm và mức tự chủ bạn muốn, phần còn lại chỉ là làm theo từng bước.
Biến sản phẩm vibe coding thành link chạy thật
Bỏ qua khâu dựng server thủ công — mô tả ý tưởng, để AI viết code, xem preview rồi publish.
Disclaimer: nội dung kỹ thuật chỉ mang tính tham khảo; lệnh và cấu hình có thể thay đổi theo hệ điều hành, phiên bản runtime và môi trường thực tế. Hãy sao lưu dữ liệu và kiểm thử trước khi áp dụng cho production.
