chore: add deployment runbook and server configs for kittisak.com
This commit is contained in:
1 parent
14d3282a81
commit
486c8d31f1
7 files changed
+478
No files matched your search
@@ -0,0 +1,182 @@
|
||||
# Kittisak Deployment Runbook
|
||||
|
||||
เอกสารนี้เป็น runbook เฉพาะลูกค้า `kittisak` โดยอิงจาก `DEPLOYMENT_GUIDE.md` และไฟล์ตัวอย่างใน `serverinfo/ddc-*` / `serverinfo/huahin-*`
|
||||
|
||||
## Target
|
||||
|
||||
- Project name: `kittisak`
|
||||
- Website: `https://kittisak.com`
|
||||
- SPA: `https://spa.kittisak.com`
|
||||
- Admin: `https://admin.kittisak.com`
|
||||
- API: `https://api.kittisak.com`
|
||||
- Database: `kittisakdb`
|
||||
- Website SSR port: `3005`
|
||||
- Backend API port: `3054`
|
||||
- Bare repo: `/home/ti/git/kittisak.com.git`
|
||||
- Backend path: `/home/ti/projects/kittisak-api`
|
||||
- Website path: `/home/ti/projects/kittisak-website`
|
||||
- SPA static path: `/home/ti/projects/MyNginxMain/nginx/html/kittisak/spa`
|
||||
- Admin static path: `/home/ti/projects/MyNginxMain/nginx/html/kittisak/admin`
|
||||
|
||||
## Files Prepared In This Repo
|
||||
|
||||
- `serverinfo/kittisak-post-receive`
|
||||
- `serverinfo/kittisak-backend.env.example`
|
||||
- `serverinfo/kittisak-nginx/kittisak.com.conf`
|
||||
- `serverinfo/kittisak-nginx/spa.kittisak.com.conf`
|
||||
- `serverinfo/kittisak-nginx/admin.kittisak.com.conf`
|
||||
- `serverinfo/kittisak-nginx/api.kittisak.com.conf`
|
||||
|
||||
## Preflight On Server
|
||||
|
||||
Run on `kitizone.com` before changing live services:
|
||||
|
||||
```bash
|
||||
ss -ltnp | grep -E ':3005|:3054' || true
|
||||
pm2 list
|
||||
```
|
||||
|
||||
If ports `3005` or `3054` are already used, stop and choose new ports before applying these files.
|
||||
|
||||
## 1. Create Bare Git Repository
|
||||
|
||||
```bash
|
||||
mkdir -p /home/ti/git/kittisak.com.git
|
||||
cd /home/ti/git/kittisak.com.git
|
||||
git init --bare
|
||||
```
|
||||
|
||||
## 2. Create Project Directories
|
||||
|
||||
```bash
|
||||
mkdir -p /home/ti/projects/kittisak-api
|
||||
mkdir -p /home/ti/projects/kittisak-website
|
||||
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/kittisak/spa
|
||||
mkdir -p /home/ti/projects/MyNginxMain/nginx/html/kittisak/admin
|
||||
```
|
||||
|
||||
## 3. Create Database
|
||||
|
||||
```bash
|
||||
docker exec -it arokro_postgres psql -U postgres -c "CREATE DATABASE kittisakdb;"
|
||||
```
|
||||
|
||||
## 4. Open Firewall Ports
|
||||
|
||||
```bash
|
||||
sudo ufw allow 3005/tcp
|
||||
sudo ufw allow 3054/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 kittisak.com \
|
||||
-d spa.kittisak.com \
|
||||
-d admin.kittisak.com \
|
||||
-d api.kittisak.com
|
||||
```
|
||||
|
||||
## 6. Install Nginx Configs
|
||||
|
||||
Copy files from `serverinfo/kittisak-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/kittisak-api/.env
|
||||
```
|
||||
|
||||
Use `serverinfo/kittisak-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/kittisak-api/apps/backend/.env` before Prisma commands.
|
||||
|
||||
## 8. Install Git Hook
|
||||
|
||||
Copy:
|
||||
|
||||
```text
|
||||
serverinfo/kittisak-post-receive
|
||||
```
|
||||
|
||||
To:
|
||||
|
||||
```text
|
||||
/home/ti/git/kittisak.com.git/hooks/post-receive
|
||||
```
|
||||
|
||||
Then run:
|
||||
|
||||
```bash
|
||||
chmod +x /home/ti/git/kittisak.com.git/hooks/post-receive
|
||||
```
|
||||
|
||||
## 9. Deploy From Developer Machine
|
||||
|
||||
```bash
|
||||
git remote add kittisak-website ti@kitizone.com:/home/ti/git/kittisak.com.git
|
||||
git push kittisak-website master
|
||||
```
|
||||
|
||||
## 10. Seed Database
|
||||
|
||||
Run after the first successful deployment:
|
||||
|
||||
```bash
|
||||
ssh ti@kitizone.com
|
||||
cd /home/ti/projects/kittisak-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://kittisak.com
|
||||
curl -I https://spa.kittisak.com
|
||||
curl -I https://admin.kittisak.com
|
||||
curl -I https://api.kittisak.com
|
||||
```
|
||||
|
||||
Expected PM2 processes:
|
||||
|
||||
- `kittisak-backend`
|
||||
- `kittisak-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/kittisak-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.
|
||||
Reference in new issue
Block a user