Nginx Proxy Manager

Wenn man verschiedene Dienste oder Webseiten in seinem Netzwerk betreibt und möchte das alle von Internet erreichbar sind kommt man um einen Reverse Proxy nicht vorbei. Warum? die Sache ist halt die das man von seinem Internetanbieter nur eine IP zugewiesen bekommt aber die verschiedenen Virtuellen Maschinen oder Container alle eine eigene IP haben und wie will man Webseite1 zu Server1 und Webseite2 zu Server2 durchstellen? das geht nur mit einem Reverse Proxy. Ich habe mich für den Nginx Proxy Manager entschieden, da er eine Grafischeoberfläsche mit bringt und das Konfigurieren einfacher macht.

Dazu laden wir uns ein Ubuntu 22.04 Container runter

Wir klicken links auf local

Auf dieser Seite klickt man auf Container Templates

Ein Klick auf Templates

Es öffnet sich eine lange Liste mit Templates

Bevor wir jetzt ewig darin suchen geben wir Ubuntu ein und laden Ubuntu 22.04 standart herunter

So jetzt erstellen wir den Container und dazu klicken wir auf „Erstelle CT“ oben rechts

Hier müssen jetzt ein paar Sachen ausgefüllt werden

Die CT ID: Eure Container und Virtuellen Maschinen werden nach der CT ID sortiert, wenn ihr also vor habt viele CTs und VMs zu erstellen dann ist es praktisch sie zu gruppieren

Bei dem Hostname sollte man einen eindeutigen Namen vergeben

Den Haken bei Unpriviligierter Container lassen wir drin, es hätte keine Auswirkungen aber aus Sicherheitsgründen lassen wir ihn drin

Nesting lassen wir auch drin
und dann vergeben wir das Passwort

Bei Storage wählen wir local aus weil wir es hier runtergeladen haben, man hätte es auch auf eine andere Festplatte runterkaden können und von da aus erstellen aber ich hab bei mir keine sekundäre Festplatte

Bei Template wählen wir Ubuntu 22.04 standart und weiter

Bei Storage wählen wir local-zfs oder local-lvm aus je nach dem wie ihr euer Server gestaltet habt, ist eine Festplatte wir local-lvm da stehen und wenn ihr zwei identische Festplatte in einem ZFS Spiegelung betreibt dann wird local-zfs da stehen, aber hier gibts noch viel mehr Möglichkeiten die man bei der Installation machen könnte

Bei Disk-Größe reichen eigentlich 10 GB voll kommen da das Image ja nur ein paar Hundert Megabytes groß ist und die Updates die kommen sind nicht groß und wenn Benutzer angelegt werden sind das ja auch nur Kilobytes

Da dieser Server Zuhause steht und absolut nicht viele Anfragen hat und selbst mit vielen Anfragen braucht er nicht viel Leistung, daher reicht für Zuhause ein Kern

Auch hier, da nicht viel zu tun ist reichen 512 Megabyte voll aus

Diesmal wählen wir hier DHCP aus

Die Felder lassen wir leer

Den DNS Server teilen wir später über den DHCP Server zu

Hier eine Zusammenstellung die wenn man will nochmal kontrollieren kann, diesesmal machen wir keinen Haken rein bei „Nacher stellen starten“ und klicken auf Abschließen

Steht Task OK da dann ist der Container erstellt

Klickt man auf den Container wird die Übersicht angezeigt

Hier klicken wir diesesmal auf Netzwerkund doppel klicken auf unser Netzwerkadapter

Hier kopieren wir uns die MAC-Adresse raus in ein Text oder Word Dokument

Dann melden wir uns an unserem DHCP-Server an, klicken auf Servers und auf DHCP-Server

Bei Hosts and Host Groups klicken wir auf Add a new host

Jetzt legen wir einen neuen Host und füllen dazu
Host descripton
Host name
Hardware Address
Fixed IP address
aus und klicken dann auf Create

So, wenn das mit dem Host anlegen geklappt hat, sieht man ihn jetzt in der Liste. Wenn alles stimmt klickt man auf Apply Changes.

Wieder zurück in Proxmox und auf den Container. Dann Konsole auswählen und auf Start oben rechts klicken.

Wir klicken auf Konsole und melden und mit root und dem Passwort an das wir bei der Erstellung vom Container gewählt haben

Als erstes bringen wir das System auf den neusten Stand in dem wir es updaten
apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get full-upgrade -y

Dann wollen wir auch das es immer auf dem neusten Stand bleibt und automatische Updates macht
apt-get install unattended-upgrades -y

dpkg-reconfigure -plow unattended-upgrades

Auf yes klicken

Nginx Proxy Manager wird über ein Container installiert, dazu brauchen wir docker.io
Das wir mit diesem Befehl installieren
apt install docker.io

docker.io starten und aktivieren
systemctl start docker
systemctl enable docker

Wir brauchen curl zum downloaden
apt install curl -y

jetzt laden wir den docker Container runter

curl -L „https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)“ -o /usr/local/bin/docker-compose

Die Zugriffsrechte müssen angepasst werden

chmod +x /usr/local/bin/docker-compose

Wir erstellen einen Ordner für Nginx Proxy Manager

mkdir npm

Wir gehen in den Ordner

cd npm

Wir erstellen die Config Datei für den Docker

nano config.json

Wir fügen das in die Datei

{
„database“: {
„engine“: „mysql“,
„host“: „db“,
„name“: „npm“,
„user“: „npm“,
„password“: „npm“,
„port“: 3306
}
}

bei Passwort bitte ein sicheres Passwort vergeben

Drücken Strg+O zum speichern
Drücken Strg+X zum verlassen

Dann erstellen wir noch eine Config Datei

nano docker-compose.yml

Wir fügen das in die Datei

version: „3“
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: always
ports:
– 80:80
– 81:81
– 443:443
volumes:
– ./config.json:/app/config/production.json
– ./data:/data
– ./letsencrypt:/etc/letsencrypt
depends_on:
– db
environment:
# if you want pretty colors in your docker logs:
– FORCE_COLOR=1
db:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: „npm“
MYSQL_DATABASE: „npm“
MYSQL_USER: „npm“
MYSQL_PASSWORD: „npm“
volumes:
– ./data/mysql:/var/lib/mysql

Bei MYSQL_PASSWORD: das von eben geänderte Passwort eintragen

Drücken Strg+O zum speichern
Drücken Strg+X zum verlassen

So jetzt erstellen wir den Docker Container

docker-compose up -d

Wenn alles fertig ist und geklappt hat

Wir öffnen einen neuen Browser Tab und melden uns an unserem reverse Proxy an
http://reverseproxyIP:81
Die Port IP immer mit angeben

Der Benutzername ist admin@example.com
und das Passwort changeme

Hier legen wir unsere Benutzerdaten fest, bei der E-Mail Adresse müsst ihr eure echte E-Mail nehmen, die SSL Zertifikate laufen nach einer Zeit ab und ihr bekommt von Nginx Proxy Manager dann eine E-Mail das ihr euer SSL Zertifikat erneuern sollt

Hier gibt man das alte Passwort ein und gleich ein neues

Hier ist man auf der Hauptseite

Wenn man Hosts geht dann auf Proxy Hosts klickt kommt man zur Proxy Hosts Konfiguration

Hier klickt man auf Add Proxy Host

Hier kann man dann die Daten zu dem jeweiligen Proxy Host eingeben aber die genaueren Infos mach dann zu jeder Virtuellen Maschine dann selbst

Hier legt man noch die Config für das SSL Zertifikat fest für die Erstellung aber auch hier kommen genauere Infos später

So der Server ist erstellt aber die HTTP und HTTPS Anfragen erreichen ihn noch nicht, dazu muss eine Portweiterleitung am Router erstellt werden. Geht dazu in eure Router Konfiguration.

Klickt auf Portfreischaltung.

Und erstellt 2 Weiterleitungen auf euren Nginx Proxy Manager mit den Port 80 und mit den Port 443.