Mijn Raspberry Pi 5 infrastructuur

Dit is een overzicht van mijn Raspberry Pi 5 infrastructuur – de centrale hub voor mijn netwerk- en webdiensten. Na wat experimenteren met losse Pi Zero 2WH’s draait alles nu op één krachtige Pi5 (8GB). Betrouwbaarder en een stuk makkelijker te beheren.

De afgelopen maanden is dit project flink gegroeid: van een simpele Pi-hole installatie naar een complete netwerkgateway met VLAN-segmentatie, VPN-routing, meerdere zelfgehoste diensten én een doordachte email-setup.

Hardware

Raspberry Pi 5 Setup

Waarom Pi5?

De upgrade van Pi Zero 2WH naar Pi5 was noodzakelijk:

Netwerkarchitectuur

De genoemde IP-adressen zijn ter indicatie.

Basisnetwerk

Pi-hole (Docker)

Hugo Static Sites

Nextcloud (Docker)

Home Assistant (Docker)

Cloudflare Tunnel (Docker)

SSH-MCP Server (lopend project)

PiVPN (WireGuard)

Mailserver (Docker)

Email: het grote avontuur

Een van de grotere uitdagingen van dit project was het opzetten van een eigen mailserver. Ik lees vaak genoeg online waarschuwingen als “self-hosted mail is een nachtmerrie”, “residential IP werkt nooit”, “Gmail blokkeert je toch”… Dus dacht ik: ‘dat gaat me vast lukken’.

De zoektocht

Het begon met iCloud+ Custom Domain – dat werkte prima als tussenstap, maar het waren aliassen op mijn iCloud inbox, geen échte aparte mailbox. Dat voelde niet als de “ultieme PoC”. Dus ben ik gaan kijken naar de opties:

Optie Voordelen Nadelen
iCloud+ Custom Domain Al betaald, naadloze integratie Aliassen, geen echte mailbox
Mailbox.org Duits, GDPR, €3/maand Weer een externe dienst
Soverin Nederlands, simpel Idem
Eigen mailserver op Pi5 Volledige controle, lokale opslag “Deliverability-nachtmerrie”

De uitdaging

Iedereen waarschuwde voor de problemen:

Glasnet doet mee

De cruciale vraag was: doet Glasnet PTR records voor particulieren? Een mailtje naar support en het antwoord was verrassend positief. Ze stelden [placeholder2].jbtroost.nl in voor mijn IP. Dat was het moment dat ik wist: nu gaat het me zéker lukken!

De setup

docker-mailserver draait nu op de Pi5:

services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    hostname: [placeholder2].jbtroost.nl
    ports:
      - "25:25"      # SMTP
      - "465:465"    # SMTPS
      - "587:587"    # Submission
      - "993:993"    # IMAPS
    environment:
      - ENABLE_SPAMASSASSIN=1
      - ENABLE_CLAMAV=0  # te zwaar voor Pi
      - ENABLE_FAIL2BAN=1

DNS records in Cloudflare:

Router: port forwarding voor 25, 465, 587, 993

SSL: Let’s Encrypt via Cloudflare DNS challenge

Het werkt gewoon

De test was spannend: een mail versturen naar mijn iCloud-adres en… die kwam gewoon aan! Netjes in de inbox en niet in de spam.

Thunderbird op de Pi5 verbindt nu direct met de eigen mailserver. Lokale opslag op de NVMe, volledige controle over mijn mail.

Het huidige model

Adres Provider Doel
[placeholder1]@jbtroost.nl Eigen mailserver Hugo sites, publiek gezicht
@murena.io Murena Privacy-haven, /e/OS sync
@mac.com iCloud Apple ecosystem, legacy
@werkmail Google Workspace Werk (alleen op werklaptop, VLAN30)

Vier functies, vier oplossingen. De werklaptop draait bewust op het gastnetwerk – werk is maar werk.

Wat ik geleerd heb

Software stack

Operating System

Container beheer

Netwerkdiensten

Designfilosofie

Privacy & self-hosting

Waar mogelijk kies ik voor zelfgehoste oplossingen boven clouddiensten:

Betrouwbaarheid door centralisatie

De switch van aan elkaar ‘geknoopte’ Pi Zero’s naar één gecentraliseerde Pi5:

Visuele interfaces naast CLI

Als beelddenker heb ik een voorkeur voor visuele interfaces:

SSH en Terminal blijven essentieel voor configuratie en debugging – maar het is fijn om gewoon vanaf een ‘bekend’ scherm te werken.

Uitdagingen & lessen

Wat goed werkte

Geleerde lessen

Router beperkingen

Mijn router mist echte VLAN-ondersteuning, wat creatieve workarounds vereiste:

Nextcloud via Cloudflare Tunnel

Cloudflare Tunnel met Flexible SSL en Nextcloud’s HTTPS-redirects bleven maar botsen in een redirect loop. Na veel pogingen met overwriteprotocol, trusted_proxies en andere config-aanpassingen moest ik het opgegeven.

Toch bleek na een tijdje — ik was inmiddels bezig om de Nextcloud Passwords app toe te voegen die dezelfde server nodig heeft — de oplossing simpel: het subdomein moest nog toegevoegd worden aan de trusted_domains in Nextcloud’s config.php. Dat was alles.

Nu draait Nextcloud volledig via de tunnel — zowel de webinterface als apps zoals Passwords werken gewoon via het subdomein!

Toekomstige plannen

Korte termijn

Lange termijn

Technische specificaties

Resourcegebruik

Uptime & stabiliteit

Na de migratie naar Pi5 met NVMe is de uptime flink verbeterd vergeleken met de Pi Zero 2WH setup. Het systeem draait stabiel met meerdere containers en services tegelijk.

Conclusie

Deze Pi5 infrastructuur vormt de ruggengraat van mijn thuisnetwerk en combineert privacy-gerichte self-hosting met praktische functionaliteit. Het is een continu project – een speeltuin voor experimenten, die mij tegelijkertijd nuttige dagelijkse diensten oplevert.

De eigen mailserver was het ultieme bewijs dat “iedereen zegt dat het niet kan” geen reden is om het niet te proberen. Residential IP, geen PTR record support, deliverability-nachtmerries – allemaal verhalen die in de praktijk soms best meevallen, als je de juiste ISP hebt (thanks, Glasnet!) en de configuratie goed doet.

De setup is een combinatie van idealisme (volledige privacy en controle) en pragmatisme (sommige Apple-diensten blijven nog te goed geïntegreerd). Het resultaat is een hybride aanpak: kritieke diensten self-hosted, soms (nog) kiezen voor bestaand gemak.


Ik ben niet te trots om te zeggen, dat ik dit hele verhaal niet had kunnen realiseren als ik alleen maar boeken met Debian code tot mijn beschikking had gehad.

De coding skills van Anthropic’s Claude Opus-model kunnen benutten heeft ervoor gezorgd dat ik nu een Raspberry Pi5 lokaal heb draaien. Inclusief (bijna) alle diensten die ik in de toekomst zelf wil kunnen blijven beheren & benutten.

Vibecoding om los te komen van BigTech blijft een mooi streven.


(Eerste versie: 22-11-2025 – Laatste update: 09-01-2026)

../