Zum Inhalt springen
glowfish

Start · Hilfe · Alpine-Linux-Server einrichten

Alpine-Linux-Server einrichten: apk, OpenRC und musl

Alpine ist das kleinste System im Sortiment. Statt glibc und GNU-Werkzeugen nutzt es musl und BusyBox, statt systemd OpenRC. Diese Anleitung gilt für Alpine 3.24 auf einem Alpine-Server.

Was installiert ist

  • OpenRC als Startsystem. Beim Start laufen syslog, crond und das Netz.
  • apk mit den Paketquellen main und community.
  • BusyBox mit der Shell ash. bash ist nicht installiert.
  • doas statt sudo. OpenSSH für die Anmeldung kommt bei der Einrichtung des Servers hinzu.

1. Aktualisieren und Pakete installieren

apk update && apk upgrade
apk add nginx
apk search php

apk del entfernt ein Paket wieder. Die installierten Wunschpakete stehen in /etc/apk/world.

2. Dienste verwalten

Anders als bei Debian startet ein installierter Dienst nicht von selbst. Er wird einmal gestartet und für den Systemstart eingetragen:

rc-service nginx start
rc-update add nginx default
AufgabeAlpineDebian mit systemd
Starten, anhalten, neu startenrc-service nginx start|stop|restartsystemctl start|stop|restart nginx
Zustandrc-service nginx statussystemctl status nginx
Beim Start einschaltenrc-update add nginx defaultsystemctl enable nginx
Beim Start abschaltenrc-update del nginx defaultsystemctl disable nginx
Alle Diensterc-statussystemctl list-units

3. Eigenen Dienst einrichten

Für ein Programm ohne mitgeliefertes Startskript reichen wenige Zeilen. Als /etc/init.d/meindienst speichern, Programm und Benutzer anpassen:

#!/sbin/openrc-run

name="meindienst"
command="/usr/local/bin/meindienst"
command_user="dienst"
command_background=true
pidfile="/run/${RC_SVCNAME}.pid"

depend() {
    need net
}
chmod 755 /etc/init.d/meindienst
rc-update add meindienst default
rc-service meindienst start

4. cron und Protokolle

crond läuft bereits. Eigene Aufgaben stehen mit crontab -e in /etc/crontabs/root. Skripte in /etc/periodic/daily und den Nachbarordnern laufen täglich, stündlich, wöchentlich oder monatlich. Die Systemprotokolle schreibt BusyBox nach /var/log/messages.

5. Rechte mit doas

Für einen Benutzer, der Befehle als root ausführen darf:

adduser betrieb
adduser betrieb wheel
echo 'permit persist :wheel' > /etc/doas.d/wheel.conf

Danach führt dieser Benutzer Befehle mit doas aus, zum Beispiel doas apk upgrade. Wer sudo gewohnt ist, installiert es mit apk add sudo.

musl statt glibc

Programme aus apk-Paketen und aus dem Quellcode laufen ohne Einschränkung. Fertige Binärdateien, die für glibc gebaut sind, starten oft nicht. Das Paket gcompat hilft bei einfachen Fällen. Gibt es eine eigene Ausgabe für musl oder Alpine, ist sie die bessere Wahl. Für Software, die nur für glibc erscheint, passt ein Server mit Debian oder Ubuntu.

Auf die nächste Version wechseln

Alle sechs Monate erscheint eine neue Alpine-Version. Vor dem Wechsel einen Snapshot im Kundenkonto anlegen, dann in /etc/apk/repositories die Versionsnummer durch die neue ersetzen, hier am Beispiel 3.25, und aktualisieren:

sed -i 's/v3.24/v3.25/g' /etc/apk/repositories
apk update && apk upgrade --available
reboot

Container und Kernel

Alpine läuft bei uns als Container mit Incus. Er nutzt den Kernel des Hosts. Kernelpakete und eigene Kernelmodule entfallen deshalb. Wer einen eigenen Kernel braucht, wählt einen vServer mit KVM.

Häufige Fragen

Wie viel Arbeitsspeicher braucht Alpine?
Das System selbst kommt mit wenigen Megabyte aus. Den Bedarf bestimmen die Dienste, die darauf laufen.
Warum fehlen Befehle, die ich von Debian kenne?
BusyBox bringt schlanke Fassungen der üblichen Werkzeuge mit. Die vollen GNU-Fassungen gibt es als Pakete, etwa coreutils, findutils, grep und bash.

Weiter: Die ersten Schritte auf Ihrem vServer Devuan-Server ohne systemd einrichten

Alpine-Server ansehen