Nieuw jaar, nieuwe hardware en nieuwe containers.
Een nieuw jaar beginnen met nieuwe hardware en nieuwe containers en de bijbehorende migratie van de ene hardware naar de andere was een hele leerzame met name ook voor het testen van de backup en restore strategie.
De nieuwe hardware was helaas een tegenvaller, ik had een HP Z620 gekocht op marktplaats met 2 nvidia quadro M2000 videokaarten er in. Ik had me beter in de hardware moeten verdiepen, dan had ik dit systeem niet gekocht en daarnaast ging het ook nog eens na een week kapot en heb ik nu een flinke stapel oud ijzer.
Waar ik me meer in had moeten verdiepen was het stroomverbruik, want dat liep wel heel hard op en daarnaast waren de videokaarten zo oud dat de laatste drivers deze hardware niet meer ondersteunden en dat ik op zoek moest gaan naar oudere drivers. Toen ik daar eenmaal achter was dat de M2000 tot maximaal versie 580 ondersteund werden en ik het systeem eindelijk helemaal werkend had inclusief Immich en Frigate begaf de voeding en/of het moederbord het en ga ik nu weer zoeken naar iets nieuws.
Dockhand vervangt Portainer, Watchtower en Dozzle
Dockhand is een nieuwe container manager die enkele functies van andere containers combineert en verbeterd. De meest voor de hand liggende is Portainer, de functionaliteit voor stoppen en starten van containers wordt overgenomen door Dockhand. Een extra functie is dat het in Dockhand mogelijk is om docker-compose files die beschikbaar zijn te deployen. Dat kon natuurlijk ook in Portainer, maar dan moest de docker file wel aan de portainer standaarden voldoen en dit zijn "gewone" docker-compose files.
De functionaliteit van Dozzle om de logging te verzamelen wordt ook overgenomen door Dockhand. Het is ook mogelijk om de logging van verschillende containers te groeperen in 1 overzicht om zo de onderlinge samenhang te zien ieder met zijn eigen kleuren.
De Watchtower functionaliteit voor het bijwerken van containers is ook aanwezig in Dockhand zelfs inclusief geautomatiseerde controle met o.a. Trivvy op beveiligings issues.
Voor remote management kan op de remote servers Hawser geinstalleerd worden om op die manier ook die servers via Dockhand te beheren.
Tandoori, Databasus en Homebox
Drie nieuwe containers met verschillende doelen.
Tandoori
Tandoori is een recepten website, met als mooie optie om recepten die je online vindt gemakkelijk te importeren waarbij de stappen (ook in het nederlands) meteen worden herkend en opgesplitst. Een andere mooie feature is dat je per stap de ingredienten kan toevoegen om zo een makkelijk overzicht te krijgen tijdens het koken.
Databasus
Databaseus maakt backups van PostgreSQL databases. Zorg dat de database ook in hetzelfde docker netwerk hangt als Databasus en een backup is met enkele kliks geregeld. Ook de restore kan vanuit deze container geregeld worden.
Homebox
Homebox is een inventaris tool. Wat heb ik en waar is het. Maak verschillende locaties aan, hier is een hele uitgebreide structuur mogelijk om zo bijvoorbeeld een kamer aan te maken als locatie en in die kamer is een locatie voor een kast en in de kast is een locatie voor een plak of la enz. En iedere locatie kan voorzien worden van een QR code zo heb ik nu een aantal dozen voorzien van QR code en kan ik door te scannen zien wat er in zit. Of nog beter op de site zoeken wat ik nodig heb en dan te zien krijgen waar ik het heb opgeborgen.
LogSeq
Voor het personal knowledge management ben ik LogSeq aan het proberen in plaats van Obsidian. De blokken structuur van LogSeq past beter bij mijn stijl van per dag de zaken bijhouden en dan op basis van inspringen (blokken) groeperen naar onderwerpen. Ten opzichte van de meer pagina structuur van Obsidian. Het blijft wel Markdown, dus de ook hier blijft de data makkelijk behouden.
Kleine optimalisaties
Enkele kleine wijzigingen die zorgen voor een optimaler homelab.
Mobius
Mobius gebruik ik om mijn telefoon te synchroniseren met Syncthing. Op het moment dat ik niet met mijn eigen netwerk was verbonden en ik toch wil synchroniseren maak ik eerst verbinding met Wireguard en vervolgens is synchroniseren mogelijk. Het duurt dan echter heel lang voordat de Syncthing container is gevonden. Dat heb ik versneld door in de configuratie van Mobius de IP adressen voor mijn Syncthing container hard te zetten. Hierdoor hoeft er minder gezocht te worden en is Mobius sneller verbonden.
NFS rechten voor Immich
Ineens waren al mijn foto's weg in Immich en stond mijn library op Offline. Dit bleek uiteindelijk een issue te zijn met NFS rechten die niet goed stonden. Door dat weer goed te zetten kwamen alle foto's weer terug.
Alleen uppercase/lowercase wijziging in GIT
Als je alleen de casing wil wijzigen voor een bestand wat door GIT beheerd wordt, dan wordt dat op windows niet gezien als een wijziging. Om nu toch de wijziging te forceren kan git mv gebruikt worden. Op deze manier "move" je een bestand even naar een ander bestand om het vervolgens in de juiste casing te zetten.
Dus bijvoorbeeld: git mv UPPERCASE.txt UPPERCASE.tmp gevolgd door git mv UPPERCASE.tmp uppercase.txt en de casing aanpassing kwna worden ingecheckt.
HomeAssistant updates
In automatiseringen is het mogelijk om een webhook trigger aan te maken die vervolgens door andere services aangeroepen kan worden om op die manier automatiseringen te starten zoals bijvoorbeeld het sturen van een notificatie. Zo heb ik mijn NPM backup geautomatiseerd met een script welke door een cronjob wordt aangeroepen en aan het einde van het script wordt de webhook aangeroepen en krijg ik een notificatie dat de backup is voltooid.
#!/bin/bash
# === CONFIG ===
SOURCE_DATA="/data/npm/data/data"
SOURCE_LETS="/data/npm/data/letsencrypt"
BACKUP_ROOT="/data/npm/backup"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
TARGET="$BACKUP_ROOT/$DATE"
echo "=== Nginx Proxy Manager Backup ==="
echo "Backup map: $TARGET"
mkdir -p "$TARGET"
echo "Kopieer database en configuratie (zonder logs)..."
rsync -avh \
--exclude "log/" \
--exclude "*.tmp" \
--exclude "*.bak" \
--exclude "*.log.*" \
--exclude "*.log"\
"$SOURCE_DATA/" "$TARGET/data/"
echo "Kopieer Let's Encrypt certificaten..."
rsync -avh \
--exclude "*.tmp" \
--exclude "*.bak" \
"$SOURCE_LETS/" "$TARGET/letsencrypt/"
echo "Backup voltooid op $(date)"
echo "Verwijder backups ouder dan 30 dagen..."
find "$BACKUP_ROOT" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
echo "Opruimen voltooid."
# === Home Assistant notificatie ===
curl -X POST \
-H "Content-Type: application/json" \
-d '{"message": "NPM backup voltooid"}' \
https://homeassistant....../api/webhook/xxxx
echo "Notificatie verstuurd"
Automatisering in Home Assistant
# trigger
trigger: webhook
allowed_methods:
- POST
- PUT
local_only: true
webhook_id: "xxxx"
# notificatie
action: notify.mobile_app_
metadata: {}
data:
message: NPM Backup done