Toàn bộ chương trình
Giáo trình 12 ngày
Khóa đào tạo thực chiến dành cho bạn đã biết lập trình frontend hoặc backend: viết được code, dùng terminal khá ổn, nhưng chưa từng đưa một dự án đi hết vòng đời từ ý tưởng đến chạy thật cho mọi người dùng. Qua 12 ngày, bạn tự dựng server, gắn tên miền, bật HTTPS, làm một ứng dụng có cả frontend lẫn backend, đóng gói bằng Docker và học cách vận hành nó. Đến Ngày 12, bạn hiểu trọn hành trình từ lúc người dùng gõ địa chỉ vào trình duyệt, qua máy chủ, đến cơ sở dữ liệu phía sau.
Cách khóa học được thiết kế
5 nguyên tắc xuyên suốt 12 ngày
Hiểu trọn hành trình từ đầu đến cuối
Trọng tâm của khóa là cả hành trình: ý tưởng → terminal → server → tên miền → nginx → HTTPS → backend → Docker → chạy thật. Bạn phải kể lại được từng chặng, nên chúng tôi dùng đi dùng lại một sơ đồ duy nhất cho đến khi nó thành phản xạ.
Làm thủ công trước, dùng công cụ sau
Bạn bắt đầu bằng cách làm trực tiếp: tự cài nginx bằng apt, chạy backend bằng systemd, tự sửa file cấu hình, để thấy điều gì đang thực sự xảy ra. Sau đó mới đến Docker để đóng gói và chạy giống nhau ở mọi nơi. Dùng một công cụ mà không hiểu nó làm gì thì rất khó sửa khi gặp sự cố.
AI viết nhanh, bạn chịu trách nhiệm
Bạn sẽ dùng AI để viết rất nhiều code, cả frontend lẫn backend. Nhưng bạn phải đọc hiểu, rà soát, chỉnh sửa và đưa lên chạy được những gì AI viết. Kỹ năng bạn luyện: viết yêu cầu rõ ràng cho AI, kiểm tra kết quả, triển khai và chịu trách nhiệm về sản phẩm.
Mỗi ngày một lớp, luôn kiểm tra được
Mỗi ngày bạn thêm một lớp mới và kết thúc bằng kết quả chạy thật, mở được ngay trên điện thoại: truy cập bằng địa chỉ IP → qua tên miền → có HTTPS → có dữ liệu thật → đóng gói bằng Docker.
Ngày nào cũng thực hành
Mỗi ngày có một bài lab làm ra một sản phẩm thật. Không có ngày nào chỉ ngồi xem video.
Bức tranh tổng thể
Một sơ đồ xuyên suốt cả khóa học
TRÌNH DUYỆT CỦA NGƯỜI DÙNG (gõ https://app.example.com)
|
| (1) DNS: IP của app.example.com là gì? -> 203.0.113.10
v
(2) Kết nối TCP tới 203.0.113.10:443
(3) Bắt tay TLS -> kênh mã hóa (HTTPS)
|
v
+-------------------- MÁY CHỦ (VPS) ---------------------+
| firewall (ufw) mở 22, 80, 443 |
| (4) Request HTTP đến cổng 443 |
| | |
| v |
| NGINX (reverse proxy + máy chủ file tĩnh) |
| | | |
| | / (frontend) | /api/* |
| v v |
| [ FILE TĨNH ] [ APP: Flask / FastAPI ] |
| HTML / CSS / JS (trong Docker, cổng 8000) |
| | |
| v |
| [ SQLITE DB (một file) ] |
+--------------------------------------------------------+
|
v
Response (JSON / HTML) chảy ngược qua TLS -> trình duyệt render.
Bạn cần chuẩn bị gì?
- Biết viết JavaScript cơ bản và ít nhất một ngôn ngữ backend (Python là lý tưởng).
- Dùng được terminal ở mức các lệnh
cd,ls,grep. - Có máy tính với terminal và trình duyệt, cùng khoảng 30–50 USD cho một tháng thuê server (VPS) và tên miền.
- Sẵn sàng làm hỏng rồi sửa lại. Bạn chắc chắn sẽ gặp lỗi, và đó chính là cách học.
Công cụ dùng trong khóa
Cả lớp dùng chung một bộ.
| Server (VPS) | Hetzner, DigitalOcean hoặc Linode: gói nào khoảng 5 USD/tháng cũng được |
| Hệ điều hành | Ubuntu 24.04 LTS |
| Kết nối SSH | ssh và khóa ed25519 |
| Web server | nginx |
| HTTPS | certbot (Let's Encrypt) |
| Backend | Python 3 và Flask (FastAPI là lựa chọn hiện đại hơn) |
| Cơ sở dữ liệu | SQLite |
| Container | Docker Engine và Docker Compose |
| Tên miền (DNS) | Trang quản lý của nơi bạn mua tên miền, hoặc Cloudflare (miễn phí) |
Chi tiết từng ngày
Lộ trình 12 ngày
Mỗi ngày bạn hoàn thành một sản phẩm chạy được. Bấm vào ngày bất kỳ để xem nội dung chi tiết.
Làm quen terminal
Gõ lệnh, quản lý file và quyền truy cập, kết nối SSH vào máy chủ.
Mở Ngày 1 →Ngày 02Dựng giao diện web
Viết HTML, CSS, JS và dùng AI dựng một trang web responsive, chạy trên mạng.
Mở Ngày 2 →Ngày 03Lập trình Python
Viết script, gỡ lỗi khi chạy sai và làm một công cụ dòng lệnh nhỏ.
Mở Ngày 3 →Ngày 04Backend và cơ sở dữ liệu
Làm quen HTTP, xây API bằng Flask và lưu dữ liệu với SQLite.
Mở Ngày 4 →Ngày 05Quản lý code với Git
Lưu lịch sử, làm việc với nhánh, hoàn tác khi sai, và tách môi trường cho từng dự án.
Mở Ngày 5 →Ngày 06Docker và nginx
Đóng gói cả hệ thống bằng Docker, đặt sau nginx để chạy giống nhau ở mọi máy.
Mở Ngày 6 →Ngày 07Tên miền và HTTPS
Trỏ tên miền riêng, bật khóa HTTPS và cho dịch vụ tự chạy lại khi máy khởi động.
Mở Ngày 7 →Ngày 08Bảo mật, email và thanh toán
Bật tường lửa, lưu mật khẩu an toàn, chặn SQL injection, gửi email và thử thanh toán.
Mở Ngày 8 →Ngày 09AI và giám sát hệ thống
Thêm tính năng AI vào site và dựng cảnh báo khi site gặp sự cố.
Mở Ngày 9 →Ngày 10Hướng mở rộng tiếp theo
Làm quen CDN, Kubernetes, CI/CD, lưu trữ file và hàng đợi để biết nên học gì tiếp.
Mở Ngày 10 →Ngày 11Lên kế hoạch dự án cuối khóa
Chọn hướng làm (web, game hay ứng dụng) và chốt phạm vi vừa sức.
Mở Ngày 11 →Ngày 12Demo dự án cuối khoá
Tự làm một sản phẩm hoàn chỉnh và trình bày trước mentor và các kỹ sư phần mềm nhiều năm kinh nghiệm.
Mở Ngày 12 →Tài liệu khóa học
Ba dạng tài liệu, cùng một nội dung
Bản slide
Bộ slide đi qua từng ngày của khóa học. Bấm phím mũi tên hoặc Space để chuyển trang, dùng để trình chiếu hoặc tự học.
Mở bản slide →Tài liệu PDF
Tóm tắt cả khóa học: ai nên học, lộ trình 12 ngày và dự án cuối khoá. Tải về đọc offline hoặc in ra.
Tải PDF ↓Trang cuộn
Cả khóa học trên một trang duy nhất, có mục lục cố định bên cạnh. Hợp để đọc một mạch từ đầu đến cuối.
Đọc trang cuộn →Cách đánh giá
Bạn được đánh giá ra sao?
Mỗi ngày
Mỗi bài lab phải ra một sản phẩm chạy thật: một đường link mở được, một dịch vụ vẫn chạy sau khi khởi động lại máy, một chứng chỉ HTTPS tự gia hạn. Chưa chạy hoặc chưa kiểm tra được thì ngày đó chưa xong.
Giải thích bằng lời (Ngày 4, 6, 12)
Bạn kể lại sơ đồ bức tranh tổng thể và đi qua một yêu cầu thật, nói thành tiếng. Bạn cần giải thích được vì sao nginx nằm ở đó, dữ liệu lưu ở đâu, và điều gì sẽ hỏng nếu bỏ đi một lớp.
Dự án cuối khoá (Ngày 12)
Bạn tự làm một sản phẩm mới từ đầu đến cuối. Đạt khi một người lạ trên internet mở được, có HTTPS và dữ liệu được giữ lại.
Sau 12 ngày
Học gì tiếp theo sau khóa học?
Mở rộng quy mô
Chạy nhiều bản của ứng dụng sau một bộ cân bằng tải (load balancer), dùng cơ sở dữ liệu Postgres dùng chung thay cho SQLite.
CI/CD
Dùng GitHub Actions để tự động build, đóng gói và triển khai mỗi khi gộp code.
CDN và lớp bảo vệ phía trước
Đặt Cloudflare phía trước để lưu cache, chống tấn công (WAF, DDoS) và dùng CDN miễn phí.
Vận hành chuyên nghiệp
Giám sát bằng Prometheus và Grafana, log có cấu trúc, cảnh báo, và cuối cùng là chạy container trên cụm Kubernetes.
Hạ tầng bằng code
Dùng Terraform hoặc Packer để dựng cả server từ code, thay vì cấu hình bằng tay.
Phụ lục
Tham khảo nhanh
Lượt request, theo thứ tự: DNS (tên→IP) → kết nối TCP → bắt tay TLS (HTTPS) → request HTTP → nginx (file tĩnh hoặc reverse-proxy) → app (Flask) → SQLite → response quay về qua TLS.
Bảng cheat vận hành hằng ngày
| Nhiệm vụ | Lệnh |
|---|---|
| Máy có đạt không? | ping <ip> · curl -I https://<domain> |
| Cái gì đang lắng nghe? | ss -tlnp |
| Check DNS | dig +short <domain> A · nslookup <domain> |
| Trạng thái / log dịch vụ | systemctl status <svc> · journalctl -u <svc> -f |
| Test / reload nginx | sudo nginx -t · sudo systemctl reload nginx |
| Gia hạn certbot (test) | sudo certbot renew --dry-run |
| Docker lên / xuống | docker compose up -d · docker compose down |
| Log Docker | docker compose logs -f |
| IP công | curl ifconfig.me |
| Firewall | sudo ufw status · sudo ufw allow 443 |
Quy tắc “không bao giờ bị khóa ngoài”
- Cho phép SSH (22) trong firewall trước khi bật nó.
- Giữ một session SSH thứ hai mở khi sửa
sshd_config. - Test cấu hình SSH mới từ session thứ hai trước khi đóng session đầu.
- Gắn app vào
127.0.0.1, không0.0.0.0— nginx là cánh cửa duy nhất. - Đặt SQLite lên volume trước khi
docker compose downlần nào.