Um extern abgesichert über ein SSL Zertifikat auf interne Dienste wie Nextcloud usw. zuzugreifen, empfiehlt sich einen sog. Reverse-Proxy, wie z.B. den nginx Proxy Manager (npm), zu installieren. Dieser nimmt alle Anfragen von extern auf und leitet diese an die internen Systeme weiter. Die Übertragung im Internet erfolgt dabei über ein kostenloses Let’s Encrypt Zertifikat. Der Zugriff geht über die die eigene Domain sowie einen Host-Namen für das jeweilige System.

Vorraussetzungen

Für dieses Projekt benötigst du folgendes:

1. Eigenen Domain Namen (z.B. hier bei Domain-Factory, mit dem Link bekommst du 25,- EUR Guthaben)
2. Proxmox Server
3. DietPi VM mit fester lokalen IP
4. Externe Umleitung von port 80 & 443 auf die DietPi VM (http & https) auf deinem Router
5. Docker und docker compose

Docker Installation

Prüfe zunächst, ob deine DietPi Installation up to date ist indem die folgendes ausführst:

dietpi-update

Danach installieren wir docker und docker compose:

dietpi-software install 134 162

Installation nginx Proxy Manager

Melde dich als root per ssh auf deiner docker VM an und erstelle ein neues Verzeichnis Namens „npm“ und wechsle in das Verzeichnis mit cd npm

mkdir npm && cd npm	

Als nächstes erstellen wir eine docker compose Datei, die wir für die Installation benötigen. Wir erstellen eine einfache Version des nginx Proxy Managers.

nano docker-compose.yml

Kopiere nun die folgende Konfiguration in den Editor:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Danach speichere das file mit „strg-x“ und „y“ ab. Den Docker-Container erstellen wir nun mit dem folgenden Befehl:

docker compose up -d

Um zu prüfen, ob der Container gestartet ist und korrekt ausgeführt wird kannst du folgenden Befehl eingeben:

docker ps

Öffne nun einen Webbrowser und gib folgende url ein: http://ip.deiner.docker-vm:81 – in meinem Fall http://192.168.1.91:80
Es begrüsst dich der Anmelde-Bildschirm

Melde dich nun mit folgenden Zugangsdaten an:

E-Mail: admin@example.com
Password: changeme

Nach erfolgreicher Anmeldung musst du die Anmeldeinformationen ändern. Gib dort einfach eine E-Mail Passwort an und ein Passwort, mit dem du dich dann zukünftig am npm anmeldest.

Gehe nun zu „Proxy Host“ und füge einen neuen Host hinzu. Gib deinen Domain-Namen an (bei mir nc.lcinit.de) und die IP von deinem Nextcloud server. Bei mir schaut dies so aus:

Unter SSL aktiviere nun das SSL Zertifikat für diesen Host:

Speichere dies mit „Save“. Jetzt kannst Du mit https://host.deine-domain.de auf deinen Server zugreifen. Allerdings siehst du folgendes;

Dies liegt daran, dass die Nextcloud Installation sich im Verzeichnis /netxloud befindet. Wenn du im Browser dies eingibst, landest du auf der Nextcloud Seite. Wenn du möchtest, dass eine automatische Weiterleitung erfolgt, dann öffne den Tab „Advanced“ in deiner Proxy-Host Konfiguration und füge unten die folgende Zeile ein:

 location = /{return 301 $scheme://$http_host/nextcloud/;}

Jetzt erfolgt eine automatische Weiterleitung auf den /netxcloud Ordner.

Deine Nextcloud ist nun sicher von extern erreichbar. So kannst du weitere Server, die Du im Netz von extern über den Browser erreichbar machen möchtest, bereitstellen.


Links zu Infos aus diesem Projekt:

Domain-Factroy: https://tell.tl/p/b1a/15YsrgA (inkl. 25 EUR Gutschein)
DietPi-Forum: https://dietpi.com/forum
Nginx Proxy Manager: https://nginxproxymanager.com/
DietPi: https://dietpi.com