Menu

<< | Zurück

Proxymanager installieren

Installation auf Debian 11 getestet.

Unterschiede zu den anderen Installationen:

  • Es wird kein Docker Engine benötigt.
  • Bezüglich dem Webserver kommt nginx Webserver zum Einsatz.
Proxymanager Web Bentuzer Schnittstelle
Bild1 Startseite Bild 2 Dashboard

 

Proxymanager installieren
#
@cd
@wget http://openresty.org/package/debian/pool/openresty/o/openresty-openssl111/openresty-openssl111_1.1.1k-1~buster1_amd64.deb
@wget http://openresty.org/package/debian/pool/openresty/o/openresty/openresty_1.19.9.1-1~buster1_amd64.deb
@wget http://openresty.org/package/debian/pool/openresty/o/openresty-pcre/openresty-pcre_8.44-1~buster1_amd64.deb
@wget http://openresty.org/package/debian/pool/openresty/o/openresty-zlib/openresty-zlib_1.2.11-3~buster1_amd64.deb
# über ls schauen wie Dateiname ist und sudo dpkg -i
@ls
@sudo dpkg -i openresty_1.19.9.1-1~buster1_amd64.deb
@sudo dpkg -i openresty-openssl111_1.1.1k-1~buster1_amd64.deb
@sudo dpkg -i openresty-pcre_8.44-1~buster1_amd64.deb
@sudo dpkg -i openresty-zlib_1.2.11-3~buster1_amd64.deb
@sudo update-alternatives --install /usr/sbin/nginx nginx /usr/local/openresty/bin/openresty 1
@sudo ln -sf /usr/local/openresty/nginx/ /etc/nginx
###### jetzt prüfen wir
@sudo update-alternatives --query nginx
###### History..
@sudo apt-get install sudo
@sudo apt-get install git build-essential libffi-dev libssl-dev python3-dev
@sudo apt-get install --no-install-recommends gnupg openssl ca-certificates apache2-utils logrotate
@sudo apt-get install --no-install-recommends python3 python3-distutils python3-venv python3-pip
@sudo apt-get install certbot
@sudo apt-get install curl
@KEYRING=/usr/share/keyrings/nodesource.gpg
@sudo curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null
@VERSION=node_14.x
@KEYRING=/usr/share/keyrings/nodesource.gpg
@DISTRO="$(lsb_release -s -c)"
@sudo echo "deb [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | tee /etc/apt/sources.list.d/nodesource.list
@sudo echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | tee -a /etc/apt/sources.list.d/nodesource.list
@sudo apt-get update
@sudo apt-get install --no-install-recommends nodejs
@sudo npm install --global yarn
@wget https://github.com/jc21/nginx-proxy-manager/archive/refs/tags/v2.9.7.tar.gz
@sudo tar xzvf v2.9.7.tar.gz
@sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
@sudo update-alternatives --query python
@cd nginx-proxy-manager-2.9.7/
@sed "s+0.0.0+2.9.7+g" -i backend/package.json
@sed "s+0.0.0+2.9.7+g" -i frontend/package.json
@sed 's+^daemon+#daemon+g' -i docker/rootfs/etc/nginx/nginx.conf
@NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
@for NGINX_CONF in $NGINX_CONFS; do sed 's+include conf.d+include /etc/nginx/conf.d+g' -i "$NGINX_CONF"; done
@mkdir -p /var/www/html /etc/nginx/logs
@cp -r docker/rootfs/var/www/html/* /var/www/html/
@cp -r docker/rootfs/etc/nginx/* /etc/nginx/
@cp docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
@cp docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
@ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
@rm -f /etc/nginx/conf.d/dev.conf
@mkdir -p /tmp/nginx/body /run/nginx /data/nginx /data/custom_ssl /data/logs /data/access /data/nginx/default_host /data/nginx/default_www /data/nginx/proxy_host /data/nginx/redirection_host /data/nginx/stream /data/nginx/dead_host /data/nginx/temp /var/lib/nginx/cache/public /var/lib/nginx/cache/private /var/cache/nginx/proxy_temp
@chmod -R 777 /var/cache/nginx
@chown root /tmp/nginx
@echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" > /etc/nginx/conf.d/include/resolvers.conf
@openssl req -new -newkey rsa:2048 -days 13650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
@mkdir -p /app/global /app/frontend/images
@cp -r backend/* /app
@cp -r global/* /app/global
@cd ./frontend
@export NODE_ENV=development
@yarn install --network-timeout=30000
@yarn build
@cp -r dist/* /app/frontend
@cp -r app-images/* /app/frontend/images
@rm -rf /app/config/default.json
#
- cat << 'EOF' > /app/config/production.json
{
  "database": {
    "engine": "knex-native",
    "knex": {
      "client": "sqlite3",
      "connection": {
        "filename": "/data/database.sqlite"
      }
    }
  }
}
###### Enter Taste drücken
- EOF
###### Datei überprüfen eof rausnehmen wenn vorhanden
@nano /app/config/production.json
#
@cd /app
@export NODE_ENV=development
@yarn install --network-timeout=30000
#
- cat << 'EOF' > /lib/systemd/system/npm.service
[Unit]
Description=Nginx Proxy Manager
After=network.target
Wants=openresty.service
[Service]
Type=simple
Environment=NODE_ENV=production
ExecStartPre=-/bin/mkdir -p /tmp/nginx/body /data/letsencrypt-acme-challenge
ExecStart=/usr/bin/node index.js --abort_on_uncaught_exception --max_old_space_size=250
WorkingDirectory=/app
Restart=on-failure
[Install]
WantedBy=multi-user.target
###### Enter Taste drücken
- EOF
#
###### Datei überprüfen eof rausnehmen wenn vorhanden
@nano /lib/systemd/system/npm.service
#
@systemctl daemon-reload
@systemctl enable npm
@systemctl restart openresty
@systemctl restart npm
#
# #### Anmelden und Passwort ändern
- http://192.168.1.75:81/login
- Benutzername: admin@example.com
- Password: changeme
#

Proxymanager Installation

In manchen Mobilen Internet Broswer können Sie nicht im Doument scrollen. Klicken Sie für PDF Ansicht einfach auf den Link "PDF Download".

 

 


 

Zusätzliche Einstellungen

 

Firewall iptables NAT Einträge

Alles was von aussen zum WAN Anschluss geht und den Port 80 und 443 benutzt muss zum Proxymanager per NAT geroutet werden. Zusätzlich benutze ich Hearpin NAT um den Retoutweg zu setzen. In diesem Beispiel ist 192.168.1.75 der Proxymanager.

NAT für Proxymanager

Nginx Proxy Manager – X-Forwarded-For für Apache einrichten

Proxymanager verschleiert sehr gerne die IP-Adressen und aufgerufenen URLs für die dahinter liegenden System. Für Statistiken werden diese Daten gebraucht. Die Lösung ist relativ einfach, wir leiten diese Informationen einfach weiter und das im HTTP Header. Dies wird in zwei Schritten konfiguriert. Im Hintergrund ließt der Apache Webserver diese Daten wieder aus und kann seinen Job erledigen.

1. Schritt

Im Proxymanager bezüglich den Proxy Host im Tab Advancet folgendes eintragen.

Unter Proxyhost, Adnance (Proxymanager) 
proxy_read_timeout 300;
proxy_pass_header  X-Transmission-Session-Id;
proxy_set_header   X-Forwarded-Host   $server;
proxy_set_header   X-Forwarded-Server $server;
proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;

 

2. Schritt anpassungen auf dem Webserver. Nicht Proxymanager.

Apache2 Modul remoteip installieren. Eintrag in Direktiven von Virtuellen Host.

Apache module installieren
- #sudo a2enmod remoteip

 

Eintrag in Direktiven danach Apache2 Server restart
<virtualhost>
   ###
   ###
  RemoteIPHeader X-Forwarded-For
  RemoteIPInternalProxy IP-VON-EUREM-NGINX-MANAGER
  SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on
   ###
   ###
</virtualhost>
#
#### Apache2 Server Neu starten.
- #sudo service apache2 restart

 

Wichtige Information

Da es keinen direkten Zugriff mehr gibt von WAN zum Beispiel zum Webserver über 80 und 443 weil diese Porte zum Proxymanger gehen verwaltet Proxymanager die Zertifikate selber da Öffentliche Zertifikate immer über Port 80 ausgeliefert und auch erneuert werden. Das heisst auf dem Webserver zum Beispiel Apache2 braucht es keine Zertifikate mehr. Selbstsignierte Zertifikate reichen aus . Für E-Mail (mail.meineDomäne.ch) 995 / 465 Zertifikat wird es keinen Proxyhost geben. Für E-Mail muss nur ein SSL Zertifikat generiert werden im Proxymanager. Danach das Zertifikat vom Proxyserver auf den Webserver kopieren oder in einem anderen Verzeichnis ablegen. Zertifikate auf dem Proxymanager wurden automatisch von Proxymanager bevor sie ablaufen erneuert.