docs: add production checklist and rollback plan for my.votcloud.com
This commit is contained in:
80
infra/deploy/PRODUCTION_CHECKLIST_my.votcloud.com.md
Normal file
80
infra/deploy/PRODUCTION_CHECKLIST_my.votcloud.com.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# ProxPanel Production Checklist (`my.votcloud.com`)
|
||||
|
||||
Date baseline: April 18, 2026
|
||||
Target host: `102.69.243.167`
|
||||
Domain: `my.votcloud.com`
|
||||
|
||||
## 1) Pre-Deploy Safety Gate
|
||||
|
||||
1. Confirm DNS `A` record points to `102.69.243.167`.
|
||||
2. Confirm server ports `80` and `443` are reachable externally.
|
||||
3. Confirm current stack health:
|
||||
- `docker compose --env-file /opt/proxpanel/.env.production -f /opt/proxpanel/infra/deploy/docker-compose.production.yml ps`
|
||||
- `curl -fsS http://127.0.0.1:8080/api/health`
|
||||
|
||||
## 2) Backup + Rollback Guardrails
|
||||
|
||||
1. Create timestamped release directory:
|
||||
- `/opt/proxpanel-backups/<timestamp>/`
|
||||
2. Backup application working tree:
|
||||
- `rsync -a /opt/proxpanel/ /opt/proxpanel-backups/<timestamp>/app/`
|
||||
3. Backup runtime env:
|
||||
- `cp /opt/proxpanel/.env.production /opt/proxpanel-backups/<timestamp>/env.production.bak`
|
||||
4. Backup Postgres before migration:
|
||||
- `docker exec proxpanel-postgres pg_dump -U proxpanel -d proxpanel > /opt/proxpanel-backups/<timestamp>/db_pre_migration.sql`
|
||||
|
||||
Rollback entrypoint:
|
||||
1. Restore app files from `/opt/proxpanel-backups/<timestamp>/app/`.
|
||||
2. Restore env file from `/opt/proxpanel-backups/<timestamp>/env.production.bak`.
|
||||
3. Recreate containers with prior source:
|
||||
- `docker compose --env-file /opt/proxpanel/.env.production -f /opt/proxpanel/infra/deploy/docker-compose.production.yml up -d --build`
|
||||
4. Restore DB if required:
|
||||
- `cat /opt/proxpanel-backups/<timestamp>/db_pre_migration.sql | docker exec -i proxpanel-postgres psql -U proxpanel -d proxpanel`
|
||||
|
||||
## 3) Deploy Order (Strict)
|
||||
|
||||
1. Upload release bundle to server.
|
||||
2. Extract bundle to `/opt/proxpanel` (keep `.env.production`).
|
||||
3. Build and start containers:
|
||||
- `docker compose --env-file .env.production -f infra/deploy/docker-compose.production.yml up -d --build`
|
||||
4. Wait for DB + backend readiness.
|
||||
5. Apply schema in this order:
|
||||
- `npm run prisma:deploy`
|
||||
- If no migration path or deploy failure, fallback once to `npm run prisma:push`
|
||||
6. Run seed:
|
||||
- `npm run prisma:seed`
|
||||
7. Health checks:
|
||||
- API health endpoint
|
||||
- Auth login flow
|
||||
- Key pages load
|
||||
8. Validate Proxmox sync endpoint with admin token.
|
||||
|
||||
## 4) HTTPS + Edge Routing
|
||||
|
||||
1. Nginx site config should proxy:
|
||||
- `my.votcloud.com` -> `http://127.0.0.1:<FRONTEND_PORT>`
|
||||
2. Issue cert:
|
||||
- `certbot --nginx -d my.votcloud.com --non-interactive --agree-tos -m <ops-email> --redirect`
|
||||
3. Verify:
|
||||
- `curl -I https://my.votcloud.com`
|
||||
- Certificate auto-renew timer active.
|
||||
|
||||
## 5) Post-Deploy Validation
|
||||
|
||||
1. `GET /api/health` returns `200`.
|
||||
2. Admin login works.
|
||||
3. RBAC page loads users/roles without crash.
|
||||
4. Audit logs page renders with no blank state error.
|
||||
5. Profile page can list sessions.
|
||||
6. System Management page can load branding/policy/CMS data.
|
||||
7. Proxmox sync returns success (or actionable credential/SSL error message).
|
||||
|
||||
## 6) Incident Rollback Criteria
|
||||
|
||||
Rollback immediately if any of the following persists > 10 minutes:
|
||||
|
||||
1. API health not green.
|
||||
2. Migration errors with broken runtime schema.
|
||||
3. Login failures for seeded admin.
|
||||
4. Persistent 5xx from `/api/proxmox/sync`.
|
||||
5. TLS provisioning failure with site unreachable.
|
||||
Reference in New Issue
Block a user