Migration von i-MSCP zu KeyHelp

Für Modifikationen in und um KeyHelp.
Post Reply
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Migration von i-MSCP zu KeyHelp

Post by space2place »

Hi zusammen,
es freut mich endlich das Migrations Script zum Testen freizugeben.
Ich habe es in Python3 geschrieben. Bitte habt Nachsicht. Ich habe Python erst angefangen, aber ich denke hierfür war es optimal geeignet.
Deswegen bitte ich die Profi Programmierer nicht zu Hart mit mir ins Gericht zu gehen.. :)

Also... Was macht das Script.
  • Es sammelt alle Informationen eines User (erste Domain):
    • Sub Domains
    • Alias Domains
    • Sub Alias Domains
    • Alle Emailadressen
    • Catch All Adressen
    • Datenbanken und Dantenbank Benutzer
    • FTP-Benutzer
    • Verzeichnisschutz-Benutzer
    • SSL Zertifikate
  • Erstellt einen neuen KeyHelp User
  • Fügt alle von i-MSCP gesammelten Informationen per API hinzu
    • Altes Email Passwort wird von i-MSCP übernommen
    • Altes FTP Benutzer Passwort wird von i-MSCP übernommen
    • Altes Verzeichnisschutz Benutzer Passwort wird von i-MSCP übernommen
  • Erzeugt Remote die SQL Dumps
  • Überträgt die Dump per SFTP auf den KeyHelp Server
  • Importiert die Dumps in die richtige Datenbank
    • Hier ist es wichtig die Logs zu prüfen, da der alte Datenbankname und Datenbank Benutzer umbenannt werden
  • Synchronisiert alle Emailkonten (Normal und Normal inkl. Weiterleitung)(Besitzer der Dateien werden anschließend neu gesetzt)
  • Synchronisiert alle Webseiten in das entsprechende Verzeichnis (Besitzer der Dateien werden anschließend neu gesetzt)
Zu jedem Benutzer von i-MSCP werden 2 Logs im Verzeichnis "logs" erstellt:
  • meine-domain.tld_get_data_from_imscp.log
  • meine-domain.tld_keyhelp_migration_data.log
Dort sollten alle wichtigen Informationen (Auch der neue Datenbanknamen und Datenbank Benutzer mit Passwort) drin stehen.

Für die übertragenen MySQL Dumps wird jemeils ein eigenes Verzeichnis auf dem KeyHelp Server erstellt:
  • meine-domain.tld_mysqldumps
Auch darin ist ein Log, welches Euch mitteilt wir der Dateiname des Dumps der alten Datenbank von i-MSCP lautet.

Bei der Migration der Domains habe ich versucht es genauso abzubilden wie es auch unter i-MSCP 1.5.3 möglich war.
  • Domain mit geteilten Einhängepunkt
  • Domain mit Weiterleitung
  • Domain mit anderen Dokument Root
Das hat alles auch Auswirkungen auf das Synchroniseren der Webseiten. Ich muss eine Domain nicht syncen, wenn der Einhängepunkt auf einer anderen Domain liegt. Die wird ja eh gesynct. Also solche Dinge habe ich auf versucht zu beachten.

Wenn alles sauber durchgelaufen ist gibt es nur 3 Sachen die manuell nachbearbeitet werden müssen:
  • Datenbank, Datenbank Benutzer und Passwort in den Webseiten anpassen
  • Homeverzeichnis der FTP-Benutzer anpassen (falls es welche gibt)
  • Pfad der Verzeichnisschutz Benutzer anpassen
Ich habe viel getestet und auch von LIVE Servern auf meine lokale VM migriert.
Es sah soweit gut aus.
Jetzt hoffe ich das hier ein paar i-MSCP Geknechtete auch mal testen und evtl. doch noch etwas finden was nicht richtig funktioniert.
Ich hoffe es hält sich in Grenzen 8-)

Auch ist bei den Abfragen noch deutsch drin. Ich werde das die Tage mal auf englisch ändern.

Achso - Ganz vergessen...
Wo bekommt Ihr das Script :) : https://github.com/TheCry/i-mscp-keyhelp-migration


Gruß
Sascha
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Re: Migration von i-MSCP zu KeyHelp

Post by OlliTheDarkness »

Moin,

damit wirst du wohl viele glücklich machen.

i-MSCP (lang ist es her) konnte mich nie überzeugen. :lol:

Aber danke das du es der Community zur Verfügung stellst und vorallem für die Arbeit.

Kann es zwar nicht testen, da kein MSCP User (Gott sei dank), aber nach den anderen Beiträgen und der Hilfe die in deinem anderen Thread geleistet wurden, wird es wohl klappen. :D

Gruß Olli
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
Alexander
Keyweb AG
Posts: 3809
Joined: Wed 20. Jan 2016, 02:23

Re: Migration von i-MSCP zu KeyHelp

Post by Alexander »

Super Sache ;)!

Wie passend, ich erweitere gerade die API um weitere Endpunkte + neue Funktionen, die du - sobald es soweit ist - ggf. auch in dein Script einbinden möchtest/kannst, damit dir nicht langweilig wird :lol:.
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

Ich habe heute noch einiges geändert.
Waren doch noch ein paar Fehler drin, die ich jetzt gefixt habe. Auf beim Transfer des MySQL Dumps sieht man jetzt wie weit der Transfer ist.
Das Gleiche auch beim Import des Dumps.

@Alex... Klar erweitere ich das Script. Bin gespannt was neues dazu kommt. :)

Gruß
Sascha
Kotty
Posts: 6
Joined: Fri 12. Jun 2020, 14:39

Re: Migration von i-MSCP zu KeyHelp

Post by Kotty »

Hi Sascha,

nun wollte ich das Script mal testen aber irgendwie bin ich wohl zu doof :roll: :lol:

Ich habe soweit alles konfiguriert allerdings erhalte ich:
"KeyHelp API Message: 401 - Unauthorized, Message API key is invalid / You are not allowed to access the API due to IP restrictions."

Api key hab ich erstellt und auch aktiv geschlaten, erstmal ohne IP beschränkung dennoch komme ich ned weiter :(
Weder der key prefix geht noch der komplette key.

Und noch einen Hinweis zu deiner Readme, da fehlt das Paket python3-pip in der liste ohne das geht der nächste Command nicht :)

Grüße
Philipp
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

Hi Phillip
Also die Meldung ist eindeutig. Trag mal die IP von Deinem KeyHelp Server ein. Für die Migration würde ich einen eigenen Key nutzen und nicht einen den auch andere nutzen IP‘s nutzen sollen.
Das Script sollst Du eh auf dem Keyhelp Server starten.

Danke für den Hinweis für das fehlende Paket. Ich trage das in der Readme nach.

BTW. Ich habe eben einen Fix gepusht
Gruß
Sascha
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

So... Mal ein kleines Feedback von einem Member der getestet hat und auch noch einen wichtigen Hinweis zum Verzeischnis "00_private" geliefert hat.
Nach seinen Tests hat die aktuellen Version im Git alles ordnungsgemäß migriert.

Bzgl. der "00_private" Verzeichnisse habe ich das jetzt so umgesetzt, dass ein "00_private" unterhalb der Domainverzeichnisse erstellt wird.
Darin werden dann für die entsprechnende Domains ein Unterverzeichnis erstellt.

Also würde der Rsync ungefähr so aussehen:

Code: Select all

/var/www/virtual/meine-domain.tld/00_private/ => /home/users/KeyHelp-Benutzername/www/00_private/meine-domain.tld/
Das "htdocs" der Domain "meine-domain.tld" liegt ja unter

Code: Select all

/home/users/KeyHelp-Benutzername/www/meine-domain.tld
Gruß
Sascha
User avatar
Ralph
Posts: 786
Joined: Mon 30. Mar 2020, 16:14

Re: Migration von i-MSCP zu KeyHelp

Post by Ralph »

sehr geil, super Arbeit - DANKE Sascha!
wegen der User Datenbank imports ... könnte man die nicht unabhängig von der KeyHelp API direkt per mysql importieren so dass Username, DB-Name und Passwort von imscp weiter verwendet werden können (ohne die Website configs ändern zu müssen)?
Die Eingabe Format Prüfung findet ja eigentlich nur über PHP statt und wenn die Datenbanken drin sind, sollten die doch dann trotzdem funktionieren (ausser nachträgliches editieren eventl.)
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

Früher hatte i-MSCP eine eigene Table mit Username und Passwort. Dort hätte man das dann abgreifen können. Jetzt werden die Daten in MySQL selbst gespeichert. Also kein Klartext mehr vorhanden. Des Weiteren habe ich das so gebaut um mehrere i-MSCP Server zu einem KeyHelp Server zu migrieren. Dann käme es zu Überschneidungen der Datenbank Namen und Datenbank Usernamen. Und genau das war die Voraussetzung für dieses Script, daß man verschiebende Server zu einem Server migrieren kann.

Es sind letztendlich 3 Dinge die man am Ende von Hand erledigen muss. Sie EierlegendeWollMilchSau wirst Du in diesem Fall nicht bekommen
Gruß
Sascha
User avatar
Ralph
Posts: 786
Joined: Mon 30. Mar 2020, 16:14

Re: Migration von i-MSCP zu KeyHelp

Post by Ralph »

space2place wrote: Sun 21. Jun 2020, 15:23 Früher hatte i-MSCP eine eigene Table mit Username und Passwort. Dort hätte man das dann abgreifen können. Jetzt werden die Daten in MySQL selbst gespeichert. Also kein Klartext mehr vorhanden.
hm, ich nehme mal an das KeyHelp ohne die vorgegebene Prefix die import DBs dann auch nicht mehr den Kunden zuordnen kann ...
die mysql user und passwörter sollte man ansonsten abgreifen können

Code: Select all

SELECT User, Host, Password, password_expired FROM mysql.user;
müsste dann quasi von den Kunden selbst geändert werden ... habe hier viele Kunden mit obsoleten Datenbanken die ich selbst gar nicht zuordnen könnte ...
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

Die Zuordnung der DB‘s und DB Users funktioniert ohne Probleme per API.
Ich weiß wo die Passwörter in der MySQL Database liegen. Aber die sind nicht im Klartext und in dieser Datenbank möchte ich definitiv nicht manuell einen Query durchführen. Und wie ich eben schon geschrieben habe soll das Script die Möglichkeit bieten verschiedene i-MSCP Server zu einem Keyhelp Server zu vereinen. Dann wäre Deine Lösung definitiv der falsche Ansatz.

PS: In einem Log steht die Beziehung alter Datenbank Name => Neuer Datenbank Name, Alter Datenbank Bneutzer => Neuer Datenbank Benutzer und das neue Passwort drin. Es wäre also wesentlich einfacher die Dateien im Webspace nach den Strings zu durchsuchen und dann die Anpassungen manuell durchzuführen
User avatar
Ralph
Posts: 786
Joined: Mon 30. Mar 2020, 16:14

Re: Migration von i-MSCP zu KeyHelp

Post by Ralph »

space2place wrote: Sun 21. Jun 2020, 16:04 PS: In einem Log steht die Beziehung alter Datenbank Name => Neuer Datenbank Name, Alter Datenbank Bneutzer => Neuer Datenbank Benutzer und das neue Passwort drin. Es wäre also wesentlich einfacher die Dateien im Webspace nach den Strings zu durchsuchen und dann die Anpassungen manuell durchzuführen
Ich werde es einfach mal so testen und versuche dann die Änderungen mit einem Bash Script auf die configs anzuwenden.
Danke nochmal!
User avatar
Victor
Posts: 17
Joined: Sun 21. Jun 2020, 20:23

Re: Migration von i-MSCP zu KeyHelp

Post by Victor »

Hello,

I've tried the migration script but it gives me the following error :

Code: Select all

Which hosting plan should be used (Enter to use the default hosting plan)? Unlimited
KeyHelp hostingplan "Unlimited" exists.

All KeyHelp data are now complete.

Traceback (most recent call last):
  File "./i-mscp_keyhelp_migration.py", line 162, in <module>
    imscpInputData.getImscpMySqlCredentials(client)
  File "/root/i-mscp-keyhelp-migration/_imscp.py", line 56, in getImscpMySqlCredentials
    key_filename=imscpSshPublicKey, timeout=imscpSshTimeout)
  File "/usr/lib/python3/dist-packages/paramiko/client.py", line 347, in connect
    server_hostkey_name = "[%s]:%d" % (hostname, port)
TypeError: %d format: a number is required, not str
infinit:~/i-mscp-keyhelp-migration#
Any idea why ?
It seems to be something wrong with the ssh ?
The ssh runs on port 222, but i have set port 222 in migration-config.cfg
I also tried to temporarily open port 22 but it still gives the same error.

Thanks
Something something, dark side.
User avatar
space2place
Posts: 486
Joined: Tue 24. Mar 2020, 11:02
Contact:

Re: Migration von i-MSCP zu KeyHelp

Post by space2place »

Hi Victor,
I will check this.
Please send me your migration-config.cfg with PM. Remove your passwords
Regards
Sascha

Edit: did you fill out the file under windows and uploaded after saving?
User avatar
Victor
Posts: 17
Joined: Sun 21. Jun 2020, 20:23

Re: Migration von i-MSCP zu KeyHelp

Post by Victor »

Hey there!

Thanks for the reply!
I didn't edit in Windows, e edited it directly in the console.
I am sending you now the config file.

Thanks for the help!
Something something, dark side.
Post Reply