Triển Khai On-Premise: Docker Compose Trong 5 Phút
Đối với nhiều doanh nghiệp Việt Nam — đặc biệt trong ngành ngân hàng, bảo hiểm, y tế, và chính phủ — việc giữ toàn bộ dữ liệu trong hạ tầng nội bộ không chỉ là mong muốn mà là yêu cầu bắt buộc theo Nghị định 13/2023/NĐ-CP. Flexera 2025 State of Cloud Report cho thấy 72% doanh nghiệp áp dụng multi-cloud hoặc hybrid strategy — On-Premise vẫn giữ vai trò quan trọng cho sensitive workloads. BanhCuonFlow được thiết kế từ đầu để hỗ trợ triển khai On-Premise, và bài viết này hướng dẫn bạn deploy toàn bộ hệ thống chỉ với 1 file Docker Compose.
Tại Sao Chọn On-Premise?
Cloud computing đã là xu thế, nhưng On-Premise vẫn có vị trí không thể thay thế. Theo khảo sát Gartner 2025, 62% doanh nghiệp lớn tại Đông Nam Á vẫn ưu tiên On-Premise cho dữ liệu nhạy cảm. IDC Vietnam cũng cho thấy IT spending cho on-premise infrastructure tại Việt Nam tăng 18% YoY trong 2024-2025. Lý do chính:
🔐 Chủ quyền dữ liệu
Dữ liệu không rời khỏi datacenter công ty. Tuân thủ Nghị định 13/2023/NĐ-CP về bảo vệ dữ liệu cá nhân — data localization requirement bắt buộc cho dữ liệu nhạy cảm.
⚡ Hiệu năng nội bộ
Latency < 1ms khi server đặt cùng mạng LAN — so với 50-200ms cho cloud servers ở Singapore/Tokyo. Phù hợp cho sản xuất, kho vận, nhà máy, POS systems cần response tức thì.
💰 Chi phí dài hạn
Không phải trả phí cloud hàng tháng (EC2, RDS, S3 egress...). Sau 18-24 tháng, TCO On-Premise thường thấp hơn cloud 30-40% cho workload ổn định (a16z analysis).
🛡️ Kiểm soát bảo mật
Tự quản lý firewall, VPN, TLS certificate. Không lo shared infrastructure hay supply-chain attack từ cloud provider. Physical security theo chuẩn công ty.
Yêu Cầu Hệ Thống
BanhCuonFlow được container hoá hoàn toàn, chạy trên bất kỳ hệ điều hành nào hỗ trợ Docker. Yêu cầu tối thiểu cho môi trường production với 50-100 users đồng thời:
🖥️ OS: Ubuntu 22.04 LTS / CentOS 8+ / Windows Server
2019+
🔧 Runtime: Docker Engine 24+ và Docker Compose v2
💾 RAM: Tối thiểu 4GB (khuyến nghị 8GB cho production)
💿 Ổ cứng: 20GB+ SSD (khuyến nghị 50GB nếu lưu file đính
kèm)
🌐 Mạng: Port 80/443 mở nếu cần truy cập từ xa
🗄️ Database: PostgreSQL 15+ (tích hợp sẵn trong Docker
Compose)
📊 Monitoring (optional): Prometheus + Grafana cho production
monitoring
5 Bước Triển Khai Chi Tiết
Clone Repository & Chuẩn Bị
Clone repo triển khai và copy file .env mẫu. File .env chứa tất cả
cấu hình: database connection, JWT secret, SMTP credentials, license
key. Mỗi biến đều có comment giải thích chi tiết. Verify Docker
installation: docker --version và docker compose version.
Cấu Hình .env
Chỉnh sửa các biến quan trọng: DATABASE_URL (PostgreSQL
connection string), JWT_SECRET (key ký token, ít nhất
32 ký tự random — dùng openssl rand -hex 32), SMTP_HOST/PORT (gửi email thông báo), và LICENSE_KEY (key bản quyền
từ BanhCuonFlow). Bảo mật: Không commit .env vào git
— thêm vào .gitignore.
Deploy Containers
Chạy docker compose up -d — lệnh này pull images từ registry,
tạo Docker network, khởi tạo PostgreSQL database schema, start Redis,
và boot API + Admin UI. Lần đầu mất khoảng 3-5 phút để pull images (~2GB).
Các lần sau restart chỉ mất vài giây vì images đã cached locally.
Kiểm Tra Health Check
Truy cập http://localhost:5000/health để kiểm tra status API. Response "Healthy" nghĩa là API, Database, Redis, và SignalR hub đều hoạt động bình thường. Nếu bất kỳ service nào fail, health check trả detailed status cho từng dependency. Truy cập port 3000 để vào giao diện Admin.
Tạo Admin Account & Bắt Đầu
Lần đầu truy cập Admin, hệ thống tự mở wizard tạo tài khoản Super Admin. Sau đó bạn có thể tạo Workspace, configure LDAP/SSO nếu cần, mời thành viên, và bắt đầu cấu hình workflow ngay lập tức. Toàn bộ quá trình: 5-10 phút từ zero đến production-ready.
Kiến Trúc Docker Compose
File Docker Compose của BanhCuonFlow bao gồm 4 services chính, mỗi service isolated trong container riêng:
🔵 banhcuonflow-api
ASP.NET Core 8 API — xử lý business logic, authentication, file
upload, SignalR hub. Exposes port 5000. Health check endpoint
built-in, Docker restart policy unless-stopped tự động restart
nếu service crash.
🟢 banhcuonflow-admin
React SPA (Vite build) — giao diện quản trị. Serve bởi Nginx container với gzip/brotli compression, static asset cache 1 năm (fingerprinted filenames), và security headers (CSP, HSTS).
🟡 postgres
PostgreSQL 15 — database chính. Tự động chạy EF Core migration khi
API startup — zero manual SQL scripts. Volume mount (pgdata:/var/lib/postgresql/data) đảm bảo dữ liệu persist khi container restart hoặc upgrade.
🔴 redis
Redis 7 — caching (dashboard data, permissions), session store, và SignalR backplane cho real-time messaging multi-instance. AOF persistence đảm bảo data survive restart.
Bảo Trì & Nâng Cấp
Nâng cấp BanhCuonFlow cực kỳ đơn giản: docker compose pull && docker compose up -d. Database migration tự động chạy khi API startup — bạn không cần chạy
script SQL thủ công. Rolling update: zero downtime nếu chạy multiple
replicas. Để backup: pg_dump PostgreSQL daily (cron job) + backup
file attachments volume. Khuyến nghị: test upgrade trên staging trước production.
Đối với tổ chức cần High Availability, BanhCuonFlow hỗ trợ deployment trên Docker Swarm hoặc Kubernetes với horizontal scaling. API stateless, Redis làm shared cache/backplane — bạn có thể chạy 3-5 API replicas behind load balancer mà không cần thay đổi code. PostgreSQL HA: primary-replica setup với streaming replication.