Tech-Thiel

Technik die nicht nur mich begeistert

Nginx-Proxy Manager

Die meisten Anwendungen die man auf seinem Heimserver installiert, haben auch ein Webinterface – also können über den Browser administriert werden. In der Regel ruft man dazu die lokale IP-Adresse gefolgt von einer Port-Angabe auf, z. B. 192.168.5.158:8080.

Manchmal will man aber eine oder mehrere Anwendungen auch außerhalb des lokalen Netzwerkes erreichen, vielleicht hat man aber auch eine Domain über die man den Dienst erreichbar machen möchte.

Installation

Zuerst wird ein ein Container angelegt. Dieser muss privilegiert sein. Außerdem muss nesting, mount und fuse aktiviert sein.

Nach dem der Container gestartet ist, auf die Konsole wechseln und erstmal einen neuen Nutzer anlegen, denn der NGINX Proxy Manager wird in einem Docker Container installiert und der wiederum macht mucken wenn er als Root installiert und ausgefühlt wird (zumindestens bei mir).

adduser benutzername

Statt Benutzername natürlich den gewünschten Benutzernamen eintragen und Enter drücken. Es wird ein Passwort und ein paar weitere Angaben abgefragt. Damit der Nutzer Anwendung installieren kann muss ihm noch die Fähigkeit gegeben werden sudo auszuführen:

usermod -aG sudo benutzername

Fein … jetzt kann die Konsole geschlossen werden. Jetzt wird über die Windows Eingabeaufforderung oder der Linux Shell eine SSH Verbindugn aufgebaut.

ssh benutzername@container-ip-adresse

War die Eingabe korrekt, wird das Passwort abgefragt und man ist drin.

Jetzt erstmal alles auf dem aktuellen Stand bringen

sudo apt update && sudo apt upgrade

Als nächstes wird Docker Compose V2 installiert

sudo apt install docker-compose-v2

Damit sind die Vorbereitungen abgeschlossen. Über den Editor nano erzeugen wird das Installationsskript.

nano docker-compose.yml

Diese enthält folgende Parameter.

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '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

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    security_opt:
      - apparmor:unconfined

Wichtig sind hier die letzten beiden Zeilen

security_opt:
      - apparmor:unconfined

diese unterscheiden sich von den üblichen Installationsvorlagen im Internet und verhinder die Fehlermeldung:

Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded: running /usr/sbin/apparmor_parser apparmor_parser -Kr /var/lib/docker/tmp/docker-default885511848 failed with output: apparmor_parser: Unable to replace „docker-default“. apparmor_parser: Access denied. You need policy admin privileges to manage profiles.

Nano wird wie immer mit Strg + X und anschließendem Y beendet. Jetzt kann der Docker endlich installiert und gestartet werden.

sudo docker compose up -d

Ist die Installation abgeschlossen und es gab keine Fehlermeldung kann die Weboberfläche des ProxyManager aufgerufen werden

http://lokale-ip-adresse:81/login
Benutzername: admin@example.com
Passwort: changeme