Files
homaroma/HUAHIN_DEPLOYMENT_RUNBOOK.md
T
2026-10-01 05:49:58 +07:00

187 lines
4.7 KiB
Markdown

# HuaHin Deployment Runbook
> **Tenant operational runbook:** This document records HuaHin deployment configuration. Preserve its hostnames, paths, and process identifiers as operational facts; they are not DBK Platform branding.
เอกสารนี้เป็น runbook เฉพาะลูกค้า `huahin` โดยอิงจาก `DEPLOYMENT_GUIDE.md` และไฟล์ตัวอย่างใน `serverinfo/ddc-*`
## Target
- Project name: `huahin`
- Website: `https://huahin.propkk.com`
- SPA: `https://spa.huahin.propkk.com`
- Admin: `https://admin.huahin.propkk.com`
- API: `https://api.huahin.propkk.com`
- Database: `huahindb`
- Website SSR port: `3007`
- Backend API port: `3056`
- Bare repo: `/home/ti/git/huahin-website.git`
- Backend path: `/home/ti/projects/huahin-api`
- Website path: `/home/ti/projects/huahin-website`
- SPA static path: `/home/ti/projects/MyNginxMain/nginx/html/huahin/spa`
- Admin static path: `/home/ti/projects/MyNginxMain/nginx/html/huahin/admin`
## Files Prepared In This Repo
- `serverinfo/huahin-post-receive`
- `serverinfo/huahin-backend.env.example`
- `serverinfo/huahin-nginx/huahin.propkk.com.conf`
- `serverinfo/huahin-nginx/spa.huahin.propkk.com.conf`
- `serverinfo/huahin-nginx/admin.huahin.propkk.com.conf`
- `serverinfo/huahin-nginx/api.huahin.propkk.com.conf`
## Preflight On Server
Run on `kitizone.com` before changing live services:
```bash
ss -ltnp | grep -E ':3007|:3056' || true
pm2 list
```
If ports `3007` or `3056` are already used, stop and choose new ports before applying these files.
## 1. Create Bare Git Repository
```bash
mkdir -p /home/ti/git/huahin-website.git
cd /home/ti/git/huahin-website.git
git init --bare
```
## 2. Create Project Directories
```bash
mkdir -p /home/ti/projects/huahin-api
mkdir -p /home/ti/projects/huahin-website
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/huahin/spa
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/huahin/admin
```
## 3. Create Database
```bash
docker exec -it arokro_postgres bash
psql -U postgres -c "CREATE DATABASE huahindb;"
exit
```
## 4. Open Firewall Ports
```bash
sudo ufw allow 3007/tcp
sudo ufw allow 3056/tcp
sudo ufw reload
```
## 5. Request SSL Certificates
```bash
cd /home/ti/projects/MyNginxMain
docker compose stop nginx
docker compose run --rm certbot certonly --standalone \
-d huahin.propkk.com \
-d spa.huahin.propkk.com \
-d admin.huahin.propkk.com \
-d api.huahin.propkk.com
```
## 6. Install Nginx Configs
Copy files from `serverinfo/huahin-nginx/` to:
```text
/home/ti/projects/MyNginxMain/nginx/conf.d/
```
Then validate and restart nginx:
```bash
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:
```text
/home/ti/projects/huahin-api/.env
```
Use `serverinfo/huahin-backend.env.example` as the base and replace placeholders before production use:
- `postgres:password` must match the real Postgres password.
- `JWT_SECRET` must be a new project-specific secret.
- `OMISE_SECRET_KEY` must be set if payments are enabled.
The deploy hook copies this file into `/home/ti/projects/huahin-api/apps/backend/.env` before Prisma commands.
## 8. Install Git Hook
Copy:
```text
serverinfo/huahin-post-receive
```
To:
```text
/home/ti/git/huahin-website.git/hooks/post-receive
```
Then run:
```bash
chmod +x /home/ti/git/huahin-website.git/hooks/post-receive
```
## 9. Deploy From Developer Machine
```bash
git remote add huahin-website ti@kitizone.com:/home/ti/git/huahin-website.git
git push huahin-website master
```
## 10. Seed Database
Run after the first successful deployment:
```bash
ssh ti@kitizone.com
cd /home/ti/projects/huahin-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
```bash
pm2 list
curl -I https://huahin.propkk.com
curl -I https://spa.huahin.propkk.com
curl -I https://admin.huahin.propkk.com
curl -I https://api.huahin.propkk.com
```
Expected PM2 processes:
- `huahin-backend`
- `huahin-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/huahin-post-receive` rewrites `ecosystem.config.js` at deploy time from the base `homaroma` config. This follows the existing `pkh`/`ddc` pattern.
- 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.