{"id":557,"date":"2026-07-04T00:19:40","date_gmt":"2026-07-03T22:19:40","guid":{"rendered":"http:\/\/192.168.86.160:8080\/?p=557"},"modified":"2026-07-04T23:58:08","modified_gmt":"2026-07-04T21:58:08","slug":"raspberry-pi-installeren-met-ssd-boot-tailscale-en-home-assistant-voor-externe-toegang","status":"publish","type":"post","link":"https:\/\/pcgsm.nl\/ohh\/2026\/07\/04\/raspberry-pi-installeren-met-ssd-boot-tailscale-en-home-assistant-voor-externe-toegang\/","title":{"rendered":"Raspberry Pi installeren met SSD\u2011boot, Tailscale en Home Assistant voor externe toegang"},"content":{"rendered":"<p>\nIn deze handleiding leg ik uit hoe je een Raspberry Pi instelt als Tailscale\u2011subnetrouter, zodat een externe locatie veilig toegang krijgt tot een Home Assistant\u2011installatie op een andere plek.<br \/>\nDeze setup is gebaseerd op een echte situatie tussen twee locaties: Thuis en vakantie adres.\n<\/p>\n<hr>\n<h2>1. Raspberry Pi voorbereiden<\/h2>\n<p>\nInstalleer Raspberry Pi OS Lite (64\u2011bit) met Raspberry Pi Imager. Schakel SSH in, stel een hostname in en configureer WiFi indien nodig.<br \/>\nInstalleer het OS direct op een SSD voor maximale stabiliteit.\n<\/p>\n<pre><code>sudo apt update\nsudo apt upgrade -y\n<\/code><\/pre>\n<hr>\n<h2>2. Tailscale installeren<\/h2>\n<p>Tailscale maakt een veilige VPN\u2011verbinding tussen apparaten zonder ingewikkelde firewall\u2011instellingen.<\/p>\n<p>Installeren:<\/p>\n<pre><code>curl -fsSL https:\/\/tailscale.com\/install.sh | sh\n<\/code><\/pre>\n<p>Starten en aanmelden:<\/p>\n<pre><code>sudo tailscale up\n<\/code><\/pre>\n<p>Status controleren:<\/p>\n<pre><code>tailscale status\n<\/code><\/pre>\n<p>Je ziet nu een <strong>100.x.x.x<\/strong> Tailscale\u2011IP.<\/p>\n<hr>\n<h2>3. Subnet Router inschakelen<\/h2>\n<p>Een subnetrouter zorgt ervoor dat apparaten op locatie A apparaten op locatie B kunnen bereiken.<\/p>\n<h3>IP\u2011forwarding inschakelen<\/h3>\n<p>Tijdelijk:<\/p>\n<pre><code>sudo sysctl -w net.ipv4.ip_forward=1\n<\/code><\/pre>\n<p>Permanent:<\/p>\n<pre><code>sudo nano \/etc\/sysctl.conf\nnet.ipv4.ip_forward=1\n<\/code><\/pre>\n<p>Reboot de Pi.<\/p>\n<h3>LAN\u2011routes adverteren<\/h3>\n<p>Voorbeeld LAN: <strong>192.168.86.0\/24<\/strong><\/p>\n<pre><code>sudo tailscale up --advertise-routes=192.168.86.0\/24\n<\/code><\/pre>\n<p>Ga naar de Tailscale\u2011adminconsole en keur de route goed.<\/p>\n<p>Nu werkt de Pi als <strong>subnetrouter<\/strong>.<\/p>\n<hr>\n<h2>4. Waarom HA Voice niet werkt via Tailscale<\/h2>\n<p>\nOp de externe locatie kan de PC Home Assistant bereiken via Tailscale, maar HA Voice niet.\n<\/p>\n<h3>HA Voice kan w\u00e9l:<\/h3>\n<ul>\n<li>Lokale LAN\u2011IP\u2019s bereiken<\/li>\n<li>Publieke internet\u2011URL\u2019s bereiken<\/li>\n<\/ul>\n<h3>HA Voice kan niet:<\/h3>\n<ul>\n<li>Tailscale\u2011IP\u2019s bereiken<\/li>\n<li>LAN\u2011IP\u2019s van een ander netwerk<\/li>\n<li>Subnetroutes gebruiken<\/li>\n<\/ul>\n<p>\nDaarom werkt een adres zoals:\n<\/p>\n<pre><code>http:\/\/100.x.x.x:8123\/api\/esphome\/...\n<\/code><\/pre>\n<p>\nwel op de PC, maar niet op HA Voice.\n<\/p>\n<hr>\n<h2>5. Oplossing: gebruik de externe URL van Home Assistant<\/h2>\n<p>\nHA Voice werkt overal als Home Assistant een publieke URL heeft, bijvoorbeeld:\n<\/p>\n<p><strong>https:\/\/extern_url.nl<\/strong><\/p>\n<p>Instellen in Home Assistant:<\/p>\n<p><strong>Instellingen \u2192 Systeem \u2192 Netwerk \u2192 Home Assistant URL\u2019s<\/strong><\/p>\n<pre><code>Internal URL: http:\/\/192.168.86.85:8123\nExternal URL: https:\/\/extern_url.nl\n<\/code><\/pre>\n<p>Nu werkt HA Voice vanaf elke locatie.<\/p>\n<hr>\n<h2>6. Music Assistant correct instellen<\/h2>\n<p>\n<!-- WordPress Code Editor Kopieerbaar Blok --><\/p>\n<p>Heb je een <strong>Home Assistant Voice Preview Edition (Voice PE)<\/strong> op een externe locatie staan (bijvoorbeeld op een vakantieadres of kantoor) en wil je hierop muziek streamen vanaf je Music Assistant-server thuis?<\/p>\n<p>Als je probeert te streamen over een VPN, loop je vaak tegen een bekend probleem aan: de stream loopt op je scherm, maar je hoort pure stilte. Dit komt omdat de Voice PE de audio-URL rechtstreeks via het lokale IP-adres van je thuisnetwerk probeert op te halen, en dat netwerk kent hij niet.<\/p>\n<p>Omdat je op een ESPHome-apparaat zoals de Voice PE geen Tailscale kunt installeren, lossen we dit op met een slimme netwerktruc via een lokale Raspberry Pi. In deze blog leg ik je stap voor stap uit hoe je dit inricht, <strong>zonder dat je thuisspeakers stoppen met werken!<\/strong><\/p>\n<hr class=\"wp-block-separator\" \/>\n<h2>De Opstelling<\/h2>\n<ul>\n<li><strong>Thuislocatie:<\/strong> Home Assistant-server met de Music Assistant add-on actief.<\/li>\n<li><strong>Externe locatie:<\/strong> Een Raspberry Pi met Tailscale (ingesteld met een subnet router) \u00e9n de Home Assistant Voice PE.<\/li>\n<\/ul>\n<hr class=\"wp-block-separator\" \/>\n<h2>Stap 1: IP Forwarding aanzetten op de externe Raspberry Pi<\/h2>\n<p>Om de Raspberry Pi te veranderen in een slimme doorgeefsluis voor netwerkverkeer, moeten we eerst IP Forwarding inschakelen in Linux.<\/p>\n<p>Log in via SSH op de externe Raspberry Pi en voer het volgende commando uit:<\/p>\n<pre class=\"wp-block-code\"><code>sudo sysctl -w net.ipv4.ip_forward=1<\/code><\/pre>\n<p>Om te zorgen dat deze instelling ook na een stroomuitval of herstart actief blijft, zetten we hem permanent vast in de configuratie:<\/p>\n<pre class=\"wp-block-code\"><code>echo \"net.ipv4.ip_forward = 1\" | sudo tee -a \/etc\/sysctl.conf<\/code><\/pre>\n<h2>Stap 2: NAT\/Masquerade instellen via iptables<\/h2>\n<p>We gaan nu de ingebouwde firewall (<code>iptables<\/code>) van de Raspberry Pi vertellen dat hij netwerkverkeer van de Voice PE moet accepteren en moet vermommen (masqueraden) over de Tailscale-tunnel (<code>tailscale0<\/code>).<\/p>\n<p>Controleer eerst met <code>ip link<\/code> of jouw bekabelde netwerkkaart inderdaad <code>eth0<\/code> heet (vervang dit door <code>wlan0<\/code> als je Pi op wifi werkt). Voer daarna deze drie commando&#8217;s uit:<\/p>\n<pre class=\"wp-block-code\"><code>sudo iptables -t nat -A POSTROUTING -o tailscale0 -j MASQUERADE\nsudo iptables -A FORWARD -i eth0 -o tailscale0 -j ACCEPT\nsudo iptables -A FORWARD -i tailscale0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT<\/code><\/pre>\n<h2>Stap 3: De Voice PE rechtstreeks naar de Pi sturen (De Gateway-truc)<\/h2>\n<p>Normaal gesproken stuurt de Voice PE al zijn internetverkeer naar de standaard internetrouter van de externe locatie. Die router snapt niets van jouw thuis-IP (bijv. <code>192.168.86.85<\/code>) en gooit het verkeer weg.<\/p>\n<p>We omzeilen de router volledig door de Raspberry Pi in te stellen als de &#8216;gateway&#8217; van de Voice PE. Open de <strong>ESPHome YAML-configuratie<\/strong> van je Voice PE en pas het <code>wifi:<\/code> gedeelte aan met een handmatig IP-blok:<\/p>\n<pre class=\"wp-block-code\"><code>wifi:\n  ssid: \"Je_Wifi_Naam_Externe_Locatie\"\n  password: \"Je_Wifi_Wachtwoord\"\n  \n  manual_ip:\n    static_ip: 192.168.1.150       # Een vrij IP-adres voor je Voice PE\n    subnet: 255.255.255.0          # Het subnet van de externe locatie\n    gateway: 192.168.1.23          # BELANGRIJK: Vul hier het lokale IP van je externe Raspberry Pi in!\n    dns: 1.1.1.1                  <\/code><\/pre>\n<p>Klik op <strong>Install<\/strong> in ESPHome om de nieuwe firmware naar de Voice PE te flashen.<\/p>\n<h2>Stap 4: De netwerkregels permanent maken op de Pi<\/h2>\n<p>Linux wist handmatig ingevoerde <code>iptables<\/code>-regels zodra het apparaat herstart. Om te zorgen dat alles blijft werken na een stroomstoring, installeren we een hulpprogramma dat de regels automatisch opslaat en inlaadt:<\/p>\n<pre class=\"wp-block-code\"><code>sudo apt-get update &amp;&amp; sudo apt-get install iptables-persistent -y<\/code><\/pre>\n<p>Tijdens de installatie verschijnt er een blauw scherm. Kies hier twee keer voor <strong>YES<\/strong> om de huidige IPv4-instellingen op te slaan.<\/p>\n<hr class=\"wp-block-separator\" \/>\n<h2>Het Resultaat<\/h2>\n<p>Herstart de Raspberry Pi eenmalig via <code>sudo reboot<\/code> om te testen.<\/p>\n<p>Zodra alles weer online is, gebeurt het volgende:<\/p>\n<ol>\n<li>Je start een stream in Music Assistant thuis naar de externe Voice PE.<\/li>\n<li>De Voice PE krijgt de opdracht de audio op te halen bij jouw thuis-IP (<code>192.168.86.x<\/code>).<\/li>\n<li>De Voice PE stuurt dit verzoek naar zijn gateway: de externe Raspberry Pi.<\/li>\n<li>De Pi pakt de data op, schiet het door de beveiligde <strong>Tailscale-tunnel<\/strong>, en de muziek begint direct lossless te spelen!<\/li>\n<\/ol>\n<p>Omdat we de instellingen binnen Music Assistant zelf niet hebben hoeven aanpassen, blijven al je slimme speakers thuis ook gewoon perfect werken. Veel luisterplezier!<\/p>\n<hr>\n<h2>8. Conclusie<\/h2>\n<p>\nMet een Raspberry Pi als Tailscale\u2011subnetrouter kun je veilig toegang krijgen tot Home Assistant vanaf een externe locatie.<br \/>\nHA Voice werkt alleen via een externe URL, en Music Assistant werkt nu met de ip table aanpassingen in de rpi.<br \/>\nAls je de instellingen voor music assistant hebt doorgevoerd, kan de interne url in HA ook weer op het interne ip adres gezet worden.<br \/>\nDit is ideaal voor vakantiehuizen, bedrijfspanden en tweede woningen.\n<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_557\" class=\"pvc_stats all  \" data-element-id=\"557\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/pcgsm.nl\/ohh\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In deze handleiding leg ik uit hoe je een Raspberry Pi instelt als Tailscale\u2011subnetrouter, zodat een externe locatie veilig toegang krijgt tot een Home Assistant\u2011installatie op een andere plek. Deze setup is gebaseerd op een echte situatie tussen twee locaties: Thuis en vakantie adres. 1. Raspberry Pi voorbereiden Installeer Raspberry Pi OS Lite (64\u2011bit) met &hellip; <\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/pcgsm.nl\/ohh\/2026\/07\/04\/raspberry-pi-installeren-met-ssd-boot-tailscale-en-home-assistant-voor-externe-toegang\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_557\" class=\"pvc_stats all  \" data-element-id=\"557\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/pcgsm.nl\/ohh\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[17,29,31,30,32],"class_list":["post-557","post","type-post","status-publish","format-standard","hentry","category-geen-categorie","tag-home-assistant","tag-music-assistant","tag-rpi","tag-tailscale","tag-voice-pe"],"a3_pvc":{"activated":true,"total_views":37,"today_views":0},"_links":{"self":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":7,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/557\/revisions"}],"predecessor-version":[{"id":570,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/557\/revisions\/570"}],"wp:attachment":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/media?parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/categories?post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/tags?post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}