Situatie
De regula, persoanele fizice au abonament de internet care presupune alocarea unui singur ip dinamic, iar din aceasta cauza hostingul acasa a mai multor website-uri sau aplicatii web presupune o aplicatie in plus cu rol de proxy care va forwarda traficul in functie de request. Altfel, ne-ar fi necesar cate un ip public pentru fiecare website sau aplicatie web.
Pentru aceasta solutie este necesar un calculator/server/masina virtuala cu ubuntu server si docker instalat. Programul cu rol de proxy se numeste Nginx Proxy Manager care vine in plus cu interfata grafica fata de Nginx normal si il vom instala intr-un docker container. Pe langa asta vom avea nevoie de un domeniu, daca nu aveti deja, puteti lua unul gratuit. De asemenea, am ales sa pun ns-urile la cloudfare ca sa putem actualiza constant ip-ul nostru public tot cu ajutorul unui docker container. In routerul de acasa trebuie sa deschidem si porturile 443 si 80 catre serverul nostru.
Aplicatia pe care o voi folosi ca exemplu este Plex Media Server instalata tot intr-un docker container. La final o vom putea accesa din internet la https://media.giant.gq Exista o multime de aplicatii care pot rula intr-un docker container (Nextcloud, qBittorrent, MariaDB, Pi-Hole, chiar si solutii complete de mail server), iar prin modul acesta de instalare optimizam resursele sistemului.
Solutie
Pasi de urmat
Mai intai in cloudfare trebuie sa facem un CNAME record pentru media.giant.gq. Bineinteles, ar trebui sa fie configurat si A record care sa pointeze in ip-ul nostru public. Pentru a folosi ns-urile cloudfare trebuie sa modificati la registrar ns-urile pe care vi le da cloudfare cand va faceti cont. Asta este diferit in functie de registrar. Pentru inceput dezactivati proxy:
Pe serverul nostru cu ubuntu server instalam Nginx Proxy Manager ruland comanda de mai jos. Portul 81 este pentru accesarea interfetei de administrare. In cazul de fata ip-ul serverului este 10.10.10.13, deci il vom accesa in browser la 10.10.10.13:81
Credentiale default sunt admin@example.com cu parola changeme. Vor trebui schimbate la prima logare:
- Pe tabul Hosts alegem Add Proxy Host.
- La domain name trecem cname recordul de la pasul 1
- La forward ip trecem ip-ul serverului si portul pe care se acceseaza aplicatia, in cazul nostru Plex foloseste portul 32400
- Pe tab-ul SSL alegem request a new certificate si bifam Force SSL, trecem adresa de email si suntem de acord cu termenii Let’s Encrypt, apoi Save.
Ca sa ne asiguram ca vom avea acces la aplicatia noastra, chiar daca providerul ne schimba ip-ul public, trebuie sa mai instalam un docker container care ii va spune mereu lui cloudfare ce ip public avem si va actualiza automat A record-ul.
Pe site-ul cloudfare ne logam si mergem pe My profile>API Tokens si apasam pe Create Token:
Ii dam ce nume vrem si vom crea trei permisiuni apasand pe Add more si completam dupa cum se vede in imagine. La sfarsit apasam pe Continue to summary:
Ne intoarcem la serverul nostru si vom crea urmatorul docker container cu comanda de mai jos. La API KEY in loc de xxxx punem key-ul furnizat la pasul anterior. La zone punem domeniul nostru.
Asta este tot, de acum ni se actualizeaza automat A recordul cand ni se schimba ip-ul public. Evident, serverul nostru trebuie sa functioneze permanent.
docker run \
-e API_KEY=xxxxxxx \
-e ZONE=giant.gq \
-- restart=always \
oznu/cloudflare-ddns
Leave A Comment?