# 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.