In production since: January 25, 2026
Server: Debian 13, Ryzen 5 5600GT, 16 GB RAM, 250 GB NVMe SSD
Version: see backend/pyproject.toml or the top of CHANGELOG.md — not repeated here, this line sat at 1.23.0 while the project was at 1.38.0 (#349)
| Component | Status | Details |
|---|---|---|
| Backend | Active | FastAPI/Uvicorn, 4 workers, port 8000 |
| Frontend | Active | Vite build, static files via Nginx |
| Database | Active | PostgreSQL 17.7, localhost:5432 |
| Reverse Proxy | Active | Nginx, port 80 (HTTP) |
| Auto-Start | Active | Systemd services enabled |
| Logging | Active | Structured JSON logging |
| Measure | Status |
|---|---|
| CORS configuration | Configured |
| Rate limiting | Active (API: 100/s, Auth: 10/s) |
| SQL injection protection | SQLAlchemy ORM |
| Security headers | CSP, X-Frame-Options, HSTS, X-Content-Type-Options |
| Password policy | 8+ chars, upper/lower/digit, blacklist |
| Token management | Access (15 min) + Refresh (7 days) with JTI |
| Audit logging | DB-backed, all security-relevant actions |
| VPN keys | Fernet encrypted |
| Sensitive data | Redaction in admin DB inspection |
- Pytest suite — size in the Testing row of
README.md(machine-maintained) - CI/CD pipeline via GitHub Actions
- Automatic tests on push/PR
| Service | Function |
|---|---|
| Monitoring Orchestrator | Collect CPU, RAM, network, disk I/O |
| Scheduler | Scheduled tasks (backups, cleanup) |
| WebDAV | Network file access |
| Power Management | CPU frequency scaling |
| Fan Control | PWM fan control with temperature curves |
| Service Status | Health monitoring of all services |
| Enhancement | Status |
|---|---|
| SSL/HTTPS | Not configured (access via VPN) |
| Email notifications | Not implemented |
| Database replication | Not configured (single instance) |
- Daily: Check RAID status (automatic via monitoring)
- Weekly: Check SMART data, monitor storage space
- Monthly: System updates, PostgreSQL VACUUM
- As needed: Alembic migrations after updates
PostgreSQL backup:
pg_dump -U baluhost baluhost > backup_$(date +%Y%m%d).sqlFiles:
rsync -av /opt/baluhost/storage/ /backup/storage/Last content change: git log -1 --format=%ad -- docs/deployment/PRODUCTION_READINESS.en.md