Files
homaroma/serverinfo/192.168.1.26/foxxio.ddcsprocket.com/docs/README.md
T

6.6 KiB

Foxxio Platform Deployment Guide & System Architecture

Target Domain: foxxio.ddcsprocket.com

Target Server: sql@192.168.1.26

Gateway Server: adminweb@192.168.1.24


1. บทบาทของเซิร์ฟเวอร์ (System Architecture & Role)

  • Application Server: 192.168.1.26 (Hostname: sql, User: sql)
    • บทบาท: Application Runner (PM2 / Bun / Node) + Static Nginx Host สำหรับ Admin Panel
    • ขอบเขต:
      • รัน API Service (Elysia / Bun) บน Port 3006
      • รัน Website SSR (Next.js / Node.js) บน Port 3003
      • รัน Admin Panel (React Vite SPA) ผ่าน Nginx Port 80 ชี้ไปยัง /var/www/html/foxxio_admin
  • Gateway / Reverse Proxy: 192.168.1.24 (Docker Nginx)
    • จัดการ SSL Termination (Let's Encrypt Certbot)
    • Proxy Traffic ตาม Domain เข้ามายัง 192.168.1.26
[ User Request ]
       │
       ▼
[ Gateway: 192.168.1.24 (Docker Nginx + SSL) ]
       │
       ├── https://foxxio.ddcsprocket.com ──────► http://192.168.1.26:3003 (Next.js SSR)
       ├── https://foxxio.ddcsprocket.com/api/ ──► http://192.168.1.26:3006 (Elysia API)
       ├── https://api.foxxio.ddcsprocket.com ───► http://192.168.1.26:3006 (Elysia API)
       └── https://admin.foxxio.ddcsprocket.com ─► http://192.168.1.26:80 (Admin Static SPA)

2. โครงสร้าง Git Repository & การเชื่อมต่อ (Git Info)

ฝั่ง Server (192.168.1.26)

รายการ ตำแหน่ง Path บน Server รายละเอียด
Bare Repository /home/sql/git/foxxio.git จุดรับ Git Push จากเครื่อง Local
Symlink Alias /home/sql/git/foxxio.ddcsprocket.com.git ชี้ไปยัง foxxio.git
Working Directory /home/sql/code/foxxio โฟลเดอร์แตกไฟล์ Source Code และรันโปรเจกต์
Hook Script /home/sql/git/foxxio.git/hooks/post-receive สคริปต์สั่ง Build และ Restart PM2 อัตโนมัติ (chmod +x)

ฝั่ง Local (d:\cms)

  • Git Remote Name: foxxio
  • Remote URL: sql@192.168.1.26:/home/sql/git/foxxio.git
  • คำสั่ง Deploy:
    git remote add foxxio sql@192.168.1.26:/home/sql/git/foxxio.git
    git push foxxio master
    

3. แผนผังพอร์ต & การจัดการ PM2 (Process Management)

พอร์ตและ Process ของ Foxxio

Service PM2 Process Name Port Runtime / Command CWD
Backend API foxxio-backend 3006 bun run src/index.ts /home/sql/code/foxxio/apps/backend
Website (SSR) foxxio-website 3003 node server.js หรือ bun run start /home/sql/code/foxxio/apps/website
Admin Panel N/A (Nginx Static) 80 Nginx Static Build /var/www/html/foxxio_admin

ตารางพอร์ตบน Server 192.168.1.26

Port Service ที่ใช้งาน สถานะ
3001 shop-ddcth (Next.js) ใช้งานอยู่
3002 bigbike-website (Next.js SSR) ใช้งานอยู่
3003 foxxio-website (Next.js SSR) Foxxio
3005 bigbike-backend (Elysia API) ใช้งานอยู่
3006 foxxio-backend (Elysia API) Foxxio
4000 aroka-backend ใช้งานอยู่
5000 ddc hr backend ใช้งานอยู่

4. การตั้งค่าฐานข้อมูล & ไฟล์ .env

1) ฐานข้อมูล PostgreSQL บน 192.168.1.26

  • Database Name: foxxio_db
  • Connection String:
    DATABASE_URL="postgresql://postgres:password@localhost:5432/foxxio_db?schema=public"
    

2) Environment Variables

  • Backend (/home/sql/code/foxxio/apps/backend/.env):

    PORT=3006
    DATABASE_URL="postgresql://postgres:password@localhost:5432/foxxio_db?schema=public"
    NODE_ENV=production
    APP_URL="https://api.foxxio.ddcsprocket.com"
    BACKEND_PUBLIC_URL="https://api.foxxio.ddcsprocket.com"
    CORS_ORIGIN="https://admin.foxxio.ddcsprocket.com,https://spa.foxxio.ddcsprocket.com,https://foxxio.ddcsprocket.com,http://localhost:3000,http://localhost:3003"
    JWT_SECRET="foxxio-secret-key-prod-2026-ddc"
    OMISE_SECRET_KEY=""
    
  • Website SSR (/home/sql/code/foxxio/apps/website/.env):

    PORT=3003
    NODE_ENV=production
    NEXT_PUBLIC_API_URL="https://api.foxxio.ddcsprocket.com/api"
    

5. คำสั่ง Sudo One-Liner สำหรับ Server 192.168.1.26

รันคำสั่งด้านล่างนี้บน sql@192.168.1.26 เพียงครั้งเดียว:

# 1. ปลดบล็อก UFW พอร์ต 3003 และ 3006
sudo ufw allow 3003/tcp comment "Foxxio Website SSR"
sudo ufw allow 3006/tcp comment "Foxxio Backend API"
sudo ufw reload

# 2. สร้างโฟลเดอร์ Web Root สำหรับ Admin Panel
sudo mkdir -p /var/www/html/foxxio_admin
sudo chown -R sql:sql /var/www/html/foxxio_admin

# 3. ติดตั้ง Nginx Virtual Host สำหรับ Admin Panel
sudo tee /etc/nginx/sites-available/admin.foxxio.ddcsprocket.com.conf > /dev/null << 'EOF'
server {
    listen 80;
    server_name admin.foxxio.ddcsprocket.com;
    root /var/www/html/foxxio_admin;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
    error_log  /var/log/nginx/foxxio_admin_error.log;
    access_log /var/log/nginx/foxxio_admin_access.log;
}
EOF

sudo ln -sf /etc/nginx/sites-available/admin.foxxio.ddcsprocket.com.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

6. การตั้งค่าบน Gateway 192.168.1.24 (adminweb@192.168.1.24)

  1. foxxio.ddcsprocket.com.conf: Proxy / ไปยัง 192.168.1.26:3003 และ /api/ ไปยัง 192.168.1.26:3006
  2. admin.foxxio.ddcsprocket.com.conf: Proxy ไปยัง 192.168.1.26:80 (พร้อม SSL เดิม)
  3. api.foxxio.ddcsprocket.com.conf: Proxy ไปยัง 192.168.1.26:3006