Warum neuer Server?
Ich habe mit dem kleinsten und günstigsten VPS (virtual private server) Paket begonnen. Das hat zwar nur etwas mehr als drei Euro im Monat gekostet, aber war auch nur mit zwei Kernen und zwei Gigabyte RAM, sowie 40 GB Speicher, ausgestattet. Nextcloud war darüber nicht sehr glücklich und hat sich bei der ersten Gelegenheit in den Swapspeicher verkrochen. Das ist nicht gut und deswegen habe ich mich für ein etwas größeres Paket entschieden
Für ARM gibt es günstige VPS
Überrascht hat mich wie günstig die ARM-Server sind. Für sieben Euro im Monat bekommt man sechs Kerne, acht Gigabyte RAM und 256 GB NVMe Speicher. Der einzige Nachteil: Möglicherweise läuft nicht jede Software drauf. Aber inzwischen ist die Kompatibilität schon sehr gut, Ubuntu läuft sehr gut unter ARM und es gibt die allermeisten Docker Container auch für diese Hardwareplattform.
Das Serverpaket
Das zusätzliche Buchen eines Servers geht flott, vor allem, wenn man bereits Kunde ist.
So sieht der Server aus:
Er ist diesmal sogar in Wien situiert und nicht mehr in Nürnberg, wie zuvor.
Das Control Panel
In der Übersicht kann man sich sogleich ein Bild vom neuen Server machen:
Installationsmedien
Über die grafische Oberfläche kann man auch gleich ein Image für die Installation auswählen:
Nur die Frage welches soll man nehmen?
Welches OS?
Vorgefertigt wird einem entweder Debian 12 oder Ubuntu 22.04 in den arm64 Versionen vorgeschlagen:
Ubuntu 22.04 LTS arm64 wird’s werden
Ich habe kurz mit dem Gedanken gespielt Proxmox für arm64 zu installieren. Aber das ist mir einerseits etwas zu experimentell, wird auch nicht offiziell unterstützt und mit den virtuellen Kernen kann man auch prinzipiell keine VMs aufsetzen. Das heißt wiederum ich könnte sowieso nur Container drauf laufen lassen und dann kann ich gleich Ubuntu nehmen. Und so mach’ ich’s auch:
Die Daten sind schnell eingetragen und schon kann das Installieren beginnen:
Nach ein paar Minuten ist die Installation fertig:
Umschauen im Server und Updates
Ich logge mich sogleich mittels SSH ein und schau einmal was wir so zur Verfügung haben…
… und hätte gleich Updates installiert. Interessanterweise gibt es aber gar keine Updates:
Nun gut, dann geht’s gleich weiter.
Tailscale für sicheren Zugang
Ich möchte nicht den SSH-Port (Nummero 22) offen lassen und für mich hat sich tailscale sehr bewährt für den sicheren Fernzugriff. Daher gleich die Installation mit dem Skript:
Die Installation läuft problemlos unter arm64:
Bitte dicht machen! Mit ufw
zusperren
Da ich, wie bereits gesagt, den administrativen Zugang nicht über öffentlich zugänglichen Wegen machen möchte, werde ich jetzt, wo tailscale läuft, alle Ports, bis auf 80
und 443
(Websiten) zumachen. Diese Anleitung hat alle benötigten Befehle.
In der Anleitung ist die Rede von zwei verschiedenen Varianten, eine für Apache und die andere für Nginx, für mich sieht das aber so aus, als ob die Befehle redundant sind, da ja dann sowieso die Ports 80
und 443
aufgemacht werden und das dient nur der Übersichtlichkeit. Nachdem ich noch nicht genau weiß welches Programm da drauf laufen wird, werde ich die Ports direkt aufmachen.
Ich werde mich auch sogleich via tailscale einloggen, denn dann unterbricht die Verbindung nicht, sobald die Firewall zugemacht wird.
Aber zuerst schaue ich ob ufw
aktiv ist mit sudo ufw status
:
Jetzt werden alle eingehenden Verbindungen mit sudo ufw default deny incoming
zumachen.
Dann mache ich die besagten Ports auf mit sudo ufw allow 80
und sudo ufw allow 443
und aktiviere die Firewall mit sudo ufw enable
. Achtung: Wenn man nicht via tailscale verbunden ist, dann bricht die Verbindung ab!
Mit sudo ufw status verbose
kann der Status überprüft werden:
Sehr gut, der VPS ist jetzt erst einmal relativ sicher, da nicht mehr die halbe Welt anklopfen kann.
Docker installieren
Docker unterstützt genauso die arm64 Version von Ubuntu, das heißt man kann einfach die offizielle Anleitung befolgen. Die Deinstallation (mit diesem Befehl: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
) ist bei Ubuntu minimal nicht notwendig, weil eh nichts drauf ist.
Ich installiere am liebsten mit via Paketmanager, das geht mit diesen Befehlen:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Unter Ubuntu muss kein Codename oder Ähnliches angepasst werden. Installiert wird die Docker Engine schließlich so:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ist gar nicht einmal so klein mit 369 MB:
Auf der sicheren Seite: Docker ohne sudo
Betreiben
Da es keine gute Praxis darstellt Docker mit sudo-Rechten zu betreiben, befolgt man lieber noch diese post-install Anleitung. Hier war der Benutzer bereits Teil der docker
Gruppe, daher war nur der Befehl sudo usermod -aG docker $USER
notwendig. Anschließend muss man sich aus der SSH-Sitzung aus- und wieder einloggen, damit die Änderung schlagend wird.
Swap einrichten
Da Nextcloud ein RAM “Frissniegel” (= Vielfraß) ist, werde ich auch gleich noch ein Swapfile mit 16 GB RAM einrichten, sicher ist ist sicher. Allerdings mit der Swappiness von “0”, sprich der Swapspeicher wird nur angegriffen, wenn es absolut notwendig ist.
Swap erstellen und aktivieren
Zuerst schauen ob schon Swap vorhanden ist:
free -h
Dann Speicher für Swapfile zuweisen:
sudo fallocate -l 16G /swapfile
Und die Berechtigungen anpassen (600 heißt, nur der Besitzer kann etwas daran ändern):
sudo chmod 600 /swapfile
Dann kann man überprüfen, ob das Swapfile auch erstellt wurde:
ls -hl /swapfile
Anschließend das Swapfile auch dem Zwecke des Swappens zuführen:
sudo mkswap /swapfile
Und aktivieren:
sudo swapon /swapfile
Jetzt sollte der Swapspeicher mit dem Befehl free -h
bereits aufscheinen.
Swap dauerhaft aktivieren dank fstab
Es empfiehlt sich grundsätzlich die fstab
mit Samthandschuhen anzugreifen, da ein Fehler dort, das ganze Betriebssystem in die Bredouille bringen kann, das geht mit sudo cp /etc/fstab /etc/fstab.bak
. Dann Editor starten (zb sudo nano /etc/fstab
) und die folgenden Zeilen hinzufügen:
#Swapspeicher
/swapfile swap swap defaults 0 0
Swappiness anpassen
Überprüfen kann man die derzeitige Einstellung für die Swapiness mit…
cat /proc/sys/vm/swappiness
… und um sie anzupassen mit diesem Befehl:
sudo sysctl vm.swappiness=50
Fertig!
Weiteres
Als nächsten Schritt werde ich die bestehenden Installationen vom alten VPS auf den neuen migrieren und dann auch noch einen Webserver aufsetzen. Sobald das alles steht, kann ich die DNS-Einträge anpassen und sowohl den alten VPS, als auch das Webhosting einmotten, da dann alles von diesem Server aus laufen wird.