Skip to content

۲۳ — Self-host Ops Stack

Uptime Kuma + backup Postgres + سایت داک VitePress — روی همان VPS stage.


معماری

سرویسURLruntime
Docshttps://docs.takeeat.irstatic (Caddy file_server)
Monitoringhttps://status.takeeat.irUptime Kuma (docker) + Caddy basic auth
Backup/opt/backups/cron روزانه ۰۳:۰۰
doc/*.md → vitepress build → docs-site/.vitepress/dist → Caddy
deploy/docker-compose.ops.yml → uptime-kuma :3001 → Caddy (basic auth)
Postgres → backup-db.sh → /opt/backups/takeeat-*.sql.gz

Setup اولیه (یک‌بار روی سرور)

bash
cd /opt/takeeat
bash scripts/bootstrap-stage-server.sh   # اگر سرور تازه است
bash scripts/setup-ops.sh                # Kuma + Caddy auth + cron + DNS

DNS (خودکار اگر ARVAN_API_KEY در .env.local)

bash
bash scripts/setup-ops-dns.sh

A records: docs و status193.176.242.38

Uptime Kuma admin (یک‌بار ~۲ دقیقه)

  1. باز کنید https://status.takeeat.ir (user/pass از /etc/caddy/ops.env — موقع setup-ops چاپ می‌شود)
  2. ساخت admin در UI خود Kuma
  3. افزودن به /opt/takeeat/.env.local:
env
KUMA_USERNAME=your-admin
KUMA_PASSWORD=your-password
  1. deploy بعدی یا node scripts/seed-kuma-monitors.mjs → monitors seed

Deploy (خودکار)

develop → PR → stage branch → GitHub Actions → deploy-stage.sh

هر deploy:

  • npm run docs:build
  • docker compose -f deploy/docker-compose.ops.yml up -d
  • bash scripts/setup-ops.sh (idempotent)

دستورات روزمره

کاردستور
backup دستیbash scripts/backup-db.sh
restorebash scripts/restore-db.sh /opt/backups/takeeat-....sql.gz --yes
seed monitorsnode scripts/seed-kuma-monitors.mjs
docs لوکالnpm run docs:dev
build docsnpm run docs:build

SSL برای subdomainهای ops

بعد از اضافه شدن DNS، cert را renew/expand کنید:

bash
cd /opt/takeeat
bash scripts/obtain-origin-certs.sh   # شامل docs + status
sudo systemctl restart caddy

env vars (server)

varکجانقش
ARVAN_API_KEY.env.localDNS automation
KUMA_USERNAME / KUMA_PASSWORD.env.localseed monitors
OPS_BASIC_AUTH_*/etc/caddy/ops.envCaddy basic auth (status)

→ جزئیات backup/monitoring: 21-ops-runbook.md


Troubleshooting

مشکلکار
docs 404npm run docs:build + sudo systemctl reload caddy
status 502docker compose -f deploy/docker-compose.ops.yml ps
Caddy auth failsudo cat /etc/caddy/ops.env
backup emptydocker-compose ps — postgres up?
Kuma seed skipcreds در .env.local

فایل‌های repo

pathنقش
docs-site/.vitepress/VitePress config (RTL, sidebar)
deploy/docker-compose.ops.ymlUptime Kuma
deploy/caddy/Caddyfile.stagedocs + status blocks
scripts/setup-ops.shorchestrator
scripts/backup-db.shpg_dump
scripts/setup-ops-dns.shArvan A records
scripts/seed-kuma-monitors.mjsmonitors