Min hjemmelab føltes ødelagt helt til jeg la til en omvendt proxy
Min homelab var ikke ødelagt, ettersom containere kjørte, tjenester var tilgjengelige, og ingenting saboterte dagen min aktivt. Fra et rent teknisk perspektiv gjorde alt akkurat det det skulle gjøre. Men å bruke det føltes som å håndtere et system som tolererte meg i stedet for å samarbeide med meg. Hver interaksjon hadde akkurat nok friksjon til å være irriterende, men ikke nok til å rettferdiggjøre å fikse det. Så jeg gjorde ikke det. Jeg fant løsninger rundt det, memoriserte ting jeg ikke burde måtte huske, og aksepterte stille at dette bare var en del av å drive en homelab.
Problemet er at «det fungerer» er en ganske lav standard. Det var ikke før jeg la til en omvendt proxy at jeg innså hvor mye av den frustrasjonen jeg hadde normalisert. Ingenting stort endret seg på papiret. Det er de samme tjenestene, samme maskin, og samme oppsett under. Men plutselig føltes alt som om det hørte sammen.
Alt fungerte, men føltes rotete
Hver tjeneste levde bak en forskjellig port, og ingenting føltes koblet
Min Docker-oppsett på Ubuntu-maskinen startet enkelt. Én container, så en annen, så noen flere. Den delen føles alltid ufarlig.
Så begynte portene å hope seg opp. En tjeneste på 3000, en annen på 8080, og noe annet på 9000, fordi tydeligvis er det dit ting går når ingen vil tenke for hardt på det. Jeg hadde bokmerker bare for å huske hvordan jeg skulle få tilgang til min egen oppsett. Hvis jeg glemte ett, gjettet jeg. Hvis jeg gjettet feil, åpnet jeg en håndfull faner og håpet at en av dem havnet et sted nyttig.
Det gjorde også at alt føltes midlertidig. Ingenting hadde en riktig plass. Det var bare en liste over endepunkter jeg måtte huske. Ingenting var ødelagt. Det føltes bare som om jeg konstant måtte kompensere for et system som nektet å organisere seg selv.
Jeg ble vant til friksjonen
Når alt teknisk sett fungerer, slutter du å stille spørsmål ved hvor irriterende det er
Dette er delen som virkelig sniker seg innpå deg, fordi ingenting krasjer, du antar at alt er fint. Så du fortsetter å legge til tjenester. Flere containere, flere porter, flere små løsninger som du lover deg selv at du skal rydde opp i senere. Fjernaksess eksisterte i den vage kategorien «jeg kan få det til å fungere hvis jeg må». HTTPS var mer et forslag enn en standard.
Å dele noe med noen andre føltes som å forklare et puslespill. «Gå til denne IP-en, legg til denne porten, ignorer advarselen; det er greit.» Det høres aldri overbevisende ut, selv når det er det. Det egentlige problemet var ikke teknisk. Det var atferdsmessig. Jeg begynte å unngå mitt eget homelab fordi det å samhandle med det føltes som en innsats; det er noe som aldri bør skje.
Løsningen var enklere enn forventet
En omvendt proxy gir alt en enkelt, forutsigbar måte å bli aksessert på
En revers proxy høres ut som noe som hører hjemme i en nettverksbok. I praksis er det bare en trafikkruter. I stedet for å huske port- og IP-kombinasjoner, gir du hver tjeneste en ordentlig adresse. Noe som gir mening for et menneske. Så i stedet for å skrive inn en IP og et portnummer, skriver du noe som et navn. Proxien tar den forespørselen og sender den til riktig container bak kulissene.
Det blir også det ene stedet hvor du håndterer HTTPS, ruting og tilgangsregler. Du slutter å løse det samme problemet om og om igjen for hver tjeneste. Du løser det én gang. Alt annet drar nytte av det.
Det første jeg la merke til var hvor lite jeg måtte tenke. Hver tjeneste hadde en riktig adresse. Ikke et nummer, ikke et gjetning, ikke et bokmerke jeg håpet fortsatt var korrekt. Bare et navn som stemte med det den faktisk gjorde. Den andre forandringen var konsistens. Alt ble tilgang til på samme måte. Ingen unntak. Nei. «Denne fungerer annerledes av historiske årsaker.» Så kom HTTPS. Ingen advarsler, ingen nøling, ingen stille øyeblikk hvor jeg undret på om jeg virkelig burde logge inn på noe sånt.
Fjernaksess sluttet også å føles som en hack. Når alt går gjennom ett enkelt inngangspunkt, blir det å eksponere det riktig noe du faktisk kan håndtere uten å tvile på deg selv. Selv små ting forbedret seg. Å åpne tjenester føltes raskere fordi jeg ikke måtte stoppe opp for å huske hvordan jeg kommer til dem. Å legge til nye føltes naturlig i stedet for noe jeg ville ta meg av senere. Ingen av disse endringene var dramatiske alene. Sammen fjernet de nesten all friksjon jeg hadde ignorert.
Jeg satte det opp med nginx
En enkel Docker nginx-reverse proxy er nok til å rydde opp hele hjemmelaben din
Dette er stedet hvor ting vanligvis høres vanskeligere ut enn de er. Jeg gikk for Nginx som kjører i Docker. Ingen fancy dashbord, bare en ren, forutsigbar oppsett. Legg merke til at i koden nedenfor, "myapp" er plassholdernavnet for appene du vil inkludere i dette.
Først opprett et Docker-nettverk. Dette lar nginx kommunisere med containerne dine ved navn.
docker network create proxyNår du kjører containerne dine, kobler du dem til dette nettverket:
docker run -d \
--name myapp \
--network proxy \
-p 3000:3000 \
myapp-imageNå er det på tide å kjøre Nginx:
docker run -d \
--name nginx-proxy \
--network proxy \
-p 80:80 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
nginxNår du har satt opp Nginx, er det på tide å konfigurere det. Her er et minimumseksempel som ruter trafikk til en beholder:
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;
}
}
}
Nå kan du få tilgang til tjenesten din på http://myapp.local i stedet for http://192.168.x.x:3000. Nå gjenstår det bare å gjenta for andre tjenester. Hver tjeneste får sitt eget server_name og proxy_pass.
Det er det. Ingen magi, og ingen mysterium. Hvis du vil ha HTTPS senere, kan du legge til Let’s Encrypt ved å bruke en følgesvennkonteiner. Men selv denne grunnleggende oppsettet løser allerede mesteparten av problemene.
Forskjellen var ikke teknisk, det var hvordan hele oppsettet oppførte seg som én ting
Dette er delen som overrasket meg. Å legge til en reverse proxy gjorde ikke homelaben min raskere. Det la ikke til funksjoner. Det endret ikke hva oppsettet mitt var i stand til å gjøre. Det endret hvordan det føltes å bruke det. Å starte en ny container kommer ikke lenger med et ekstra problem å løse. Jeg vet allerede hvordan det vil bli aksessert. Det passer inn i samme struktur som alt annet.
Jeg sluttet å stole på hukommelsen, bokmerker og små løsninger. Jeg sluttet å forhandle med min egen oppsett. Det bare fungerer på en måte som føles fullstendig. Og når du først blir vant til det, føles det litt pinlig å gå tilbake til porter og gjetting.







