Ubuntu 16.04 mit LVM bei Hetzner installieren

Wie man Ubuntu 16.04 mit LVM auf einem Server bei Hetzner installiert

Momentan überarbeite ich meine private Serverdokumentation und möchte sie Stück für Stück dann auch hier im Blog veröffentlichen. Zum einen, um das dank zahlreicher Quellen gelernte Wissen wieder weiterzugeben, zum anderen, um Anregungen und Verbesserungsvorschläge zu sammeln.

In diesem Artikel beschreibe ich beispielhaft, wie man auf einem virtuellen Server bei Hetzner Ubuntu 16.04 mit LVM installiert. Die Anleitung sollte sich analog auch auf dedizierte Server anwenden lassen.

Zuvor jedoch ein eindringlicher Hinweis: Der Betrieb eines eigenen Servers erfordert viel Erfahrung und sollte nicht auf die leichte Schulter genommen werden. Die folgende Anleitung ist weder abschließend noch gibt es irgendeine Gewähr oder Garantie für ihre Korrektheit! Sie soll als Anregung und Hilfestellung dienen, kann jedoch keinesfalls allein ausreichend sein!

Einstellungen im Robot

Am Anfang empfehle ich die Konfiguration wichtiger Einstellungen im so genannten Robot, der Hetzner-eigenen Weboberfläche. Die Wahl eines sicheren Passworts und ggf. die Aktivierung der Zwei-Faktor-Authentifizierung, sowie das Vorhalten aktueller Adress- und Kontaktdaten verstehen sich von selbst, auch das Hinterlegen der Handynummer für Notfälle kann nicht schaden.

Die hinterlegten E-Mail-Adressen sollten regelmäßig gelesen werden, da unter anderem auch Abuse-Meldungen dort auftreffen, die schnellstmöglich bearbeitet werden müssen. Sinnvoll ist auch, eine zusätzliche E-Mail-Adresse bei einem externen Anbieter zu hinterlegen, um im Falle eines Falles nicht von der Kommunikation abgeschnitten zu sein.

Folgende zusätzlichen Einstellungen nehme ich vor:

  • Administration|Einstellungen|Öffentliche Schlüssel einsehen/ändern: Hier sollte ein aktueller, sicherer GPG-Schlüssel hinterlegt werden.
  • Auf die Standard-DNS-Einstellungen im selben Abschnitt gehe ich in diesem Blogposting nicht näher ein – DNS wird im weiteren Verlauf meiner Dokumentation nochmals gesondert beleuchtet werden.
  • Administration|Einstellungen|RIPE-Handle: Die Daten des Handles sollten stets aktuell gehalten werden. Alle hier gemachten Angaben sind über die öffentliche RIPE-Datenbank von jedermann einsehbar, es empfiehlt sich daher ggf. die Angabe einer dedizierten Telefonnummer oder einer Büroanschrift.
  • Hauptfunktionen|Server|Schlüsselverwaltung: Hier sollten alle SSH-Client-Schlüssel hinterlegt werden, die bei Server-Neuinstallationen oder im Rescue-System aktiviert sein sollen. Zum Erstellen von SSH-Schlüsseln gibt’s ein paar Tipps in einem früheren Blogposting.
  • Hauptfunktionen|Server|<Servername>
    • Zuerst sollte in der mittleren Spalte ein eindeutiger Servername vergeben werden, beispielsweise der Hostname. Das verbessert nicht nur die Übersichtlichkeit, sondern trägt bei der Erstellung von Support-Tickets zur einfacheren Identifizierung bei. Lediglich das Monitoring greift nicht auf diesen Namen zurück, doch dazu weiter unten mehr.
    • IPs: Sowohl der IPv4-Adresse als auch mindestens der Haupt-IPv6-Adresse (in der Regel auf :2 endend) sollte hier ein entsprechender Reverse-DNS-Record (PTR) zugeteilt werden. Insbesondere für Mailserver ist es wichtig, dass A/AAAA-Record und PTR-Record übereinstimmen, da dies häufig im Rahmen von Antispam-Maßnahmen überprüft wird. Zudem empfehle ich, ein Trafficlimit festzulegen, um bei ungewöhnlich hohem Datenverbrauch eine Nachricht zu erhalten. Zu guter Letzt erscheint ca. 24 Stunden nach Erstinstallation des Servers neben der IPv6-Adresse die Schaltfläche RIPE, mit der Experten die Beschreibung ihres Subnetzes in der RIPE-Datenbank bearbeiten können. Dran denken: Auch diese Beschreibung ist öffentlich für jedermann zugänglich.
    • Snapshots: Nach erfolgreicher Erstinstallation lässt sich hier im ausgeschalteten Zustand ein Festplattenabbild (Snapshot) erstellen, das sowohl als Backup, als auch – von mir allerdings ungetestet – als Vorlage für andere, eigene vServer dienen kann. Für Letzteres bitte daran denken, Hostname und ggf. IP-Adresse anzupassen und neue SSH-Server-Schlüssel zu erstellen.
    • Backup: Bei dedizierten Servern ist ein gewisses Backupkontingent kostenfrei erhalten, bei vServern fällt eine Gebühr an.
    • Monitoring: Hier kann eine Benachrichtigung bei Ausfall eines Dienstes eingerichtet werden. Empfehlenswert ist es, mindestens eine E-Mail-Adresse außerhalb des eigenen Servers anzugeben und wichtige Ports wie SSH (22/TCP), HTTP (80/TCP), HTTPS (443/TCP), SMTP (25/TCP) und ggf. weitere wie Submission (587/TCP) sowohl per IPv4 als auch per IPv6 zu überwachen. Die Serverbezeichnung übernimmt das Monitoring nicht automatisch, daher bitte den Hostnamen samt Zusatz IPv4 oder IPv6 eintragen, damit die Benachrichtigungen direkt zugeordnet werden können. Ist alles ordnungsgemäß konfiguriert, lässt sich das Monitoring über den grünen Pfeil aktivieren. Eine direkte SMS-Benachrichtigung wird von Hetzner zwar nicht unterstützt, lässt sich aber vermutlich über SMS-to-E-Mail-Anbieter realisieren. Denkbar ist auch die Einrichtung einer separaten E-Mail-Adresse mit direkter Push-Benachrichtigung aufs Handy.
    • Telefonpasswort: Für dedizierte Server wird zudem die Einrichtung eines so genannten Telefonpassworts angeboten, um sich bei Anrufen im Rechenzentrum zu authentifizieren und Missbrauch zu vermeiden.
  • Service|Newsletter: Ich empfehle, den Newsletter zu abonnieren, um über Neuigkeiten informiert zu werden.
  • Service|Störungsmeldungen: Im Fall von Ausfällen und Störungen im Netzwerk erhält man bei Aktivierung dieser Option eine E-Mail. Auch hier empfehle ich, zusätzlich eine externe E-Mail-Adresse anzugeben, falls der eigene Server nicht erreichbar ist.

Installation des Basissystems

Die Konfiguration innerhalb der Weboberfläche ist die halbe Miete, jetzt geht es an die Installation des Basissystems. Der Robot bietet dafür eine Vielzahl vorkonfigurierter Images an, ich bevorzuge die Installation direkt aus dem Rescue-System mittels installimage, um die Partitionierung ganz nach meinen Vorstellungen anzupassen.

Über Hauptfunktionen|Server|<Servername>|Rescue muss zunächst das Rettungssystem aktiviert werden, im Beispiel mit Linux in der 64-Bit-Variante. Wurden vorher SSH-Client-Schlüssel hinterlegt, lassen sich diese ganz einfach auswählen. Beim nächsten Start oder Neustart des Servers startet dieser jetzt einmalig ins Rettungssystem, das für den Benutzer root mit dem ausgewählten Schlüssel bzw. dem angezeigten Passwort erreichbar ist.

Die eigentliche Betriebssysteminstallation erledigt das Programm installimage, das mit dem Parameter –help aufgerufen eine umfangreiche Hilfeseite ausgibt. Mit folgendem Beispiel wird der Server ohne (!) Rückfrage neu installiert und dabei alle (!) Daten von der Festplatte gelöscht:

installimage -a -n server01 -b grub -r no -i root/.oldroot/nfs/images/Ubuntu-1604-xenial-64-minimal.tar.gz -p /boot:ext4:2G,lvm:vg0:all -v vg0:swap:swap:swap:3G,vg0:root:/:ext4:5G,vg0:home:/home:ext4:1G,vg0:var:/var:ext4:5G,vg0:srv:/srv:ext4:1G -f yes -s en -K /root/.ssh/robot_user_keys

Die Kommandozeile besagt:

  • installimage wird automatisch und ohne weitere Rückfragen ausgeführt (-a)
  • der Hostname des Servers ist server01 (-n server01)
  • als Bootloader kommt GRUB zum Einsatz (-b grub)
  • es soll kein RAID eingerichtet werden (-r no)
    Das ist nur sinnvoll bei virtuellen Servern, dedizierte Server sollten immer mit RAID betrieben werden. Die Hilfeseite von installimage gibt Auskunft über die dafür benötigte Syntax.
  • als Betriebssystem-Image soll eine minimale, 64-Bit-Version von Ubuntu 16.04 genutzt werden (-i root/.oldroot/nfs/images/Ubuntu-1604-xenial-64-minimal.tar.gz)
    Der fehlende Slash am Anfang ist Absicht.
    Weitere verfügbare Images finden sich im Verzeichnis /root/.oldroot/nfs/images/
  • -p legt die Partitionierung des Systems fest:
    • 2 GB entfallen auf die /boot-Partition, die als ext4 formatiert wird (/boot:ext4:2G)
    • der restliche Speicherplatz (all) wird für ein LVM benutzt, das die Volume Group vg0 beinhaltet (lvm:vg0:all)
  • -v legt fest, welche logischen Volumes erstellt werden, im Beispiel jeweils innerhalb der Volume Group vg0
    • zunächst wird eine Swap-Partition namens swap von 3 GB Größe erstellt (vg0:swap:swap:swap:3G)
    • die root-Partition ist mit ext4 formatiert und 5 GB groß (vg0:root:/:ext4:5G)
    • analog die home-Partition mit 1 GB Speicherplatz (vg0:home:/home:ext4:1G)
    • ebenso die var-Partition mit 5 GB Speicherplatz (vg0:var:/var:ext4:5G)
    • schlussendlich die srv-Partition mit 1 GB Speicherplatz (vg0:srv:/srv:ext4:1G)
  • es sollen alle Festplatten formatiert werden (-f yes)
  • als Systemsprache wird Englisch genutzt (-s en)
  • die SSH-Keys im fertig installierten System kommen aus der Datei /root/.ssh/robot_user_keys (-K /root/.ssh/robot_user_keys)
    In diese Datei wurden bei meinen Tests automatisch die SSH-Schlüssel aus dem Robot eingetragen – ich empfehle dennoch eine Überprüfung des fertig installierten Systems, da ich nicht weiß, ob diese Vorgehensweise auch offiziell unterstützt wird.

Nach Eingabe des Befehls legt installimage los, und kurze Zeit später ist der Server neu installiert. Nach einem Neustart mittels shutdown -r now bootet er ins frisch aufgesetzte System.

Abschließendes

Herzlichen Glückwunsch, der erste Schritt ist getan!

Die weitere Installation von Diensten und die Basiskonfiguration stelle ich in den nächsten Blogpostings vor. Ein Hinweis zum Schluss: Im jetzigen Zustand sollte der Server nicht dauerhaft betrieben werden, da weder Sicherheitsaktualisierungen eingespielt sind noch die Firewall eingerichtet ist.

Florian Effenberger

Autor: Florian Effenberger

Florian engagiert sich seit über 14 Jahren für freie Software und ist einer der Gründer der The Document Foundation, der Stiftung hinter LibreOffice

4 Gedanken zu „Ubuntu 16.04 mit LVM bei Hetzner installieren“

  1. Ist ja gar nicht so teuer, wie ich gedacht hätte. Aber ich schrecke davor zurück aus dem genannten Grund:

    Der Betrieb eines eigenen Servers erfordert viel Erfahrung und sollte nicht auf die leichte Schulter genommen werden.

    So mal eben wird man sich das Wissen nicht aneignen können. Anderseits muss man aber auch irgendwann mal anfangen …

    Im Hintergrund steht bei mir die Überlegung, dass ich gerne ein Ticketsystem hätte wie ORTS, um meine Korrespondenz zu organisieren, bei er es viele Sachen gibt, wo ich mich nach Monaten erinnern muss, dass noch eine Antwort offen ist z. B.

  2. Backups erledige ich mit Duplicity. Dazu sollte ich vielleicht nochmal separat bloggen…

    Eine gute Idee. Ich lese das immer gerne. :-)

    Hätte ja sein könne, dass die etwas bestimmtes wichtig war und du dann gezielt gesucht hast …

Schreibe einen Kommentar