Projekt
Hemmalabbet
En liten infrastruktur hemma, byggd och dokumenterad som om den vore på riktigt. Här testar jag tekniken innan den kommer i närheten av produktion.
Labbet är inte en hylla med blinkande servrar. Det är nätet hemma, som används varje dag, och det är byggt med samma krav som jag ställer på jobbet: segmentering, minsta möjliga exponering, backup som går att återställa och dokumentation som en annan person kan följa. Allt är beskrivet i en inventering med riskregister, färdplan, journal och revisionshistorik.
Två skisser nedan. Den första visar hur nätet hemma är uppdelat, den andra hur saker nås från internet. Siffrorna i bilderna hör ihop med listan under varje bild. Adresser, modeller, versioner och portar är medvetet utelämnade.
Nätet hemma

- Brandväggen sitter mellan internet och allt annat. All trafik passerar den, även mellan näten hemma, och den bestämmer vad som får gå vart. Operatörens box kopplar bara vidare. Brandväggen är också hemmets egen DNS-server. Den kontrollerar att svaren är äkta (DNSSEC), skickar frågorna vidare krypterade (DNS over TLS) så att operatören inte ser vilka sidor som slås upp, och blockerar kända reklam- och spårningsdomäner i huvudnätet.
- VPN som standard. Trafiken ut från huvudnätet går genom en krypterad tunnel till en VPN-tjänst. Det finns två tunnlar, och faller den ena tar den andra över automatiskt. Det som måste gå utanför VPN styrs med regler, inte genom att skyddet stängs av.
- VLAN – flera nät på samma kablar. Switchen delar upp hemmet i virtuella nät, VLAN. De delar samma fysiska utrustning men kan inte prata med varandra direkt. Allt mellan dem måste gå via brandväggen, och där finns en regel för varje sak som är tillåten. Wi-Fi sänder ut två av näten: huvudnätet och Clear.
- Huvudnätet är där vardagsenheterna och servrarna finns: dator, mobiler, en hemserver med tjänster i Docker (foton, film, inloggning) och en Proxmox-värd. Proxmox kör virtuella servrar, där nya saker kan provas utan att röra det som redan fungerar.
- Clear är för TV, IoT-prylar och gäster. Där går trafiken direkt ut på internet, och inget därifrån når huvudnätet.
- Hantering är ett eget litet nät för switchens administration. Det nås bara från huvudnätet.
- Serversegment är nästa steg. Servrarna ska flytta från huvudnätet till ett eget segment, så att en server som tas över inte står bredvid vardagsenheterna.
Utifrån

- Besökare når bara Cloudflare. Den här sidan är statisk och ligger hos Cloudflare, som också sköter domänen. Ingen server hemma eller hos mig tar emot besöken.
- Sidan byggs på en hyrd server utanför huset och laddas upp till Cloudflare när något ändras.
- Tunneln. På samma server kör jag ett eget aktieverktyg, bara för mig själv. Det vanliga sättet att göra en tjänst nåbar är att öppna en port, så att vem som helst kan knacka på. Här är det tvärtom: programmet
cloudflaredpå servern ringer själv upp Cloudflare och håller en krypterad tunnel öppen. Framför tunneln står Cloudflare Access och kräver inloggning, så alla utom jag stoppas redan hos Cloudflare och kommer aldrig fram till servern. - Administration med SSH, bara med nyckel – ett medvetet val. SSH skulle också kunna gå genom tunneln, så att servern inte har en enda öppen port. Men det kräver inloggning via Cloudflare, och på datorer bakom en företagsproxy med zero trust fungerar det inte smidigt, särskilt inte filöverföring. Därför är porten öppen, men den tar bara emot nycklar, aldrig lösenord, och den som försöker gissa sig in bannas automatiskt av fail2ban. Det är en avvägning mellan bekvämlighet och exponering som jag har gjort med öppna ögon.
- Backup varje natt. Den krypteras innan den lämnar servern och läggs i Google Drive. Återställningen är provad.
- Hemmet har ingen väg in. Det finns inga öppna portar mot hemnätet, och ingen tunnel in. Allt hemma administreras hemifrån.
Brandväggen som kod
Brandväggens konfiguration exporteras, ändras i en kopia, granskas som en diff och läses tillbaka. Varje ändring går att backa.
Verktygslådan
Det här används, vad det gör i labbet och var dokumentationen finns. Det mesta har jag lärt mig från tillverkarnas egen dokumentation, och det är dit länkarna går.
Nät och brandvägg
OPNsense
Brandvägg och router.
Router-on-a-stick med VLAN-trunk, regler per segment, policyroutning och failover-grupper. Konfigurationen ändras som exporterad XML, granskas som diff och läses tillbaka.
Dokumentation – OPNsense- ZY
Zyxel
Hanterad PoE-switch.
Taggade och otaggade VLAN per port, separat hanterings-VLAN, SSH avstängt och SNMP bara läsbart.
Dokumentation – Zyxel UniFi
Trådlös accesspunkt.
Två SSID:er på olika VLAN, så att gäster och enheter som inte ska komma åt något hamnar i ett eget segment.
Dokumentation – UniFiWireGuard
Krypterade tunnlar.
Två utgående tunnlar från brandväggen, i en failover-grupp som växlar automatiskt om den första går ner.
Dokumentation – WireGuard- VPN
VPN
Utgång till internet.
Klienttrafiken går ut genom en kommersiell VPN-tjänst som standard. Tjänster som blockerar VPN, som strömning, styrs förbi med alias och regler i stället för att skyddet stängs av.
DNS och skydd
- Ub
Unbound
Lokal DNS-resolver.
DNSSEC-validering, DNS-over-TLS uppströms, split-DNS för interna namn och blocklistor mot reklam och skadliga domäner på nätnivå.
Dokumentation – Unbound - Su
Suricata
Intrångsdetektering.
IDS på brandväggen med regeluppsättningar som uppdateras automatiskt.
Dokumentation – Suricata authentik
Single sign-on.
SSO med MFA framför utvalda tjänster, via reverse proxyn.
Dokumentation – authentik
Virtualisering och tjänster
Proxmox VE
Hypervisor.
Kör virtuella servrar för att prova nya saker utan att röra det som fungerar.
Dokumentation – Proxmox VEDocker Compose
Containerplattform.
En stack på en Linux-server med en compose-fil per tjänst, ett gemensamt proxynätverk och omstart vid fel.
Dokumentation – Docker ComposeNginx Proxy Manager
Reverse proxy.
En ingång för alla webbtjänster, med TLS och namn i stället för portnummer.
Dokumentation – Nginx Proxy ManagerLet's Encrypt
Certifikat.
Wildcard-certifikat som förnyas automatiskt via DNS-validering, så att inga portar behöver öppnas för att bevisa domänen.
Dokumentation – Let's EncryptGrafana
Dashboards.
Visar det Prometheus samlar in, så att trender syns innan de blir problem.
Dokumentation – Grafana- PP
PhotoPrism
Fotobibliotek.
Hela bildarkivet med sökning och metadata. Nya bilder kommer in från telefonen via WebDAV.
Dokumentation – PhotoPrism Ubuntu Server
Operativsystem för tjänsteservern.
Automatiska säkerhetsuppdateringar och omstart i ett bestämt fönster.
Dokumentation – Ubuntu Server
Extern server och publicering
- VPS
VPS
Extern server i molnet.
Det som ska nås utifrån bor här, så att hemnätet aldrig behöver öppnas. Molnbrandvägg framför.
Debian
Operativsystem för VPS:en.
Minimal installation, tjänster som systemd-enheter med larm vid fel.
Dokumentation – DebianCloudflare Tunnel
Publicering utan öppna portar.
En utgående tunnel till Cloudflare publicerar webbtjänster, utan att servern tar emot inkommande webbtrafik.
Dokumentation – Cloudflare Tunnel- f2b
fail2ban
Skydd mot inloggningsförsök.
Aggressivt läge med ökande bannlysningstid. Kontrollerat mot loggarna: i stort sett alla misslyckade försök fångas.
Dokumentation – fail2ban
Backup och hemligheter
- re
restic
Krypterad backup.
Nattliga, deduplicerade ögonblicksbilder med 30 dagars historik och veckovis kontroll av att data går att läsa. Återställning provad, inte antagen.
Dokumentation – restic rclone
Molnlagring.
Backend för restic och nattlig kopiering av fotobiblioteket, med verifiering av att alla filer har kommit fram.
Dokumentation – rcloneGoogle Drive
Mål utanför huset.
Krypterade repositorier och fotokopian. Ett byte till billigare lagring är planerat.
Dokumentation – Google DriveBitwarden
Lösenordshanterare.
Nycklar och lösenord för återställning ligger här, så att backupen går att läsa även om servern är borta.
Dokumentation – Bitwarden
Arbetssätt
Claude Code
AI-kodagent.
Arbetar i terminalen med behörighetsregler, granskningslogg och skydd mot prompt injection. Läser inventeringen vid varje sessionsstart och skriver journal.
Dokumentation – Claude CodeGit + Markdown
Dokumentation som kod.
Inventering, riskregister, färdplan, journal och revisionshistorik i textfiler.
Dokumentation – Git + Markdown
AI-agenten är en del av hotmodellen
Mycket av arbetet i labbet gör jag tillsammans med en AI-kodagent som arbetar i terminalen på den externa servern. Eftersom den har tillgång till ett skal har labbet granskats mot prompt injection och dataläckage, och åtgärderna är genomförda: uttryckliga behörighetsregler, ingen åtkomst till hemligheter den inte behöver och en granskningslogg över körda kommandon. Mer om arbetssättet i AI-agenter i drift.
Varför
Det mesta jag kan om segmentering, backup och härdning har jag lärt mig genom att göra det. Labbet låter mig prova en idé, se den gå sönder och förstå varför, utan att en fabrik står still. Det håller också en vana vid liv som jag tycker är viktigast av allt i drift: att skriva ner vad man gjorde, så att det går att göra om.