In diesem Beitrag geht es um den Restore eines kompletten KeyHelp-Servers, falls beispielsweise ein Serverumzug ansteht oder es zu einem Totalausfall kam. Es werden alle Daten samt Einstellungen, Webseiten und E-Mails wiederhergestellt. Voraussetzung ist ein existierendes Vollbackup.
- Vorbereitung auf dem alten Server
- Vorbereitung auf dem neuen Server
- Wiederherstellung der Benutzerkonten
- Wiederherstellung der Verschlüsselungsschlüssel
- Wiederherstellung der Standarddatenbanken
- Wiederherstellung der Benutzerdaten
- Wiederherstellung der SSL-Zertifikate
- Wiederherstellung der White-Label
- Wiederherstellung abschließen
Für den kompletten Wiederherstellungsprozess musst du mit ca. 1 Stunde rechnen. Je nach Datenmenge kann es auch länger dauern.
Vorbereitung auf dem alten Server
Für den Restore ist ein Vollbackup notwendig. Erstelle daher eines, falls noch möglich. Falls bereits eines existiert, kann dieser Schritt übersprungen werden.
Navigiere dazu zu den Einstellungen Backup Backup erstellen. Wähle hier Vollständig sowie die gewünschte Repository aus. Da der Server bald nicht mehr aktiv ist, muss hier unbedingt eine externe Repository verwendet werden. Ich verwende einen Clouddienst mit Rclone und habe daher unter Benutzerdefiniert die entsprechende Speicherkonfiguration. Diese Speicherkonfiguration solltest du für später kopieren.
Rclone: Verbindung zu Google Drive aufbauen per Shell
Merke dir, welche PHP-Interpreter in Verwendung sind: Einstellungen Konfiguration PHP-Interpreter
Mache dir Gedanken darüber, was neben KeyHelp noch auf dem Server läuft. Auch diese Dienste und Daten sollten gesichert werden. Diese sind in diesem Backup nicht enthalten.
Vorbereitung auf dem neuen Server
Setze zunächst einen frischen Server auf. Dieser muss unter dem selben Betriebssystem mit selber Version laufen, wie der alte Server. Installiere lediglich KeyHelp. Es empfiehlt sich, dieselben Anmeldedaten für das Administrator-Konto wie vom alten Server zu verwenden. Das vereinfacht den Ablauf später.
KeyHelp unter Debian 12 installieren und Domain mit E-Mail einrichten [KeyHelp Tutorial]
Lege nun die selbe Backup-Repository an, wie auf dem alten Server. Navigiere dazu zu Einstellungen Backup Repository-Verwaltung.
Während die Repository eingebunden wird, sicherst du alle SQL-Benutzerkonten. Melde dich dazu beispielsweise mit phpMyAdmin als mysqladmin an. Die zunächst neuen Zugangsdaten für diesen User findest du unter /root/ in der Textdatei. Später wird das alte Kennwort wieder aktiv sein.
Wähle unter Benutzerkonten den Haken Alle auswählen und klicke auf Exportieren. Kopiere den dargestellten Code und speichere ihn zwischen, er wird später noch benötigt.
Verbinde dich nun per Shell auf den Server und beende die Mailserver-Dienste:
service dovecot stop
service postfix stop
Wiederherstellung der Benutzerkonten
Zurück in KeyHelp wird nun inzwischen unter Backup wiederherstellen das zuvor erstellte Backup aufgelistet.
Wähle dieses Backup zum Wiederherstellen aus. Wähle im Fenster der Wiederherstellung lediglich unter Dateien und Verzeichnisse den Pfad /etc/ aus. Setze unten Alternativer Pfad und vergib einen temporären Pfad, beispielsweise /restore.
Warte ab, bis die Wiederherstellung abgeschlossen ist.
Bearbeite anschließend per Shell die Dateien passwd und shadow aus dem wiederhergestellten Verzeichnis mit beispielsweise nano. Entfernen aus diesen beiden Dateien alle Benutzer, welche keine Benutzerkonten von Kunden sind. Die Dateien sollten schließlich nur noch so aussehen:
root@keyhelp:/restore # cat /restore/etc/passwd kunde1:x:5001:5001::/home/users/kunde1/:/bin/false kunde2:x:5002:5002::/home/users/kunde2/:/bin/false kunde3:x:5003:5003::/home/users/kunde3/:/bin/false
root@keyhelp:/restore # cat /restore/etc/shadow kunde1:$6$rounds=100000$sX9GhftWlpwVzr8.$bpHZ5oDNIMOIwboC/Pl2MAaHlWd2PEC45xQanwPVpWbRGdqFrw/HxRZn/Pzv3/kLeck9y1tBcn3oHwYCb/x/D1:19406:0:99999:7::: kunde2:$6$rounds=100000$0aC3jOFlNH4GQft1$OxO1bTMCCyhTznae/t1YMokgbxVQ99j4FPiF8lLm8M77tVJXC497tJ/8Q3ELYYpmxXuecoJVjVIvK5ISNm7VI.:19406:0:99999:7::: kunde3:$6$rounds=100000$Y3A45T2bWQHR7i/v$1S0blo0fq5n/U96LUtAYrIcif3apH3kOhuMHlrDhcV0b55hcCq1ZJCedzxmBoGTlEt4xi4Q/LUJFpk4gY0r8F.:19406:0:99999:7:::
Füge diese Einträge nun zur aktiven Datei unter /etc/ an:
cat /restore/etc/passwd >> /etc/passwd
cat /restore/etc/shadow >> /etc/shadow
Dasselbe wird jetzt noch mit den Dateien group und gshadow gemacht, mit dem Unterschied, dass zusätzlich folgende 5 Gruppen von KeyHelp bleiben:
root@keyhelp:/restore # cat /restore/etc/group keyhelp_file_manager:x:1001:kunde1,kunde2,kunde3 keyhelp_nossh:x:1002:kunde1,kunde2,kunde3 keyhelp_noftp:x:1003: keyhelp_suspended:x:1004: keyhelp_chroot:x:1005: kunde1:x:5001: kunde2:x:5002: kunde3:x:5003:
root@keyhelp:/restore # cat /restore/etc/gshadow keyhelp_file_manager:!::kunde1,kunde2,kunde3 keyhelp_nossh:!::kunde1,kunde2,kunde3 keyhelp_noftp:!:: keyhelp_suspended:!:: keyhelp_chroot:!:: kunde1:!:: kunde2:!:: kunde3:!::
Bevor du jetzt diese Gruppen anhängst, musst du die bereits existierenden KeyHelp-Gruppen aus der aktiven Datei entfernen. Editiere die beiden Dateien unter /etc/ und entferne jeweils folgende 5 Zeilen daraus:
root@keyhelp:/restore # cat /etc/group root:x:0: daemon:x:1: bin:x:2: . . . keyhelp_file_manager:x:1001: keyhelp_nossh:x:1002: keyhelp_noftp:x:1003: keyhelp_suspended:x:1004: keyhelp_chroot:x:1005: . . . clamav:x:121:amavis amavis:x:122:clamav debian-spamd:x:123:
root@keyhelp:/restore # cat /etc/gshadow root:x:0: daemon:x:1: bin:x:2: . . . keyhelp_file_manager:!:: keyhelp_nossh:!:: keyhelp_noftp:!:: keyhelp_suspended:!:: keyhelp_chroot:!:: . . . postfix:!:: postdrop:!:: policyd-spf:!::
Nun können die Inhalte angehängt werden:
cat /restore/etc/group >> /etc/group
cat /restore/etc/gshadow >> /etc/gshadow
Wiederherstellung der Verschlüsselungsschlüssel
Für einige Verschlüsselungen, wie beispielsweise die 2-Faktor-Authentifizierung, befindet sich im der KeyHelp Konfiguration der so genannte Verschlüsselungsschlüssel. Dieser muss wiederhergestellt werden, damit eben unter anderem die Authentifizierung wieder funktioniert.
Öffne die alte Konfiguration aus dem Backup:
tail /restore/etc/keyhelp/config/config.json
Kopiere hier den Wert von base heraus und speichere ihn zwischen:
"encryption": { "base": "7r8O4ORsYCGe3LA6ftb6naeO" }
Füge diesen Wert nun in die neue Konfiguration ein:
nano /etc/keyhelp/config/config.json
Da nun eine Änderung in der Konfiguration vorgenommen wurde, muss die Backup-Repository einmal gelöscht und neu angelegt werden.
Wiederherstellung der Standarddatenbanken
Nun werden die 5 Standarddatenbanken von KeyHelp wiederhergestellt. Navigiere dazu wieder in das KeyHelp Panel zu Backup wiederherstellen und wähle das Backup wieder aus. Setze unter Datenbanken alle Haken der Datenbanken, die zu KeyHelp gehören:
Starte nach der Wiederherstellung den Datenbankserver einmal neu:
service mysql restart
Es wird nun beim Aufruf vom KeyHelp Panel zu einem Datenbankfehler kommen. Begib dich daher in der Shell zur MySQL-Kommandozeile:
mysql -u root -p
Melde dich mit den ursprünglichen Passwort an. Setze hier den kompletten Inhalt mit den Benutzerkonten ab, welchen du zuvor kopiert hast.
Verlasse die Kommandozeile mit
quit
und starte den SQL-Server erneut neu:
service mysql restart
Die Anmeldung im Panel ist nun wieder möglich. Da wieder Änderungen in der Konfiguration vorgenommen wurden, muss die Backup-Repository erneut gelöscht und neu angelegt werden. Außerdem sollten unter Einstellungen Konfiguration PHP-Interpreter die notwendigen Interpreter wieder installiert werden.
Wiederherstellung der Benutzerdaten
Nun ist es an der Zeit, die Benutzerdaten wiederherzustellen. Dies beinhaltet alle Webseiten, E-Mails und alles andere, was dazugehört.
Navigiere erneut zu Backup wiederherstellen, wähle das Backup aus und wähle diese Elemente aus:
Unter Datenbanken alle Datenbanken der Kunden, sofern vorhanden. Und wirklich nur diese, keine Datenbanken, welche bereits vorher wiederhergestellt wurden!
Unter Dateien und Verzeichnisse alle Verzeichnisse der Kunden: /home/users/XXX/
Warte ab, bis der Wiederherstellungs-Vorgang abgeschlossen ist.
Wiederherstellung der SSL-Zertifikate
Jetzt werden noch die SSL-Zertifikate übernommen:
cd /restore
mv /etc/ssl/keyhelp /etc/ssl/keyhelp.bak
cp -av etc/ssl/keyhelp/ /etc/ssl/
rm -rf /etc/ssl/keyhelp.bak
Wiederherstellung der White-Label
Sofern Änderungen am Aussehen von KeyHelp vorgenommen wurde, wie beispielsweise ein eigenes Favicon oder Banner, muss zusätzlich folgender Schritt durchgeführt werden. Da sich diese Bilddaten im User-Verzeichnis von keyhelp befinden, werden die Daten aus diesem Verzeichnis noch wiederhergestellt.
Navigiere erneut zu Backup wiederherstellen, wähle das Backup aus und wähle unter Dateien und Verzeichnisse das Verzeichnis /home/keyhelp aus.
Setze den Haken Wiederherstellen einer einzelnen Datei oder eines Unterverzeichnisses und wähle im Dropdown-Menü /home/keyhelp aus. In das Textfeld daneben trägst du folgendes ein:
/www/keyhelp.white_label
Lasse die Ordner in den /restore Pfad wiederherstellen und kopiere ihn anschließend nach /home/keyhelp/www.
Wiederherstellung abschließen
Unter Konfiguration IP-Adressen muss jetzt noch die neue IP-Adresse angekreuzt werden, sofern ein Wechsel stattfand.
Abschließend müssen noch die Benutzer-Konfigurationsdateien von KeyHelp neu geschrieben werden. Verwende dazu in der Shell folgenden Befehl:
keyhelp-toolbox
Drücke im Hauptmenü die 1 und befolge die weiteren Schritte.
Starte den Server nun noch einmal neu:
reboot now
Der temporäre Ordner /restore kann jetzt gelöscht werden. Der vollständige Wiederherstellungs-Prozess ist abgeschlossen.
Bei Fragen oder Anregungen freue ich mich natürlich über eure Kommentare.
Über mich
Ich bin Janis (aka. EurenikZ), 25 Jahre alt und komme aus der Nähe von Frankfurt am Main. Ich habe eine abgeschlossene IHK-Ausbildung zum Fachinformatiker für Systemintegration und arbeite als Junior IT-Administrator in einem IT-Systemhaus. Neben meinem IT-Blog beschäftige ich mich viel mit diversen IT-Themen und meinen Webseiten sowie Telegram Bots und biete IT-Dienstleistungen an.
Vielen lieben Dank für die tolle Anleitung. Das hat mir sehr geholfen, nach einem missglückten Update von Ubuntu 22.04 auf 24.04 alles nach einer Neuinstallation unter 24.04 zum Laufen zu bekommen. Zwar steigt hin und wieder einmal das restic aus bei zu großen oder zu vielen Dateien, aber das werde ich sicherlich auch noch hinbekommen. Und ich habe noch Probleme bei der Anmeldung via FTP. Dann kommt meist ein Fehler / Timeout