DigitalOcean und Packer

Die Installation des eigenen Web-Servers mit DigitalOcean und Packer automatisieren.

Die Ausgangssituation

DomainFactory logo

Mit meinen statischen Websites bin ich seit Mai 2003, also seit fast 15 Jahren, bei dem Hosting-Provider DomainFactory. Dort hatte ich auch das CMS Joomla laufen. Und seit Jahren wollte ich meine Websites auf HTTPS umstellen und dafür gerne die kostenlosen Zertifikate von Let’s Encrypt verwenden. Aber immer, wenn ich bei DomainFactory vorbeischaute (siehe diesen langen Thread) wurde Let’s Encrypt nicht angeboten. Wollen sie lieber die eigenen Zertifikate verkaufen? Das preiswerteste Angebot “Alpha SSL” für eine Domain oder eine Sub-Domain kostet 1,99 Euro im Monat. Wäre für meinen Auftritt als Freiberufler OK. Macht knapp 24 Euro im Jahr. Die kann ich investieren. Aber, ich habe vier Websites. Und dann sind ja noch für jede Subdomain Zertifikate nötig. Ist dann doch happig, wenn gleichzeitig Let’s Encrypt kostenlose Zertifikate anbietet.

Bildschirmfoto KASSserver SSL-Konfiguration ALL-INKL Logo Den letzten Ausschlag gab dann eine andere Website, die ich bei ALL-INKL mit betreue. Der Hosting-Provider All-INKL unterstützt Let’s Encrypt. Zwei Klicks in der KASServer-Administration und HTTPS funktioniert inklusive der Weiterleitung von HTTP. Zwei Klicks, kein Trouble und man bekommt aktuell drei Domains mit 50 GB Web­space für 5 Euro im Monat. Ohne jede Kündigungsfrist und die ersten drei Monate kostenlos. Sollte ich mit meinem Websites von DomainFactory dorthin umziehen? Ich würde nichts falsch machen …

DigitalOcean und Packer

DigitalOcean Logo
HashiCorp Packer logo
Aber dann las ich von DigitalOcean mit 5 USD im Monat für einen Virtual Private Server (VPS) mit 20 GB SSD, 1 GB RAM und einer eigenen IP4-Adresse. Und es gibt ein Rechenzentrum in Deutschland. Unglaublich wie die Preise gefallen sind. Passend dazu kann ein Image mit Packer in weniger als 10 Minuten gebaut werden. Wie cool ist das denn?

300 Zeilen Shell-Skript genügen für die Erst-Installation eines CentOS-Images (mit ssh, interner Firewall, TZ, swap space, Apache, TLS-Zertifikate, MariaDB und Perl-CGI) und die Konfiguration meiner vier Websites.

Server wechseln in Sekunden

Die Arbeitsweise der Administration mit Infrastructur as Code (IaC) ändert sich. Alle bisher manuellen Schritte der Server-Administration werden in ein Skript kodiert. Die Erstellung eines Servers ist damit reproduzierbar. Zum Entwickeln erstelle ich aus dem aktuell produktiv genutzten Snapshot ein Droplet. Der Server steht in 30 Sekunden im Internet mit einer eigenen IP4-Adresse. Ich trage die IP in /etc/hosts ein und kann mit dieser Instanz testen und entwickeln.

Wenn eine Entwicklungsstufe abgeschlossen ist, baue ich automatisiert ein Image mit Packer. Das dauert zwanzig Minuten, da die statischen Dateien der vier Websites zu DigitalOcean hochgeladen werden. Dann erstelle ich aus dem neuen Image ein Droplet. Wieder gibt es einen neuen Server und ich teste diesen mit der Anpassung der IPs in /etc/hosts. Wenn ich fertig bin, wechsle ich einfach die, im DNS für meine Websites eingetragene, Floating IP auf den neuen Server. Cool, oder?

DigitalOcean Rechnungsausschnitt Das Bildschirmfoto zeigt einen Ausschnitt aus der Abrechnung. Zuerst der Server prod1, den ich nicht mehr benötigte und als Snapshot preiswert aufheben kann. Dann der aktuell produktive Server prod6 und zum Schluss die Kosten von einem Cent für das Bauen des Images mit Packer.

Bei der Arbeitsweise mit IaC kann eine Test- oder Entwicklungsumgebung innerhalb einer Minute erstellt werden. Und wenn mein Server eines schlechten Tages gehackt sein sollte, kann ich innerhalb einer Minute zum letzten Stand mit einem frischen Server zurückkehren. Wie öde war dagegen die alte Arbeitsweise. Man konfigurierte und administrierte manuell und schrieb nebenbei alle Schritte mehr oder weniger gut mit. Irgendetwas fehlte immer und wie öde war es die Schritte nacheinander auf mehreren Servern abzuarbeiten. Schlimmer noch, sich ein Jahr später zu erinnern, was man damals getan hatte …

Und die Liste der Pluspunkte ist noch lange nicht zu Ende. Noch nicht erwähnt sind die externe Firewall und die Zwei-Faktor-Authentifizierung bei der Anmeldung bei DigitalOcean. Und Packer kann Chef und Puppet nutzen und Images für Amazon EC2, Microsoft Azure oder VirtualBox bauen.

Was ist noch zu tun?

Meine vier Websites haben endlich Zertifikate von Let’s Encrypt und ich kann ein Server-Image auf Knopfdruck aus meinem Git-Repository bauen. Der Server läuft, bei dem aktuellen Dollarkurs, für vier Euro im Monat in Frankfurt am Main. Als Nächstes will ich meine Rails Webanwendungen portieren. Tests brauche ich noch, um bei einem Serverwechsel die Funktionen automatisiert zu testen. Und Backups brauche ich für sich ändernden Daten, wie die Datenbanktabellen aus der MariaDB oder von der Erneuerung der Zertifikate. Auf das Sichern der Log-Dateien kann ich Dank DSGVO verzichten.