Nextcloud Server hinter einem Nginx Reverse Proxy Server: Unterschied zwischen den Versionen

Aus Privates Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(33 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Nginx Proxy Manager – Reverse Proxy mit grafischer Oberfläche GUI
<strong>Vorraussetzung ist, dass der Nextcloudserver schon nach folgender Anleitung installiert wurde: [[Installation Nextcloud unter Ubuntu 22.04 LTS]] </br>
Das Folgende ist nur notwendig, wenn auch aus dem internen Netz auf den Nextcloudserver über die öffentliche URL zugegriffen werden soll.</br>
Der externe Zugriff, d.h aus dem Internet, funktioniert auch ohne das Nachfolgende.</strong>


nach einer Anleitung von [https://apfelcast.com/nginx-proxy-manager-reverse-proxy-mit-grafischer-oberflaeche-gui https://apfelcast.com/nginx-proxy-manager-reverse-proxy-mit-grafischer-oberflaeche-gui]
Wenn der Nextcloudserver hinter einem Reverse Proxy Server steht kann er sich nicht selber um die Beschaffung eines Letsencrypt Zertfikats kümmern,
da der Router die notwendigen Ports 80 und 443 nur auf einen Server portforwarden kann.


*Install Docker + Docker Compse
Deshalb benötigt man einen Mechanismus, die Zertifikate, die der Reverse Proxy Server für den Nextcloud Server beschafft hat und in Zukunft
auch regelmäßig erneuern wird, auf den Nextcloud Server zu übertragen.


apt update && apt upgrade -y
Wird das nicht gemacht, bekommen Clients aus dem internen Netz eine Zertifikatswarnung sobald das ursprüngliche evtl. bei der
Installation erzeugte Zertifikat des Nextcloudservers abläuft.


apt install docker.io
systemctl start docker
systemctl enable docker


## install docker-compose ##
Da aber bekannt ist, wo das Zertikat für den Nextcloudserver auf dem Reverse Proxy abgelegt ist, kann es über ein Bash Script einfach perodisch
per cronjob and die richtige Stelle auf den Nextcloudserver kopiert werden.


apt install curl
Folgend Vorgehensweise führt zum Ziel:


curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
= Einrichten eines SSH Zugriffs vom Nextcloudserver (NCS) auf den Reverse Proxy Server (RPS) =
*Gernerieren eines Schlüsselpaares auf dem NCS als root
ssh-keygen -t rsa


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


docker-compose --version
*Kopieren des öffentlichen Schlüssels vom NCS auf den RPS
ssh-copy-id root@RPS


= Letsencrypt Zertifkate per Cronjob von RPS auf den NCS übertragen =


##### Install Nginx Proxy Manager #####
;  Die Quelle und das Ziel den entsprechnenden Gegebenheiten anpassen
* Script für den Kopierjob erstellen


## create projekt directory and open it ##
nano /usr/local/bin/cp-le-certs.sh
mkdir npm
cd npm


## create docker congig.json ##
nano config.json


{
#! /bin/sh
  "database": {
scp root@RPS:/npm/letsencrypt/live/npm-1/*.pem /etc/letsencrypt/live/Domainbezeichnung
    "engine": "mysql",
/etc/init.d/apache2 restart </br>
    "host": "db",
!!! Script Ausführbar machen
    "name": "npm",
    "user": "npm",
    "password": "npm",
    "port": 3306
  }
}


## creacker docker-compose.yml ##
*cronjob für regelmässigen Abgleich anlegen
nano docker-compose.yml
crontab -e


version: "3"
# taeglich um 3:03 Uhr die aktuellen Letsencrypt Zertifikate vom Reverse ProxyServer holen
services:
3 3 * * * /usr/local/bin/cp-le-certs.sh > /dev/null 2>&1
  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
     
     
## build the conatiner ##
docker-compose up -d


## acess via web browser ##
= Erweitern der /etc/hosts auf dem Nextcloud Server zur Umgehung des Timeout Gateway 504 Fehlers =
http://hostip:81
*lokale IP Adresse    ->  Domainname der Nextcloud Instanz
*Beispiel:


## default login ##
192.168.4.5 nextcloud.stoehr-hermaringen.de
user: admin@example.com
pw: changeme

Aktuelle Version vom 30. November 2023, 14:25 Uhr

Vorraussetzung ist, dass der Nextcloudserver schon nach folgender Anleitung installiert wurde: Installation Nextcloud unter Ubuntu 22.04 LTS
Das Folgende ist nur notwendig, wenn auch aus dem internen Netz auf den Nextcloudserver über die öffentliche URL zugegriffen werden soll.
Der externe Zugriff, d.h aus dem Internet, funktioniert auch ohne das Nachfolgende.

Wenn der Nextcloudserver hinter einem Reverse Proxy Server steht kann er sich nicht selber um die Beschaffung eines Letsencrypt Zertfikats kümmern, da der Router die notwendigen Ports 80 und 443 nur auf einen Server portforwarden kann.

Deshalb benötigt man einen Mechanismus, die Zertifikate, die der Reverse Proxy Server für den Nextcloud Server beschafft hat und in Zukunft auch regelmäßig erneuern wird, auf den Nextcloud Server zu übertragen.

Wird das nicht gemacht, bekommen Clients aus dem internen Netz eine Zertifikatswarnung sobald das ursprüngliche evtl. bei der Installation erzeugte Zertifikat des Nextcloudservers abläuft.


Da aber bekannt ist, wo das Zertikat für den Nextcloudserver auf dem Reverse Proxy abgelegt ist, kann es über ein Bash Script einfach perodisch per cronjob and die richtige Stelle auf den Nextcloudserver kopiert werden.

Folgend Vorgehensweise führt zum Ziel:

Einrichten eines SSH Zugriffs vom Nextcloudserver (NCS) auf den Reverse Proxy Server (RPS)[Bearbeiten]

  • Gernerieren eines Schlüsselpaares auf dem NCS als root
ssh-keygen -t rsa


  • Kopieren des öffentlichen Schlüssels vom NCS auf den RPS
ssh-copy-id root@RPS

Letsencrypt Zertifkate per Cronjob von RPS auf den NCS übertragen[Bearbeiten]

Die Quelle und das Ziel den entsprechnenden Gegebenheiten anpassen
  • Script für den Kopierjob erstellen
nano /usr/local/bin/cp-le-certs.sh


#! /bin/sh
scp root@RPS:/npm/letsencrypt/live/npm-1/*.pem /etc/letsencrypt/live/Domainbezeichnung
/etc/init.d/apache2 restart 
!!! Script Ausführbar machen
  • cronjob für regelmässigen Abgleich anlegen
crontab -e
# taeglich um 3:03 Uhr die aktuellen Letsencrypt Zertifikate vom Reverse ProxyServer holen
3 3 * * * /usr/local/bin/cp-le-certs.sh > /dev/null 2>&1

Erweitern der /etc/hosts auf dem Nextcloud Server zur Umgehung des Timeout Gateway 504 Fehlers[Bearbeiten]

  • lokale IP Adresse -> Domainname der Nextcloud Instanz
  • Beispiel:

192.168.4.5 nextcloud.stoehr-hermaringen.de