Mijn homelab voelde kapot totdat ik een reverse proxy toevoegde
Mijn homelab was niet kapot, aangezien containers draaiden, services bereikbaar waren en niets actief mijn dag saboteerde. Vanuit een puur technisch perspectief deed alles precies wat het moest doen. Maar het gebruik ervan voelde alsof ik met een systeem te maken had dat mij tolereerde in plaats van met mij samenwerkte. Elke interactie had net genoeg wrijving om vervelend te zijn, maar niet genoeg om te rechtvaardigen dat ik het zou repareren. Dus deed ik dat niet. Ik werkte eromheen, leerde dingen uit mijn hoofd die ik niet zou hoeven onthouden, en accepteerde stilletjes dat dit gewoon een onderdeel was van het runnen van een homelab.
Het probleem is dat 'het werkt' een vrij lage standaard is. Pas toen ik een reverse proxy toevoegde, realiseerde ik me hoeveel van die wrijving ik had genormaliseerd. Er veranderde niets groots op papier. Het zijn dezelfde diensten, dezelfde machine en dezelfde opzet eronder. Maar plotseling voelde alles alsof het bij elkaar hoorde.
Alles werkte, maar voelde rommelig
Elke dienst leefde achter een andere poort, en niets voelde verbonden
Mijn Docker-configuratie op de Ubuntu-machine begon eenvoudig. Eén container, daarna nog één, en toen nog een paar meer. Dat deel voelt altijd onschuldig.
Toen begonnen de poorten zich op te stapelen. Eén service op 3000, een andere op 8080, en nog iets anders op 9000, omdat dat blijkbaar is waar dingen naartoe gaan als niemand er te veel over wil nadenken. Ik had bladwijzers alleen om te onthouden hoe ik mijn eigen setup moest benaderen. Als ik er één vergat, gokte ik. Als ik verkeerd gokte, opende ik een handvol tabbladen en hoopte dat er één ergens nuttigs terechtkwam.
Het liet ook alles tijdelijk aanvoelen. Niets had een vaste plek. Het was gewoon een lijst met eindpunten die ik moest onthouden. Niets was kapot. Het voelde gewoon alsof ik voortdurend compenseerde voor een systeem dat weigerde zichzelf te organiseren.
Ik raakte gewend aan de wrijving
Wanneer alles technisch werkt, stop je met het in twijfel trekken hoe irritant het is
Dit is het deel dat je echt overvalt, omdat er niets crasht, je gaat ervan uit dat alles in orde is. Dus blijf je services toevoegen. Meer containers, meer poorten, meer kleine omwegen die je jezelf belooft later op te ruimen. Externe toegang bestond in die vage categorie van "Ik kan het aan de praat krijgen als het moet". HTTPS was meer een suggestie dan een standaard.
Iets met iemand anders delen voelde als het uitleggen van een puzzel. "Ga naar dit IP, voeg deze poort toe, negeer de waarschuwing; het is prima." Het klinkt nooit overtuigend, zelfs niet als het dat wel is. Het echte probleem was niet technisch. Het was gedragsmatig. Ik begon mijn eigen homelab te vermijden omdat interactie ermee als moeite voelde; dat is iets dat nooit zou mogen gebeuren.
De reparatie was eenvoudiger dan verwacht
Een reverse proxy geeft alles een enkele, voorspelbare manier om te worden benaderd
Een reverse proxy klinkt als iets dat in een netwerkboek thuishoort. In de praktijk is het gewoon een verkeersrouter. In plaats van combinaties van poorten en IP's te onthouden, geef je elke service een geschikt adres. Iets dat logisch is voor een mens. Dus, in plaats van een IP en een poortnummer te typen, typ je iets als een naam. De proxy neemt dat verzoek en stuurt het achter de schermen naar de juiste container.
Het wordt ook de enige plek waar je HTTPS, routering en toegangsregels afhandelt. Je stopt met het steeds opnieuw oplossen van hetzelfde probleem voor elke dienst. Je lost het één keer op. Alles andere profiteert ervan.
Het eerste dat ik opmerkte was hoe weinig ik hoefde na te denken. Elke dienst had een correct adres. Geen nummer, geen gok, geen bladwijzer waarvan ik hoopte dat die nog correct was. Gewoon een naam die overeenkwam met wat het daadwerkelijk deed. De tweede verandering was consistentie. Alles werd op dezelfde manier benaderd. Geen uitzonderingen. Nee. "Deze werkt om historische redenen anders." Toen kwam HTTPS. Geen waarschuwingen, geen aarzeling, geen stil moment van afvragen of ik me hier echt op moest aanmelden.
Extern toegang voelde ook niet langer als een hack. Wanneer alles via één toegangspunt verloopt, wordt het correct blootstellen daarvan iets dat je daadwerkelijk kunt beheren zonder jezelf in twijfel te trekken. Zelfs kleine dingen verbeterden. Het openen van diensten voelde sneller omdat ik niet hoefde te pauzeren om me te herinneren hoe ik er moest komen. Het toevoegen van nieuwe voelde natuurlijk in plaats van iets waarmee ik later wel zou omgaan. Geen van deze veranderingen was op zichzelf ingrijpend. Samen verwijderden ze bijna alle wrijving die ik had genegeerd.
Ik heb het opgezet met nginx
Een eenvoudige Docker nginx reverse proxy is genoeg om je hele homelab op te schonen
Dit is waar dingen meestal moeilijker klinken dan ze zijn. Ik ging voor Nginx dat draait in Docker. Geen fancy dashboards, alleen een schone, voorspelbare setup. Let op dat in de onderstaande code "myapp" de plaatsaanduiding is voor de apps die je hierin wilt opnemen.
Maak eerst een Docker-netwerk aan. Hiermee kan nginx met je containers communiceren via hun naam.
docker network create proxyWanneer je je containers start, verbind ze dan met dit netwerk:
docker run -d \
--name myapp \
--network proxy \
-p 3000:3000 \
myapp-imageNu is het tijd om Nginx uit te voeren:
docker run -d \
--name nginx-proxy \
--network proxy \
-p 80:80 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
nginxZodra je Nginx hebt opgezet, is het tijd om het te configureren. Hier is een minimaal voorbeeld dat het verkeer naar een container leidt:
events {}
http {
server {
listen 80;
server_name myapp.local;
location / {
proxy_pass http://myapp:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
Nu kunt u uw service openen op http://myapp.local in plaats van http://192.168.x.x:3000. Nu hoeft u alleen nog maar hetzelfde te herhalen voor andere services. Elke service krijgt zijn eigen server_name en proxy_pass.
Dat is alles. Geen magie, en geen mysterie. Als je later HTTPS wilt, kun je Let's Encrypt toevoegen met een begeleidende container. Maar zelfs deze basisconfiguratie verhelpt al het grootste deel van het probleem.
Het verschil was niet technisch, het was hoe de hele opstelling zich als één geheel gedroeg
Dit is het deel dat me verraste. Een reverse proxy toevoegen maakte mijn homelab niet sneller. Het voegde geen functies toe. Het veranderde niet wat mijn setup kon doen. Het veranderde hoe het voelde om het te gebruiken. Een nieuwe container opstarten gaat nu niet langer gepaard met een tweede probleem om op te lossen. Ik weet al hoe het zal worden benaderd. Het past in dezelfde structuur als alles anders.
Ik stopte met vertrouwen op geheugen, bladwijzers en kleine tussenoplossingen. Ik stopte met onderhandelen met mijn eigen setup. Het werkt gewoon op een manier die compleet aanvoelt. En zodra je eraan gewend bent, voelt teruggaan naar poorten en giswerk een beetje beschamend.







