Hallo Zusammen,
Ich war auf der Suche nach einem einfachen Weg um einige Webservices sicher per Qnap extern bereit zu stellen. Erst hatte ich an einen extra Reverse Proxy gedacht, aber das fühlte sich falsch an. hier eine kurze Beschreibung die anderen vielleicht hilft, wie ich es bei meiner TVS-471 aufgesetzt habe.
Bevor wir starten ein kleiner Hinweis. Ich beschreibe hier meine Schritte nach bestem Wissen und Gewissen, aber jeder der es nachmachen will tut dies auf sein eigenes Risiko.
Hier nun die Schritte:
- Zuerst müssen wir auf dem NAS myqnapcloud mit allem drum und dran einrichten. Dazu hat Qnap schon einige Anleitungen geschrieben eine Internetsuche zum Beispiel nach "Zugriff via myQNAPcloud einrichten" sollte helfen.
Jetzt wäre es super man könnte in QTS weitere Einträge für den Zugriff einrichten um zum Beispiel über das Unterverzeichnis /our_test/ per Passwort auf den http Server unter 192.168.2.4 Port 80 zugreifen zu können. Aber leider gibt es diese Option nicht. Aber mit der unteren Anleitung geht es doch und die Anpassungen überleben auch einen Systemneustart.
Ein Risiko besteht natürlich, da wir dafür den System Proxy anpassen müssen. Daher ist es wichtig einen ssh Zugriff immer aktiv zu lassen damit man im Bedarfsfall per Kommandozeile die Änderungen einfach zurücknehmen kann. Mehr dazu am Ende dieser Anleitung.
- Der System Webserver basiert auf Apache, daher müssen wir 2 zusätzliche config Files erstellen und auf dem NAS ablegen die auch nach einem Neustart noch vorhanden sind. Man kann dafür jedes Fileshare auf dem NAS nutzen. Ich habe dafür ein eigenes Fileshare mit dem Namen myApps angelegt.
- Da wir unsere Zugriffe per Passwort schützen wollen, legen wir eine sogenannte htpasswd Datei an. Im Internet gibt es dafür tools - schaue einfach nach 'htpasswd generator'.
- Danach benötigen wir noch ein Config File mit den Eintragungen für unseren Service. Für das Beispiel hier sagen wir wir speichern dieses File unter dem Namen apache-sys-proxy-ssl.conf
- Der Inhalt muss der Notation für Apache Reverse Proxy Server entsprechen, hier ein Beispiel um wie oben als Beispiel gewählt einen http Webserver auf Port 80 und der ip Adresse 192.168.2.4 via Subdirectory 'our_test' bereit zu stellen:
<VirtualHost *:443>
ServerName your_name.myqnapcloud.com
ServerAdmin your_email_adress
ProxyPass "/our_test/" "http://192.168.2.4:80/"
ProxyPassReverse "/our_test/" "http://192.168.2.119:80/"
DocumentRoot /share/Web/
<Location />
AuthType Basic
AuthName "Test Access"
AuthUserFile /share/myApps/.your_htpasswd_file
Require valid-user
</Location>
ErrorLog /share/myApps/your_access-error.log
CustomLog /share/myApps/your_access.log
SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerName off
SSLProxyCheckPeerCN off
SSLHonorCipherOrder off
SSLCipherSuite EECDH+CHACHA20:EECDH+AES
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCertificateFile "/etc/stunnel/stunnel.pem"
SSLCertificateChainFile "/etc/stunnel/uca.pem"
</VirtualHost>
Alles anzeigen
- Nun muss diese Konfigurationsdatei noch als neue Zeile in der Original Konfiguration eingefügt werden, dazu die Zeile
ans Ende der Datei /etc/apache-sys-proxy-ssl.conf einfügen und der Server via des folgenden Kommandos neu starten. Das Neustarten geht mit dem Kommando
Das wars und man kann es wie folgt testen. Einfach die folgende Adresse aufrufen.
- Allerdings würde diese Erweiterung bei jedem Neustart verloren gehen. Dazu lassen wir einen kleinen Cronjob alle 5 Minuten prüfen ob die Erweiterung noch ok ist. Falls nicht wird die Zeile wieder eingefügt und der Server neu gestartet.
- Das dazugehörige Batch File ist
#!/bin/sh
if grep -q proxy-extension.conf /etc/apache-sys-proxy-ssl.conf ; then
echo "Qnap Reverse Proxy extensions OK."
else
echo "Qnap Reverse Proxy extensions not OK, correcting..."
/sbin/write_log "Missing Proxy extensions..., trying to adjust" 2
cat /etc/apache-sys-proxy-ssl.conf > /share/myApps/apache-sys-proxy-ssl.conf
echo "" >> /share/myApps/apache-sys-proxy-ssl.conf
echo "Include /share/myApps/configs/internal_proxy/proxy-extension.conf" >> /share/myApps/apache-sys-proxy-ssl.conf
mv /share/myApps/apache-sys-proxy-ssl.conf /etc/
echo "... restarting server."
/etc/init.d/Qthttpd.sh restart
fi
Alles anzeigen
- Mit dem Kommando
machen wir das Batchfile ausführbar.
Jetzt müssen wir nur noch folgende Zeile in die Crontab eintragen
Wie man eigene Einträge permanent in die Qnap einträgt findet man im Internet.
- Wie oben schon beschrieben sollte man einen shh Zugriff offen haben. Im Fall von Problemen geht man per SSH auf das NAS, löscht den Eintrag aus der Crontab und startet das NAS neu. Dann sollte alles wieder OK sein.
Das war's gebt Bescheid ob die Beschreibung geholfen hat.