journalctl -u micro
102 subscribers
2.4K photos
237 videos
294 files
1.64K links
Esperienze e consigli di uno sviluppatore tech−unenthusiast

creation — 2021-04-29
owner — @Microeinstein ★

networks
• @sigma_hub Σ
• @ageiroumena †
Download Telegram
journalctl -u micro
ci sono entrati i ladri in casa
Tornando a questo evento, mi ha lasciato notevolmente violato e mi ha costretto a informarmi su tutti gli hardware e software di videosorveglianza.

Inizialmente ho installato Frigate, un Network Video Recorder self-hosted che
• si interfaccia a qualsiasi camera che supporti RTSP per video e audio
• e ONVIF per il controllo remoto — anche se per questo supporta solo i controlli di movimento PTZ (pan, tilt, zoom)
• supporta per singola telecamera:
• l'accelerazione hardware video (sotto usa ffmpeg, intel quicksink)
• face detection tramite modellini AI in formato ONNX (girano bene anche su CPU con openvino)
• object + motion detection tramite modellini YOLO che dovete fornire voi
• classificatore oggetti (porta aperta / chiusa)
• audio activity detection
• audio bidirezionale (sì, potete parlare)
• maschere di trigger e non-trigger
• revisione allerte
• eventi MQTT

Per avere subito una "telecamera" funzionante, ho collegato una webcam in disuso tramite USB e l'ho posizionata proprio sopra al rack, che veda da dentro casa la porta d'ingresso e alcune finestre. Tramite comandi custom go2rtc l'ho esposta internamente via RTSP.

Tuttavia, anche se l'interfaccia presenta delle impostazioni, le vere funzionalità si attivano e configurano tutte tramite un unico file yaml. Francamente non è facilissimo capire come scegliere i tuning giusti per non far sovraccaricare il sistema ma mantenere un effettivo funzionamento.
journalctl -u micro
ho collegato una webcam in disuso
Una singola webcam non basta, ma dove posso installare altre telecamere e soprattutto COME posso collegarle? Mi sono studiato un piano, che sto ancora cercando di realizzare per mancanza di strumentazione:
• 1~2 telecamere PTZ, da esterni, con PoE (per non far passare due cavi infiniti)
• Matassa di cavo ethernet CAT5e per esterni da 100m
• Connettori RJ45 unshielded, staggered, non pass-through
• Gommini RJ45
• Crimpatrice e spella-cavi RJ45
• Guaina spiralata (i cavi non si mettono a contatto con il cemento diretto)
• Switch con PoE injector (mai arrivato dopo 1 mese, ne ho ordinato un altro)
• MARTELLO PERFORATORE (altrimenti 20cm di cemento non li buchi)
• PUNTE SDS PLUS da 600mm (per trapassare i piani e non lasciare liberi 50m di cavo)
• Occhialini protettivi

Inizialmente pensavo di installare una telecamera sul lato interno del muretto di casa, portando il cavo solo ethernet sino in garage e lì installare lo switch PoE, ma sarebbe stata una posizione troppo bassa e facilmente raggiungibile.

Per il momento quindi ho "posizionato" una telecamera sul balcone della mia finestra — che punta dritta al terrazzino da cui erano passati — con ethernet e barrel jack ben serrati, ma schiacciati dal frame della finestra stessa...

Per la seconda telecamera invece ora sto valutando una posizione che scende dal tetto, il passaggio dei cavi dovrà avvenire nel sottotetto e di sicuro sarà più rognoso perché non ci sono prese di corrente.
journalctl -u micro
Photo
Secondo voi tutto questo è sufficiente? Vi sbagliate di grosso. Ora come posso gestire al meglio tutti quegli HDD collegati?

Ho valutato a lungo opzioni di RAID particolari tipo RAID5, software mdadm vs hardware, ecc, ma niente mi convinceva abbastanza:

1. Ogni forma di RAID agisce sui blocchi diretti, quindi se non si hanno tutti i dischi collegati con lo stesso setup non si potrà recuperare NULLA, ad eccezione del mirroring che però costringe a dimezzare la capacità totale.

2. Il RAID5 sembra particolarmente pericoloso, in quanto non appena fallisce un disco ecco che gli altri (e tutto lo storage) rimarranno esposti (e con più carico da gestire); dovete scambiare subito il disco fallato con uno nuovo e attendere la ricostruzione del RAID — tutti i dischi dovranno essere riletti da cima a fondo — durante tutta questa attesa, se anche solo un secondo disco fallisce, avete perso TUTTO.

3. Con tante scritture continue soprattutto in caso di ricostruzione, usare dischi SMR sarebbe deleterio in quanto per loro natura compattano più blocchi nelle stesse zone fisiche, quindi devono riscrivere tutto ogni volta distruggendo la velocità di scrittura.

4. Avrei dovuto gestire un altro stack ulteriormente delicato, con monitoraggio attivo e notifiche immediate in caso di problemi (la maggior parte dei software in questo fa schifo, ad esempio fino a qualche mese fa e non so ad oggi, ZimaOS che non uso nemmeno si accorge dei RAID degradati).

L'opzione più allettante era costruire un RAID6 tra quei 3 HDD da 500GB più una ugual partizione 500GB su un disco più capiente (sì si può fare), ma ho trovato uno stack diverso molto più particolare e semplice:
MergerFS + SnapRAID

Il primo riesce a sommare delle cartelle qualsiasi sotto un unico mountpoint — pensate ad un OverlayFS, agisce a livello di files, ma tutti i layer rimangono scrivibili e ogni nuovo file finisce nella cartella più appropriata in base alla configurazione e alle capacità rimanenti. Non è neanche necessario usare lo stesso filesystem su tutti i dischi. Se uno si guasta, comunque tutto il resto rimane accessibile.

Il secondo invece, da usare sul mountpoint unificato, crea dei file di ridondanza stile RAID5 di cui sarà MergerFS a decidere dove posizionare (oppure si potranno mettere sui singoli dischi direttamente?). Questi snapshot non sono in tempo reale, vanno pianificati, ma il lato positivo è che le performance dei dischi durante un normale utilizzo non vengono intaccate.

Inoltre con questa combo anche le letture e i consumi di corrente non costringeranno tutti i dischi ad attivarsi per un singolo file.

Devo ancora studiare come installare il tutto.
journalctl -u micro
Devo ancora studiare come installare il tutto.
E dopo tutto questo manca ancora

Lato software
• stack *arr con supporto musica
• stack monitoring (grafana, loki, prometheus, alloy, rotazione dei log, etc...)
• Uptime Kuma?
• Home Assistant
• forse una dashboard tipo Glance ma non monospace
• effettivo nextcloud (installato ma inutilizzato)
• client sui vari dispositivi
• Immich
• Obsidian + blog Quartz + RSS
• aggiornamento automatico immagini docker (da stare attenti, non voglio aprire le porte ad attacchi supply chain)
• backup automatici di pc (e telefoni?)
• ????

Lato hardware
• smart plug Shelly tipo L
• Socket RJ45 con presa a muro?
• UPS con monitoring per NUT (sì avete letto bene)
• Hub USB che sono già a corto di porte
• Cavo IEC C13 90° appena scoperto che esistono
• Magari un adattatore barrel jack 12V / PSU
• Rimpiazzare gli altri cavi e jumper fatti a mano con qualcosa di più professionale?
journalctl -u micro
le vere funzionalità si attivano e configurano tutte tramite un unico file yaml
99-creative-mic.rules
278 B
La mia configurazione. Quasi dimenticavo, siccome il microfono della webcam arriva da ALSA diretto, è necessario fissare il nome del dispositivo tramite udev, altrimenti ad ogni riavvio cambia l'id...