# 🚀 Cheatsheet: Đưa app vibe-code lên production: domain, HTTPS và deploy an toàn

By Better Wise

> This cheatsheet is premium content. Sign in and purchase the course to view the full content.

> **Tip:** 
> Thứ tự vàng: **deploy → domain → HTTPS → tách env → log + uptime → backup + rollback → go-live checklist**. Đừng bỏ qua bước nào, mỗi bước đều có thể làm sập app lúc 2 giờ sáng.

---

## Module 1: Đưa app từ local lên internet

### 1.1 Chọn hosting và deploy bản đầu tiên

**Chọn hosting theo loại app:**

| Loại app | Gợi ý hosting | Ghi chú |
| --- | --- | --- |
| Static (HTML/CSS/JS, Vite, Next export) | Vercel, Netlify, Cloudflare Pages, GitHub Pages | Free tier rộng, deploy bằng `git push` |
| Node.js / Express / Next.js (SSR) | Render, Railway, Fly.io, Vercel | Cần build + start command |
| Python (Flask, FastAPI, Django) | Render, Railway, Fly.io | Cần `requirements.txt` / `pyproject.toml` |
| Database đi kèm | Managed DB của hosting hoặc Supabase / Neon | Đừng tự cài DB trên VPS nếu mới bắt đầu |
| VPS tự quản (DigitalOcean, Linode) | Khi cần toàn quyền | Tự lo OS, firewall, backup, SSL |

**Checklist trước khi deploy lần đầu:**

- [ ] Code đã push lên GitHub (repo private cũng được)
- [ ] Có file `package.json` với script `build` và `start`
- [ ] Có `.gitignore` (đặc biệt `.env`, `node_modules`)
- [ ] Đã chọn đúng runtime version (Node 20, Python 3.12, ...)
- [ ] App đọc `PORT` từ biến môi trường, không hardcode `3000`

**Lệnh kiểm tra app chạy được ở local trước khi deploy:**

```bash
npm install
npm run build
npm start            # phải truy cập được http://localhost:3000
```

**Cấu hình start command thường gặp:**

| Nền tảng | Build command | Start command |
| --- | --- | --- |
| Node.js | `npm install && npm run build` | `npm start` |
| Next.js | `npm run build` | `npm start` |
| Python (FastAPI) | `pip install -r requirements.txt` | `uvicorn main:app --host 0.0.0.0 --port $PORT` |

> **Warning:** 
> App phải bind `0.0.0.0`, không phải `127.0.0.1`. Bind localhost thì hosting không truy cập được, đây là lỗi phổ biến nhất của lần deploy đầu.

**Sau khi deploy xong, kiểm tra ngay:**

```bash
curl -I https://<url-tam-cua-hosting>
# Kỳ vọng: HTTP/2 200
```

---
