HASS

Home Assistant op Synology in Docker Container

Ik ben de gelukkige eigenaar van een Synology DiskStation. Daarbij ben ik de gelukkige eigenaar van een Synology DiskStation welke Docker ondersteund. Heel kort gezegd biedt Docker de mogelijkheid om in afgezonderde containers een applicatie te draaien. Docker is het framework welke benodigd is, alles om de applicatie te laten werken zit in de Docker container. Dit heeft een aantal voordelen:

  • Applicaties kunnen geisoleerd uitgevoerd worden, er is grote controle over welke manier er interactie is met de host waar de container op draait;
  • Applicaties werken overal op dezelfde manier, ongeacht op welk platform de machine is geinstalleerd;
  • Applicaties zijn in de vorm van Docker containers makkelijk uitwisselbaar;
  • Applicaties zijn makkelijk te updaten;
  • enz…

In de korte tijd dat ik inmiddels gebruik maak van Docker ben ik echt een grote fan geworden. Een van mijn eerste toepassingen welke ik als Docker applicatie uitvoer is HomeAssistant. In een eerdere blogpost kan je natuurlijk al allemaal lezen wat er met HomeAssistant mogelijk is. Dit gaat specifiek over het draaien van HomeAssistant in Docker. Zoals hierboven geschreven heb ik geluk met mijn NAS, niet iedere NAS (ook niet iedere Synology) heeft de mogelijkheid om Docker containers te kunnen draaien. Alle details weet ik niet, maar volgens mij is het voornaamste dat het NAS een x86/x64 CPU moet hebben. Daarnaast is voldoende RAM ook wel een logische eis. Natuurlijk kan dit ook op een andere machine welke Docker containers host geplaatst worden. De werking zal globaal hetzelfde zijn.

Hoe ga je te werk?
Het is eigenlijk vrij simpel. Vanuit het package center installeer je de Docker omgeving.

Hierna zijn er een aantal opties. Ik zal met de simpelste beginnen. Je opent de Docker applicatie vanuit het menu. Daarna ga je naar de tab “Register”. In de zoekbalk type je “homeassistant”.

Vervolgens kan je het docker image downloaden door erop te dubbelklikken. Nadat de download is voltooid (is circa 2 Gb), ga je naar de tab “Image”. Hier zie je een knop starten. Wanneer je hierop klikt verschijnt er een configuratie scherm waarin je een aantal opties op kan geven. Een van de pluspunten in Docker is dat je een bestand of folder van de hostmachine kan mounten in de virtuele Docker container. Ik heb op mijn Synology een shared folder aangemaakt waarin ik voor al mijn Docker containers aparte mappen heb gemaakt welke gemount worden in de containers. Zo ook voor HomeAssistant. Het pad hiernaartoe is /docker/home-assistant (let op, hoofdlettergevoelig). Deze folder wordt gemount als de /config folder in de docker container. Daarnaast stel ik in dat het netwerk gedeeld wordt met de host (we willen de container immers eenvoudig kunnen benaderen). Mocht je een firewall actief hebben op je Synology moet je hiervoor de gebruikte poorten (in ieder geval poort 8123) opnemen in de lijst met uitzonderingen. Wellicht schrijf ik later nog een artikel over de exacte firewall configuratie.

Dit is eigenlijk alles om het snelst te starten met Synology en HomeAssistant.

In mijn geval had ik natuurlijk een extra uitdaging. Ik maak gebruik van een rflink gateway welke via USB gekoppeld is aan mijn Synology. En natuurlijk heb ik vanuit de grafische interface geen mogelijkheid om een USB device toe te voegen. Gelukkig is er nog altijd de commandline. Door achtereenvolgens de onderstaande commando’s te typen, wordt de HomeAssistant container gestopt indien deze actief is, verwijderd indien noodzakelijk, de laatste versie van het image gedownload, en tenslotte een nieuwe Docker container met dezelfde kenmerken aangemaakt.

  • docker pull homeassistant/home-assistant
  • docker stop home-assistant
  • docker rm home-assistant
  • docker run –name home-assistant –restart=always –net=host –privileged -itd -v /volume1/docker/home-assistant:/config –device /dev/ttyACM0 homeassistant/home-assistant

Let op, de commando’s moeten onder het root account uitgevoerd worden. Doordat de configuratie in een aparte folder staat, blijft deze tijdens de updates in tact.

Het allerlaatste is een automatiserings dingetje wat mooi meegenomen is. Op de Synology kan je periodieke taken uitvoeren. Ik heb bovenstaande commando’s in een taak geplaatst welke periodiek uitgevoerd wordt. Zodoende heb ik altijd een Docker container welke up-to-date is.