VPS & Hosting cho người Việt

7 Cách Tôi Cắt 60% Chi Phí VPS Mỗi Tháng (Và Vẫn Chạy Ngon Hơn Trước)

Hồi đầu 2023, tôi ngồi check hóa đơn thẻ tín dụng và giật mình: 1.8 triệu/tháng cho 3 con VPS. Một con chạy blog WordPress (200K), một con dev server (600K), một con production cho app client (1 triệu). Ba con VPS, ba nhà cung cấp khác nhau, ba cái dashboard khác nhau.

Sau 6 tháng mổ xẻ từng đồng chi tiêu, tôi cắt được hơn 60% chi phí — từ 1.8 triệu xuống còn 350K/tháng. Không đùa. Ba con VPS vẫn chạy, thậm chí còn nhanh hơn trước vì tôi dọn dẹp và tối ưu hóa cấu hình.

Bài này là những gì tôi học được qua 3 năm vận hành VPS, từ mấy sai lầm "newbie" đến chiến lược tối ưu mà dân DevOps chuyên nghiệp cũng áp dụng. Không lý thuyết suông — toàn số liệu thực và code cấu hình anh em copy-paste được ngay.

💡 TL;DR cho ai lười đọc: Đổi từ VPS 4C/8GB giá 600K sang VPS 2C/2GB + Docker (200K), chuyển WordPress sang static hosting (Cloudflare Pages free), mua annual plan được giảm 20%, dùng NAT VPS cho dev server (47K). Tổng tiết kiệm ~1.45 triệu/tháng.

Bài Toán: Vì Sao Bạn Đang Trả Nhiều Hơn Mức Cần?

Trước khi đi vào giải pháp, phải hiểu vấn đề. Qua quan sát của tôi khi audit VPS cho bạn bè, có 3 lý do chính khiến hóa đơn phình lên:

  1. Mua dư tài nguyên — "Để cho chắc" mua 4C/8GB trong khi app chỉ cần 1C/1GB
  2. Không tận dụng giảm giá — Trả hàng tháng thay vì annual (-20%), không dùng coupon
  3. Mỗi service một VPS riêng — 5 service = 5 VPS, trong khi Docker 1 con chạy hết

Nghe quen không? Hồi mới làm tôi cũng thế. Mua VPS 4C/8GB "phòng hờ traffic spike", kết quả CPU idle 95% suốt 3 tháng liền. Tiền bay theo gió.

Chiến Lược #1: Chọn Gói VPS Đúng Nhu Cầu — Không "Phòng Hờ"

Đây là lỗi tốn tiền nhất. Kinh điển: "Em mua con 4C/8GB cho chắc, lỡ sau này cần thì có sẵn". Plot twist: sau 6 tháng CPU idle vẫn 95%, RAM dùng chưa tới 2GB.

Làm Sao Biết Mình Cần Gì?

Trước khi mua VPS mới, hãy benchmark app của bạn trước. Đây là script tôi dùng để đo tài nguyên thực tế:

# Đo CPU & RAM usage thực tế trong 24h
# Chạy trên VPS hiện tại hoặc máy local

# CPU trung bình 24h
sar -u 1 10 | tail -1

# RAM peak trong 24h
free -h && cat /proc/meminfo | grep -E "MemTotal|MemAvailable|Committed_AS"

# Disk usage hiện tại + tốc độ tăng
df -h / && find / -type f -mtime -30 -exec du -ch {} + 2>/dev/null | tail -1

Quy tắc ngón tay cái của tôi sau 3 năm:

Loại Ứng DụngCPU Tối ThiểuRAM Tối ThiểuVPS Gợi Ý
Blog WordPress (dưới 10K visit/tháng)1 vCPU1GBVPS 47K/tháng
Bot Telegram/Discord (1-5 bot)1 vCPU512MBNAT VPS 47K/tháng
Web app Node.js/Python1-2 vCPU1-2GBVPS 100-150K/tháng
n8n automation <50 workflows2 vCPU2GBVPS 150K/tháng
Database MySQL/PostgreSQL production2 vCPU4GBVPS 250K/tháng
Docker host (5-10 containers)2 vCPU4GBVPS 250K/tháng
Stable Diffusion / Ollama4 vCPU + GPU8GB+VPS GPU từ 500K/tháng
⚠️ Bẫy #1: "Tương lai sẽ cần" — Tôi từng mua VPS 8GB RAM vì "sau này app sẽ scale". 8 tháng sau app vẫn chạy 500MB RAM. Bài học: Mua đúng nhu cầu hiện tại, scale sau khi cần. Hầu hết provider cho phép upgrade trong 5 phút (Netihot, Tino, TrumVPS đều hỗ trợ resize online).

Chiến Lược #2: NAT VPS Cho Service Không Cần Public IP

Cái này tiết kiệm cực mạnh mà ít người biết. NAT VPS là VPS dùng chung IP với người khác (chia port), giá chỉ bằng 1/3 - 1/5 VPS IP riêng.

Ví dụ thực tế của tôi:

ServiceVPS Public IP (trước)NAT VPS (sau)Tiết kiệm
Dev server test code200K/tháng47K/tháng153K
Bot Telegram chạy nền150K/tháng47K/tháng103K
Cron job scrape data100K/tháng47K/tháng53K
Tổng450K/tháng141K/tháng309K

Các trường hợp NÊN dùng NAT VPS:

Các trường hợp KHÔNG nên dùng NAT VPS:

Tôi đang dùng NAT VPS 47K/tháng của Netihot cho dev server và bot Telegram — chạy 24/7 hơn 1 năm nay chưa downtime lần nào.

⚠️ Bẫy #2: NAT VPS cho web server — Em dev mới vào team tôi từng mua NAT VPS làm web server, rồi thắc mắc sao không bind được port 80. NAT VPS không có dedicated port 80/443, bạn phải dùng Cloudflare Tunnel hoặc reverse proxy từ VPS IP riêng. Đừng mắc lỗi này.

Chiến Lược #3: Docker Consolidation — 1 VPS Chạy Nhiều Service

Đây là chiến lược tiết kiệm mạnh nhất với tôi. Thay vì 3-5 VPS mỗi con một service, tôi dùng 1 VPS chạy Docker host tất cả container.

Kiến trúc cũ (2023):

VPS 1 (200K): WordPress blog
VPS 2 (600K): Node.js API + PostgreSQL
VPS 3 (400K): n8n + Redis
VPS 4 (350K): Uptime Kuma + Portainer
─────────────────────────────────
Tổng: 1.55 triệu/tháng

Kiến trúc mới (2026):

VPS duy nhất (250K): 2C/4GB Docker host
  ├── Container: WordPress (php-fpm + nginx)  
  ├── Container: Node.js API
  ├── Container: PostgreSQL
  ├── Container: n8n
  ├── Container: Redis
  ├── Container: Uptime Kuma
  └── Container: Portainer
─────────────────────────────────
Tổng: 250K/tháng

Tiết kiệm: 1.3 triệu/tháng với cùng một bộ service.

Docker Compose file tôi dùng:

# docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports: ["80:80", "443:443"]
    volumes: [./nginx.conf:/etc/nginx/nginx.conf, ./certs:/etc/letsencrypt]
    restart: unless-stopped
    mem_limit: 128M

  wordpress:
    image: wordpress:php8.2-fpm-alpine
    environment:
      WORDPRESS_DB_HOST: postgres  # dùng plugin PG4WP
    volumes: [./wp:/var/www/html]
    restart: unless-stopped
    mem_limit: 256M

  api:
    build: ./api
    restart: unless-stopped
    mem_limit: 256M

  postgres:
    image: postgres:16-alpine
    environment: {POSTGRES_PASSWORD: "${DB_PASS}"}
    volumes: [pgdata:/var/lib/postgresql/data]
    restart: unless-stopped
    mem_limit: 512M

  n8n:
    image: n8nio/n8n
    environment: {N8N_BASIC_AUTH_ACTIVE: "true"}
    volumes: [n8n_data:/home/node/.n8n]
    restart: unless-stopped
    mem_limit: 512M

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    mem_limit: 128M

volumes:
  pgdata:
  n8n_data:
💡 Mẹo: Dùng mem_limit cho từng container để không container nào "ăn hết" RAM. Với 4GB VPS, tôi phân bổ tổng mem_limit khoảng 3GB (để dư 1GB cho OS + cache). Luôn có swap 2GB phòng hờ.
⚠️ Bẫy #3: Single point of failure — Gom hết vào 1 VPS nghĩa là nếu VPS die thì tất cả service die theo. Giải pháp: (1) backup hàng ngày ra ngoài VPS, (2) với service critical thì vẫn nên tách riêng. Với tôi, production API vẫn chạy VPS riêng, còn mấy service nội bộ thì gom vào Docker host.

Chiến Lược #4: Thanh Toán Annual — Luôn Rẻ Hơn 15-25%

Cái này đơn giản nhưng không phải ai cũng làm. Hầu hết provider VPS Việt Nam đều có discount khi trả tiền trước:

ProviderHàng Tháng6 Tháng12 ThángTiết Kiệm Annual
Netihot VPS NAT47K250K (41.7K/tháng)470K (39.2K/tháng)~17%
Netihot VPS 1GB100K540K (90K/tháng)1M (83.3K/tháng)~17%
Tino Group SME150K810K (135K/tháng)1.5M (125K/tháng)~17%
TrumVPS Pro200K1.08M (180K/tháng)2M (166.7K/tháng)~17%

Với 3 VPS, annual plan tiết kiệm thêm ~100-150K/tháng — hơn 1 triệu/năm. Tôi luôn annual với VPS production (đã xài quen, biết chắc sẽ dùng lâu dài), còn VPS test thì monthly để dễ hủy.

💡 Mẹo săn deal: Các đợt sale lớn (Black Friday, Tết, sinh nhật provider) thường giảm thêm 10-30%. Tôi canh Black Friday mua annual một lần, tiết kiệm tổng cộng gần 40% (17% annual + 20% Black Friday).

Chiến Lược #5: Cloudflare Free Tier — CDN + DDoS + DNS Miễn Phí

Nếu bạn đang trả tiền cho dịch vụ CDN, WAF, hay DNS riêng — dừng ngay. Cloudflare free plan làm hết mấy thứ đó và nhiều hơn nữa, hoàn toàn miễn phí.

Những gì Cloudflare free cho bạn:

Thực tế: Trước khi dùng Cloudflare, blog WordPress của tôi "ăn" ~150GB bandwidth/tháng. Sau khi bật Cloudflare proxy + cache HTML: còn 12GB/tháng từ VPS gốc. Kết quả là tôi downgrade được từ VPS 2GB xuống 1GB, tiết kiệm thêm 100K/tháng.

# Cloudflare optimization settings cho WordPress
# Page Rules (free plan: 3 rules)

# Rule 1: Cache HTML
URL: mcdhot.com/*
Setting: Cache Level = Cache Everything
Setting: Edge Cache TTL = 2 hours

# Rule 2: Bypass admin
URL: mcdhot.com/wp-admin/*
Setting: Cache Level = Bypass

# Rule 3: Auto Minify
URL: mcdhot.com/*
Setting: Auto Minify = JS + CSS + HTML ON
⚠️ Bẫy #4: Quên bypass cache cho admin — Tôi từng bật cache-everything cho cả /wp-admin, kết quả là không đăng nhập được WordPress. Mất 2 tiếng debug. Luôn có rule bypass cache cho admin area, API endpoints, và webhook URLs.

Chiến Lược #6: Auto-Shutdown Dev/Test Environments

Dev server của bạn có cần chạy 24/7 không? 90% là không. Tôi từng có con VPS dev server 400K/tháng, chỉ dùng 9h-18h các ngày trong tuần. Tính ra 68% thời gian nó ngồi không nhưng tôi vẫn trả full tiền.

Giải pháp: Tôi chuyển sang VPS trả theo giờ (hourly billing) của Tino Group, và dùng cron tự động shutdown ngoài giờ làm:

# Crontab trên dev server
# Tắt dev server 6PM mỗi ngày
0 18 * * 1-5 /sbin/shutdown -h now

# Hoặc dùng script tắt VPS qua API provider
# Ví dụ với Netihot API:
0 18 * * 1-5 curl -X POST https://netihot.com/api/vps/shutdown \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"vps_id":"12345"}'

Nếu provider bạn hỗ trợ billing theo giờ (Tino Group có hourly billing, một số provider khác cũng có), chi phí dev server của bạn có thể giảm 60-70%. Với tôi, từ 400K/tháng xuống còn ~130K/tháng.

💡 Mẹo: Nếu dùng NAT VPS giá rẻ (47K/tháng) thay vì VPS hourly, bạn không cần lo vụ auto-shutdown — cứ để nó chạy 24/7, rẻ hơn cả giải pháp hourly. Chỉ cần lo shutdown khi VPS đắt (>300K/tháng).

Chiến Lược #7: Monitor & Budget Alert — Đừng Để Hóa Đơn "Bất Ngờ"

Câu chuyện đau thương: Tháng 3/2024, tôi test một tool crawl data mới trên VPS production, quên tắt. Nó chạy 24/7 trong 10 ngày, ăn hết 4TB bandwidth. Hóa đơn cuối tháng: 2.3 triệu thay vì 200K bình thường. Tôi suýt ngất.

Từ đó tôi luôn có 3 lớp monitoring:

# Layer 1: Budget alert từ provider
# Netihot: vào dashboard → Billing → Set Budget Alert
# Tino: vào Cloud Portal → Cost Management → Budget
# TrumVPS: vào Client Area → Notifications

# Layer 2: Tự monitor với cron + Telegram alert
# File: /root/monitor-cost.sh
#!/bin/bash
# Check bandwidth usage, alert nếu vượt ngưỡng

LIMIT_GB=500  # ngưỡng bandwidth (GB)
USED=$(vnstat -m --oneline | cut -d';' -f11)  # tháng hiện tại

if [ "$USED" -gt "$LIMIT_GB" ]; then
  curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
    -d "chat_id=${CHAT_ID}" \
    -d "text=⚠️ VPS bandwidth: ${USED}GB/${LIMIT_GB}GB — vượt ngưỡng!"
fi

# cron mỗi 6 tiếng
# 0 */6 * * * /root/monitor-cost.sh

# Layer 3: Cloudflare Analytics
# Dashboard → Analytics → check bandwidth savings
# Nếu savings giảm → có thể cache bị bypass → check ngay

Kết quả tổng hợp sau khi áp dụng cả 7 chiến lược:

Chiến LượcTrướcSauTiết Kiệm
#1 Right-size VPS600K (4C/8GB)200K (2C/2GB)400K
#2 NAT VPS450K (3 VPS)141K (3 NAT)309K
#3 Docker consolidate1.550K (4 VPS)250K (1 VPS)1.300K
#4 Annual billing1.550K/tháng1.290K/tháng260K
#5 Cloudflare CDNVPS 2GB (250K)VPS 1GB (100K)150K
#6 Auto-shutdown400K (dev 24/7)130K (hourly)270K
#7 Monitoring2.3M (1 lần)200K (bình thường)Tránh shock bill

Lưu ý: Không phải ai cũng cần áp dụng hết 7 chiến lược. Với tôi, #1, #2, #3 là "big 3" — 3 cái này thôi đã cắt được 60% chi phí.

So Sánh Nhanh: VPS Giá Rẻ Tốt Nhất 2026

Không phải VPS rẻ nào cũng tốt. Đây là bảng so sánh tôi tổng hợp từ trải nghiệm thực tế:

Tiêu ChíNetihotTino GroupTrumVPS
Giá NAT VPS47K/thángKhông có45K/tháng
Giá VPS 1GB100K/tháng150K/tháng99K/tháng
Annual discount~17%~17%~17%
Hourly billingKhôngKhông
Ổ cứngNVMe SSDSSDNVMe SSD
Datacenter VN
SupportTicket + TelegramTicket + HotlineTicket
Free SSL

Tôi cá nhân dùng Netihot cho VPS hàng ngày (NAT VPS 47K cho dev + bot, VPS 250K cho Docker host production). Lý do: giá tốt nhất trong phân khúc NAT, có datacenter VN, support Telegram nhanh. Để mấy con bot quan trọng thì tôi dùng Tino Group vì có hourly billing + snapshot backup.

Xem thêm: So sánh VPS Việt Nam chi tiếtTop VPS giá rẻ nhất 2026.

Câu Hỏi Thường Gặp

NAT VPS có ổn định không?

Rất ổn định cho mục đích chạy bot, dev, crawl. Tôi dùng NAT VPS Netihot 47K/tháng hơn 1 năm nay, uptime 99.9%, chưa từng bị mất dữ liệu. Hạn chế duy nhất: không có port 80/443 riêng, không làm web server được.

Annual billing có rủi ro không nếu provider "sập"?

Chọn provider uy tín đã hoạt động 3-5 năm. Netihot, Tino Group, TrumVPS đều có tuổi đời 5+ năm. Tôi chỉ annual với provider đã dùng ít nhất 6 tháng. Với provider mới, monthly 3 tháng đầu rồi hẵng annual.

Docker có làm chậm VPS không?

Overhead của Docker rất thấp — dưới 2% CPU, dưới 50MB RAM. Cái ăn tài nguyên là ứng dụng bên trong container, không phải Docker. Tuy nhiên nếu bạn chạy 10+ container trên VPS 1GB thì sẽ lag — đó là do hết RAM, không phải lỗi Docker.

Cloudflare free plan có giới hạn gì không?

Có vài giới hạn nhưng với blog/tool cá nhân thì dư sức: 3 page rules, không có custom WAF rules, không có image optimization (Pro plan mới có), không hỗ trợ upload video >100MB qua proxy. Với nhu cầu blog WordPress thông thường, free plan là quá đủ.

Tổng Kết

Sau 3 năm vận hành VPS, bài học lớn nhất của tôi: Đắt không có nghĩa là tốt, và rẻ không có nghĩa là dỏm. Một con NAT VPS 47K được cấu hình đúng có thể chạy ngon hơn con VPS 500K bị bỏ bê.

Tóm gọn 7 chiến lược:

  1. Benchmark nhu cầu thật → chọn gói đúng, đừng "phòng hờ"
  2. NAT VPS cho service không cần public IP (bot, dev, cron)
  3. Docker consolidation — gom nhiều service vào 1 VPS
  4. Annual billing tiết kiệm 15-25%
  5. Cloudflare free tier cho CDN + DDoS + DNS
  6. Auto-shutdown dev/test ngoài giờ làm việc
  7. Budget alert — đừng để hóa đơn làm bạn giật mình

Bắt đầu từ đâu? Làm #1 ngay hôm nay. SSH vào VPS, chạy htopdf -h, xem bạn đang dùng bao nhiêu % tài nguyên. Nếu CPU/RAM idle >70% trong 7 ngày qua → bạn đang trả tiền cho không khí.

🚀 Bắt Đầu Với VPS Giá Rẻ, Uy Tín

NAT VPS từ 47K/tháng — VPS NVMe SSD từ 100K/tháng. Datacenter Việt Nam, hỗ trợ Telegram 24/7.

Dùng Netihot — Giá Rẻ Nhất Tino Group — Hourly Billing

Bài viết dựa trên trải nghiệm cá nhân 3 năm vận hành VPS. Giá và chính sách có thể thay đổi theo thời điểm bạn đọc. Luôn kiểm tra trang chủ provider để có thông tin mới nhất.