Ugreen DXP2800 als SSL Webserver
Ugreen DXP2800 als SSL Webserver
Vorkonfiguration auf dem DXP2800 NAS
LAN als virtuelle Brücke konfigurieren
Einstellungen für die Ubuntu VM
VM-Name: UbuntuServer
Systemtyp: Linux
CPU(Kern): 2
Arbeitsspeicher (GB): 4
Image / Image 1: Ubuntu Server
Festplatte (GB): Festplatte1 virtio 20 GB
Netzwerk: Netzwerk 1 virtio vnet-bridge(0)
USB Kontroller: Inaktiv
USB Geräte: keine
Grafikkarte: cirrus
Systemstartmethode: Bios
Automatischer Start: Deaktivieren
Tastatursprache: de
Startort: Festplatte 1
VM-Name: UbuntuServer
Systemtyp: Linux
CPU(Kern): 2
Arbeitsspeicher (GB): 4
Image / Image 1: Ubuntu Server
Festplatte (GB): Festplatte1 virtio 20 GB
Netzwerk: Netzwerk 1 virtio vnet-bridge(0)
USB Kontroller: Inaktiv
USB Geräte: keine
Grafikkarte: cirrus
Systemstartmethode: Bios
Automatischer Start: Deaktivieren
Tastatursprache: de
Startort: Festplatte 1
Wenn man diese kleine Dokumentation bewerkstelligt hat, erhält man einen vollfunktionsfähigen Webserver, abgesichert mit SSL Zertifikat (https) und bequem erreichbar über den WebDAV Dienst des Ugreen DXP2800.
In diesem Beispiel wird davon ausgegangen, dass das DXP2800 mit mindestens drei Festplatten bestückt ist. Die Sata SSDs in Bay 1 und 2 laufen im Raid 1 Verbund (Volume 1), als reines Backup-System für Volume 2. Eine zusätzliche NVMe Festplatte (Volume 2) dient als schneller Webspeicher für den WebDAV Dienst und wird auch als schneller Speicher für den Apache2 Webserver, in Verbindung mit PHP und MySQL genutzt.
In diesem Beispiel wird davon ausgegangen, dass das DXP2800 mit mindestens drei Festplatten bestückt ist. Die Sata SSDs in Bay 1 und 2 laufen im Raid 1 Verbund (Volume 1), als reines Backup-System für Volume 2. Eine zusätzliche NVMe Festplatte (Volume 2) dient als schneller Webspeicher für den WebDAV Dienst und wird auch als schneller Speicher für den Apache2 Webserver, in Verbindung mit PHP und MySQL genutzt.
Wird zusätzlich noch ein weiteres NVMe Laufwerk verwendet, dann können auch die Daten auf Volume 2 im Raid 1 Verbund laufen und man genießt etwas mehr Ausfallsicherheit.
Für die absolute Datensicherheit könnte man, an einem anderen Standort, ein zweites DXP2800 einrichten und beide Geräte via Remote Sync (rSync) verbinden.
Eine DynDNS Domain wird vorausgesetzt und sollte bereits registriert und einsatzbereit sein. Als Domainanbieter dient in diesem Beispiel die Strato GmbH. Wer mit Linux etwas bewandt ist, für den wird sich der Zeitaufwand für die Einrichtung auf etwas weniger als eine Stunde beschränken.
Zunächst sollten die folgenden Punkte auf dem DXP2800 abgearbeitet werden:
Zunächst sollten die folgenden Punkte auf dem DXP2800 abgearbeitet werden:
- Freigegebenes Verzeichnis "WWW" auf Volume 2 anlegen.
- Benutzer "WWW-User", mit Schreib und Leseberechtigung für Verzeichnis "WWW" anlegen.
- Auf DXP2800 die App "Virtuelle Maschine" installieren.
- Ubuntu 24.04.2 Live Server Edition ISO Image downloaden und auf DXP2800 kopieren.
- App "Virtuelle Maschine" öffnen und eine manuelle Einrichtung über die ISO Datei auswählen.
- Installation von Ubuntu auf Volume2 in VM
LAN als virtuelle Brücke konfigurieren
In der Standardkonfiguration kann die Virtuelle Maschine auf dem DXP2800 nicht als Server betrieben werden, da im DXP2800 keine zweite Netzwerkkarte verbaut wurde und der Brückenmodus für die vorhandene Netzwerkkarte nicht aktiviert wurde. Der Linux Bridge- / Brücken- Modus kann unter den folgenden Einstellungen geändert werden:
In der Systemsteuerung / Netzwerk / Netzwerkverbindungen, unter Netzwerkbrücke, den Modus auf "Virtuelle Brücke" umstellen.
Tipp! Ein Schnappschuss anlegen
Wenn alle auf dieser Seite aufgeführten Arbeiten abgeschlossen sind und der Server seinen Dienst aufgenommen hat, dann sollte man in der Virtuellen Maschine vom aktuellen Zustand unbedingt einen Schnappschuss anlegen. Sollte künftig mal etwas schief laufen, dann kann man mit nur einem Mausklick den Server wiederherstellen und mühelos wieder in Betrieb nehmen.
Konfiguration von Ubuntu und Apache
Konfiguration von Ubuntu und Apache
Nachdem Ubuntu installiert wurde und der erste Prompt in der Bash erscheint, gibt man nun die folgenden Befehle ein, für eine vollständige Installation von Apache2, PHP, MySQL, Let's Encrypt, Samba Client, Net-Tools und CIFS-Utils:
sudo apt list --upgradeable
sudo apt upgrade
sudo apt update
sudo apt install net-tools
sudo apt install apache2
sudo apt install php
sudo apt install php-gd
sudo apt install php-zip
sudo apt install php-xml
sudo apt install php-curl
sudo apt install php-mbstring
sudo apt install php
sudo apt install mysql-server
sudo apt install smbclient
sudo apt install cifs-utils
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod expires
sudo a2enmod headers
sudo systemctl stop apache2
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName server.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RewriteEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect / https://server.domain.com/
</VirtualHost>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RewriteEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect / https://server.domain.com/
</VirtualHost>
sudo nano /etc/apache2/sites-available/default-ssl.conf
<Virtual Host *:443>
ServerName server.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RewriteEngine on
<Directory />
Options FollowSymLinks
AllowOverride none
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/server.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.domain.com/privkey.pem
<FilesMatch "\.(?:cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
ServerName server.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RewriteEngine on
<Directory />
Options FollowSymLinks
AllowOverride none
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/server.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.domain.com/privkey.pem
<FilesMatch "\.(?:cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
sudo apt install letsencrypt
sudo systemctl status certbot.timer
sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d server.domain.com
sudo a2ensite default-ssl.conf
sudo systemctl start apache2
Einstellungen für die Zeitzone
Für eine korrekte Zeitangabe auf dem Server, muss noch die richtige Zeitzone eingestellt werden:
sudo timedatectl set-timezone Europe/Berlin
sudo nano /etc/php/8.3/apache2/php.ini
In der Datei "php.ini", die folgende Anweisung eintragen:
date.timezone = Europe/Berlin
E-Mail Einstellungen
Damit der Server eigenständig E-Mails versenden kann, muss entweder ein vollständiger E-Mail Server eingerichtet werden, oder man nutzt dazu einfach einen vorhandenen, externen Anbieter (Strato / Google / GMX usw).
Wir beschränken uns hier der Einfachheit halber auf den externen Anbieter, Strato:
sudo apt install ssmtp
sudo apt install mailutils
sudo nano /etc/ssmtp/ssmtp.conf
root=noreply@domain.com
mailhub=smtp.strato.de:587
hostname=domain.com
FromLineOverride=YES
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN
AuthUser=noreply@domain.com
AuthPass=PASSWORT
mailhub=smtp.strato.de:587
hostname=domain.com
FromLineOverride=YES
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN
AuthUser=noreply@domain.com
AuthPass=PASSWORT
sudo nano /etc/ssmtp/revaliases
root:noreply@domain.com:smtp.strato.de:587
www-data:noreply@domain.com:smtp.strato.de:587
localusername:noreply@domain.com:smtp.strato.de:587
www-data:noreply@domain.com:smtp.strato.de:587
localusername:noreply@domain.com:smtp.strato.de:587
Mount Share Folder "WWW" von DXP2800 NAS / Volume 2
Der auf dem DXP2800 geteilte Ordner "WWW", muss noch in der Virtuellen Maschine sichtbar gemacht werden, damit das Ubuntu System darauf zugreifen kann. Hierzu melden wir das Verzeichnis mittels "Mount" Befehl am System an. Mit den folgenden zwei Befehlen wird der "WWW" Ordner unter "/mnt/nas_share" freigegeben:
sudo mkdir /mnt/nas_share
sudo mount -t cifs -o username=WWW-User,password=PASSWORT //DXP2800/WWW /mnt/nas_share
Der auf dem DXP2800 geteilte Ordner "WWW", muss noch in der Virtuellen Maschine sichtbar gemacht werden, damit das Ubuntu System darauf zugreifen kann. Hierzu melden wir das Verzeichnis mittels "Mount" Befehl am System an. Mit den folgenden zwei Befehlen wird der "WWW" Ordner unter "/mnt/nas_share" freigegeben:
sudo mkdir /mnt/nas_share
sudo mount -t cifs -o username=WWW-User,password=PASSWORT //DXP2800/WWW /mnt/nas_share
Update-Script
Als nächstes erzeugen wir ein kleines Bash-Script, womit wir künftig alle Inhalte aus dem "WWW" Ordner, in das öffentliche Verzeichnis des Apache2 Server kopieren und dabei auch die notwendigen Zugriffsrechte erteilen:
sudo touch /home/www-update.sh
sudo touch /home/www-update.sh
sudo nano /home/www-update.sh
#!/bin/bash
rm /var/www/html/*
cp -R /mnt/nas_share/. /var/www/html/
chown -R www-data:www-data /var/www/html/
chmod -R 775 /var/www/html/
rm /var/www/html/*
cp -R /mnt/nas_share/. /var/www/html/
chown -R www-data:www-data /var/www/html/
chmod -R 775 /var/www/html/
sudo chmod +x /home/www-update.sh
Webinhalte auf den Webserver kopieren
Nachdem neue Webinhalte im "WWW" Verzeichnis des DXP2800 abgelegt wurden, kann das Bash-Script mit folgenden Befehl ausgeführt werden:
sudo /home/www-update.sh
Möchte man den "WWW" Ordner für administrative Zwecke aus dem Internet erreichbar machen, dann kann man das Verzeichnis zusätzlich noch im WebDAV Dienst des DXP2800 für die entsprechenden Benutzer freigeben.
Webinhalte mit dem Server synchronisieren
Wenn man möchte, dann kann man auch mittels rsync Befehl das freigegebene Verzeichnis "/mnt/nas_share", zum Verzeichnis "/var/www/html/" synchronisieren lassen. Alle Inhalte die dann im WWW Ordner des DXP2800 abgelegt werden, stehen dann auch automatisch im öffentlichen Verzeichnis des Apache Servers zur Verfügung. Dateien die auf dem Server neuerem Datums sind, bleiben erhalten (Option -u):
Am besten erzeugen wir hierzu auch wieder ein kleines Bash-Script, damit der Aufruf künftig einfacher und schneller geht:
sudo touch /home/www-sync.sh
sudo nano /home/www-sync.sh
Webinhalte mit dem Server synchronisieren
Wenn man möchte, dann kann man auch mittels rsync Befehl das freigegebene Verzeichnis "/mnt/nas_share", zum Verzeichnis "/var/www/html/" synchronisieren lassen. Alle Inhalte die dann im WWW Ordner des DXP2800 abgelegt werden, stehen dann auch automatisch im öffentlichen Verzeichnis des Apache Servers zur Verfügung. Dateien die auf dem Server neuerem Datums sind, bleiben erhalten (Option -u):
Am besten erzeugen wir hierzu auch wieder ein kleines Bash-Script, damit der Aufruf künftig einfacher und schneller geht:
sudo touch /home/www-sync.sh
sudo nano /home/www-sync.sh
#!/bin/bash
rsync -rtuog --chown=www-data:www-data --chmod=775 /mnt/nas_share/ /var/www/html
rsync -rtuog --chown=www-data:www-data --chmod=775 /mnt/nas_share/ /var/www/html
sudo chmod +x /home/www-sync.sh
Zum Starten der Synchronisierung genügt nun der Aufruf des Scriptes:
sudo /home/www-sync.sh
Optional kann man dazu auch noch die "inotify-tools" installieren, womit man dann den gesamten Ordner automatisch überwachen kann:
sudo apt-get install inotify-tools
while inotifywait -r -e modify,create,delete,move /mnt/nas_share; do
rsync -rtuog --chown=www-data:www-data --chmod=775 /mnt/nas_share/ /var/www/html
done
rsync -rtuog --chown=www-data:www-data --chmod=775 /mnt/nas_share/ /var/www/html
done
Abschließend starten wird den Server einmal neu, damit auch alle Zeitzonen korrekt eingestellt sind:
sudo reboot
sudo reboot
Konfiguration der Subdomain (Strato)
Konfiguration der Subdomain (Strato)Autodiscovery: Aktiviert
NS Record: Strato Nameserver
A Record: Inaktiv
AAAA Record: Inaktiv
MX Record: Inaktiv
CNAME Record: Inaktiv
TXT- und CNAME Records:
Strato DMARC: Keine Strato DMARC Regeln
SPF: Standard Strato Mailserver
Typ: TXT
Präfix: _dmarc
Wert: v=DMARC1; p=reject; pct=100
Typ: TXT
Präfix: domain-dkim.domain-dkim
Wert: ********
Typ: TXT
Präfix: domain-dkim.domain-dkim
Wert: v=DKIM1;t=s;p=********
SRV Record: Deaktiviert
Dynamic DNS: DynDNS aktiviert
Router Konfiguration
Router KonfigurationDynDNS Einstellungen
Eine registrierte und funktionierende DynDNS Domain wird bereits vorausgesetzt. Hier aber noch mal kurz das passende Schema für die automatische Aktualisierung der IP Adresse (Strato):
Update-URL: https://<username>:<passwd>@dyndns.strato.com/nic/update?hostname=<domain>&myip=<ipaddr>,<ip6addr>
Domainname: server.domain.com
Benutzername: ****
Passwort: ****
Portfreigaben
Für die Erreichbarkeit des virtuellen Ubuntu Servers von außen, müssen noch die üblichen IPv4 Ports für den http und https Dienst im Router geöffnet werden:
- Portfreigabe für virtuellen Ubuntu Server auf Port 80 einrichten.
- Portfreigabe für virtuellen Ubuntu Server auf Port 443 einrichten.
Sollte zusätzlich noch der WebDAV Dienst vom DXP2800 genutzt werden, dann muss noch der entsprechende Port für IPv4 und IPv6 freigegeben werden:
- Portfreigabe für WebDAV Dienst auf Port 5006 einrichten.
Zertifikat für DXP2800
Zertifikat für DXP2800Ein selbstsigniertes Zertifikat für server.domain.com erstellen - Gute Idee?

Mit der unten stehenden Beschreibung kann ein selbstsigniertes Zertifikat erstellt werden und auf dem DXP2800 zum Beispiel für den WebDAV und FTPS Dienst genutzt werden, wenn man nicht das beiliegende Ugreen Zertifikat, oder das soeben frisch installierte Let's Encrypt Zertifikat nutzen möchte. Es wird aber ausdrücklich empfohlen, auch für alle Ugreen Dienste ein Let's Encrypt Zertifikat zu nutzen! Das Let's Encrypt Zertifikat befindet sich im Verzeichnis "/etc/letsencrypt/live/server.domain.com/", unter den Dateinamen "fullchain.pem" und "privkey.pem". Die Dateien können problemlos aus der virtuellen Umgebung, auf das DXP2800, in das "WWW" Verzeichnis, mittels "cp" Befehl kopiert werden und dann als Zertifikat für alle anderen Dienste genutzt werden.
- sudo cp /etc/letsencrypt/live/server.domain.com/fullchain.pem /var/www/html/
- sudo cp /etc/letsencrypt/live/server.domain.com/privkey.pem /var/www/html/
Achtung! Der private Schlüssel und das Zertifikat befinden sich nach dem Kopiervorgang im öffentlichen "WWW" Verzeichnis des Servers und sollten sofort auf dem DXP2800 in ein sicheres Verzeichnis verschoben werden.
Keine gute Idee - Ein selbstsigniertes Zertifikat erstellen
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myRoot.key -out myRoot.crt
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Hessen
Locality Name (eg, city) []:Frankfurt
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompanyName
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:server.domain.com
Email Address []:info@domain.com
State or Province Name (full name) [Some-State]:Hessen
Locality Name (eg, city) []:Frankfurt
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompanyName
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:server.domain.com
Email Address []:info@domain.com