Hetzner guide – Installer Nginx Proxy Manager

I denne guide kan du se hvordan du installerer Nginx Proxy Manager på en Hetzner VPS.

I denne artikelserie ser vi på hvordan du installerer og bruger en Hetzner VPS, hvor fokus bliver på at lave en webserver, hvor du bruger Docker til at lave forskellige webapps. Nu skal vi prøve at installere Nginx Proxy Manager, som er et program med en grafisk brugerflade, som gør det nemt at styre reverse proxy, dvs. dirigere et domæne hen til det rigtige sted på serveren, når du har flere Docker apps installeret på din server.

Som forudsætning antager vi at du allerede har oprettet en VPS i Hetzner med Docker præinstalleret og efterfølgende installeret Portainer. Portainer er et grafisk værktøj til at styre installationen af Docker containere. Hvis du ikke ved hvordan du installerer det, kan du læse om det i denne artikel.

Installer Nginx Proxy Manager

Før vi installerer Nginx Proxy Manager, skal vi oprette et Docker netværk, hvor alle de apps som Nginx Proxy Manager skal styre også skal høre under. Det gør vi direkte i Portainer, ved at vælge Networks og så “Add Network”. Giv netværket et navn, fx. “npm-network” og tryk på Create the network i bunden.

Så skal vi installere Nginx Proxy Manager gennem Portainer, og det skal vi gøre med en Docker compose fil. Derfor skal du gøre det under Stacks, hvor du vælger Add stacks. Giv den nye Stack navnet “nginx-proxy-manager” og indsæt følgende kode under Web editor:

version: "3.3"
services:
  npm-app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm-app
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "npm-db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD}
      DB_MYSQL_NAME: "npm"
      # Uncomment the line below if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./npm-data:/data:Z
      - ./letsencrypt:/etc/letsencrypt:Z
    depends_on:
      - npm-db
    networks:
      - npm-network
      - npm-internal

  npm-db:
    image: 'mariadb:latest'
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD}
    volumes:
      - ./npm-data/mysql:/var/lib/mysql:Z
    networks:
      - npm-internal

networks:
  npm-internal:
  npm-network:
    external: true

Bemærk her, at vi opretter to nye Docker containere: npm-app med selve Nginx Proxy Manager og npm-db med en MariaDB der skal bruges til at lagre oplysningerne. Vi tilmelder også denne med det samme til vores nye netværk “npm-network”. Endelig vil du også se at der er to environment variabler kaldet MYSQL_ROOT_PASSWORD og DB_MYSQL_PASSWORD. I Portainer går du nu længere ned under Environment variables og opretter disse to variabler og indtaster her det password du vil have.

Så trykker du på “Deploy the stack” og så begynder Portainer at installere Nginx Proxy Manager.

Nginx Proxy Manager kan du nu åbne på adressen: http://[IP-adresse]:81. Når du åbner beder den om brugernavn og password, og her bruger du admin@example.com som brugernavn og “changeme” som password. Så snart du er logget ind, bliver du bedt om at skifte e-mail og password. Nu skulle det gerne se således ud:

Så nu har du både Portainer og Nginx Proxy Manager installeret på din server.

Lav subdomæne til Portainer

Vi kan starte med at bruge Nginx Proxy Manager til at lave et subdomæne der peger på Portainer, altså så du kan tilgå Portainer med et subdomæne i stedet og slipper for at indtaste portnummeret.

Det første du gør er at gå til din DNS manager og oprette en A record, hvor subdomænet du har valgt peger på IP-adressen for din server.

Herefter skal du sørge for at portainer også er en del af det npm-network, som vi oprettede tidligere, og som Nginx Proxy Manager anvender. Det gør du fra Portainer, ved at gå til “Containers” klikke på Portainer og så nede i bunden under Network vælge npm-network og så “Join network”.

Så er vi klar til at oprette det nye subdomæne i Nginx Proxy Manager. Tryk på “Hosts” og så “Add Proxy Host”. Indtast nu følgende oplysninger:

Bemærk her, at som Forward Hostname anvender vi Container navnet for Portainer, og som Port anvender vi den port der er valgt for hosten. Under Scheme vælger vi https, og det er fordi at Portainer fungerer kun med https. Men du vil se at andre domæner du opretter en proxy host for kun vil virke hvis du her vælger http, også selvom du kører den på https.

Så skifter du til fanen SSL, og her vælger du at oprette et nyt SSL certifikat med Lets Encrypt. Du sætter også kryds i “Force SSL” og “HTTPS/2 Support og selvfølgelig at du accepterer betingelserne. Tryk på Save når du er klar.

Nu oprettes proxy hosten for subdomænet. Så allerede nu kan du indtaste subdomænet i din browser, og du vil se at Portainer åbner op. Du vil også se at der kommer ikke længere en advarsel, der er nu tilknyttet et Lets Encrypt certifikat.

Lav subdomæne til Nginx Proxy Manager

På samme måde kan du også lave et subdomæne til Nginx Proxy Manager. Det første du igen skal gøre er at gå til din DNS server, og oprette en A record der peger subdomænet hen på din servers IP adresse.

Herefter skal du sikre dig at Nginx Proxy Manager også tilhører netværket npm-network. Men det har vi allerede sikret, fordi det var en del af vores docker compose fil da vi installerede Nginx Proxy Manager.

Nu opretter du så en ny Proxy Host i Nginx Proxy Manager, hvor du udfylder følgende:

Bemærk igen, at vi bruger Container navnet for Nginx Proxy Manager, som vi kan finde i Portainer, i stedet for at skrive IP adressen. Under Scheme skal man i dette tilfælde skrive http. Igen gør det ikke at du ikke skal bruge Nginx Proxy Manager fra https, men inde i containeren tilgås den simpelthen fra http i stedet. Under fanen SSL udfylder du det samme som vi gjorde ved Portainer, og så trykker du på Save. Igen kan du nu bruge subdomænet til at åbne Nginx Proxy Manager og det er nu beskyttet med HTTPS.

Jeg håber denne artikel gav et overbliv til hvordan du kan bruge Portainer til at installere Nginx Proxy Manager, og tilknytte et subdomæne til dem begge. Når disse to er installeret, kan du så fremover installere hvad som helst fra Docker i Portainer, og så lave en Proxy host til at fremstille dem. Det skal vi prøve i senere artikler. Hvis du har nogle spørgsmål til det hele, så bare skriv en kommentar nederst i artiklen.

5 1 vote
Article Rating

Andreas Andersen

Forfatter og grundlægger af IT-blogger.dk, der har blogget om IT-emner siden 2012. Findes på Mastodon på @aphandersen@ansico.dk

You may also like...

Abonner
Giv besked ved
guest

0 Comments
mest stemt på
nyeste ældste
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x