docs: add sprint 07 operations hardening summary

This commit is contained in:
Gan, Jimmy
2026-07-11 04:58:57 +08:00
parent 455035bd72
commit b77de0c9d0
+52
View File
@@ -0,0 +1,52 @@
# Sprint 07 — Operations Hardening Summary
This document summarizes the changes implemented and deployed during Sprint 07 for the `nas-tools` repository.
## Completed Tasks
### S07.1 — Audit Log Rotation
- **Files modified:** `dashboard/backend/main.py`
- **Changes:** Replaced standard `logging.FileHandler` with `logging.handlers.RotatingFileHandler`. Set a file size limit of 10MB (`maxBytes=10*1024*1024`) and retained 5 backup files (`backupCount=5`) to prevent disk space exhaustion.
- **Path:** `/volume1/docker/nas-dashboard/audit.log`
### S07.2 — Database Backups (OPC & Config Paths)
- **Files modified:** `backup.sh`
- **Changes:**
1. Added `OPC DB` dump using `pg_dump` targeting the database container `gitea-db` on port 5432, database `opc`.
2. Added `/volume1/docker/nas-dashboard/rbac.json` and `/volume1/docker/nas-dashboard/audit.log` to the configuration backups list.
3. Removed the deprecated and dead path `/volume1/docker/openclaw/data`.
### S07.3 — Dynamic Health Check Endpoint
- **Files modified:** `dashboard/backend/main.py`
- **Changes:**
- Enhanced `/api/health` to dynamically query database pool availability, Docker socket ping status, and disk space usage (free GB).
- Returns `200 OK` with JSON statistics on success: `{"status":"ok","db":"connected","docker":"healthy","disk":{"free_gb": N}}`.
- Returns `503 Service Unavailable` with details if any critical dependency is down.
### S07.4 — Docker Resource Limits & Synology CPU CFS Fix
- **Files modified:** `dashboard/docker-compose.yml`, `claude-dev/docker-compose.yml`
- **Changes:**
- Set container memory limits (`mem_limit: 128m` for proxy, `mem_limit: 2g` for dashboard/claude-dev).
- Added a container health check block in the dashboard configuration.
- **Synology Kernel Portability Fix:** Initially, CPU limits (`cpus:`) were added. However, the Synology NAS kernel does not support the CPU CFS scheduler, causing the deployment workflow to fail with:
`Error response from daemon: NanoCPUs can not be set, as your kernel does not support CPU CFS scheduler...`
To resolve this, all `cpus:` constraints were removed, retaining only `mem_limit` (which is fully supported by Synology).
### S07.5 — Sidebar Integration (OpenConnector)
- **Files modified:** `dashboard/backend/config.py`, `dashboard/frontend/src/components/Sidebar.svelte`, `dashboard/frontend/src/App.svelte`
- **Changes:**
- Added OpenConnector (`https://connector.jimmygan.com` with LAN port 3002 bypass) as an external tool in the Sidebar config under the "Tools" section.
- Integrated OpenConnector into the command palette search index (`App.svelte`).
---
## Infrastructure & CI/CD Adjustments
### 1. Gitea SSH Ports Configuration (`~/.ssh/config`)
- Fixed Gitea repository authentication and remote sync issues.
- Updated `~/.ssh/config` to force Gitea host remotes (`100.78.131.124`, `gitea-nas`, `gitea-jp`, and LAN `192.168.31.222`) to use SSH Port `2222` instead of default Port `22`.
- Tied the LAN IP `192.168.31.222` to `IdentityFile ~/.ssh/id_ed25519_nas`.
### 2. CI/CD Deployment Verification
- CI workflows (Runs #1177, #1178, and #1179) were triggered for both `main` and `dev` branches.
- Verified that local containers `nas-dashboard` and `nas-dashboard-dev` are running and healthy on the Synology target.