Alpine Linux auf dem VPS: ein minimales System und seine Tücken
Alpine Linux ist eine Distribution, die nach der Installation rund hundert Megabyte auf der Festplatte belegt und im Leerlauf nur einige Dutzend Megabyte Arbeitsspeicher verbraucht. Möglich machen das drei Entscheidungen: die Bibliothek musl statt glibc, die Werkzeugsammlung BusyBox statt vollwertiger GNU-Programme und das Init-System OpenRC statt systemd. Auf dem Server bedeutet das einen schnellen Start, wenige überflüssige Dienste und eine kleine Angriffsfläche – aber auch eine Reihe von Unterschieden, die Sie vorab kennen sollten: Viele Anleitungen aus dem Internet sind für Debian oder Ubuntu geschrieben und funktionieren auf Alpine nicht eins zu eins.
Für welche Aufgaben sich Alpine eignet
- Die kleinsten Tarife mit 256–512 MB Arbeitsspeicher: Wo es für Ubuntu schon eng wird, lässt Alpine fast den gesamten Speicher der Anwendung.
- Host für Container. Docker und containerd werden aus dem offiziellen Repository installiert, das System kommt den Containern kaum in die Quere. Die Hardwareanforderungen finden Sie auf der Seite VPS für Docker.
- Reverse Proxy, DNS-Server, Knoten eines privaten Netzwerks mit WireGuard – Dienste, die ein Netzwerk und ein paar Konfigurationsdateien brauchen, keinen großen Bibliotheksstack.
- Wegwerf-Server für Tests und CI: Das Image ist in Sekunden bereitgestellt und lässt sich leicht von Grund auf neu aufbauen.
Weniger gut passt Alpine für Websites unter einem Control Panel, für proprietäre Software, die nur als Pakete für glibc verteilt wird, und für Projekte, deren Administrator sich nicht mit den Unterschieden zu den gewohnten Distributionen befassen möchte. In solchen Fällen ist Debian die entspanntere Wahl: Es ist ebenfalls sparsam, aber mit allem kompatibel.
Worin sich Alpine vom gewohnten Linux unterscheidet
- Pakete werden mit apk installiert:
apk update,apk add paket,apk upgrade. Das Repository community ist standardmäßig eventuell deaktiviert – entfernen Sie das Kommentarzeichen in/etc/apk/repositories. - Dienste werden über OpenRC verwaltet:
rc-service nginx startundrc-update add nginxfür den Autostart. Unit-Dateien von systemd funktionieren hier nicht, für eigene Programme schreibt man kurze Init-Skripte. - musl statt glibc. Fertige Binärdateien, die für glibc gebaut wurden, starten nicht oder stürzen ab. Die Kompatibilitätsschicht gcompat hilft nicht immer. Für Python gibt es einen Teil der Pakete nicht als fertige Builds für musl; sie werden bei der Installation kompiliert, was lange dauert und einen Compiler auf dem Server voraussetzt.
- Kein bash standardmäßig: Die Shell ist ash aus BusyBox. Skripte mit bash-Syntax schreibt man entweder um oder installiert bash als separates Paket nach.
- Logs schreibt das syslog aus BusyBox nach
/var/log/messages, journalctl gibt es hier nicht.
Installation und Updates
Nicht jeder Anbieter hat ein fertiges Alpine-Template, und wo es eines gibt, basiert es mitunter auf einer alten Version. Zuverlässiger ist die Installation vom offiziellen Image virt – es ist genau für virtuelle Maschinen gemacht. Dafür brauchen Sie einen VPS mit KVM, der das Booten eines eigenen Images erlaubt und eine VNC-Konsole bietet: Booten Sie vom ISO, melden Sie sich als root ohne Passwort an und starten Sie setup-alpine. Das Skript fragt Tastaturlayout, Netzwerk, Zeitzone, SSH-Server und Festplatte ab; wählen Sie für einen Server den Installationsmodus sys – die normale Installation auf die Festplatte. Eine Liste passender Tarife finden Sie auf der Seite VPS mit eigenem ISO.
Vergibt der Anbieter die Adresse nicht per DHCP, müssen Sie das Netzwerk manuell in /etc/network/interfaces beschreiben; das betrifft vor allem IPv6. Prüfen Sie das Netzwerk in der Konsole vor dem Neustart, damit Sie sich nicht aussperren.
Legen Sie direkt nach der Installation ein root-Passwort fest, erstellen Sie einen normalen Benutzer und hinterlegen Sie für ihn einen SSH-Schlüssel. Statt sudo verwendet man unter Alpine oft doas – es ist kleiner und einfacher einzurichten. Eine Firewall ist standardmäßig nicht vorhanden: Installieren Sie nftables oder iptables mit awall und öffnen Sie nur SSH und die benötigten Dienste. Prüfen Sie außerdem die Uhrzeit: Ohne chrony oder ntpd driftet die Uhr der virtuellen Maschine allmählich ab, und von der genauen Zeit hängen die Prüfung von TLS-Zertifikaten und die Reihenfolge der Einträge in den Logs ab.
Stabile Alpine-Versionen erscheinen zweimal im Jahr, das Haupt-Repository jeder Version wird rund zwei Jahre lang gepflegt. Updates innerhalb einer Version erledigt apk upgrade. Für den Wechsel auf eine neue Version ersetzen Sie die Versionsnummer in /etc/apk/repositories, führen apk upgrade --available aus und starten anschließend neu. Installieren Sie den Zweig edge nicht auf einem Server: Das ist die Entwicklungsversion. Automatische Updates gibt es in Alpine nicht – richten Sie einen Cron-Job ein oder abonnieren Sie die Mailingliste zu neuen Releases.
Worauf Sie bei der Tarifwahl achten sollten
Alpine braucht so wenig Arbeitsspeicher, dass beim Tarif nicht der RAM, sondern Festplatte und Netzwerk den Ausschlag geben. Selbst mit 512 MB bleibt Platz für nginx, eine kleine Datenbank und ein paar Container – sparen Sie aber nicht an der Festplatte, wenn Sie Docker planen: Images und Layer belegen schnell mehrere Gigabyte. Auch unter Container-Virtualisierung läuft Alpine, dort wählen Sie den Kernel jedoch nicht selbst, und Module wie WireGuard hängen von den Einstellungen des Anbieters ab. Soll auf dem Server mehr laufen als ein paar Dienste, nehmen Sie gleich mindestens 1 GB Arbeitsspeicher und eine Swap-Datei.