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. 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

Einrichtung

Nach dem ersten Login wird man aufgefordert den Admin-Account zu individualisieren …

… und sich ein eigenes sicheres Passwort zur vergeben. Soweit so klar.

Anschließend muss der Heimische Router dazu bewegt werden, alle „Webseiten“ bzw. https Anfragen zu der NGINX Proxy-Instanz durchzuwinken.

http Anfragen (also unsichere Verbindung) lassen wir gar nicht erst zu. Warum auch. Der NGINX-Proxymanager erzeugt kostenlose Zertifikate über LetsEncrypt. Wir müssen also nicht unsicher kommunizieren und werden es deshalb auch nicht tun. Jede offene Port ist ein Sicherheitsrisiko das wir hier verringern können.

Bei der AVM Fritz!Box geht das so:

  • http://fritz.box im Browser aufrufen
  • Links im Menü auf Internet / Freigaben wechseln
  • Hier im Reiter „Portfreigaben“ auf „Gerät für Freigaben hinzufügen“ klicken.
  • Hier aus der Liste der Geräte das passende auswählen und dann „Neue Freigabe“ auswählen.
  • Die Auswahl bei „Porfreigabe“ setzen.
  • Anwendung „HTTPS-Server“ wählen.
  • „Freigabe aktivieren“ anhaken.
  • „Ok“ klicken.
  • Jetzt noch mit „Übernehmen“ bestätigen. Fertig.


Erstellt / letzte Bearbeitung:

/