Rechenzentrum.webp
Rechenzentrum.webp
previous arrow
next arrow
Shadow

Es ist schon wieder 3 Jahre her, dass unser lokaler Webserver neue Hardware bekommen hat. Um Datenverlust vorzubeugen, wird es also Zeit für ein Update.

Diesmal ist die Situation etwas anders als vor drei Jahren. Der neue Webserver soll den Alten 1:1 ersetzten. Es gibt also keine neue Domain, so dass der alte und neue Server parallel betrieben werden können. Hier sind die

Voraussetzungen:
  • der Webserver bekommt neue Hardware
  • wegen des DSlite Anschlusses bleiben die IP Adressen identisch
  • die Letsencrypt Zertifikate werden übernommen
  • es wird eine automatische Backuplösung installiert
  • der Webserver hostet unsere Nextcloud und die Webseite berendes-bande.de
Installationsplan:
  • Apache und Datenbank auf dem neuen Webserver installieren
  • FTP Server installieren
  • Backup der lokalen Webseite des alten Servers mit FTP einspielen und entpacken
  • Nextcloud installieren
  • Nextcloud Backup einspielen
  • Backupserver mit Samba installieren
  • Daten vom alten Backupserver übertragen
  • Letsencrypt Zertifikate auf Webserver einspielen
  • IP Adressen ändern
  • Backupjobs einrichten
  • Laufwerke dauerhaft verbinden
  • Finetuning

Als neue Hardware setzte ich zwei identische IBM ThinkCentre ein, die je eine neue SSD Festplatte erhalten. Als Betriebssystem wird Ubuntu Server 24.04 installiert. Die Installationsbeschreibung schenke ich mir an dieser Stelle. Sie ist im Wesendlichen identisch mit der im Artikel Neue Hardware für den Nextcloud Server. Das Abschalten der Festplatte bei Nichtgebrauch brauchen wir nicht, wir benutzen ja Desktop PCs. Daher brauchen wir uns auch nicht um das Zuklappen des Laptopschirms zu kümmern. Den Webserver installieren wir erst einmal parallel mit neuer IPv4 und IPv6 Adresse. 

Apache Datenbank und FTP

Als Pakete installiere ich SSH, net-tools, cifs-tools, apache2, mariadb-server, vsftpd und PHP in der Version 8.3. Die detailiere Einrichtung findet ihr in dem alten Artikel. Nachdem Apache und die Datenbank laufen, installiere ich den FTP Server:

  • systemctl start vsfdpd

  • systemctl enable vsfdpd

  • useradd -m ftpuser

  • passwd ftpuser EuerGeheimesGeheimwort

 Es braucht noch eine Änderung in der Datei /etc/vsftpd.conf:

  • writeable_enable = YES 

muss auskommentiert werden, also das Kommentarzeichen in der ersten Spalte entfernen. Als nächstes fügen wir den FTPuser der Gruppe www-data zu, geben ihm damit Rechte auf den HTML Ordner. Und wir bauen noch einen Systemlink, damit das home-Verzeichnis des FTPusers auf das HTML Verzeichnis verweist.

  • adduser ftpuser www-data

  • sudo chmod g+rwX -R /var/www/html

  • ln -s /var/www /home/ftpuser/

  • Systemctl restart vsfdpd

Webseitenbackup einspielen

Nun kopiere ich mit FTP das Akeeba Backup der lokalen Webseite in einen Unterordner des html-Verzeichnisses und packe es mit der Kickstart.php von Akeeba aus.

Der Aufruf der Webseite funktioniert dann mit der lokalen IPv4 Adresse gefolgt vom Documentroot-Verzeichnis der Seite.

Nextcloud installieren

Ich sichere meine Clouddaten auf einem Samba Server im gleichen Netzwerk. Dieser stellt ein Share /home/public zur Verfügung. Zuerst wird allerdings die Nextcloud Datenbank erzeugt. Diese Schritt ist in dem alten Artikel beschrieben.

Um Nextcloud zu installieren, kopiere ich das Datenverzeichnis, das Webseitenverzeichnis und einen Dump der Datenbank von meinem Backupserver. Man kann das aber auch mit einer USB Festplatte bewerkstelligen. Um den Backupserver einzubinden, erstelle ich zuerst einen Mountpoint im Verzeichnis /mnt - z.B. mkdir /mnt/cloudbackup. Dann verbinde ich es mit dem Backupserver :

  • mount -t cifs //backupserver/public /mnt/cloudbackup 

Mit dem Befehl

  • rsync --progress -h -a --delete <Quellverzeichnis> <Zielverzeichnis>

spiele ich zuerst das Webseitenverzeichnis in einen Unterordner im HTML Verzeichnis. Mein Datenverzeichnis liegt außerhalb der Nextcloud-Instanz im /mnt/cloud-data Verzeichnis. Also brauche ich den o.g. Befehl nochmals, um das Datenverzeichnis an seinen Platz zu bringen. Dann kopiere ich mir noch den Datenbank-Dump ins Homeverzeichnis. Die Besitzerrechte müssen nach der Kopieraktion an www-data:wwww-data übertragen werden. Den Dump lade ich dann mit 

  • mysql -u root -p nextcloud < nextcloud.sql

in die Datenbank. Die Nextcloud Webseite aktiviere ich mit a2ensite nextcloud.conf. Der Apache-Server muss danach neu gestartet werden. Danach lässt sich der Cloudserver über die IP-Adresse mit Pfadangabe öffnen. Im Adminbereich gibt es jede Menge Fehler- und Warnmeldungen. Die meisten haben ihre Ursache in der fehlenden https-Umleitung. Es gibt aber auch Hinweise auf fehlende PHP Module. OPCACHE und REDIS müssen konfiguriert werden. Also installieren wir erst einmal die fehlenden Pakete

  • apt install php-apcu, php-redis , php-gmp php-fpm redis-server -y
  • systemctl enable redis-server

Opcache wird in der php.ini-Datei in den Verzeichnissen /etc/php/8.3/apache2 und /etc/php/8.3/fpm aktiviert. Zuletzt bleiben nur noch die Fehlermeldungen übrig, die auf die fehlenden https-Umleitung zurückzuführen sind.

Letsencrypt Zertifikate einspielen

Ich übernehme die Zertifikate vom existierenden "alten" Webserver. Dazu kopiere ich das Verzeichnis /etc/letsencrypt auf meinen Backupserver. Von dort übernehme ich sie auf den neuen Webserver ins gleiche Verzeichnis. Beim Kopieren werden die Systemlinks nicht kopiert, die im Verzeichnis /etc/letsencrypt/live/<Domainname> zu finden wären. Die Dateien cert.pem, chain.pem, fullchain.pem und privkey.pem sind systemlinks, die auf gleichlautende Dateien im Verzeichnis /etc/letsencrypt/archive/<Domainname> verweisen. Die jeweiligen Zertifikate haben eine Nummer angehängt, z.B. cert16.pem. Man muss also die Systemlinks auf die Dateien verwisen lassen, die die höchste Nummer haben. Diese Links erzeugt man mit dem Befehl

  • ln -s /etc/letsencrypt/archive/<eure Domain>/cert27.pem /etc/letsencrpyt/live/<eure Domain>/cert.pem

Das Ganze macht man für die vier benötigten Zertifikate. Dann installieren wir noch die fehlenden Pakete:

  • apt install certbot phyton3-certbot-apache -y

Als nächstes deaktivieren wir alle aktiven Webseiten des neuen Servers mit a2dissite. Ich kopiere vom alten Server die Konfigurationsdateien aus dem Verzeichnis /etc/apache2/sites-available an gleiche Stelle des neuen Servers. Dann lege ich den alten Webserver still.

Ändern der IP Adressen

Der neue Server soll die gleichen IP Adressen bekommen. Das liegt an meiner Internetprovider-Situation mit dem DSlite Anschluss. Ich spare mir dadurch die Änderung der AAAA Records und die Anpassungen am Bash Script auf dem Vserver bei Strato hinsichtlich der Ipv4 Adresse. Die IP Adressen passe ich in der Netplan Konfigurationsdatei an. Diese steht im Verzeichnis /etc/netplan und endet mit .yaml. Hier ändere ich den Eintrag dhcp4 auf false und trage unter addresses die IPv4 Adresse des alten Webservers, sowie die IPv6 Adressen des alten Webservers ein. Die entsprechende Datei findet ihr unter diesem Artikel. Nach dem Speichern der Datei wird mit dem Kommando netplan try die neue Konfiguration getestet. Sollten keine Fehlermeldungen erscheinen, übernimmt man die Einstellungen mit netplan apply. Sollte eine Sicherheitswarnung erscheinen, kann man die *.yaml Datei mit chmod 600 ./meineKonfig.yaml schützen. Ich starte den Server und meine Fritzbox neu.

Es sollte nun alles an seinem Platz sein, also aktiviere ich die Apache Konfigurationen aus dem Verzeichnis sites-available. Geschafft, der Umstieg war erfolgreich, die lokale Webseite und die Nextcloud funktionieren wie gewohnt. Ich prüfe noch, ob mit den Zertifikaten alles in Ordnung ist und starte einen Trockenlauf:

  • certbot renew --dry-run

Alles läuft wie geschmiert.

Backup 

Wie bereits erwähnt, sichere ich alle Daten auf einem Samba Backupserver im gleichen Netzwerk. Dieser ist auf einem identischen Rechner installiert, läuft ebenfalls unter Ubuntu 24.04. Das public Share kopiert der Backupserver jede Sonntagnacht auf eine große USB Festplatte - also doppelte Sicherheit. Das Konzept sieht so aus, dass in der Nacht zum Samstag der Cloudserver eine Kopie seines Installationsverzeichnisses und eine Kopie des Datenverzeichnisses auf den Backupserver schiebt. Dazu gibt es ein kleines bash Skript, dass ich vor einiger Zeit im Internet gefunden habe. Dieses habe ich auf meine Bedürfnisse angepasst. In der /etc/crontab habe ich den Ausführungsbefehl eingetragen. Natürlich braucht der Webserver eine dauerhafte Verbindung zum Backupserver. Diese habe ich in der /etc/fstab eingetragen. Die Skriptdatei findet ihr unter diesem Artikel.

Unsere Hunde
hier stellen sich unsere Hunde vor
Rezepte
Hier findet ihr alle Rezepte
Zur Technikecke
Hier findet ihr meine technischen Tipps
Kontakt
Wir freuen uns über euer Feedback
Urlaub
Alle Reiseberichte findet ihr hier