Setup Hetzner Storage Box per recordings
Prerequisiti
- Storage Box BX11 gia' usata per i backup Akira.
- Sub-user SFTP
akira-stagingo equivalente configurato nel pannello Hetzner. - Chiave ed25519 autorizzata sulla Storage Box e installata dal role
rtpenginein/var/lib/rtpengine/.ssh/storagebox_ed25519. - Variabili vault condivise con TASK-36/TASK-38:
vault_storagebox_host: "uXXXXX.your-storagebox.de"
vault_storagebox_user: "akira-staging"
vault_storagebox_password: "..."
vault_storagebox_ssh_key: "..."
vault_storagebox_host_pubkey: "uXXXXX.your-storagebox.de ssh-ed25519 ..."
Directory remota
I recordings RTPengine vengono caricati nella stessa Storage Box, separati dai dump e dai WAL:
/backups/recordings/YYYY/MM/DD/call-<uuid>.wav
Lo script upload_recordings_sftp.py crea le directory mancanti via SFTP. Il
file viene caricato come .tmp e rinominato solo a upload completato.
Deploy
Il role rtpengine installa:
- dipendenze Python:
python3-paramiko,python3-psycopg2; - script:
/opt/akira/scripts/upload_recordings_sftp.py; - env:
/etc/akira/recording-upload.env; - chiave:
/var/lib/rtpengine/.ssh/storagebox_ed25519(rtpengine:rtpengine, mode0600); - timer:
recordings-upload-sftp.timer, ogni 5 minuti.
Verifica manuale:
sudo systemctl status recordings-upload-sftp.timer
sudo systemctl start recordings-upload-sftp.service
sudo journalctl -u recordings-upload-sftp.service -n 100 --no-pager
Path applicativo
Il timer carica i file locali da /var/spool/rtpengine/finished e aggiorna
cdr.recording_path con URI:
sftp://uXXXXX.your-storagebox.de/backups/recordings/YYYY/MM/DD/call-<uuid>.wav
I vecchi CDR eventualmente gia' valorizzati con URI s3:// restano storico
legacy; il nuovo formato canonico per TASK-97 e' sftp://.
Retention 90 giorni
La retention recording e' 90 giorni, separata dalla retention dump PG di 30
giorni. Finche' non esiste un cleanup dedicato per /backups/recordings, usare
il helper SFTP gia' presente:
python3 /opt/akira/scripts/sftp_cleanup.py \
--host "${STORAGEBOX_HOST}" \
--user "${STORAGEBOX_USER}" \
--key /var/lib/rtpengine/.ssh/storagebox_ed25519 \
--remote-dir /backups/recordings \
--days 90
FinOps
Storage Box BX11 fornisce 1 TB flat a circa EUR 3.20/m ed e' condiviso tra:
- pg_dump: circa 150 GB stimati;
- WAL: circa 50 GB stimati;
- recordings: circa 500 GB stimati in produzione iniziale.
L'alert Storage Box usage >85% resta il guard rail operativo. Se i recordings superano circa 700 GB stabili, rivalutare backend storage dedicato in una ADR successiva.