Zum Inhalt springen

Einrichten eines Hetzner-Servers – Apache

Hier kommt er endlich, der Webserver, der der Hauptgrund ist, warum wir eigentlich diesen Server betreiben. Hat lange gedauert …

Zunächst geben wir in der Firewall die Ports 80 (http) und 443 (https) frei. https wird auch auf Port 80 laufen, http werden wir möglichst gar nicht anbieten bzw. durch rewrite absichern. Beide Ports zu nutzen hat also eher historische und Kompatibilitätsgründe. Freigegeben werden die Ports für die IPv4-Adresse und für eine auszuwählende IPv6-Adresse. Ich nehme als Schema:

  • die ersten 64 Bit sind vorgegeben, das ist das zugeteilte /64,
  • die nächsten 32 Bit sind :0009:0006:, mein Geburtsdatum,
  • dann kommt auf den nächsten 16 Bit ein Zähler für die zugehörige Domain; :0001: gehört zu qno.de, größere Nummern zu weiteren Domains, die ich vielleicht eines Tages hier hoste;
  • die nächsten 8 Bit bezeichnen bei mir den Diensttyp; 01 wäre ssh, www ist 0a. Willkürlich.
  • Und zum Abschluss gibt es einen Zähler. Könnte sein, dass es mehrere Subdomains von qno.de gibt, die werden dann hier durchnummeriert. www als erste Subdomain, die auch angesprungen wird, wenn einfach nur qno.de gewählt wird, bekommt die 01.

Die gesamte IP für www.qno.de wird also lauten:

2a01:4f9:3b:25b0:9:6:1:a01

Allerdings erst in Zukunft, im Moment läuft www.qno.de ja noch auf meinem alten Server. Aber man bereitet vor, was geht.

Die eigentliche Installation erfolgt dann wie üblich über apt install apache2. Man schaue nach, ob es empfohlene Abhängigkeiten gibt, von denen man weiß, dass man sie später braucht. Im Zweifel weniger installieren, das ist sicherer.

Let’s Encrypt

Ich habe lange gebraucht zu verstehen, warum ich https auf einer Seite einsetzen soll, die öffentliche Informationen an anonyme User liefert. Kein Login-Prozess, keine Geheimnisse, die abgesichert werden müssen. Inzwischen weiß ich, dass es Regimes gibt, die ihren Bürgern alles Mögliche verbieten. Könnte sein, dass eine Iranerin Schwierigkeiten bekommt, wenn sie meine Webseite, die eines fremden Mannes, aufruft, und dann gar „verbotene“ Inhalte wie Musik abruft. Also wird verschlüsselt.

Das ist dank Let’s Encrypt auch einfach. Jedenfalls theoretisch. Der erste Fallstrick: Natürlich habe ich vergessen, obige IP auch in netplan einzutragen. Und certbot verwendet die IPv6-Adresse. Dann wird mit dem Apache-Plugin aus irgendwelchen Gründen versucht, die Authentifikation in /var/lib/letsencrypt/ durchzuführen, was an fehlenden Rechten scheitert. Die Lösung: Plugin webroot für die Authentifizierung nehmen, Plugin apache für die Installation. Das klappt dann.

# certbot -a webroot -i apache -w /var/www/html/ -d www.qno.de -d qno.de

Administrativa

Bei der Installation von Apache2 werden vernünftige Defaults für Logrotate gesetzt: Alle Logs in /var/log/apache2 werden täglich rotiert und 14 Tage aufbewahrt. Richtet man für User (Sub-) Domains ein, die in ein anderes Verzeichnis loggen, muss man diese Dateien noch nachtragen.

snapd hat bei der Installation ein apparmor-Profil mitgebracht. So auch certbot, aber das wird nur im complain-mode installiert. Und wenn ich mal die Datei des Profils finde, werde ich das auf enforce ändern. Apache selbst hat kein apparmor-Profil. Wird anscheinend nicht gebraucht, weil der Server ohnehin nur auf dedizierte Verzeichnisse zugreift …. *harharhar*

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.