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.

 

0 0 stem
Artikel-Rating

By frold

Hold dig orienteret om denne debat
Bliv orienteret om
guest
0 Kommentarer
Inline Feedbacks
View all comments
0
Jeg vil gerne høre din mening. Tilføj kommentar.x
()
x