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
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user