Implementation status and verification results for the SIAAS infrastructure. This page tracks what's been done, what's outstanding, and what needs ongoing attention.
| Area | Item | Date | Verified |
|---|---|---|---|
| Architecture | Architecture wiki page updated with current state (IPs, services, nginx host config, database correction) | 2026-07-01 | Yes |
| Infrastructure Dashboard | System-level view built (/infrastructure/system/) showing all client VPS at a glance |
2026-07-01 | Yes |
| Infrastructure Dashboard | Link added to Super-User Dashboard for system-level infra view | 2026-07-01 | Yes |
| Database Fix | env.production corrected from dsp_clinic_dev (corrupted) → dsp_clinic (production) |
2026-07-01 | Yes |
| Container Restart | Keycloak, PostgreSQL, Redis restarted after 4-hour outage | 2026-07-01 | Yes |
| IP Stability | App container port-mapped to 127.0.0.1:8000 to prevent IP drift on restart |
2026-07-01 | Yes |
| Nginx Fix | Upstream IPs corrected for gp.veripath.co.uk and test-client.gp.veripath.co.uk | 2026-07-01 | Yes |
| Wiki-manage.py | DB host and API URL updated to current container IPs | 2026-07-01 | Yes |
| Priority | Area | Item | Target |
|---|---|---|---|
| High | Client Provisioning | Build provisioning workflow UI to trigger new client VPS setup via OpenCode | Next sprint |
| Medium | Billing | Client VPS billing app (usage-based pricing, invoicing, payment collection) | Future |
| Medium | Container Watchdog | Investigate root cause of simultaneous postgres/redis/keycloak exit on 2026-06-30 | TBD |
| Low | Backup Monitoring | Add automated alerting for missed client VPS backups (currently log-only) | TBD |
| Low | Off-site Backup | Add rsync/SCP transfer of client backups to principal VPS or S3 (currently local-only) | TBD |
| Low | Wiki-manage.py | Remove hardcoded IPs; use container DNS names or config file | TBD |
/infrastructure/system/)auth.veripath.co.uk/realms/veripath/account)gp.veripath.co.uk)docker logs gp_booking_app --tail 50df -hsudo wg showenv.productioninfrastructure/SIAAS/cold_standby)Containers on the gp_booking_app_gp_booking_network bridge network get new IPs on restart. Mitigated by port-mapping key services to host ports, but the wiki-manage.py, nginx upstreams for internal services, and monitoring scripts still use hardcoded Docker IPs.
Mitigation: Use docker run -p for external-facing services; use container DNS names (gp_booking_app, keycloak, etc.) for inter-container communication.
A partial/corrupted copy of the production database exists at dsp_clinic_dev. It was created at some point (possibly for development/testing) and its migration table shows 170 applied migrations, but the actual tables are mostly missing (only 26 tables vs 107 in dsp_clinic). The env.production was accidentally pointed here on 2026-06-25.
Status: Fixed 2026-07-01. The database can be dropped once confirmed it's not needed.
Cold standby requires manual DNS switch and database restore. No active-active or automatic failover is configured.
Status: Acceptable for current scale. Revisit when client count exceeds 10.
Several wiki pages reference stale IPs, wrong URL paths, and outdated service configurations. The architecture page has been updated (2026-07-01), but other pages may still be out of date.
Status: Architecture page updated. Other pages to be reviewed in next documentation audit.
| Date | Decision | Rationale | Status |
|---|---|---|---|
| 2026-07-01 | Changed nginx upstream from Docker IP to 127.0.0.1:8000 |
Container IPs change on restart; host port mapping is stable | Implemented |
| 2026-07-01 | Re-created app container without docker-compose | Entrypoint conflict; CMD was sleep 3600 which bypassed gunicorn startup; standalone docker run with env_file is more explicit |
Implemented |
| 2026-07-01 | Added app_name to infrastructure/urls.py |
Needed for URL reversing in templates | Implemented |
| 2026-07-01 | Built system-level infra dashboard at /infrastructure/system/ |
Separate from per-tenant view at /infrastructure/; superuser-only |
Implemented |