4.4 KiB
DDC Deployment Runbook
เอกสารนี้เป็น runbook เฉพาะลูกค้า ddc โดยอิงจาก DEPLOYMENT_GUIDE.md และไฟล์ตัวอย่างใน serverinfo/pkh-*
Target
- Project name:
ddc - Website:
https://ddc.kittisak.com - SPA:
https://spa.ddc.kittisak.com - Admin:
https://admin.ddc.kittisak.com - API:
https://api.ddc.kittisak.com - Database:
ddcdb - Website SSR port:
3004 - Backend API port:
3053 - Bare repo:
/home/ti/git/ddc-website.git - Backend path:
/home/ti/projects/ddc-api - Website path:
/home/ti/projects/ddc-website - SPA static path:
/home/ti/projects/MyNginxMain/nginx/html/ddc/spa - Admin static path:
/home/ti/projects/MyNginxMain/nginx/html/ddc/admin
Files Prepared In This Repo
serverinfo/ddc-post-receiveserverinfo/ddc-backend.env.exampleserverinfo/ddc-nginx/ddc.kittisak.com.confserverinfo/ddc-nginx/spa.ddc.kittisak.com.confserverinfo/ddc-nginx/admin.ddc.kittisak.com.confserverinfo/ddc-nginx/api.ddc.kittisak.com.conf
Preflight On Server
Run on kitizone.com before changing live services:
ss -ltnp | grep -E ':3004|:3053' || true
pm2 list
If ports 3004 or 3053 are already used, stop and choose new ports before applying these files.
1. Create Bare Git Repository
mkdir -p /home/ti/git/ddc-website.git
cd /home/ti/git/ddc-website.git
git init --bare
2. Create Project Directories
mkdir -p /home/ti/projects/ddc-api
mkdir -p /home/ti/projects/ddc-website
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/ddc/spa
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/ddc/admin
3. Create Database
docker exec -it arokro_postgres bash
psql -U postgres -c "CREATE DATABASE ddcdb;"
exit
4. Open Firewall Ports
sudo ufw allow 3004/tcp
sudo ufw allow 3053/tcp
sudo ufw reload
5. Request SSL Certificates
cd /home/ti/projects/MyNginxMain
docker compose stop nginx
docker compose run --rm certbot certonly --standalone \
-d ddc.kittisak.com \
-d spa.ddc.kittisak.com \
-d admin.ddc.kittisak.com \
-d api.ddc.kittisak.com
6. Install Nginx Configs
Copy files from serverinfo/ddc-nginx/ to:
/home/ti/projects/MyNginxMain/nginx/conf.d/
Then validate and restart nginx:
cd /home/ti/projects/MyNginxMain
docker compose run --rm nginx nginx -t
docker compose up -d nginx
7. Install Backend Environment File
Create this server file:
/home/ti/projects/ddc-api/.env
Use serverinfo/ddc-backend.env.example as the base and replace placeholders before production use:
postgres:passwordmust match the real Postgres password.JWT_SECRETmust be a new project-specific secret.OMISE_SECRET_KEYmust be set if payments are enabled.
The deploy hook copies this file into /home/ti/projects/ddc-api/apps/backend/.env before Prisma commands.
8. Install Git Hook
Copy:
serverinfo/ddc-post-receive
To:
/home/ti/git/ddc-website.git/hooks/post-receive
Then run:
chmod +x /home/ti/git/ddc-website.git/hooks/post-receive
9. Deploy From Developer Machine
git remote add ddc-website ti@kitizone.com:/home/ti/git/ddc-website.git
git push ddc-website master
10. Seed Database
Run after the first successful deployment:
ssh ti@kitizone.com
cd /home/ti/projects/ddc-api/apps/backend
export PATH=$PATH:/home/ti/.bun/bin:/home/ti/.nvm/versions/node/v22.17.1/bin
bun run prisma/seed.cjs
Default seeded admin account is currently admin / homaroma123. Change it before handing production access to the customer.
Verification
pm2 list
curl -I https://ddc.kittisak.com
curl -I https://spa.ddc.kittisak.com
curl -I https://admin.ddc.kittisak.com
curl -I https://api.ddc.kittisak.com
Expected PM2 processes:
ddc-backendddc-website
Check browser console for:
- CORS errors on admin and SPA
- missing static assets
- API 504 from website SSR build or runtime fetches
Known Risks
serverinfo/ddc-post-receiverewritesecosystem.config.jsat deploy time from the basehomaromaconfig. This follows the existingpkhpattern.- The codebase still contains some hardcoded HomAroma URLs and storage keys in app code. This runbook only prepares infrastructure deployment, not full white-label branding cleanup.
- Payments and LINE LIFF need customer-specific production keys before launch.