# 08-Infrastructure คู่มือการตั้งค่า Infrastructure สำหรับ **NAP-DMS LCBP3** (Laem Chabang Port Phase 3 - Document Management System) > 📍 **Platform:** QNAP (Container Station) + ASUSTOR (Portainer) > 🌐 **Domain:** `*.np-dms.work` (IP: 159.192.126.103) > 🔒 **Network:** `lcbp3` (Docker External Network) > 📄 **Version:** v2.0.0 (Refactored for Stability) --- ## 🏢 Hardware Infrastructure ### Server Role Separation #### QNAP TS-473A | (Application & Database Server)||| | :--------------------- | :---------------- | :-------------------- | | ✔ Application Runtime |✔ API / Web | ✔ Database (Primary) | | ✔ High CPU / RAM usage | ✔ Worker / Queue | ✖ No long-term backup | | Container Station (UI) | 32GB RAM (Capped) | AMD Ryzen V1500B | #### ASUSTOR AS5403T | (Infrastructure & Backup Server) ||| | :--------------------- | :---------------- | :------------------- | | ✔ File Storage | ✔ Backup Target | ✔ Docker Infra | |✔ Monitoring / Registry | ✔ Log Aggregation | ✖ No heavy App logic | | Portainer (Manage All) | 16GB RAM | Intel Celeron @2GHz | ### Servers Specification & Resource Allocation | Device | Model | CPU | RAM | Resource Policy | Role | | :---------- | :------ | :---------------------- | :--- | :------------------ | :--------------------- | | **QNAP** | TS-473A | AMD Ryzen V1500B | 32GB | **Strict Limits** | Application, DB, Cache | | **ASUSTOR** | AS5403T | Intel Celeron @ 2.00GHz | 16GB | **Moderate Limits** | Infra, Backup, Monitor | ### Service Distribution by Server #### QNAP TS-473A (Application Stack) | Category | Service | Strategy | Resource Limit (Est.) | | :-------------- | :------------------------ | :------------------------------ | :-------------------- | | **Web App** | Next.js (Frontend) | Single Instance | 2.0 CPU / 2GB RAM | | **Backend API** | NestJS | **2 Replicas** (Load Balanced) | 2.0 CPU / 1.5GB RAM | | **Database** | MariaDB (Primary) | Performance Tuned (Buffer Pool) | 4.0 CPU / 5GB RAM | | **Worker** | Redis + BullMQ Worker | **Standalone + AOF** | 2.0 CPU / 1.5GB RAM | | **Search** | Elasticsearch | **Heap Locked (2GB)** | 2.0 CPU / 4GB RAM | | **API Gateway** | NPM (Nginx Proxy Manager) | SSL Termination | 1.0 CPU / 512MB RAM | | **Workflow** | n8n | Automation | 1.0 CPU / 1GB RAM | | **Code** | Gitea | Git Repository | 1.0 CPU / 1GB RAM | #### ASUSTOR AS5403T (Infrastructure Stack) | Category | Service | Notes | | :--------------- | :------------------ | :------------------------------ | | **File Storage** | NFS / SMB | Shared volumes for backup | | **Backup** | Restic / Borg | Pull-based Backup (More Safe) | | **Docker Infra** | Registry, Portainer | Container image registry, mgmt | | **Monitoring** | Uptime Kuma | Service availability monitoring | | **Metrics** | Prometheus, Grafana | Cross-Server Scraping | | **Log** | Loki / Syslog | Centralized logging | --- ## 🔄 Data Flow Architecture ┌──────────────┐ │ User │ └──────┬───────┘ │ HTTPS (443) ▼ ┌─────────────────────────────────────────────────────────────┐ │ QNAP TS-473A │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Nginx Proxy Manager (NPM) │ │ │ │ SSL Termination + Round Robin LB │ │ │ └───────────────────────┬─────────────────────────────────┘ │ │ │ │ │ ┌───────────────────────▼─────────────────────────────────┐ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ | │ │ │ │ Next.js │─▶│ NestJS │ │ NestJS │ | │ │ │ │ (Frontend) │ │ (Replica 1) │ │ (Replica 2) │ │ │ │ │ └──────────────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────────┼────────────────┼────┐ │ │ │ │ ▼ ▼ ▼ ▼ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │ │ │ │ │ MariaDB │ │ Redis │ │Elasticsearch│ │ │ │ │ │ (Primary)│ │(Persist.)│ │ (Search) │ │ │ │ │ └────┬─────┘ └──────────┘ └─────────────┘ │ │ │ └──────┼──────────────────────────────────────────────────┘ │ │ └──────┼────────────────────────────────────────────────────┘ | Local Dump -> Restic Pull (Cross-Server) ▼ ┌──────────────────────────────────────────────────────────────┐ │ ASUSTOR AS5403T │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Backup │ │ Registry │ │ Uptime │ │ │ │ │ │ (Restic) │ │ (Docker) │ │ Kuma │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │Prometheus│───▶│ Grafana │ │ Loki │ │ │ │ │ │(Scraper) │ │(Dashboard)│ │ (Logs) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ ││ │ └──────────────────────────────────────────────────────────┘│ └──────────────────────────────────────────────────────────────┘