Veröffentlicht von Oliver am 06.09.202106.09.2021
Das Selbsthosting wichtiger Software und Daten auf Ihrem eigenen Heimserver hat viele Vorteile, kann jedoch für den Einstieg eine entmutigende Aufgabe sein. Ich betreibe seit ein paar Jahren meinen eigenen Server und werde hier die Auswahl an Hardware und Software beschreiben. Dies ist eine vollständige Anleitung zum Einrichten Ihres eigenen kleinen Servers.
Warum sollten Sie Ihren eigenen Server bauen?
In einigen Fällen sollten Sie nicht. Einige sehr kostspielige, spezialisierte oder schwer zu konfigurierende Dienste (wie E-Mail) sind bei einem externen Anbieter möglicherweise besser geeignet. Wenn Sie Ihre Dienste nur sehr selten nutzen oder gar nicht bereit sind, in das für das Hosting erforderliche Wissen einzutauchen, ist dies möglicherweise auch nicht der richtige Ort für Sie.
Keine Angst, Hosting-Software auf eigene Faust war noch nie so einfach wie heute und es kommt mit vielen Vorteilen. Vielleicht am wichtigsten macht es Sie ein bisschen unabhängiger. Tech-Giganten haben es nicht so leicht, an Ihre Daten zu gelangen, und ein Problem in der Cloud oder bei Ihrem Internetprovider hindert Sie nicht daran, auf Ihre Daten und Dienste (lokal) zuzugreifen.
In einer Zeit, in der Dienste immer wichtigere Teile Ihres Lebens steuern (wie ein Smart-Home-System), können diese Kontrolle und Unabhängigkeit von unschätzbarem Wert sein. Auf lange Sicht kann es auf lange Sicht sogar kostengünstiger sein. Sicher, der Kauf von Hardware ist eine Investition, aber das Hosten von Terabyte an Daten in der Cloud kostet Sie auch viel – für immer.
Last but not least kann es ein sehr lustiges Projekt sein, das Ihnen hilft, viel über Technologie zu lernen, und Sie können immer neue Software ausprobieren. Es gibt so viel Open Source & freie Software da draußen!
Was wollen Sie mit Ihrem Server?
Bevor Sie etwas bauen, ist es wichtig, sich zu fragen: Was plane ich mit diesem Server? Wenn Sie nur ein paar kleine Dienste lokal ohne viele Daten hosten möchten, unterscheidet sich das Ergebnis stark von einem vollständigen Speicherserver.
Wenn Sie nur lokale Dienste benötigen, empfehle ich in den meisten Fällen, einen neueren Raspberry Pi und möglicherweise eine externe SSD für Daten zu kaufen. Sie sind billig, energieeffizient und einfach einzurichten. Meinen kleinen Smart Home Server und Hub auf Basis des Raspberry Pi 4 habe ich in diesem Artikel ausführlich beschrieben. Das Hinzufügen einer SSD für kleine Datenspeicher ist ebenfalls recht einfach.
Wenn Sie nach einer leistungsfähigeren Lösung suchen oder viele Daten speichern müssen, empfehle ich die Verwendung einer anderen Plattform. Einige Leute verwenden ein NAS oder alte Serverhardware (die sehr gut funktionieren kann), aber ich empfehle normale Kundenhardware mit einem Fokus auf einige spezielle Eigenschaften.
- Stellen Sie sicher, dass Sie eine gute Netzwerkverbindung haben (1 Gbit / s oder vielleicht sogar 10)
- Verwenden Sie energieeffiziente Komponenten und je nachdem, wo Sie den Server platzieren möchten stille
- Holen Sie sich eine CPU, die leistungsstark genug ist, ohne im Leerlauf Energie zu verschwenden
- Normalerweise benötigen Sie keine Grafikkarte
- Holen Sie sich , dies kann für Ihren Server sehr wichtig sein
- Holen Sie sich ein Mainboard und ein Gehäuse, das genügend Festplatten aufnehmen kann & SSDs für die Speicherung und hat eine gute Kühlung
- Holen Sie sich hochwertige Speichermedien. Ich habe die WD Red-Serie häufig verwendet (seien Sie vorsichtig mit den SMR-Versionen) und habe auch gute Dinge über die Seagate Ironwolf-Serie gehört
- Stellen Sie sicher, dass Ihre Komponenten ordnungsgemäß gekühlt sind und alles gut genug angeschlossen ist. Sie werden wollen diese zu werden bauen & vergessen
- Erhalten eine qualität power adapter!
- Ich persönlich würde Hardware-RAID-Controller vermeiden
Wenn Sie einen Heimserver bauen möchten, sollten Sie den Kauf über diese Affiliate-Links in Betracht ziehen, um den Blog zu unterstützen
Western Digital Red Plus-Serie
Seagate IronWolf-Serie
Raspberry Pi 4 8GB für einen kleineren Server
Der deutsche Verlag Heise hat einige großartige Artikel zum Aufbau eines eigenen Servers. Sie können auch viele internationale Artikel darüber finden. Mein persönliches Lernen nach dem Erstellen mehrerer Versionen des Servers besteht darin, immer zu planen, was Sie gerade und in naher Zukunft benötigen. Bauen Sie nicht für etwas, das Sie in 10 Jahren brauchen könnten. Bis dahin wird es bessere Hardware geben. Die einzige Ausnahme könnte die Lagerung sein. Es ist immer eine gute Idee, ein paar SATA-Ports übrig zu haben, damit Sie später mehr Speicherplatz hinzufügen können.
Der Software-Stack
Es gibt eine Menge Software für Server und jede Wahl hängt von Ihren Vorlieben und Ihrem Anwendungsfall ab. Das Folgende ist meine persönliche Meinung nach ein paar Jahren Arbeit an diesem Problem in meiner Freizeit.
Beginnen wir zunächst mit dem, was ich auf einem Server nicht verwenden würde: Windows. Upgrades sind hart, eine Menge Software wird nicht richtig unterstützt und es ist teuer. Verwenden Sie stattdessen eine Unix / Linux-Lösung. Es gibt vollständige Lösungen dafür wie FreeNAS, OpenMediaVault oder Unraid, aber Unraid kostet Geld und die anderen Lösungen schränken auch Ihre Möglichkeiten ein. Sie könnten eine gute Wahl für Sie sein, aber ich beschloss, den DIY-Weg zu gehen und meine eigene Lösung basierend auf bewährter Technologie zu bauen.
Mein Home-Server läuft auf einem minimalen Ubuntu-Server-Betriebssystem (eine LTS-Version) mit SSH-Zugriff für die Verwaltung. Ich verwende das ZFS-Dateisystem, um die Laufwerke in einem großen Datenpool zu bündeln und gleichzeitig Funktionen wie Caches, Snapshots, RAID und einfache Backups bereitzustellen. In diesem Pool habe ich mehrere Dateisysteme für verschiedene Anwendungsfälle erstellt, von denen einige über das Netzwerk für andere Clients verfügbar gemacht wurden. Auf dem Server läuft ein Docker-Daemon und ich verwende mehrere Docker-Compose-Dateien, um eine Reihe von Diensten wie OpenHab, Grafana, Bitwarden / Vaultwarden und Nextcloud zu hosten. Ein Reverse Proxy (derzeit Traefik) ermöglicht es, ausgewählte Dienste von überall im Web aus zu erreichen.
Externe Backups werden über zusätzliche Laufwerke durchgeführt, die über USB angeschlossen und regelmäßig gedreht werden. Einige Skripte und ein Verfügbarkeitsmonitor überprüfen regelmäßig, ob alles noch ordnungsgemäß ausgeführt wird, und senden andernfalls Alarme. Die Installation erfolgt größtenteils automatisiert und kann auf neuer Hardware schnell wiederholt werden (sofern die Daten natürlich noch verfügbar sind).
Einrichten des Servers – automatisierte Installation
Bevor ich den Server tatsächlich eingerichtet habe, habe ich beschlossen, diesen Prozess zu automatisieren. Dies macht es einfacher, schneller, weniger fehleranfällig und fungiert auch als eine Art Dokumentation. Eine Basisplattform zu haben, die zuverlässig schnell und einfach aufgebaut werden kann, ist ein großer Vorteil. Auf diese Weise kann alles andere, Daten und die eigentlichen Dienste, unabhängig von diesem System konfiguriert werden. Wenn ich zu etwas anderem wechseln möchte, sollte es relativ einfach sein.
Für die Automatisierung habe ich Ansible gewählt. Ansible ist eine Software, mit der Sie sogenannte Playbooks schreiben können: kurze Skripte, die definieren, welche Schritte zum Einrichten Ihres Servers ausgeführt werden sollen. Diese Playbooks können dann mit einem einfachen Befehl aufgerufen werden und automatisieren alle manuellen Schritte, die für den Einrichtungsprozess erforderlich sind. Ich habe Ansible selbst beim Einrichten des Servers gelernt, daher bin ich mir sicher, dass die Playbooks besser sein könnten, aber ich werde sie sowie alles andere, was für das Server-Setup benötigt wird, über GitHub in den folgenden Teilen dieser Serie teilen.
Ich habe diese Skripte vor der eigentlichen Installation einige Male in einer VM ausgeführt, um sicherzustellen, dass alles wie vorgesehen funktioniert. Seitdem habe ich jedoch ein paar neue Funktionen hinzugefügt und Teile der vorhandenen überarbeitet. Die eigentliche Installation auf dem Server war recht einfach.
Zuerst müssen Sie Ihr bevorzugtes Linux-Betriebssystem installieren. Ich habe Ubuntu Server LTS gewählt und über einen USB-Stick installiert. Das System ist für schnellere Startzeiten auf einer SSD installiert. Nach der Installation habe ich nur das Netzwerk konfiguriert (ich empfehle eine statische IP), SSH aktiviert und den Server an seine endgültige physische Position verschoben. Von nun an wird kein Bildschirm / Tastatur / Maus benötigt, es kann über das Netzwerk verwaltet werden (es sei denn, etwas geht schief).
Die nächsten Schritte sind ebenfalls einfach: Laden Sie die benötigten Skripte herunter, installieren Sie Ansible und führen Sie die Playbooks aus.
sudo apt install git ansiblegit clone https://github.com/OliverHi/zfs-homeserver.gitcd zfs-homeserver/ansibleansible-playbook setup_playbook.yml -K
Dadurch wird ein Playbook namens setup_playbook .yml, die den Server einrichten wird. Natürlich können Sie hier jedes Ansible Playbook verwenden, aber meines ist ziemlich einfach und sieht so aus.
--- - name: "Setting up the home server" hosts: localhost connection: local # become root user, which is needed for most tasks become: yes become_user: root vars_files: - vars/main_vars.yml tasks: - name: Install the needed packages apt: name: - samba - software-properties-common #- linux-headers - dkms - zfsutils-linux - samba-vfs-modules - zfs-auto-snapshot state: latest cache_valid_time: 3600 - import_tasks: tasks/setupZFStask.yml - import_tasks: tasks/setupUsersTask.yml - import_tasks: tasks/setupFoldersTask.yml - import_tasks: tasks/setupSambaTask.yml - import_tasks: tasks/setupDocker.yml # and more tasks if needed
Grundsätzlich funktioniert es auf dem lokalen Server, läuft als root und verwendet Variablen, die ich in einem separaten main_vars definiert habe.yml-Datei. Es beginnt mit der Installation einiger Pakete, die ich für mein Setup benötige, und führt dann eine Reihe von Aufgaben aus, die ich für die verschiedenen Teile des Software-Stacks geschrieben habe. Es wird das ZFS-Dateisystem einrichten, Benutzer und Ordner erstellen, Docker einrichten und vieles mehr. Sie können diese jederzeit nach Ihren Wünschen anpassen.
In den folgenden Beiträgen dieser Serie werde ich erklären, wie ich das Dateisystem, Benutzer, Samba-Freigaben sowie Docker und den Traefik Reverse Proxy eingerichtet habe. In jedem Teil werde ich auch die benötigten Ansible-Dateien hinzufügen, um sie automatisch zu installieren. Der gesamte Code wird auf meinem GitHub-Konto verfügbar sein.
Der nächste Beitrag zum Einrichten von ZFS und einem Backup-System finden Sie hier.