ID.nl logo
Nooit meer afgeluisterd: aan de slag met lokale stembediening
© Akarat Phasura - stock.adobe.com
Huis

Nooit meer afgeluisterd: aan de slag met lokale stembediening

Wil je slimme apparaten in huis bedienen met je stem, zonder de cloud te gebruiken? Dit kan met Home Assistant. Er zijn een paar add-ons nodig en een apparaat om gesproken opdrachten mee te geven. In dit artikel gaan we dit opzetten en configureren.

Na het lezen van dit artikel weet je precies hoe je met Home Assistant spraakopdrachten kunt geven om je slimme huis te bedienen, en dat zonder meeluisteren van de grote partijen.

  • Add-on Piper installeren voor omzetting tekst naar spraak
  • Installatie add-on Whisper voor omzetting spraak naar tekst
  • Wekwoord instellen
  • ESPHome op Atom Echo installeren
  • Atom Echo aan Home Assistant toevoegen
  • Persoonlijke zinnen toevoegen

Toch liever een bekende spraakassistent? Meer dan muziek: kies jouw ideale slimme luidspreker

Sommige mensen worden enthousiast van slimme assistenten, anderen zien vooral bezwaren. Je geeft immers veel prijs aan partijen als Google, Amazon en Apple. Bijvoorbeeld via slimme luidsprekers – ‘afluisterapparaten’ zoals sceptici ze graag noemen. Gelukkig kun je prima alles lokaal houden. Home Assistant, de bekende software voor thuisautomatisering, gaf op dat vlak al vaak het goede voorbeeld.

Zonder tussenkomst van de cloud kun je je slimme huis bedienen, voor zover de fabrikant ook meewerkt natuurlijk. Het afgelopen jaar hebben de ontwikkelaars zich ingezet voor lokale stembediening. Dit is inmiddels beschikbaar, in meer dan vijftig talen. Langzaam wordt het steeds beter.

In dit artikel leggen we uit hoe je hiermee kunt starten. We beginnen met geschreven opdrachten, gevolgd door gesproken opdrachten. Voor spraakopdrachten gaan we met de Atom Echo aan de slag, een slimme luidspreker in dobbelsteenformaat.

©LukasPuchrik

Een slimme speaker van bijvoorbeeld Google is handig, maar je informatie wordt wel gedeeld met een clouddienst.

M5Stack Atom Echo Wil je knutselen met Home Assistant, dan is een microcontroller, zoals de ESP32, met de software ESPHome een ideaal uitgangspunt. ESPHome ondersteunt talloze accessoires zoals sensoren, lampjes en knopjes. In een configuratiebestand geef je aan wat je hebt aangesloten en op welke poort. Daarna komt alles tot leven. De integratie met Home Assistant zorgt dat ook daarin alles beschikbaar is.

In dit artikel werken we met de M5Stack Atom Echo (te koop voor ongeveer 15 euro). Dat is een ESP32-microcontroller voorzien van kleine luidspreker, microfoon, RGB-led en drukknop. Via een geautomatiseerd proces gaan we hierop ESPHome installeren, zodat je hem direct in Home Assistant kunt gebruiken. Het is waarschijnlijk de kleinste slimme luidspreker die je ooit hebt gezien. Je mag er geen wonderen van verwachten, maar het is een prima hulpmiddel om de stembediening uit te proberen.

Er zijn nog andere toepassingen. Daarvoor kun je de uitgebreide documentatie raadplegen.

1 Geschreven opdrachten

We beginnen met geschreven opdrachten. Hoewel niet heel spannend, is het een logische eerste stap. De assistent kun je oproepen via een icoontje rechtsboven in de beheeromgeving, onder Overzicht. Via het toetsenbord geef je opdrachten. Standaard is de taal op Engels ingesteld, maar we gaan dit veranderen naar Nederlands.

Ga hiervoor naar Instellingen / Spraakassistenten. Je kunt meerdere spraakassistenten maken, die verschillende talen spreken. Hier kiezen we ervoor om één Nederlandstalige assistent te activeren, die vanaf paragraaf 4 gaan configureren.

Klik op de assistent. Zorg dat onder het kopje Configuratie de taal op Nederlands staat. De instelling bij Gespreksagent wordt automatisch aangepast. De andere instellingen kun je nog ongemoeid laten, die komen verderop aan bod. Klik op Bijwerken om de veranderingen op te slaan.

We stellen de assistent in op de Nederlandse taal.

2 Naamgeving apparaten

Je kunt nu in het Nederlands vragen om bijvoorbeeld een apparaat aan of uit te zetten. De kans bestaat dat de assistent het apparaat niet kent, je moet namelijk precies de juiste naam gebruiken. Daarom gaan we extra namen toevoegen: zoek daarvoor het te bedienen apparaat op, bijvoorbeeld een koffiemachine. Open de instellingen voor het apparaat en kies Spraakassistenten. Zorg dat er een vinkje bij Ontsluiten staat. Dat is in principe standaard het geval.

Je kunt nu een voor een zogenoemde aliassen toevoegen, zoals koffie en koffiemachine. De assistent weet dan dat je met die woorden dat specifieke apparaat bedoeld. Het streven is om gesproken opdrachten te kunnen gebruiken. De hier toegevoegde aliassen zullen ook bij spraakopdrachten worden gebruikt.

We zorgen dat een apparaat onder meerdere namen beschikbaar is.

3 Pipelines

Voor stembediening zijn uiteraard een microfoon en luidspreker nodig. Hiervoor zijn diverse opties. Wij kiezen in dit artikel voor de Atom Echo. Home Assistant zal via spraak-naar-tekst de gesproken opdrachten om moeten zetten. En om een gesproken reactie terug te kunnen geven, is daarnaast tekst-naar-spraak nodig. De zogenoemde pipelines zijn verantwoordelijk voor deze omzettingen. Omdat we ons hier op lokale stembediening richten, zonder de noodzaak voor clouddiensten, moeten we hier wat software voor installeren.

Dat is eenvoudig dankzij de hiervoor beschikbare add-ons. Het gaat om Piper voor tekst-naar-spraak en Whisper voor spraak-naar-tekst. Over Whisper hebben we het in eerder gehad. Daarin gebruikten we het om transcripties te maken van audio en video. In Home Assistant wordt een snellere fork genaamd faster-whisper gebruikt. Die is tot vier keer sneller bij dezelfde nauwkeurigheid, terwijl minder geheugen nodig is.

We gaan enkele add-ons installeren voor het gebruiken van de lokale assistent.

Spraakopdrachten geven in Home Assistant Om spraakopdrachten te kunnen geven, heb je meerdere opties. Je zou op het systeem met Home Assistant een usb-microfoon (of usb-speakerphone) kunnen aansluiten. Dit vereist wel de extra add-on genaamd Assist Microphone. Gangbaarder zijn een pc, laptop, smartphone of tablet.

Home Assistant ondersteunt bovendien smartwatches met Wear OS, het besturingssysteem van Google (vroeger bekend onder de naam Android Wear). Dat besturingssysteem wordt onder meer gebruikt in de Samsung Galaxy Watch.

Een andere optie is een zelfgebouwde slimme luidspreker. Hierbij kun je een ESP32-microntroller gebruiken met de software ESPHome. Op de microcontroller moet je een kleine microfoon en eventueel een luidspreker aansluiten. De luidspreker zorgt dat je bevestigingen te horen krijgt. Wij gebruiken de M5Stack Atom Echo die dit alles standaard biedt. Hij heeft niet de hoogste kwaliteit, maar werkt prima voor ons doel.

4 Piper add-on installeren

Als eerste installeren we de add-on genaamd Piper voor de tekst-naar-spraak-omzetting. Ga hiervoor naar Instellingen / Add-ons en klik op Add-on winkel. Je vindt Piper onder het kopje Official add-ons. Klik er op, kies Installeer en open dan het tabblad Configuratie. Bij Voice kies je een taal en de gewenste kwaliteit. Voor de kwaliteit heb je de opties low, medium en high.

Het kan een uitdaging zijn om een goede optie te vinden voor de Nederlandse taal. Hier kiezen we als voorbeeld voor nl-rdh-medium. Je kunt ook altijd een van de andere modellen proberen voor een andere uitspraak. Klik op Opslaan om de wijzigingen te bewaren.

Ga dan naar het tabblad Informatie, zet een vinkje bij Watchdog en klik op Starten. Je kunt de integratie nu toevoegen aan Home Assistant. Onder Instellingen / Apparaten & diensten zie je dat de integratie voor Piper al is gevonden. Klik op Configureren en dan Verzenden om deze toe te voegen.

We installeren Piper en stellen de gewenste opties in.

5 Piper uitproberen

Je kunt de integratie eenvoudig uitproberen via Ontwikkelhulpmiddelen / Services. Zoek bij Service naar Text-to-speech (TTS): Spreek. Klik achter Doelen op Entiteit kiezen en kies piper. Achter Mediaspeler entiteit kies je een mediaspeler waarop het bericht moet worden afgespeeld. Achter Bericht voer je een tekstbericht in.

Klik op Service aanroepen om de omzetting uit te proberen. Als het goed is, wordt het tekstbericht nu netjes uitgesproken op de luidspreker. Vergelijk het resultaat eventueel met Google door bij Entiteit kiezen voor Google te kiezen. Zet een vinkje bij Taal en voer nl in als taal. Zie je die optie voor Google niet? Voeg dan de integratie Google / Google Translate text-to-speech toe.

Via de ontwikkelhulpmiddelen kun je lokale tekst-naar-spraak uitproberen.

6 Tekst naar spraak instellen

We kunnen nu ook de instellingen voor onze assistent aanpassen. Ga daarvoor naar Instellingen / Spraakassistenten en selecteer je assistent. Bij Tekst-naar-spraak kun je Piper met de gewenste taal en stem kiezen. We gaan hier uit van de stem nl-rdh-medium. Selecteer in dit geval bij Taal de optie nl_BE. Bij Stem kies je vervolgens rdh (medium).

Kies Stem proberen om het resultaat te beluisteren. Bij onverstaanbaar gebrabbel is het nodig de instellingen te wijzigen of een andere stem te proberen. Klik op Bijwerken als je tevreden bent.

We stellen Piper in voor tekst-naar-spraak met de gewenste taal en opties.

7 Whisper installeren

Je kunt nu de spraak-naar-tekst-add-on genaamd Whisper installeren. Ga hiervoor terug naar de add-on-winkel, klik onder Official add-ons op Whisper en kies Installeer. Ga dan naar het tabblad Configuratie. Selecteer bij Language de gewenste taal, in dit voorbeeld nl voor Nederlands. Bij Model kun je een model kiezen dat past bij de hardware die je gebruikt. De standaardoptie tiny-int8 is geoptimaliseerd voor een Raspberry Pi 4.

Een groter model is nauwkeuriger, maar vraagt ook meer van de gebruikte hardware. We raden aan hier wat mee te experimenteren. Op wat betere hardware kiezen we veelal small-int8.

Kies Opslaan als je klaar bent met het aanpassen van de configuratie. Ga dan terug naar het tabblad Informatie, klik op Watchdog / Starten. Voeg daarna ook de integratie voor Whisper toe onder Instellingen / Apparaten & diensten. Open ook weer de instellingen voor de assistent onder Instellingen / Spraakassistenten. Kies onder het kopje Spraak-naar-tekst voor faster-whisper met de taal Nederlands. Bewaar de aanpassingen met Bijwerken.

Bij de configuratie van Whisper is vooral het model belangrijk.

8 Wekwoord instellen

Je kunt een wekwoord (wake word in het Engels) gebruiken om de assistent op te roepen (zie ook het kader ‘Wekwoord gebruiken voor je assistent’). De herkenning van wekwoorden wordt meestal aan Home Assistant overgelaten. Hiervoor wordt de add-on open WakeWord gebruikt. Installeer deze via de add-on-winkel. Start daarna de add-on en voeg de integratie toe onder Instellingen / Apparaten & diensten.

Open daarna de instellingen van de assistent. Onder het kopje Wekwoord kies je bij Wekwoord engine de optie openwakeword met het gewenste wekwoord. We beginnen met ok nabu.

Je zou ook een eigen wekwoord kunnen maken via deze instructies. Daarnaast kun je door de community gemaakte wekwoorden downloaden.

Dankzij openWakeWord kun je de assistent oproepen met een commando.

Wekwoord gebruiken voor je assistent Bij een slimme luidspreker gebruik je een zogeheten wekwoord of wake word om de assistent op te roepen en vragen te stellen. Bijvoorbeeld ‘Hey, Google’ of ‘Alexa’. Zo’n wekwoord blijkt technisch een uitdaging: het woord moet snel worden herkend met weinig ruimte voor fouten. Vaak wordt het apparaat zelf gebruikt voor de interpretatie, geholpen door modellen die door AI zijn getraind.

In Home Assistant werkt het (meestal) anders. Om niet afhankelijk te zijn van specifieke hardware, wordt de interpretatie door Home Assistant gedaan. Bij detectie van spraak wordt een audiosample gemaakt en naar Home Assistant verstuurd voor verwerking. Wordt het wekwoord herkend, dan wordt de opdracht die erop volgde verwerkt. Een nadeel is: als je veel apparaten zoals de Atom Echo gebruikt, dan heb je relatief veel processorkracht nodig op het systeem waarop Home Assistant draait.

©Diego - stock.adobe.com

Net als bij slimme luidsprekers kun je een wekwoord gebruiken.

9 Verbinding maken

We gaan nu de vereiste software op de M5Stack Atom Echo installeren. In onze opstelling zal de Atom Echo gebruikmaken van ESPHome. Het installatieproces is flink vereenvoudigd. Hierbij moet je een gewone pc of laptop gebruiken, niet je smartphone of tablet. Ga in je browser naar de Atom Echo-tutorial van Home Assistant. Gebruik hierbij een Chromium-browser, zoals Google Chrome of Microsoft Edge.

Klik op die pagina op de blauwe knop Connect. Sluit de Atom Echo aan op je pc. In het pop-upvenster kun je nu Atom Echo selecteren, kies dan Verbinding maken. Zie je geen apparaat staan? Sluit dan het venster. Je ziet nu direct enkele verwijzingen naar relevante drivers, waaronder de CH342-driver die nodig is voor de Atom Echo. Download en installeer deze drivers. Klik daarna op Try Again.

Via het pop-upvenster kun je verbinding maken en software installeren.

10 Software installeren

Zodra er verbinding is gemaakt kun je via hetzelfde pop-upvenster de software installeren. Kies daarvoor Install Voice Assistant gevolgd door Install. Mislukt de installatie? Probeer het dan opnieuw, maar houd de resetknop ingedrukt terwijl je op Install klikt. Let op: dat is de knop aan de zijkant, niet de hoofdknop aan de bovenkant bij de luidspreker.

Is de installatie klaar, kies dan Next. Je kunt nu het wifi-netwerk kiezen dat de Atom Echo moet gaan gebruiken en het bijbehorende wachtwoord invoeren. Vul dit in en klik op Connect. Nadat je de wifi hebt ingesteld, wordt er geprobeerd om verbinding te maken. Daarna verschijnt als het goed is de melding dat de Atom Echo is verbonden met Home Assistant.

Na de installatie kun je het wifi-netwerk voor de Atom Echo instellen.

11 Toevoegen aan Home Assistant

Met de link Add to Home Assistant kun je de Atom Echo aan Home Assistant toevoegen. Of je doet dit handmatig: ga hiervoor naar Instellingen / Apparaten & diensten. Je ziet je apparaat wellicht al in het overzicht staan. Klik in dat geval op Configureren en Verzenden.

Zie je de Atom Echo niet? Kies dan Integratie toevoegen en zoek de Atom Echo op onder ESPHome. Als je daarna de integratie opzoekt, zie je wat extra opties. Zo is er een sensor die aangeeft of de Atom Echo bezig is met het verwerken van een spraakopdracht, omdat het bijvoorbeeld je wekwoord heeft opgevangen.

Je wekwoord is standaard actief. Dat zie je aan het vinkje bij Use wake word. Zet je dit uit, dan moet je de hoofdknop indrukken voordat je een opdracht inspreekt. Heb je meerdere spraakassistenten? Dan kun je bij Assistentie-pipeline kiezen welke assistent de Atom Echo moet raadplegen.

De integratie biedt nog wat extra opties die je kunt instellen.

12 Persoonlijke zinnen

Wat de assistent nog een stuk krachtiger maakt, is dat je persoonlijke zinnen kunt gebruiken om een automatisering te starten. Hiervoor maak je een nieuwe automatisering. Kies dan als trigger de optie Zin. Je kunt nu de tekst invullen die als trigger moet dienen. Vervolgens kies je eventuele voorwaarden en acties.

Je kunt ook wildcards in de zin opnemen. Die wildcards kun je dan als variabele gebruiken in je automatisering. Het is raadzaam om de assistent ook een reactie te laten geven. Daarvoor kun je een actie toevoegen. Deze vind je onder Andere acties / Gespreksreactie instellen.

Je kunt een automatisering maken met als trigger een specifieke zin.

▼ Volgende artikel
Bouw je eigen dashboard met Homepage: al je webapplicaties overzichtelijk op één plek
Huis

Bouw je eigen dashboard met Homepage: al je webapplicaties overzichtelijk op één plek

Heb je meer dan een handvol webapplicaties op een Linux-server draaien? Dan is een dashboard met links naar deze applicaties een uitkomst. Het project Homepage biedt precies dat, inclusief widgets die allerlei statistieken van je services weergeven. In dit artikel installeren we Homepage en laten we je zien hoe je het integreert met je bestaande services.

Dit gaan we doen

In deze masterclass richten we een persoonlijk dashboard in met Homepage. Je leert hoe je de tool installeert in Docker, services groepeert en uitbreidt met widgets voor statistieken zoals cpu- en geheugengebruik, uptime of weersinformatie. We laten zien hoe je containers automatisch herkent, monitoring toevoegt en ook bladwijzers of alternatieve dashboards gebruikt. Zo krijg je één centrale plek waar je al je webapplicaties en services snel terugvindt en beheert.

Lees ook: Windows gebruiken naast of binnen Linux? Zo krijg je het soepel aan de praat met Docker


⬇️ Code downloaden

In dit artikel staat voorbeelden met YAML-code. Omdat YAML erg gevoelig is voor foute spaties en inspringingen, kun je die code beter downloaden en daarna bekijken of kopiëren. Zie het bestand homecode.txt, beschikbaar via deze link.


Homepage helpt je om diverse webapplicaties in één dashboard te organiseren. Dit is handig als je services in Docker-containers draait of eenvoudig toegang wilt tot de beheerpagina’s van apparaten zoals je modem, router en NAS.

Hoewel dit klinkt als een veredelde bookmark-manager, doet Homepage meer dan alleen links op een pagina verzamelen. Het project ondersteunt widgets voor meer dan honderd services en kan zo bijvoorbeeld het cpu- en geheugenverbruik van je hypervisor of het aantal ongelezen artikels in je RSS-lezer tonen. Je hoeft daardoor vaak zelfs niet op de links te klikken om even snel de status van je services te bekijken.

Docker Compose

We gaan ervan uit dat je een Linux-server hebt waarop je services met behulp van Docker Compose in Docker-containers draait. Homepage draai je dan gewoon in een Docker-container naast je bestaande services, al zijn er ook andere installatie-opties. In ons voorbeeld draaien we Docker op Debian 12. Maak om te beginnen een map waarin de container van Homepage zijn data en configuratie kan opslaan, met deze opdracht:

$ mkdir -p containers/homepage

Zet vervolgens in je bestand docker-compose.yml (het bestand waarin je al je containers definieert) een service voor Homepage:

services:

  homepage:

    image: ghcr.io/gethomepage/homepage:latest

    container_name: homepage

    ports:

      - 3000:3000

    volumes:

      - /home/koan/containers/homepage:/app/config

    environment:

      HOMEPAGE_ALLOWED_HOSTS: debian.home:3000

    restart: unless-stopped

Homepage kun je op diverse manieren installeren.

Homepage opstarten

Wijzig in het gedefinieerde volume de directory vóór de dubbele punt naar het volledige pad van de directory die je voor de container hebt aangemaakt. Stel de waarde van de omgevingsvariabele HOMEPAGE_ALLOWED_HOSTS gelijk aan het domein of het ip-adres van de host, gescheiden door een dubbele punt van het poortnummer. Als je met een reverse proxy werkt, zet je hier het domein waarop de applicatie via die proxy bereikbaar is.

Start de container met:

$ docker-compose up -d

Zodra het image gedownload is en de container draait, open je Homepage in je browser op de url die je in HOMEPAGE_ALLOWED_HOSTS hebt gedefinieerd. Je ziet dan een voorbeeldpagina met van boven naar onder een header, groepen met services en groepen met bladwijzers.

Het standaarddashboard van Homepage vlak na de installatie.

Informatiewidgets

In de header vind je enkele informatiewidgets. Hoewel deze niet de kern van de functionaliteit van Homepage uitmaken, bieden ze nuttige aanvullende informatie. Standaard zie je het cpu-verbruik, het beschikbare geheugen en de vrije schijfruimte van de host. Er is ook een tekstveld om te zoeken via DuckDuckGo. De definitie van deze twee widgets vind je in het bestand widgets.yaml in de directory van de Homepage-container.

In de online documentatie van de informatiewidgets lees je hoe je hun gedrag aanpast. Zo kunnen we de widget Resources ook de uptime van het systeem laten tonen (uptime: true) en met de optie expanded: true meer informatie over de cpu, het geheugen en de schijfruimte laten weergeven. De widget ziet er dan als volgt uit in widgets.yaml:

- resources:

    label: System

    expanded: true

    cpu: true

    memory: true

    uptime: true

    disk: /

Weersomstandigheden

Homepage biedt twee widgets om het weer in de header te tonen: één via Open-Meteo en één via OpenWeatherMap. De eerste vereist geen registratie, dus daarvoor hoef je alleen maar de gps-coördinaten van je locatie in te voeren. In widgets.yaml ziet dat er als volgt uit:

- openmeteo:

    label: Attenrode

    latitude: 50.8773405

    longitude: 4.9213237

    timezone: Europe/Brussels

    units: metric

    cache: 5

    format:

      maximumFractionDigits: 1

Met cache: 5 laten we de widget de weergegevens vijf minuten lang cachen om de servers van Open-Meteo te ontlasten. Verder biedt Homepage nog andere informatiewidgets aan, bijvoorbeeld voor beurskoersen of de datum en tijd.

In de header van Homepage plaats je allerlei informatiewidgets.

Services toevoegen

De kernfunctionaliteit van Homepage ligt uiteraard in het groeperen van services in één dashboard. De standaardconfiguratie voegt drie groepen toe met elk één service. De YAML-code hiervoor vind je in het bestand services.yaml. Vervang die door je eigen groepen. Je kunt bijvoorbeeld een groep Network aanmaken met links naar de beheerinterfaces van je modem/router en accesspoints:

- Network:

  - Proximus:

      href: http://192.168.1.1

      description: Modem

      icon: mdi-web

  - OpenWrt:

      href: http://gl-mt3000.home

      description: Accesspoint

      icon: openwrt

De eigenschap icon kan een absolute url zijn of een naam uit de lijst op de website Dashboard Icons. Begin de naam van een pictogram met mdi- voor een keuze uit Material Design Icons , met si- voor een keuze uit Simple, of met sh- voor een keuze uit Self-Hosted Dashboard Icons.

Ook groepen kunnen een pictogram krijgen. Dat definieer je dan in het bestand settings.yaml:

layout:

  Network:

    icon: mdi-lan-connect

  Infrastructure:

    icon: mdi-server-network

  Services:

    icon: mdi-apps

Services en groepen kun je pictogrammen geven, bijvoorbeeld van de website Self-Hosted Dashboard Icons.

Servicewidgets

Tot nu toe lijkt ons dashboard wat op een veredeld lijstje met bladwijzers. Maar Homepage ondersteunt ook servicewidgets voor meer dan honderd services. Controleer in de lijst of je services ondersteund zijn. Draai je bijvoorbeeld OPNsense op je router, dan krijg je met de volgende widget de processorbelasting, het gebruikte geheugen, en de upload- en downloadhoeveelheden van je WAN-interface te zien:

- OPNsense:

      href: https://opnsense.home

      description: Router

      icon: opnsense

      widget:

        type: opnsense

        url: https://opnsense.home

        username: KEY

        password: SECRET

Voor username en password vul je de API-sleutel en het ‘secret’ in die je in de webinterface van OPNsense aanmaakt via System / Access / Users. De documentatie van Homepage voor de OPNsense-widget legt dit gedetailleerd uit. Wil je slechts een deel van de statistieken zien, dan kan dat door de widget uit te breiden met een regel als:

fields: ["wanDownload", "wanUpload"]

Homepage ondersteunt widgets voor meer dan honderd services.

Meerdere widgets

Je kunt een service ook van meerdere widgets voorzien. Dat is bijvoorbeeld handig bij monitoringtools zoals Uptime Kuma. Voeg aan de OPNsense-service dan de OPNsense-widget toe voor servicespecifieke statistieken en de widget van Uptime Kuma voor beschikbaarheidsstatistieken. In plaats van één object widget bevat de service dan een object widgets met een lijst die beide widgets bevat:

  - OPNsense:

      href: https://opnsense.home

      description: Router

      icon: opnsense

      widgets:

        - type: opnsense

          url: https://opnsense.home

          username: KEY

          password: SECRET

        - type: uptimekuma

          url: https://uptime-kuma.rubus.home

          slug: router

          fields: ["uptime", "incident"]

De widget van Uptime Kuma gebruikt data van een statuspagina. Die moet je dus eerst in Uptime Kuma aanmaken, en de naam van de statuspagina vul je bij slug in de widget in. Als de statuspagina bijvoorbeeld toegankelijk is via https://uptime-kuma.rubus.home/status/router, dan is de slug router.

Homepage kan een statuspagina van Uptime Kuma in een service integreren.

Beschikbaarheid monitoren

Ook zonder speciale monitoringtools kun je met Homepage eenvoudig te zien krijgen of al je services momenteel online zijn. Dat kan met de eigenschap ping of siteMonitor in de service. Voeg bijvoorbeeld aan de service voor OPNsense ping: opnsense.home toe. Homepage stuurt dan regelmatig een ICMP-echopakket (ping) naar de host en toont de beschikbaarheid in de rechterbovenhoek van het kader van de service.

Met siteMonitor: https://opnsense.home daarentegen voert Homepage een HTTP HEAD-verzoek uit naar de url om te controleren of de webpagina beschikbaar is. Zo weet je niet alleen dat de host online is, maar ook dat de webserver tenminste draait en de pagina aanbiedt. Let op dat je hier de volledige url met https:// of http:// dient te gebruiken. De stijl van de getoonde status kun je overigens in settings.yaml aanpassen met bijvoorbeeld statusStyle: dot of statusStyle: basic.

Enkele services met pictogrammen, widgets en statusinformatie.

Docker-containers integreren

Als je services in Docker-containers draait, kan Homepage via de API van de Docker-engine statistieken over die containers opvragen en zelfs automatisch services herkennen. Configureer hiervoor een Docker-instance voor Homepage in docker.yaml. Als je Homepage met de Docker-socket laat verbinden, kan dat met de volgende configuratie:

local-docker:

  socket: /var/run/docker.sock

In je Docker Compose-bestand moet je deze socket als volume in de Homepage-container aankoppelen:

    volumes:

      - /home/koan/containers/homepage:/app/config

      - /var/run/docker.sock:/var/run/docker.sock

Docker Socket Proxy

Een veiliger alternatief om Homepage toegang tot Docker te geven, is via Docker Socket Proxy. Je laat die laatste dan rechtstreeks met de Docker-socket verbinden en de andere containers via een HTTP API beperkte bevoegdheden geven. Voeg daarvoor in je Docker Compose-bestand de volgende service voor Docker Socket Proxy toe:

  docker-socket-proxy:

    image: ghcr.io/tecnativa/docker-socket-proxy:0.3.0

    container_name: docker-socket-proxy

    volumes:

      - /var/run/docker.sock:/var/run/docker.sock:ro

    environment:

      CONTAINERS: 1

    restart: unless-stopped

Standaard geeft Docker Socket Proxy sterk ingeperkte API-toegang tot de Docker-engine, en sowieso alleen-lezen. Met de omgevingsvariabele CONTAINERS: 1 geven we toegang tot informatie over containers, precies wat Homepage nodig heeft.

Wijzig nu in het bestand docker.yaml de definitie van local-docker naar:

local-docker:

  host: docker-socket-proxy

  port: 2375

Omdat de container van Docker Socket Proxy zich in hetzelfde netwerk als Homepage bevindt, is die onder de naam docker-socket-proxy bereikbaar, wat we hier als host invullen.

Maak dan de containers opnieuw aan met de opdrachten:

docker-compose down

docker-compose up -d

Containers monitoren

Containers die in hetzelfde Docker Compose-bestand als Homepage zijn gedefinieerd, kun je nu door die laatste laten monitoren. Je moet dan bij de service in services.yaml de Docker-server en de naam van de container opgeven, bijvoorbeeld:

- Services:

  - FreshRSS:

      href: http://debian.home:8081

      description: Feed aggregator

      icon: freshrss

      server: local-docker

      container: freshrss

De waarde van server is hier de naam van de Docker-instance in docker.yaml, namelijk local-docker. De waarde van container is hier de naam van de container, gedefinieerd in container_name in het Docker Compose-bestand.

Na het herladen van de webpagina van Homepage krijgt de FreshRSS-service de status RUNNING in de rechterbovenhoek of EXITED wanneer de container gestopt is. Klik op de status voor gedetailleerdere statistieken zoals de processorbelasting, het geheugengebruik en netwerkverkeer.

Services automatisch detecteren

Elke keer dat je nu een service toevoegt, moet je de container aan je Docker Compose-bestand toevoegen en een definitie van de service aan het bestand services.yaml van Homepage. Maar Homepage ondersteunt ook het automatisch detecteren van services voor containers met behulp van labels. Met deze aanpak hoef je services.yaml niet meer bij te werken en hoef je slechts één bestand te veranderen. Voor FreshRSS kan dat bijvoorbeeld als volgt:

  freshrss:

    image: docker.io/freshrss/freshrss:1.26.1-alpine

    container_name: freshrss

    ports:

      - 8081:80

    volumes:

      - /home/koan/containers/freshrss/data:/var/www/FreshRSS/data

      - /home/koan/containers/freshrss/extensions:/var/www/FreshRSS/extensions

    environment:

      CRON_MIN: "1,31"

      TZ: Europe/Brussels

    restart: unless-stopped

    labels:

      - homepage.group=Services

      - homepage.name=FreshRSS

      - homepage.href=http://debian.home:8081

      - homepage.description=Feed aggregator

      - homepage.icon=freshrss

In de labels van deze container geef je dus aan dat je in de groep Services een service met de naam FreshRSS toevoegen, met de gegeven link, beschrijving en pictogram. De opties server en container uit de vorige paragraaf zijn met deze aanpak overbodig, omdat Homepage deze automatisch via de API van de geconfigureerde Docker-instance verkrijgt. Na opnieuw het uitvoeren de volgende twee commando’s ontdekt Homepage automatisch de service en voegt deze aan de juiste groep toe:

docker-compose down

docker-compose up -d

Widgets

Op dezelfde manier kun je widgets toevoegen via labels. In het voorbeeld uit de vorige stap voeg je dan de volgende labels toe:

      - homepage.widget.type=freshrss

      - homepage.widget.url=http://freshrss

      - homepage.widget.username=USER

      - homepage.widget.password=PASSWORD

Wil je meerdere widgets aan een container toevoegen, geef dan elk widget een index:

      - homepage.widgets[0].type=freshrss

      - homepage.widgets[0].url=http://freshrss

      - homepage.widgets[0].username=USER

      - homepage.widgets[0].password=PASSWORD

      - homepage.widgets[1].type=uptimekuma

      - homepage.widgets[1].url=https://uptime-kuma.rubus.home

      - homepage.widgets[1].slug=freshrss

Wanneer je nu de container van FreshRSS opnieuw aanmaakt en opstart, detecteert Homepage de widgets en toont ze bij de service.

Alternatieven voor Homepage

Hoewel Homepage een krachtige tool is, zijn er talrijke alternatieven om een dashboard voor al je services te maken, elk met hun eigen benadering. Houd je niet van YAML-configuraties, dan biedt Homarr een gebruiksvriendelijk alternatief om met slepen en neerzetten allerlei services toe te voegen.

Ook populair is Heimdall. Het is minder naar eigen smaak aan te passen dan Homepage of Homarr, maar daardoor eenvoudig om mee aan de slag te gaan.

Bevalt de aanpak met YAML-bestanden je wel, maar ligt Homepage je niet helemaal, kijk dan eens naar Dashy.

Bookmarks

Tot slot kan Homepage ook gewone bladwijzers aan je dashboard toevoegen. Je kunt ze net op dezelfde manier als services groeperen, maar het zijn slechts links zonder extra functionaliteiten zoals widgets en monitoring. Bladwijzers definieer je in het bestand bookmarks.yaml van Homepage, dat er standaard als volgt uitziet:

- Developer:

  - GitHub:

    - abbr: GH

      href: https://github.com

- Social:

  - Reddit:

    - abbr: RE

      href: https://reddit.com

- Entertainment:

  - YouTube:

    - abbr: YT

      href: https://youtube.com

Vervang deze groepen met bladwijzers door jouw eigen keuzes. Dit is bijvoorbeeld handig om alle links naar portaalsites of accounts bij belangrijke diensten op één pagina te verzamelen. Homepage toont dan per groep een lijst met bladwijzers met hun afkorting (de waarde van abbr), naam en het domein van de link.

Wil je in plaats van een afkorting een pictogram bij een bladwijzer tonen, gebruik dan icon in plaats van abbr en geef daar net zoals bij services de naam van een pictogram op. En vul description bij een bladwijzer in om een beschrijving in de plaats van het domein te zien. Ook de groepen van bladwijzers kun je een pictogram geven. Net zoals voor de groepen van services definieer je die pictogrammen in settings.yaml.

Een volledig dashboard van Homepage met header, services en bladwijzers.

En verder

Homepage biedt nog veel meer mogelijkheden dan we hier kunnen behandelen. Vooral in het bestand settings.yaml zijn er nog allerlei aanpassingen mogelijk. Zo kun je een achtergrondafbeelding instellen en daarop allerlei filters toepassen. Ook het thema en het kleurenpalet, die je beide via pictogrammen onderaan de pagina kunt aanpassen, zijn vast in te stellen.

Ook de lay-out van het dashboard is configureerbaar. Zo neemt standaard elke groep een kolom in, waarbij de services onder elkaar komen te staan. Maar met style: row bij een groep laat je de services in die groep naast elkaar in een rij weergeven. Ook het aantal kolommen, de stijl van de header en nog meer zijn in te stellen.

Homepage is tot in de kleinste details aan te passen.

Speciaal voor de jongste Linux-fans

(dit vinden ze zeker leuk!)
▼ Volgende artikel
Waar voor je geld: 5 mini-pc's als desktop- of laptopvervanger
© ID.nl
Huis

Waar voor je geld: 5 mini-pc's als desktop- of laptopvervanger

In de rubriek Waar voor je geld gaan we op zoek naar producten voor een mooie prijs die je leven makkelijk(er) maken. Werk je vaak thuis, maar is je werkplek niet al te groot? Dan kun je overwegen om een klein formaat pc aan te schaffen. Een mini-pc voldoet aan die behoefte, het enige dat nodig is, is een aparte monitor.

Een mini-pc kan een goede oplossing zijn voor thuiswerkplekken die niet al te groot zijn, of waar je simpelweg gewoon een opgeruimder bureau wil hebben. Mini-pc's zijn compact, maar snel en veelzijdig genoeg om er je gewone werk op te doen of om op te gamen. Wij vonden vijf krachtige mini-pc's voor je.

Acer Revo Box RB102-01W Mini

De Acer Revo Box RB102-01W Mini is een compacte computer die zijn rekenkracht ontleent aan een Intel Core Ultra 5 125U processor. Deze processor is ontworpen om een balans te bieden tussen prestaties en energie-efficiëntie. Voor het uitvoeren van je dagelijkse taken en het wisselen tussen verschillende applicaties beschikt het systeem over 8 GB aan DDR5 werkgeheugen. De opslag van je bestanden, software en het besturingssysteem wordt verzorgd door een 512 GB SSD, wat bijdraagt aan snelle opstart- en laadtijden. Qua connectiviteit kun je gebruikmaken van een reeks poorten. Zo zijn er meerdere USB-aansluitingen beschikbaar voor je randapparatuur. Voor het aansluiten van beeldschermen is de mini-pc uitgerust met zowel een HDMI- als een DisplayPort-uitgang. Om verbinding te maken met een netwerk, is er een 2.5 Gigabit Ethernetpoort aanwezig. Het systeem wordt geleverd met Windows 11 voorgeïnstalleerd.

Specificaties

Formaat: 13,1 x 13,1 x 4,3 cm
Processor:
Intel Core Ultra 5 125U
Werkgeheugen:
8 GB DDR5
Harde schijf:
512 GB SSD
Netwerk:
Wifi 6E, Bluetooth, 2.5 Gigabit LAN

MSI Cubi 5 12M-002EU

De MSI Cubi 5 12M-002EU is een rappe mini-pc van slechts 12,4 × 12,4 × 5,4 centimeter. Via de bijgesloten VESA-beugel monteer je de behuizing optioneel achterop een pc-monitor. Ondanks het nogal kleine formaat betreft het een volwaardige pc waarop je één of twee schermen kunt aansluiten. Gebruik hiervoor de HDMI- en/of DisplayPort-aansluiting aan de achterzijde. Verder zien we hier twee netwerk- en usb-poorten. Via drie usb-ingangen aan de voorzijde sluit je makkelijk randapparaten aan. Voor draadloze communicatie heeft de binnenzijde een bluetooth- en wifi-adapter.

In het kleine 'doosje' zit een ssd van 512 GB. Hierop is Windows 11 Pro voorgeïnstalleerd. Om die reden leent de Cubi 5 12M-002EU zich goed voor zakelijke gebruikers, want deze Windows-editie beschikt over extra veiligheidsfuncties. De Intel Core i5-1235U-processor voldoet voor dagelijkse pc-taken prima. Deze processor heeft tien rekenkernen waarvan de snelste twee zijn afgeregeld op een maximale klokfrequentie van 4,4 GHz. Tot slot is er een geheugenmodule van 8 GB RAM ingebouwd. Blijkt dat op den duur onvoldoende, dan kun je eventueel upgraden naar maximaal 64 GB RAM. Deze mini-pc is als alternatief ook met meer rekenpower verkrijgbaar.

Specificaties

Formaat: 12,4 x 12,4 x 5,4 cm
Processor:
Intel Core i5-1235U
Werkgeheugen:
8 GB DDR4
Harde schijf:
512 GB SSD
Netwerk:
Wifi 6E, Bluetooth 5.3, 1x Gigabit LAN, 1x 2.5 Gigabit LAN

Lenovo ThinkCentre M70q Gen 5 Mini PC 

De Lenovo ThinkCentre M70q Gen 5 is een compacte computer die zijn prestaties haalt uit een Intel Core i5-14400T processor. Voor het uitvoeren van je taken en het draaien van software is het systeem voorzien van 16 GB aan DDR5 werkgeheugen. Dit type geheugen heeft een hogere snelheid dan zijn voorganger, DDR4. Als het gaat om de opslag van je bestanden en programma's, dan maak je gebruik van een 512 GB SSD. De aanwezigheid van een SSD is van invloed op de opstarttijd van de computer en de laadsnelheid van je applicaties. Verbindingen met het internet en je lokale netwerk leg je via de ingebouwde Wi-Fi 6 (802.11ax) module of de aanwezige ethernetpoort. Voor het koppelen van randapparatuur zoals een monitor, muis of extern opslagapparaat, beschikt de mini-pc over een variatie aan poorten, waaronder HDMI, DisplayPort en meerdere USB-aansluitingen. Het besturingssysteem dat vooraf geïnstalleerd is, is Windows 11 Pro.

Specificaties

Formaat: 17,9 x 18,3 x 3,7 cm
Processor:
Intel Core i5-14400T
Werkgeheugen:
16 GB DDR5
Harde schijf:
512 GB SSD
Netwerk:
Wifi 6E, Bluetooth 5.3, Gigabit LAN

DELL OptiPlex 3000 Thin Client - N6005

De DELL OptiPlex 3000 in deze Thin Client-uitvoering is een systeem dat is ontworpen voor specifieke computertaken. Het apparaat draait op een Intel Pentium Silver N6005 processor, een chip die de basis vormt voor de functionaliteit. Voor het werkgeheugen is er 16 GB RAM aanwezig, wat van invloed is op de prestaties bij het gebruiken van meerdere programma's. De opslag bestaat uit een SSD met een capaciteit van 256 GB, waarop het besturingssysteem en je applicaties worden geïnstalleerd. Dit model is uitgerust met Dell ThinOS, een specifiek besturingssysteem dat is gericht op het werken met virtuele desktopomgevingen. Voor het aansluiten van je apparatuur beschikt de computer over diverse poorten. Je vindt er onder andere USB 3.2-poorten, een netwerkaansluiting en twee DisplayPort-uitgangen voor het koppelen van beeldschermen. De compacte behuizing maakt het mogelijk om het systeem op verschillende manieren te plaatsen

Specificaties

Formaat: 18,2 x 17,8 x 3,6 cm
Processor:
Intel Pentium Silver N6005
Werkgeheugen:
16 GB DDR4
Harde schijf:
256 GB SSD
Netwerk:
Gigabit LAN

Blackview MP100 Mini PC

Binnen de compacte behuizing van de Blackview MP100 vind je een AMD Ryzen 7 5825U processor, een chip met 8 kernen die de taken van het systeem verwerkt met een maximale turbofrequentie van 4.5 GHz. Voor het gelijktijdig gebruiken van verschillende programma's is het systeem, afhankelijk van de uitvoering, voorzien van 16 GB of 32 GB DDR4 werkgeheugen. Mocht je in de toekomst meer geheugen nodig hebben, dan is dit uit te breiden tot een maximum van 64 GB. De opslag van je bestanden en software wordt verzorgd door een M.2 SSD, met een capaciteit van 512 GB of 1 TB. Qua verbindingen heb je de beschikking over Wi-Fi 6 en Bluetooth 5.2 voor draadloze connectiviteit. Fysieke aansluitingen zijn er ook volop: het apparaat heeft onder andere USB 3.2-poorten, twee Type-C poorten, een HDMI-aansluiting en een DisplayPort. Hiermee kun je tot drie 4K-beeldschermen tegelijk aansturen. Het vooraf geïnstalleerde besturingssysteem op dit model is Windows 11 Pro.

Specificaties

Formaat: 12,8 x 12,8 x 5,2 cm
Processor: AMD Ryzen 7 5825U
Werkgeheugen:
16 GB of 32 GB DDR4
Harde schijf:
512 GB of 1 TB SSD
Netwerk:
Wifi 6, Bluetooth 5.2, Gigabit LAN