Auf meinem bestehenden Server hat sich einiges an Unsinn angesammelt und außerdem wollte ich von Debian auf Arch Linux wechseln. Einen neuen Server von der Hetzner-Serverbörse wollte ich mir nicht holen, sondern den bestehenden behalten. Ein fließender Umzug von einem laufenden Server auf einen neuen bereits laufenden Server war somit nicht möglich, sondern ich musste alle notwendigen Daten sichern, den Server plattmachen und dann neu einrichten.

An dieser Stelle möchte ich deshalb sammeln, was ich dabei getan habe, woran ich gedacht habe und was ich vergessen habe.

Zunächst einmal habe ich mich für meine eigenen Dienste, die ich auch auf dem neuen Server betreiben will, für ein Paketierungs-Konzept entschieden. Für alle meine eigenen Programme oder auch fremde Programme, für die es keine Standard-Arch-Pakete gibt, erzeuge ich mit makepkg und PKGBUILD eigene Pakete. Damit kann ich die Programme auf dem neuen Server sehr schnell installieren und muss nur noch die Konfigurationsdateien bearbeiten.

Dies ist für mich die jetzt gewählte Alternative zu Docker und Ansible. Ich habe Docker zuvor ausprobiert und als für mich ungeeignet empfunden. Außerdem finde ich es nicht gut, dass zwischen Betriebssystem und Programm nochmal ein aktiver Dienst sitzt, der eventuell abstürzen könnte (der Docker Daemon). Ansible habe ich relativ lange zufrieden eingesetzt, aber bei der Migration jetzt hat sich gezeigt, dass es für meinen Einsatzzweck mehr Aufwand als Nutzen bringt. Ich brauche mehr Zeit für das Erstellen der Ansible-Dateien als für eine händische Neuinstallation des Servers. Das liegt vor allem daran, dass viele Dienste, die ich (mit Ansible) eingerichtet und ausprobiert habe, sich nach mehreren Monaten doch als unnötig erwiesen haben. Deshalb habe ich mich nun für ein Konzept entschieden, wo ich die Programme zwar doch noch in ein Paket für meine Linux-Distribution paketiere, aber die Konfigurationen einfach händisch editiere.

Was ich vor der Migration gesichert habe

  • nginx-Website-Konfigurationen (sites-available)
  • PostgreSQL-Datenbanken
  • Prometheus-Konfiguration
  • CalDAV- / CardDAV-Daten
  • einzelne noch relevante Projektdaten im Dateisystem: vieles war veraltet und unnötig

Was ich vergessen habe

  • Git Repositories: Zum Glück ist Git dezentral, sodass nichts verloren ging und ich nun sogar überlegen kann, welche Repositories wirklich noch aktuell und brauchbar sind
  • IPTables-Konfiguration: Konnte ich von einem bisher noch vorhanden zweiten Server kopieren und leicht anpassen
  • Cinderella-Konfiguration: Diese lies sich sehr schnell wieder einrichten
  • Molescrape-Systemd-Dateien: Hier durfte ich live am eigenen Beispiel erkennen, dass Molescrape aktuell ein großes Durcheinander ist, weil selbst mir als Entwickler nicht klar war, welche Konfigurationen notwendig sind.

Was ich wieder eingerichtet habe

  • Wireguard, neuerdings im Linux-Kernel enthalten
  • Certbot mit manueller DNS Challenge (statt wie bisher HTTP Challenge): Kostet bisher deutlich weniger Nerven und vereinfacht die nginx-Konfigurationen
  • eigene Dienste über Pakete installiert anstatt über Ansible, damit sind auch Downgrades möglich
  • Cinderella Continuous Integration
  • Molescrape: Das war aufwändiger als gedacht, weil der aktuellste Code-Stand nicht richtig funktioniert. Hier besteht dringend Aufräumbedarf, falls ich das Projekt fortführen will.
I do not maintain a comments section. If you have any questions or comments regarding my posts, please do not hesitate to send me an e-mail to blog@stefan-koch.name.