HƯỚNG DẪN
Hướng dẫn kỹ thuật
Các guide thực chiến về VPS, database, tích hợp và công cụ dev - đúc kết từ kinh nghiệm triển khai thật.
VPS
6 bàiDựng, bảo mật và vận hành máy chủ: SSH, tường lửa, reverse proxy, CDN.
- 3 phút đọc
Cấu hình VPS mới: các bước cơ bản an toàn
Quy trình dựng một VPS Ubuntu/Debian mới an toàn: tạo user sudo, đăng nhập bằng SSH key, siết cấu hình sshd, bật tường lửa UFW và tắt ping.
- 6 phút đọc
Cài Caddy làm reverse proxy trên VPS bằng Docker
Dựng Caddy làm reverse proxy bằng Docker trên VPS mới: tạo network dùng chung, viết Caddyfile và docker-compose, tự động có HTTPS, rồi thêm domain mới chỉ bằng một lệnh reload không downtime.
- 6 phút đọc
Trang bảo trì tự động với Caddy khi deploy Docker
Dùng handle_errors của Caddy để bắt lỗi 502 Bad Gateway lúc container đang rebuild và tự động hiển thị một trang HTML bảo trì, không cần bật tắt thủ công.
- 5 phút đọc
Kiểm tra nhanh thông số VPS bằng một dòng lệnh
Script bash chạy bằng một dòng lệnh để kiểm tra OS, CPU, RAM, disk và mạng của VPS trong khoảng 15 giây, kèm bảng tham chiếu giúp bạn biết thông số nào là yếu, ổn hay mạnh.
- 9 phút đọc
Phục vụ media qua Cloudflare CDN + Backblaze B2 (egress miễn phí)
Đặt Cloudflare làm CDN trước một bucket Backblaze B2 public để phục vụ ảnh, audio, video tại subdomain media riêng: cấu hình DNS, URL rewrite, CORS và cache rule, egress B2 miễn phí.
- 6 phút đọc
Đặt app ở đâu trên VPS? Cấu trúc thư mục chuẩn /opt/apps
Quy ước đặt mỗi app trong một thư mục con của /opt/apps trên VPS: chown thư mục cha một lần duy nhất, từ đó git clone, git pull và sửa .env đều không cần sudo.
Database
7 bàiCài đặt, kết nối an toàn, sao lưu, di chuyển và tối ưu PostgreSQL.
- 4 phút đọc
Cài đặt PostgreSQL trên VPS an toàn
Cài và cấu hình PostgreSQL trên VPS Ubuntu/Debian cho production: tạo database và user, mở kết nối từ xa an toàn (SSL + pg_hba + UFW), và hiểu transaction isolation.
- 2 phút đọc
Mẹo DBeaver: phóng to icon toolbar và sửa lỗi TimeZone
Hai chỉnh sửa hữu ích trong file dbeaver.ini: phóng to icon toolbar trên màn hình high-DPI bằng swt.autoScale, và sửa lỗi invalid value for parameter TimeZone Asia/Saigon khi kết nối PostgreSQL.
- 6 phút đọc
Sửa lỗi Docker container không kết nối được PostgreSQL trên VPS
Docker đổi dải IP mạng mỗi lần docker-compose down rồi up, nên PostgreSQL trên host từ chối container. Cách chẩn đoán subnet, mở UFW và pg_hba.conf, rồi cho phép cả dải 172.16.0.0/12 để sửa một lần là xong.
- 9 phút đọc
Tối ưu hiệu suất VPS: swap, PostgreSQL và DB pool
Tối ưu VPS Ubuntu 16GB RAM chạy nhiều Docker container cùng PostgreSQL: thêm swap để tránh OOM Killer, chỉnh cấu hình PostgreSQL cho RAM lớn và SSD, rồi tăng connection pool trong ứng dụng.
- 4 phút đọc
Kết nối PostgreSQL trên VPS qua SSH Tunnel từ máy local
Dùng SSH Tunnel để máy dev kết nối PostgreSQL trên VPS mà không phải mở port 5432 ra internet, kèm cách cấu hình DATABASE_URL cho môi trường local và production.
- 4 phút đọc
Clone database PostgreSQL từ VPS về máy local Windows
Tạo bản sao đầy đủ (schema lẫn data) của database PostgreSQL trên VPS về máy dev Windows bằng SSH Tunnel, pg_dump và pg_restore, kèm cách đổi port PostgreSQL local để không xung đột.
- 10 phút đọc
Migrate database PostgreSQL giữa hai VPS bằng pg_dump và psql
Di chuyển toàn bộ một database PostgreSQL (schema lẫn data) từ VPS nguồn sang VPS đích qua máy local: dump bằng pg_dump, restore trong một transaction, verify số dòng, cutover và rollback an toàn.
Tích hợp
5 bàiKết nối dịch vụ bên thứ ba: email, thanh toán, đăng nhập Google, Gemini.
- 6 phút đọc
Gửi email bằng Brevo API khi VPS chặn cổng SMTP
Gửi email xác thực từ VPS qua Brevo HTTP API v3 (HTTPS, port 443) thay cho SMTP bị chặn: xác thực sender và domain (DKIM, SPF), lấy đúng API key, cấu hình .env và xử lý các lỗi thường gặp.
- 4 phút đọc
Cấu hình webhook và API key SePay để nhận thanh toán
Lấy đủ 4 biến môi trường từ SePay.vn để tích hợp thanh toán chuyển khoản bằng mã QR tĩnh (VietQR) và webhook: thêm tài khoản ngân hàng, tạo webhook có chứng thực API Key và xử lý các lỗi thường gặp.
- 3 phút đọc
Cấu hình Google OAuth cho domain mới (Next.js và .NET API)
Tạo OAuth Client ID mới trên Google Cloud Console cho domain mới, khai báo đúng JavaScript origins và redirect URIs, rồi cập nhật biến môi trường cho Frontend Next.js và Backend .NET API.
- 6 phút đọc
Kiểm tra và xóa cache ảnh OG trên các mạng xã hội
Buộc Facebook, Messenger, Twitter/X, Telegram, Zalo và LinkedIn quét lại Open Graph tags sau khi deploy để preview link hiển thị đúng ảnh OG mới, kèm checklist thẻ meta chuẩn và cách xử lý khi ảnh không hiện.
- 14 phút đọc
Cấu hình Vertex AI để gọi Gemini API (keyless và service account)
Thiết lập Google Cloud Vertex AI (nay là Gemini Enterprise Agent Platform) để gọi model Gemini: enable API, tạo service account, xác thực keyless bằng ADC hoặc JSON key, cài SDK google-genai và xử lý các lỗi org policy, 429, 404.
Công cụ dev
4 bàiCông cụ và mẹo xử lý sự cố trong lúc phát triển.
- 2 phút đọc
Quay ngược commit Git và cập nhật an toàn trên VPS
Cách đưa dự án về một commit cũ, force push lên remote, rồi reset code trên VPS cho khớp mà không dính merge conflict, sau đó rebuild service và xử lý cache.
- 5 phút đọc
Debug và bypass SSL pinning của app Android trên giả lập
Soi traffic API của một app Android có SSL pinning bằng LDPlayer 9 và HTTP Toolkit: bật root, kết nối ADB, tự động bypass SSL, và xử lý các lớp bảo vệ nâng cao.
- 3 phút đọc
Sửa lỗi kết nối Claude Code trên Windows (ECONNREFUSED, Bun crash)
Xử lý triệt để hai lỗi hay gặp khi cài Claude Code trên Windows - không kết nối được API (ECONNREFUSED) và sập Bun (Internal assertion failure) - bằng cách gỡ bản NPM, xóa cache cấu hình và cài bản Native Stable.
- 11 phút đọc
Chrome riêng cho chrome-devtools-mcp: đăng nhập được và không đụng Chrome chính
Cấu hình một hồ sơ Chrome riêng cho từng project để chrome-devtools-mcp (Claude Code, Cursor...) điều khiển, vẫn đăng nhập được Google/Cloudflare và giữ phiên, chạy nhiều project song song, không chạm vào Chrome cá nhân của bạn.