8793cfdbf5dda72f3998f1113c2553acc60f5185
aggiunto a .gitignore le cartelle .gitea e .github Signed-off-by: truetype <max.mauri@gmail.com>
Backup Orchestrator (bckWinRsync)
Sommario
- Client Windows PySide6 che manda richieste HTTPS a un Orchestrator FastAPI.
- Server Debian su Proxmox che esegue job
rsyncin pull verso/srv/backup/currentcon storicizzazione (.history/<run_id>) e retention 20 esecuzioni. - Sicurezza LAN con HTTPS, SSH, logging strutturato, validazione path e protezioni sulle credenziali.
Requisiti principali
- Il client gestisce profili e selezione di cartelle, abilitando “Esegui” solo con almeno una destinazione valida.
- Il pulsante “Esegui” invia credenziali SSH e percorsi al backend, che crea un job e lo mette in coda.
- Il job runner server si connette via SSH al client e invoca
rsync --backup --backup-dir=/srv/backup/.history/<run_id>, senza--delete. - Le cancellazioni upstream non si propagano:
/currentmantiene i file attivi e.historyconserva le versioni precedenti fino a 20 run. - Il client mostra log/progress via GUI, notificando il completamento o eventuali errori.
config.json(vicino all’eseguibile) definisce profili, cartelle, endpoint API, compressione e toggle dello schedulerschtasks. Lo scheduler può essere attivato o disattivato per chiamare l’API autonomamente.
Non funzionali
- Affidabilità tramite job idempotenti con lock e timeout.
- Performance differenziali con
rsync -a --info=progress2 --compressopzionale e--partial. - Manutenibilità grazie a separazione chiara tra GUI, orchestratore e runner/logging.
- Sicurezza con token JWT, HTTPS, SSH limitato all’utente
backupsvc, DPAPI per credenziali e log rotati.
Architettura
- Client PySide6: profili, scheduler switch, log real-time, polling stato API (
/backup/status/{job_id},/backup/log/{job_id}). - Orchestrator FastAPI + Uvicorn: espone
/auth/login,/profiles,/backup/start,/backup/status,/health; usa DB (SQLite/Postgres) per job e log. - Job Runner (systemd): serializza job, invia comandi SSH verso il
sshdWindows, aggiorna stato job e archivia log/retention. - Backup Storage:
/srv/backup/currentper il dataset attivo,/srv/backup/.history/<run_id>per versioni storiche.
API e sicurezza
- Autenticazione via
/auth/loginche restituisce JWT con scadenza, ratelimit e lockout. - Validazione input (allow-list cartelle, no path traversal) e logging strutturato JSON senza password.
- HTTPS con certificati self-signed o CA interna; SSH consentito solo dall’IP del server verso
backupsvccon shell limitata. - Retention 20 run con task di cleanup che elimina
.historypiù vecchi.
Scheduling e configurazione
- Switch PySide6 gestisce
schtasksche esegueBackupClient.exe --autocon token, se abilitato. - Configurazione opzionale per credenziali via DPAPI o prompt ogni esecuzione.
- Job runner esegue
rsynccon lock e retry/timeout configurabili.
Fasi previste
- Setup server: Debian, storage
/srv/backup, rsync, OpenSSH client/server, permessi. - Orchestrator: API start/status/log, DB, job queue, retention automatica.
- Client PySide6: GUI, log, scheduler sincronia, config e packaging.
- Windows helper: script attivazione OpenSSH/rsync, firewall e permessi.
- QA/hardening: logging, rate limit, test end-to-end e threat modeling leggero.
Checklist sicurezza
- SSH da server solo verso IP autorizzato e
backupsvc. - Password SSH mai loggate, prompt o DPAPI.
- HTTPS interno gestito con cert e rotazione log (logrotate).
- Validazione input e cron job cleanup.
- Utente Linux
backupsvccon directory700, log640.
Deliverable attesi
- Repo server: FastAPI, runner, doc/install, test.
- Repo client: PySide6, config schema, scheduler script, rsync portable.
- Documentazione: manuale utente, runbook admin, threat model, checklist.
- CI: lint/test/build/release pipeline.
Description
Backup orchestrator Windows client + Proxmox server con job rsync pull e retention storica
Languages
Python
89.7%
PowerShell
6.8%
Batchfile
2.6%
Shell
0.9%