Management of sidainfo management
# SIDAInfo Update Server
Central update distribution server for the **SIDAInfo** health facility information system in Burundi. Clinic sites running SIDAInfo automatically check this server for new releases, download them, and report their installed version back.
Built with **Laravel 12**, **MySQL 8**, and **PHP 8.2-FPM** in Docker. In production, the VPS nginx on the main host serves `public/` and forwards PHP requests to the app container.
---
## Table of Contents
- Architecture
- Features
- Prerequisites
- Development Setup
- Server Deployment
- First-time setup
- Staging vs production
- Subsequent deployments
- Manual nginx setup
- Upgrading a Live Server
- How data is preserved
- Standard upgrade procedure
- After specific releases
- Rollback procedure
- Environment Variables
- Admin UI
- API Reference
- Backup & Restore
- Running Tests
---
## Architecture
```
┌──────────────────────────────────────────────────────────┐
│ VPS host │
│ │
│ ┌──────────────┐ fastcgi ┌─────────────────┐ │
│ │ Host nginx │ ─────────────────▶│ PHP-FPM app │ │
│ │ serves public│ │ container :9000 │ │
│ └──────────────┘ └────────┬────────┘ │
│ ▲ │ │
└─────────┼─────────────────────────────────────┼──────────┘
│ │
SIDAInfo site instances Docker network
│
┌────▼────┐
│ MySQL 8 │
│ db │
└─────────┘
```
| Container | Image | Role |
|-----------|-------|------|
| `app` | `php:8.2-fpm` (custom) | Laravel application |
| `db` | `mysql:8.0` | Database |
**Persistent data** lives in named Docker volumes — not on the host filesystem:
| Volume | Contains |
|--------|----------|
| `dbdata` | MySQL database files |
| `releases_storage` | Uploaded release ZIP archives |
Both staging and production run as separate Docker Co …