Hier mal eine "kurze" Anleitung, wie ich unter Unraid einen Reverse Proxy einrichten konnte, mit dem ich Zugriff auf versch. Dienste (Emby, Airsonic, nextcloud, …) des Servers, sowie die Unraid-GUI bzw. das Web-Interface habe.
Die Anleitung basiert auf dem englischsprachigen Tutorial von cyanlabs . Mit diesem war aber kein Zugriff auf die GUI möglich, zudem funktioniert das so wie dort beschrieben in der Form mit dem aktuellen Let’s Encrypt Docker-Container nicht mehr. Somit habe ich die Anleitung an einigen Stellen abgewandelt …
- Bei duckdns.org registrieren
- Servernamen aussuchen
- Token aufschreiben / speichern
- duckdns-Docker über die Community Applications auf unraid installieren
- Apps > duckdns suchen
- Installieren (Docker-Einstellungen siehe Screenshot)
https://www.kodinerds.net/index.php/Atta…s-settings-jpg/
- Firewall / Router konfigurieren
- Port-Forwarding:
Port 443 > Port 443 der IP des Servers, TCP genügt
Port 80 > Port 81 der IP des Servers, TCP genügt
- Port-Forwarding:
- Let’s Encrypt-Docker über die Community Applications (Apps) auf Unraid installieren
- Apps > letsencrypt suchen
- Installieren (Docker-Einstellungen siehe Screenshot)
https://www.kodinerds.net/index.php/Atta…t-settings-jpg/- ERKLÄRUNG:
- Domain Name:
Der Name des Servers bzw. der Adresse, die bei duckdns registriert wurde.
(in die eckigen Klammern natürlich der Name - ohne eckige Klammern)
- Subdomain(s):
Unter diesen Subdomains wird der Server ebenfalls erreichbar sein. Für die GUI könnte man dort z.B. "GUI" eingeben, der Server wäre dann unter "GUI.namedesservers.duckdns.org" erreichbar. Wichtig z.B. auch für eine sicherheitskonforme Installation von nextcloud. Daher hier auch "nextcloud" als Subdomain eingeben, so dass der Dienst unter "nextcloud.namedesservers.duckdns.org" erreichbar ist.Beispiel für Eintrag:
(ACHTUNG: KEIN Komma zwischen Subdomains!!!)
- Advanced Settings / HTTPVAL:
auf „true“ setzen (ohne Anführungszeichen), sonst klappt die Generierung der Keys für die Verschlüsselung nicht und das Letsencrypt-Docker wird nach der Installation mit Fehler (siehe [definition='1','0']log[/definition]) beendet!
- Domain Name:
- ERKLÄRUNG:
- (nginx) Config anpassen
- liegt unter …appdata/letsencrypt/user/site-confs
- Datei: default mit Texteditor (nicht word!) editieren
https://www.kodinerds.net/index.php/Atta…42-default-txt/
upstream backend {
server [IP.des.Servers]:19999;
keepalive 64;
}
server {
listen 443 ssl default_server;
listen 80 default_server;
root /config/www;
index index.html index.htm index.php;
server_name [namedesservers].duckdns.org;
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
ssl_dhparam /config/nginx/dhparams.pem;
ssl_ciphers 'verschlüsselt';
ssl_prefer_server_ciphers on;
client_max_body_size 0;
### Ab hier Einbindung von Emby
location /emby {
include /config/nginx/proxy.conf;
proxy_pass http://[IP.des.Servers]:8096;
}
### Ab hier Einbindung von Airsonic
location /airsonic {
include /config/nginx/proxy.conf;
proxy_pass http://[IP.des.Servers]:4040/airsonic;
}
location ~ /netdata/(?<ndpath>.*) {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend/$ndpath$is_args$args;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
### Ab hier wird die GUI, das Web-Interface angesprochen
### Der erste Teil in eckigen Klammern entspricht einer Subdomain,
### die bei Installation unter "Subdomains" eingetragen wurde
server {
listen 443 ssl;
server_name [GUI].[namedesservers].duckdns.org;
root /config/www;
index index.html index.htm index.php;
###SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
###Diffie–Hellman key exchange ###
ssl_dhparam /config/nginx/dhparams.pem;
###SSL Ciphers
ssl_ciphers 'verschlüsselt';
###Extra Settings###
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
### Add HTTP Strict Transport Security ###
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;
client_max_body_size 0;
### Ab hier Einbindung der GUI
location / {
include /config/nginx/proxy.conf;
proxy_pass http://[IP.des.Servers]/;
}
}
### Beispiel für Einbindung von sicherheitskonformer nextcloud
### Der erste Teil in eckigen Klammern entspricht einer weiteren Subdomain,
### falls diese bei Installation unter "Subdomains" eingetragen wurde
server {
listen 443 ssl;
server_name [nextcloud].[namedesservers].duckdns.org;
root /config/www;
index index.html index.htm index.php;
###SSL Certificates
ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
###Diffie–Hellman key exchange ###
ssl_dhparam /config/nginx/dhparams.pem;
###SSL Ciphers
ssl_ciphers 'verschlüsselt';
###Extra Settings###
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
### Add HTTP Strict Transport Security ###
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header Front-End-Https on;
client_max_body_size 0;
### Ab hier Einbindung von nextcloud
location / {
proxy_pass https://[IPdesServers]:444/;
proxy_max_temp_file_size 2048m;
include /config/nginx/proxy.conf;
}
}
Alles anzeigen
- Datei speichern als "default" und darauf achten, dass KEINE Endung wie .txt oder ähnliches gespeichert wird!
- Datei mit folgenden Rechten versehen: -rw-rw-r-- (664)
- letsencrypt Docker neu starten
GUI:
Mit der gespeicherten config (also "default") sollte die GUI nun erreichbar sein unter:
https://[erstesubdomainderconfig].[namedesservers].duckdns.org.
DIENSTE:
- https://[nextcloud].[namedesservers].duckdns.org für nextcloud (falls diese zuvor installiert wurde)
- Emby sollte zu erreichen sein unter: https://[namedesservers].http://duckdns.org/emby
- Airsonic wäre in diesem Fall zu erreichen unter: https://[namedesservers].http://duckdns.org/airsonic
ADD-ON:
- Für nextcloud über Reverse Proxy benötigt es ein paar Einstellungen, die sich hier im Tutorial von cyanlabs finden
- Codes für die Einbindung weiterer Diensten wie Plex, Deluge, Sonarr, Radarr, etc. finden sich hier (ebenfalls im Tut von cyanlabs)
ACHTUNG:
Ich konnte die Webseiten nur unter https://… aufrufen. http:// funktionierte nicht!
Viel Erfolg und gutes Gelingen!
-------------------------------------
EDIT (wg Update auf Unraid 6.4)
Mit dem Update auf Unraid 6.4 funktioniert obige Beschreibung nicht mehr, da das Web-GUI von 6.4 ein eigenes nginx-SSL mitbringt und sich somit zwei Verschlüsselungen auf dem selben Port in die Quere kommen. Es ist also wichtig, SSL/TLS in Unraid unter Settings auszuschalten UND den Port 443 in den Container-Einstellungen von lets encrypt auf 445 oder höher zu stellen. Im Anschluss nicht vergessen, auch die Portweiterleitung am Router gemäß dieses Ports zu aktualisieren.
- Unraid GUI: Settings > Identification > SSL Certificate Settings > Use SSL/TLS: No > apply
- Docker > letsencrpyt > Edit > https: > 446 oder höher > apply
- Router > Portweiterleitung > IP.Adresse.des.Servers > Quellport: 443 > Zielport: der im letsencrypt docker-container eingestellt ist (446 oder höher) > TCP > speichern
- Falls noch nicht geschehen: Router > Portweiterleitung > IP.Adresse.des.Servers > Quellport: 80 > Zielport: der im letsencrypt docker-container eingestellt ist (hier im Beispiel wäre das 81) > TCP > speichern
- neustart letsencrypt docker
Et voilà - funktioniert wieder!