Inhaltsverzeichnis

Nginx Proxy Manager

Die Synology bringt zwar einen ReverseProxy mit, aber der NPM bietet einige Vorteile z.b. das man seine Subdomains nur an einer Stelle verwaltet inkl. der Zertifikate, man kann HTTPS einfacher erzwingen und es zeigen die offenen Ports nicht auf die Synology sondern auf einen Container (Sicherheit). Deshalb ist hier nur der Installationsschritt für VM und RPI drin.

Voraussetzungen:

Wer noch keine Domain hat die er mit Dyndns nutzen kann sollte mal bei https://www.do.de/ gucken.
Eine Domain die auf den Router zeigt
Port 80/443 werden vom Router zum NPM weiter geleitet

Als erstes legen wir die Laufwerke an.

VM/RPI:

mkdir /syno/nginx
mkdir /syno/nginx/data
mkdir /syno/nginx/data/letsencrypt
mkdir /syno/nginx/data/mysql

nun öffnen wir den Portainer und legen einen Stack an

Name: nginxproxymanager

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    network_mode: bridge
    ports:
      - '80:80'
      - '81:81'        //das ist der Port worüber die Verwaltungsoberfläche aufgerufen wird, die erste Zahl kann nach eigenem Wunsch geändert werden
      - '443:443'
    environment:
      - DB_MYSQL_HOST=db
      - DB_MYSQL_PORT=3306
      - DB_MYSQL_USER=npm           //muss geänder werden muss dann aber auch unten unter mysql angepasst werden
      - DB_MYSQL_PASSWORD=npm       //muss geänder werden muss dann aber auch unten unter mysql angepasst werden
      - DB_MYSQL_DATABASE=npm       //muss geänder werden muss dann aber auch unten unter mysql angepasst werden
    volumes:
      - /syno/nginx/data:/data
      - /syno/nginx/data/letsencrypt:/etc/letsencrypt
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s
    restart: unless-stopped
  db:
    image: 'yobasystems/alpine-mariadb:latest'
    network_mode: bridge
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'  //das Root-PW für die DB, es sollte entsprechend sicher gewählt werden
      MYSQL_DATABASE: 'npm'       //siehe oben
      MYSQL_USER: 'npm'           //siehe oben
      MYSQL_PASSWORD: 'npm'       //siehe oben
    volumes:
      - /syno/nginx/data/mysql:/var/lib/mysql
    restart: unless-stopped

Die Passwörter (es darf kein $ im Passwort sein), der User und der DB Name kann geändert werden, also alles wo im Code npm steht.

Danach lässt sich der NPM mit

http://192.168.xxx.yyy:81

aufrufen.

Die Standard Anmeldung lautet

Email:    admin@example.com
Password: changeme

Diese sollten sofort geändert werden nach der ersten Anmeldung

Die eigenen Host (Subdomains) lassen sich nun unter Proxy Hosts hinzufügen.