KB-1BAD

Luật Hạ tầng VPS — MỌI THỨ TRÊN MỘT SERVER

6 min read Revision 1
architecturelawVPSinfrastructurePostgreSQLdatabaseS109

LUẬT HẠ TẦNG VPS — MỌI THỨ TRÊN MỘT SERVER

Luật bổ sung Hiến pháp Kiến trúc — Điều 5 Tầng 1 Ban hành: S109 (11/03/2026) | Huyen phê duyệt search_knowledge("luật hạ tầng VPS infrastructure")


Khoản 1: Nguyên tắc tối cao — VPS-FIRST

Toàn bộ hệ thống Incomex chạy trên MỘT VPS duy nhất (Contabo Cloud VPS, EU). Mọi dữ liệu, mọi service, mọi database nằm trên VPS. Khi cần chuyển nhà = bê cả server — không phải lo đồng bộ nhiều nơi.

Dịch vụ bên ngoài chỉ được dùng khi VPS KHÔNG THỂ thay thế VÀ chi phí hợp lý. Hiện tại duy nhất: Google Secret Manager (bảo mật cao, chi phí ~$2/tháng).

Bài học lịch sử: Cấu trúc GCP trước đây (App Engine + Cloud Run + Cloud SQL + Firestore + GCS + Firebase + Artifact Registry) do Gemini tư vấn, quá phức tạp cho quy mô Incomex, chi phí vượt kiểm soát (~$58/tháng → dự báo $70+/tháng) trong khi VPS chỉ $8/tháng chạy mọi thứ ổn định.

Root cause chi phí: VPS đặt EU, GCP services đặt Singapore (asia-southeast1). Cross-region data transfer là SKU đắt nhất: Firestore Internet Data Transfer Out +1,535% sau khi chuyển VPS.


Khoản 2: Kiến trúc Database — POSTGRESQL LÀ ĐÍCH ĐẾN

HIỆN TẠI (2026-03):
├── MySQL 8.x          ← Directus database (ĐANG DÙNG)
├── PostgreSQL 16.x    ← Đã cài trên VPS, sẵn sàng 
├── Qdrant             ← Vector database (ĐANG DÙNG, giữ nguyên)
└── (Firestore - GCP)  ← SẼ CHUYỂN về PostgreSQL

ĐÍCH ĐẾN (2026-Q2):
├── PostgreSQL 16.x    ← Database CHÍNH DUY NHẤT
│   ├── Directus       (sau migration MySQL → PG)
│   ├── Metadata       (thay Firestore)
│   ├── Chatwoot       (planned)
│   ├── Kestra         (planned)
│   └── Chat/Event logs (JSONB)
├── Qdrant             ← Vector search chuyên dụng (giữ nguyên)
└── (MySQL retired)

Quy tắc database:

  1. PostgreSQL là database quan hệ MẶC ĐỊNH cho mọi service mới
  2. MySQL chỉ duy trì cho Directus hiện tại — sẽ migrate sang PostgreSQL khi ổn định
  3. Qdrant giữ nguyên cho vector search — chuyên dụng, hiệu suất cao
  4. KHÔNG thêm database engine mới ngoài PostgreSQL + Qdrant
  5. Dữ liệu JSON/NoSQL: PostgreSQL JSONB đủ mạnh cho chat logs, metadata, events. Không cần MongoDB/Firestore
  6. Vector search bổ sung: pgvector có thể dùng bên cạnh Qdrant cho simple cases, nhưng Qdrant vẫn là chính

Tại sao PostgreSQL, không MySQL:

  • JSONB native: Query JSON data nhanh, index được — MySQL JSON chậm hơn đáng kể
  • pgvector: Vector search tích hợp (bổ sung Qdrant cho simple cases)
  • Chatwoot + Kestra: Cả hai dùng PostgreSQL — 1 engine thay vì 2
  • Directus khuyến nghị: PostgreSQL là first-class citizen trong Directus
  • Community + ecosystem: Mạnh hơn MySQL cho use cases phức tạp

Khoản 3: Lưu trữ File — LOCAL STORAGE

/opt/incomex/
├── docker/           # Docker Compose + .env
├── data/
│   ├── storage/      # Files (thay GCS Buckets)
│   │   ├── uploads/  # User uploads
│   │   ├── knowledge/# Knowledge documents 
│   │   ├── exports/  # Generated exports
│   │   ├── snapshots/# Qdrant snapshots
│   │   └── logs/     # App logs archive
│   ├── mysql/        # MySQL data (Docker volume)
│   ├── postgres/     # PostgreSQL data (Docker volume)
│   └── qdrant/       # Qdrant data (Docker volume)
├── backups/          # Backup staging
├── scripts/          # Operational scripts
├── logs/             # Application logs
└── config/           # Environment configs

Quy tắc storage:

  1. Files lưu local trên NVMe (100GB, mở rộng ~$3/100GB)
  2. Nginx serve static files cho public access (thay GCS public URLs)
  3. Backup: daily rsync/snapshot. Offsite backup qua rclone (S3-compatible hoặc 2nd VPS)
  4. KHÔNG dùng GCS Buckets cho production data

Khoản 4: Dịch vụ bên ngoài — DANH SÁCH TRẮNG

Chỉ các dịch vụ sau được phép dùng:

Dịch vụ Lý do Chi phí
Google Secret Manager Bảo mật cao, ổn định ~$2/tháng
GitHub Source code, CI/CD, Actions Free
DNS (Mắt Bão/Cloudflare) Domain management Included
Let's Encrypt SSL certificates Free

Mọi dịch vụ khác cần Huyen phê duyệt trước khi dùng.


Khoản 5: Docker Stack mục tiêu

services:
  nginx:      # 80/443 — Reverse proxy + SSL + static files
  nuxt:       # 3000  — Frontend SSR
  directus:   # 8055  — CMS (MySQL hiện tại → PostgreSQL sau)
  agent-data: # 8000  — Knowledge API
  mysql:      # 3306  — Directus DB (sẽ retire)
  postgres:   # 5432  — PostgreSQL 16 (metadata + tương lai)
  qdrant:     # 6333  — Vector search

Khoản 6: Chi phí mục tiêu

Hạng mục Chi phí/tháng
VPS Contabo $8 (nâng $12 khi cần)
Secret Manager ~$2
Tổng ~$10/tháng

So với GCP era: tiết kiệm ~$56/tháng = $672/năm.


Khoản 7: Mở rộng (Scale)

  1. Nâng spec: $8→$12→$20 (Contabo upgrade)
  2. Thêm disk: ~$3/100GB NVMe bổ sung
  3. Chuyển VPS: Snapshot → restore trên VPS mới = "bê cả cục"
  4. KHÔNG quay lại managed cloud trừ khi scale > 1 server cần orchestration

Khoản 8: GCP — Chỉ còn Secret Manager

Project github-chatgpt-ggcloud sau migration:

  • ✅ GIỮ: Secret Manager (8 secrets)
  • ❌ DISABLE/XÓA: App Engine, Cloud Run, Firestore, GCS Buckets, Artifact Registry, Firebase Hosting
  • Billing target: ≤₫52K/tháng ($2)

Luật Hạ tầng VPS v1.0 | Ban hành S109 | Bổ sung Điều 5 Tầng 1 Hiến pháp Kiến trúc