6.6 KiB
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
- รัน API Service (Elysia / Bun) บน Port
- 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)
foxxio.ddcsprocket.com.conf: Proxy/ไปยัง192.168.1.26:3003และ/api/ไปยัง192.168.1.26:3006admin.foxxio.ddcsprocket.com.conf: Proxy ไปยัง192.168.1.26:80(พร้อม SSL เดิม)api.foxxio.ddcsprocket.com.conf: Proxy ไปยัง192.168.1.26:3006