Files
Calix/firmware-pusher/README.md
T
astromech73 983ddd903b Initial commit: firmware pusher app, GenieACS docs, network file
- firmware-pusher/: standalone HTML app for GenieACS firmware pushes
- genieacs/: NBI API usage, device IDs, troubleshooting
- calix_home_network.txt: live network documentation
2026-05-21 09:38:51 -05:00

78 lines
2.0 KiB
Markdown

# GenieACS Firmware Pusher
Standalone HTML app for pushing firmware upgrades to GenieSpire satellites via GenieACS NBI API.
## Access
**URL:** `https://calix.yoda.ddnsgeek.com`
**Auth:** HTTP Basic Auth — `admin` + GenieACS admin password
## Setup
```bash
# On VPS (root@161.97.153.158)
cd /opt/firmware-pusher && docker compose up -d
```
## Architecture
```
User browser (HTTPS)
Traefik (calix.yoda.ddnsgeek.com → firmware-pusher container)
nginx:alpine (auth + static files)
firmware-pusher/index.html (the UI)
UI → NBI API: https://nbi.yoda.ddnsgeek.com/devices
(NBI also protected by same HTTP Basic Auth)
```
## Files
| File | Purpose |
|------|---------|
| `index.html` | The UI — single file, no build |
| `nginx.conf` | nginx config with auth |
| `.htpasswd` | HTTP Basic Auth password hash |
| `docker-compose.yml` | Container definition + Traefik labels |
## How It Works
1. **Device list** — fetches from `GET /devices` (NBI API)
2. **Firmware files** — fetches from `GET /files` (NBI API)
3. **Push** — POSTs to `POST /devices/{id}/tasks` with:
```json
{
"name": "download",
"fileType": "1 Firmware Upgrade Image",
"fileName": "FullRel_EXOS_SIGNED_E5_R25.2.0.0.img",
"productClass": "GigaSpire"
}
```
## Changing Password
```bash
# Generate new htpasswd
docker run --rm httpd:alpine htpasswd -nb admin NEW_PASSWORD
# Update the .htpasswd file, then:
docker exec firmware-pusher nginx -s reload
```
## Firmware Versions Available
| Version | File |
|---------|------|
| R23.3.0.5 | FullRel_EXOS_SIGNED_E5_R23.3.0.5.img |
| R24.1.0.2 | FullRel_EXOS_SIGNED_E5_R24.1.0.2.img |
| R24.4.0.0 | FullRel_EXOS_SIGNED_E5_R24.4.0.0.img |
| R25.2.0.0 | FullRel_EXOS_SIGNED_E5_R25.2.0.0.img |
## Troubleshooting
- **blank page / 404**: Check `docker logs firmware-pusher`
- **auth not working**: Verify `.htpasswd` exists inside container: `docker exec firmware-pusher cat /etc/nginx/.htpasswd`
- **push fails**: Check GenieACS fault queue at `https://genieacs.yoda.ddnsgeek.com`