Opdateret d. 11. okt til at bruge macvlan
Nginx Proxy Manager er en såkaldt reverse proxy server – en vel på dansk kaldet en omvendt proxy server. Med en sådan installeret kan du uden at skulle åbne et hav af porte eller synliggøre din hjemlige IP og undgå gøre der sårbar over for angreb.
I denne guide viser jeg hvordan den sætte op i Docker ved hjælp af Portainer. Senere guide vil jeg vise, hvordan vi bruger den.
Det forventes at du har sat Portainer op allerede. Og at du selvsagt har Docker installeret.
Først vil oprette en ny folder til vores container i vores Docker mappe. Vi kalder den for nemheds skyld npm
I denne mappe opretter vi 2 undermapper
data letsencrypt
I roden af vores npm mappe opretter vi en ny fil ved navn config.json med følgende indhold baseret på den officielle guide:
{ "database": { "engine": "knex-native", "knex": { "client": "sqlite3", "connection": { "filename": "/data/database.sqlite" } } } }
Vi opretter nu en ny bruger med navn npm via Kontrolpanel >> Bruger >> Opret
Lad den deltage i gruppen users
Giv den læse og skrive adgang til docker
Vi skal nu bruge PUID og PGID for denne nye bruger med adgang til npm
Log på din server med SSH
Skriv
id npm
Hvorefter du gerne skulle få nogle oplysninger som
I dette tilfælde vil
PUID være 1034
PGID være 100
Macvlan
Vi skal nu oprette en dedikeret IP adresse til denne container, således at vi kan køre containeren fra port 80 og 443. De 2 porte er per default på vores NAS ip-adresse reserveret til brug for DSM. Der findes et par “dirty” hacks på nettet hvor man ændre disse porte med et bash script. Det jeg synes giver mest mening er at bruge macvlan.
Til dette skal vi vide hvad navnet på vores netværk, som er dedikeret til vores NAS hedder.
Vi ssh skriver du
ifconfig
Så finder du det netværk, som ud for adressen:
inet addr:
har IPen på din NAS. Mit tilfælde var det eth0
Du skal have en ledig IP adresse i din pulje af IP adresser på din router. I dette eksempel bruger jeg IPen 192.168.1.19
Mit router er at finde på 192.168.1.1 og parent er sat til netop eth0 – som vi fandt oven for. Jeg kalder det nye netværket for npm_network
Via SSH skriver du
sudo docker network create -d macvlan -o parent=eth0 --subnet=192.168.1.0/24 --gateway=192.168.1.1 --ip-range=192.168.1.19/32 npm_network
Du kan nu i DSM og docker se det nye netværk
Det er nu tid til at åbne Portainer på: nasip:9000 og tryk på Stack
Klik på Add Stack
Kald den npm og kopier nedenstående kode ind:
version: '2.9' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: - '8080:80' - '8181:81' - '4443:443' volumes: - /volume1/docker/npm/config.json:/app/config/production.json - /volume1/docker/npm/data:/data - /volume1/docker/npm/letsencrypt:/etc/letsencrypt environment: - PUID=1034 - PGID=100 - TZ=Europe/Copenhagen
Husk at ændre PUID og PGID til de værdier der matcher din bruger.
Afslut med
Så er det at vente – det kan godt tage lidt tid.
Du skal nu tilbage i docker og tilføje vores nye netværk til vores npm container. Og slette det default netværk.
Du skal desuden oprette en ny bridge
Du skal administrer npm_network og tilføje vores nye container
Det samme gøres som sat for vores brigde
og så fjerner du npm_app_1 fra bridge netværket
Efter det er endt, så gå til nasip:81 (i dette tilfælde http://192.168.1.19:81/ )og du skulle gerne blive mødt af
Første gang er logind:
admin@example.com
changeme
Tilpas profilen til dine oplysninger.
Må jeg anbefale du bruger et andet nickname end admin. Skift derefter kodeord
Og så er der ellers fri leg.