Der erste eigene Server

verfasst am 27. Januar 2021 22:31


Einleitung

Ich schaue schon seit etwas längerer Zeit Luke Smith auf YouTube. Dieser hatte irgendwann ein super Video gemacht, in welchem er zeigte, wie man einen VPS als Web- und Mailserver einrichtet. Irgendwie bin ich davor nie auf die Idee gekommen, einen Server bzw. einen VPS zu mieten. Jedenfalls habe ich dieses Video gesehen und dachte mir dann, dass das doch gar keine so schlechte Idee wäre. Ich könnte meine Linux-Kenntnisse in der Richtung noch weiter verbessern, habe einen echten Webserver (im Gegensatz zu dem kostenlosen, langsamen, ftp-only bplaced), kann meine eigenen privaten Gameserver hosten und habe sogar eine eigene Email-Adresse - auch wenn mir die leider nicht von großem Nutzen sein würde. Mehr dazu später.
Also habe ich mir einen VPS gemietet und eine .de-Domain gleich dazu. Zum Glück habe ich gar keine weitere Recherche gemacht und habe direkt bei Vultr den Server geholt und die Domain bei United Domains registrieren lassen - das war das Erste, was mir eingefallen war. Ich gehe mit meinem Geld wirklich bewusst und sparsam um.
Wenige Tage später realisierte ich dann, wie wenig Leistung ich von Vultr bekomme - aber immerhin ist die Verbindung abartig schnell, und die Performance reicht für meine Einsatzzwecke trotzdem. Dazu haben andere Hoster, wie zum Beispiel Netcup ihre eigenen, komischen Nachteile. Stichwort Mindestvertragslaufzeit, Identitätsnachweis, manuelle Bearbeitung und damit verbundene Wartezeiten usw. Vultr dagegen ist unfassbar komfortabel und flexibel, aber da brauche ich nicht weiter drauf eingehen. (Nein, ich habe keine Kooperation mit Vultr und werde demzufolge auch nicht bezahlt. Bevor das so rüber kommt.)
Im Folgenden möchte ich also darauf eingehen, wie ich beim Einrichten des Servers vorgegangen bin, was ich anderen Neulingen so für Konfigurationen empfehlen kann und wofür ich diesen Server schlussendlich benutze.

Den Server finden

Bevor man einen Server einrichten kann, muss man diesen auch erstmal kaufen. Hier unterscheidet man grob gesehen zwischen zwei Kategorien: VPS (Virtual Private Server) und Bare Metal-Server. Ich empfehle grundsätzlich eher VPS, da Bare Metal in der Regel kostspieliger ist und für die meisten Applikationen keine nennenswerten Vorteile bietet.
Für einen einfachen Web- und Mailserver braucht man wirklich nicht viel Leistung. Ein Kern mit 512MB RAM und etwas Bandbreite reicht vollkommen dafür aus. Nur sollte dieser trotzdem noch eine IPv4 zusätzlich zu der IPv6 haben.
Wenn man wie in meinem Fall auch noch die gleiche Instanz für Gameserver (Minecraft/Forge, Terraria) einsetzen möchte, sollte man schon mehr Leistung buchen. Ich habe hier zwei "High Frequency"-Kerne (Skylake Xeon bei 3,7GHz), 4GB RAM und 128GB NVMe, was bisher noch ausreicht. Mehr würde aber definitiv nicht schaden. Als Betriebssystem nutze ich Debian 10, welches wirklich super funktioniert. Ubuntu, CentOS usw. wären genauso möglich, da der VPS aber logischerweise virtualisiert läuft, benötigt es keine proprietären Firmware-Treiber, da kann man auch gleich auf das freie Debian setzen.
Wenn der Server erst einmal online und über die direkte IP erreichbar ist, geht es an das Registrieren der Domain und das Hinterlegen von DNS-Einträgen. Diese sind schnell gemacht und benötigen nur A- und AAAA-Einträge (für jeweils IPv4 und IPv6 des Servers). Weiter darauf eingehen werde ich hier nicht.

Härten des Systems

Ich mag es nicht so wirklich, die ganze Zeit als Root angemeldet zu sein, und es gibt sicherlich auch andere technische Probleme dabei. Deswegen ist es ratsam, einen separaten Benutzer mit sudo-Rechten zu erstellen - gerade, weil wir später auch die Anmeldung als root deaktivieren werden.
Wenn wir schon beim Thema Anmelden und ssh sind, werden wir uns direkt der Konfiguration widmen. Ich empfehle folgende Einstellungen in der /etc/ssh/sshd_config zu ändern:

Da der Login mit Passwörtern nun deaktiviert ist, müssen stattdessen SSH-Schlüssel hinterlegt werden, welche dazu berechtigt sind, eine Verbindung herzustellen. Wie man einen solchen Key generiert und hinterlegt, kann man leicht im Internet finden (oder im Fall von Vultr in der Dokumentation).
Nach diesen Einstellungen sollte der Server vor fremden ssh-Zugriffen weitestgehend sicher sein. Das Wichtigste ist aber, den Port zu ändern und auf SSH-Schlüssel umzustellen. Der Port ist auch nicht zwingend notwendig, räumt aber dafür die Logs deutlich auf. (jeder fremde Zugriff wird im Journal geschrieben und müllt diesen zu.)

Aufsetzen der Programme

Endlich wird es ein wenig spannender. Wenn das System erstmal läuft und auch größtenteils sicher ist (ich sage bewusst "größtenteils"), können wir uns dem eigentlichen Teil widmen.
Wenn der Server nur als Webserver gebraucht wird, reicht es nginx und Certbot zu installieren. nginx ist der eigentliche Webserver und Certbot ist für ein HTTPS-Zertifikat notwendig. Das Aufsetzen der beiden Programme war erstaunlich leicht und schnell gemacht.
Mailserver sind doch schon komplizierter, aber es gibt Skripte, die den größten Teil übernehmen. Grundsätzlich ist es nicht so schwer, einen Mailserver erstmal zum Laufen zu bekommen, aber auch Mails senden zu dürfen ohne bei dem Empfänger im Spam zu landen oder sogar komplett rejected zu werden, ist eine andere Sache.
In Gmail wurden meine Mails am Anfang direkt als Spam eingestuft. Ich habe mir selber auf meine Gmail-Adressen zwei Mails gesendet, und im Interface explizit die automatischen Spam-Markierungen aufgehoben. Nach einigen Tagen konnte ich auch an fremde Gmail-Adressen schreiben, und die Mails kamen ganz normal im Postfach an.
Nur ein kleines Problem. Ich kann noch nicht an meine Lehrer*innen schreiben, welche dienstlich alle Adressen von meinem Land zugeteilt bekommen haben. Keine Ahnung woran das liegt, müsste ich irgendwann fixen. In der Zeit benutze ich einfach weiter ProtonMail.
Ich empfehle auch sshfs zu installieren, sodass es einfacher möglich ist, vom eigenen System Dateien auf den Server zu bekommen. Das ging auch sehr schnell: Soweit ich mich erinnern kann, musste man nur das dazugehörige Package installieren, der Daemon lief sofort und das Filesystem lässt sich einfach über den lokalen PC mounten.

Schreiben der Website

Hier könnte man viele verschiedene Routen einschlagen. WordPress wäre eine Möglichkeit, aber ich habe mich dazu entschieden, diese selber zu schreiben. Da meine CSS-Skills absolut schrecklich sind, nutze ich Materialize, welches sehr viele Klassen bereitstellt und super praktische Dokumentation hat.
Das eigentliche Entwickeln und Designen der Seiten war aber das Anstrengendste von dem Ganzen. Ich habe bisher noch nicht mal richtige Optimierung für Handys drin, weswegen die Seiten dort sehr schlecht aussehen. Aber auf dem Desktop bin ich mit dem Design doch recht zufrieden.
Wenn man die Seiten wie ich manuell schreibt, muss man selbstverständlich schon gewisse HTML-Kenntnisse mitbringen. Wer diese nicht hat, kann sicher auch irgendwie WordPress einrichten. Wenn du aber schon so weit gekommen bist, dann sollte grundlegendes HTML auch kein großes Problem darstellen.

Fazit nach zwei Wochen VPS

Warum bin ich noch nicht vorher auf diese Idee gekommen? Auch wenn ich für meine Instanz verhältnismäßig sehr viel zahle (24 USD im Monat), bin ich trotzdem sehr zufrieden. Vultr kann ich trotz des Preises weiter empfehlen, auch weil der Support freundlich und extrem schnell ist (mein eines Ticket haben sie innerhalb von vier Minuten beantwortet!), das Interface ist sehr komfortabel und das Erstellen von weiteren Instanzen könnte kaum einfacher sein. Auch ist die Netzwerkanbindung einfach abartig, habe schon synchrone 5 Gbit nach außen erreichen können - die meisten anderen Provider sind bei maximal 1 Gbit, was natürlich genauso ausreichen würde, aber da ist der Boner halt nicht ganz so stark.
Ich werde diesen hohen Preis gerne weiter zahlen.