← ClaudeAtlas

kelola-deploylisted

Deploy, verify, and recover the Kelola HRIS production server (kelolatim.com). Automatically use when working in the kelola repo on anything touching deploy, CI, PM2, nginx, the production VPS, a 500/502 after deploy, ChunkLoadError, node_modules corruption, or Indonesian phrases like deploy kelola, servernya error, web nya down, gak bisa login, disk penuh.
ongkipro/dotfiles · ★ 0 · DevOps & Infrastructure · score 53
Install: claude install-skill ongkipro/dotfiles
# Kelola — Production Deploy & Recovery Runbook Kelola HRIS (repo `kelola`) is a private Next.js web and Hono backend deployment on one VPS. There is no public canonical upstream for this runbook. It was distilled from internal incidents in June-July 2026; incident explanations are historical operational evidence, not permanent platform facts. At the start of every deploy or recovery, inspect the current `kelola` repository's `.github/workflows/deploy.yml`, `deploy.sh`, `ecosystem.config.cjs`, and package scripts, then compare them with live PM2/nginx state. Current repository configuration and observed host output override this file. Keep point-in-time backup tables, disk figures, credentials, and account data in approved private operational storage, not here. ## Architecture - Server `irwansyah10@103.93.161.104`, dir `~/kelola`. Nginx in front. - PM2: `kelola-web` (Next.js :3100), `kelola-backend` (Hono :3101). The server ALSO runs `simantep` + `tatacuan-bot` — **never `pm2 stop all`** (they are outside kelola's `ecosystem.config.cjs`, deploy.sh won't restart them). - Domain: **`https://kelolatim.com`** (old `kelola.simantep.id` 301-redirects — never use it for health checks). Backend env: `~/kelola/backend/.env` (not in git); `BETTER_AUTH_URL` must equal the live domain or Google OAuth login breaks. - Uploads live on a separate volume mounted at `/data`, symlinked from `backend/uploads` (video uploads are large and grow fast). ## Golden rule: push = deploy