System Guide
Deployment Guide
UP: 07/04/2026
AI MODERATOR
~15 MINS
DEPLOYMENT — Nhà Cộng
Phiên bản: 2026-03-17
Tài liệu này là bản hướng dẫn tổng hợp để triển khai và vận hành hệ thống Nhà Cộng (backend + frontend + DB), được xây dựng sau khi rà soát nhanh repository.
Mục lục
- Tổng quan kiến trúc
- Yêu cầu hạ tầng
- Biến môi trường cần thiết
- Build & Run (local và production)
- Docker / Docker Compose
- Migrations & Seed
- CI/CD (gợi ý GitHub Actions)
- Healthchecks, logging, backup & rollback
- Checklist triển khai
- Các bước tiếp theo (tùy chọn)
1. Tổng quan kiến trúc
- Backend: NestJS 10 + TypeScript + TypeORM (MySQL)
- Thư mục: DOCUMENTATION CODE
backend/ - Scripts chính: xem (ví dụDOCUMENTATION CODE
backend/package.json,DOCUMENTATION CODEnpm run build,DOCUMENTATION CODEnpm run start:prod)DOCUMENTATION CODEmigration:run
- Thư mục:
- Frontend: Next.js 16 (App Router) + Tailwind + Ant Design
- Thư mục: DOCUMENTATION CODE
frontend/ - Scripts chính: ,DOCUMENTATION CODE
npm run dev,DOCUMENTATION CODEnpm run build(standalone)DOCUMENTATION CODEnpm run start
- Thư mục:
- Containerization: ,DOCUMENTATION CODE
Dockerfiletrong từng service;DOCUMENTATION CODEDockerfile.devvàDOCUMENTATION CODEdocker-compose.ymlở root.DOCUMENTATION CODEdocker-compose.staging.yml
2. Yêu cầu hạ tầng
- Linux server (Ubuntu 22.04+ recommended)
- Docker & Docker Compose (v2+)
- MySQL 8.x (có thể RDS)
- Node.js (chỉ cần khi build ngoài container)
- (Optional) Redis, S3-compatible storage
- Access: SSH key cho CI/CD hoặc deploy user
3. Biến môi trường quan trọng
Lưu secrets ngoài repo (Vault / GH Secrets / env file trên server). Dưới đây là danh sách tối thiểu:
Backend (ít nhất):
- ,DOCUMENTATION CODE
DB_HOST,DOCUMENTATION CODEDB_PORT,DOCUMENTATION CODEDB_USER,DOCUMENTATION CODEDB_PASSDOCUMENTATION CODEDB_NAME - (PHẢI luôn false trên production)DOCUMENTATION CODE
DB_SYNCHRONIZE=false - DOCUMENTATION CODE
JWT_SECRET - DOCUMENTATION CODE
CORS_ORIGIN - (DOCUMENTATION CODE
STORAGE_TYPE|DOCUMENTATION CODElocal) +DOCUMENTATION CODEs3,DOCUMENTATION CODESTORAGE_S3_BUCKET,DOCUMENTATION CODESTORAGE_S3_REGION,DOCUMENTATION CODESTORAGE_S3_ACCESS_KEY_IDDOCUMENTATION CODESTORAGE_S3_SECRET_ACCESS_KEY - (DOCUMENTATION CODE
MAIL_DRIVER|DOCUMENTATION CODEsmtp) +DOCUMENTATION CODEresendnếu dùng resendDOCUMENTATION CODERESEND_API_KEY - ,DOCUMENTATION CODE
VNPAY_*nếu dùng các gateway tương ứngDOCUMENTATION CODEZALO_*
Frontend (ít nhất):
- (ví dụ: https://api.example.com/api)DOCUMENTATION CODE
NEXT_PUBLIC_API_URL - DOCUMENTATION CODE
NEXT_PUBLIC_SITE_URL - DOCUMENTATION CODE
NEXT_PUBLIC_GOOGLE_CLIENT_ID
Ghi chú: kiểm tra
DOCUMENTATION CODE
backend/.env.exampleDOCUMENTATION CODE
frontend/env.example4. Build & Run
A. Không dùng container (local/VM)
Backend:
DOCUMENTATION CODEcd backend npm install npm run build # kiểm tra migration/seed nếu cần npm run migration:run NODE_ENV=production npm run start:prod
Frontend:
DOCUMENTATION CODEcd frontend npm install npm run build # (tạo standalone nếu cần) npm run start
B. Với Docker (khuyến nghị dùng trên server)
Build images (ví dụ để đẩy lên registry):
DOCUMENTATION CODEdocker build -t myregistry/nhacong-backend:latest -f backend/Dockerfile ./backend docker build -t myregistry/nhacong-frontend:latest -f frontend/Dockerfile ./frontend
Chạy local via compose:
DOCUMENTATION CODEdocker compose -f docker-compose.yml up -d --build
5. Migrations & Seed
- Tạo migration (dev): DOCUMENTATION CODE
npm run migration:generate -- src/database/migrations/DescribeChange - Chạy migration (staging/prod): DOCUMENTATION CODE
npm run migration:run - Revert (cẩn trọng): DOCUMENTATION CODE
npm run migration:revert - Seed data: hoặcDOCUMENTATION CODE
npm run seed(xemDOCUMENTATION CODEnpm run seed:refresh)DOCUMENTATION CODEbackend/package.json
Luôn backup DB trước khi áp migration quan trọng.
6. CI/CD — Mẫu workflow
Gợi ý pipeline GitHub Actions:
- Trigger: push vào (production) hoặcDOCUMENTATION CODE
main(staging)DOCUMENTATION CODEstaging - Steps:
- Checkout
- Setup Node
- Install & run lint/tests
- Build frontend (next build) and archive standalone
- Build backend (npm run build)
- Build & push Docker images (GHCR/ECR)
- SSH vào server: vàDOCUMENTATION CODE
docker compose pull && docker compose up -dDOCUMENTATION CODEdocker compose exec backend npm run migration:run
( Nếu muốn, tôi có thể tạo
DOCUMENTATION CODE
/.github/workflows/deploy.yml7. Healthchecks, logging & monitoring
- Health: kiểm tra endpoint (nếu backend có route health), hoặc kiểm tra swagger để xác nhận service.DOCUMENTATION CODE
/docs - Logs: dùng hoặc chuyển sang log driver/ELK.DOCUMENTATION CODE
docker logs -f <container> - Monitoring: Uptime checks (UptimeRobot), metrics (Prometheus/Grafana) nếu cần.
8. Backup & Rollback
- Backup DB:
DOCUMENTATION CODEmysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > backup-$(date +%F).sql
- Rollback nhanh: redeploy image cũ hoặc restore DB từ dump.
- Nếu migration gây lỗi: (nếu migration hỗ trợ revert) hoặc restore DB.DOCUMENTATION CODE
npm run migration:revert
9. Checklist triển khai (ngắn)
- Cập nhật branch và build trên CIDOCUMENTATION CODE
main - Đảm bảo tất cả secret đã có trên server/GH Secrets
- Backup DB
- Pull & chạy migration trên staging trước
- Kiểm tra API & UI trên staging
- Deploy production, run migration, kiểm tra health
10. Gợi ý bước tiếp theo tôi có thể làm cho bạn
- Tạo (SSH + pull + compose + migrate) mẫu trong repo.DOCUMENTATION CODE
deploy.sh - Tạo GitHub Actions workflow mẫu để build/push & deploy.
- Làm runbook chi tiết cho DevOps (kịch bản rollback, monitoring, run commands).
Cho tôi biết muốn mình làm mục nào (1/2/3) — mình sẽ tạo file tương ứng.