der 1€ FreeBSD Server

Vorgeschichte

Inspiriert von oxzis BlogPost dachte ich mir nur “hold my beer!”, ein virtueller privater Server mit public IPv4 für nur einen einzigen Euro? Das will ich auch. Gesagt - getan. Mal eben bei Strato einen Server geklickt. Tatsache! Nur 1€. 1 vCore, 1GB RAM, 10GB SSD. 1 IPv4. NOICE! Die Provisionierung ging relativ zügig. Nach ein paar Stunden begrüßte mich im Kundenportal mein VPS und wollte installiert werden. Zur Auswahl standen eine aktuelle Auswahl an Debian, Ubuntu, AlmaLinux und Rocky Linux. mäh :/ Kein BSD zur Auswahl (und kein nixOS… hier wäre ein Grund gewesen, es mal zu probieren…). Ich komme mit Linux gut klar, aus Gründen der Faulheit und Gewohnheit möchte ich aber lieber ein BSD, am liebsten ein FreeBSD installieren… Also was tun?


die Qual der Wahl

  • oxzi ist in seinem Post einen sehr eleganten Weg gegangen. Er hat sich ein Debian installiert, hat sich ein OpenBSD-Image geladen, es in Grub eingebunden und es dann via Grub geladen. Hatte dann aber noch den “Stress” mit der Installation und irgendwelchen Tasten die nicht funktionierten. Ich fande die Idee und seine Herangehensweise sehr elegant und einfach nachzuvollziehen, dachte mir aber, dass es sicherlich noch andere Wege geht und man vielleicht den Installer umgehen kann?
  • im Handbuch des Hosters ist von einer Möglichkeit die Rede, custom .iso hochzuladen und ausrollen zu lassen. Leider habe ich den Teil, in welchem einen gesagt wurde, dass es für mein Hosting-Paket nicht verfügbar ist übersehen und mich bestimmt 20 Minuten durch das backoffice geklickt und die Möglichkeit gesucht, eigene .isos hochzuladen… Spoileralarm: bei einem so günstigen Server ist es einfach nicht möglich. Man ist begrenzt auf eine aktuelle Auwahl an Debian, Ubuntu, AlmaLinux und Rocky Linux. Man muss Strato aber zu Gute halten, dass sowohl die aktuelle als auch die letzte Version von jedem Linux zur Verfügung steht und es eine einfach 1-Click-Installation ist… Leider kein *BSD :/ leider auch kein nixOS. Ich spiele schon länger mit der Idee NIX auszuprobieren auf OS-Level, und hier wäre wahrscheinlich der Punkt gewesen, an dem ich die Reise gewagt hätte. Aber nein… eigene .iso war/ist also keine Möglichkeit. okay…
  • im backend des Hosters habe ich die Möglichkeit gefunden, ein Rescue-System zu booten. Beherzt habe ich da mal rumgeklickt und ein gparted-live-linux startete und die GUI war via VNC-Konsole abrufbar. Nice. Aktuelles Debian mit Netzwerk und die eigene Festplatte ist nicht in Betrieb… Perfekt… Testweise mal ein Terminal aufgemacht, mich umgesehen und sofort bemerkt: hiermit kann ich arbeiten.

was habe ich gemacht?

Aus diesem unglücklichen Zustand heraus, habe ich mir gedacht, ich versuche einfach mal folgendes: ich lade via wget ein VM-Image von FreeBSD herunter, lasse es nicht in eine Datei schreiben sondern pipe es direkt in dd. FreeBSD-Images kommen immer als .xz Archiv, also muss man noch xz dazwischen setzen und das ganze live entpacken. Auch kein Problem. mit fdisk -l habe ich mir das Festplattenlayout mal angeschaut und hatte auch direkt den Bezeichner für die Festplatte: /dev/vda. Dann noch schnell den Link von einem der Archtitektur entsprechenden Image kopieren und den Befehl in eine Zeile klöppeln:

wget https://download.freebsd.org/ftp/releases/VM-IMAGES/14.1-RELEASE/amd64/Latest/FreeBSD-14.1-RELEASE-amd64.raw.xz -O - | xz -dc | dd of=/dev/vda bs=1M conv=fdatasync

ich möchte den Befehl auch kurz erklären:

wget $LINK -O - holt eine Datei aus dem Internet und gibt sie direkt an die Standardausgabe, anstatt sie in eine Datei zu speichern.

xz -dc das Image aus der Standardeingabe wird mit xz entpackt (-d) und an die Standardausgabe (-c) gegeben

dd of=/$Festplatte bs=1M conv=fdatasync die Daten aus der Standardeingabe werden mittels dd auf die $Festplatte geschrieben, in Blöcken zu jeweils 1 Megabyte und mit fdatasync wird das physische Medium gesichert geschrieben, bevor das Programm dd geschlossen wird… der ganze Zauber hat ungefähr 3 Minuten gedauert, und FreeBSD war auf der Platte. Ein reboot später begrüßte mich in der VNC-Konsole schon direkt das gewohnte Bootmenü.


was muss jetzt gemacht werden? was kann man alles machen?

nachdem ich das FreeBSD händisch angepasst habe und die Schritte aus dem Installer von Hand reproduziert habe (hostname, Netzwerkeinstellungen, Zeitzone, Tastaturlayout, Sprache, ssh-Server, Benutzer anlegen, root Dateisystem auf ganze Festplatte ausdehnen, etc.), habe ich mich ein bisschen umgeschaut… Zum Einsatz kommt ein AMD EPYC-Milan @ 1.996GHz. Von der Taktfrequenz her tippe ich auf das Modell mit 56 oder 64 Kernen, das taktet so langsam. Der RAM müsste dementsprechend DDR4-3200 sein. Schön zu sehen, dass man hier nicht die 10 Jahre alten Xeons von der Resterampe bekommt, sondern einigermaßen zeitgemäße Hardware. Immer im Hinterkopf behalten: die Möhre kostet nur 1 Euro!. Die Grafikkarte wird als QXL paravirtual graphic card identifiziert. targets Der Unterbau der Server ist also ein Linux mit QEMU/KVM.

Die Netzwerkanbindung ist mehr als gut. 1 öffentliche IPv4, leider nur 1 öffentliche IPv6. Up- und Downlink sind jeweils 2GBit. Sehr gut. Bei vielen Hostern bekommt man für 1€ irgendwas in der Größenordnung 100Mbit. Strato wirbt im Angebot lediglich mit 1Gbit, jedoch unlimitiertem Traffic… Bin gespannt, wann sie sich bei mir beschweren :D targets


was hält die Zukunft bereit?

Mit einer so starken Netzwerkanbindung ist so ein Server natürlich im hohen Maße dazu geeignet, als VPN-Server herzuhalten und den eigenen Netzwerkverkehr zu sichern. FreeBSD hat im allgemeinen eine sehr gute Firewall (pf) und erreicht hohe Geschwindigkeiten beim Routing/Switching. Ich könnte mir also gut einen VPN-Server auf wireguard-Basis vorstellen. Im allgemeinen würde ich gerne ein paar Services aus meiner privaten selbstgehosteten Cloud auslagern und zu einem Hoster umziehen. Für 1€ klicke ich mir bei Bedarf einfach noch einen Server und lass das Ding skalieren. Ich danke oxzi für den Tip und Hinweis und freue mich auf weiteren Schabernack (: