Die Grundlagen des Hostings

Oder auch… Wie bringe ich meine Website ins Netz.

Kurz gesagt, wir brauchen einen Computer im Internet, der die Website speichert und ausliefert. Das wars.

Ein Webhost ist nur ein anderer Computer!

Die meisten Dinge, die du hier lernst beziehen sich auf den Computer der als Webhost fungiert.

Warum brauchst du Webhosting?

Dann fragst du dich jetzt: „Wenn das Hosting wirklich nur aus einem Computer besteht, der eine Website bereit stellt, warum brauche ich dann einen Hosting-Provider? Kann ich meine Website nicht einfach auf meinem Computer hosten?“

Da gibt es einige Schwierigkeiten, die das schwierig gestalten.
Zum Beispiel müsste der eigene Computer 24/7 an bleiben damit die Seite auch verfügbar ist. Das würde auch die Stromkosten in die Höhe treiben. Außerdem sind Webhosting-Provider für die Auslieferung optimiert.
Im Folgenden haben ich einige Gründe zusammengetragen, warum es ungünstig ist, eine Website zu Hause zu hosten.

SelfhostingProfessional Hosting Provider
StromausfallRedundante Stromversorgung
langsame InternetverbindungGigabit stabile Verbindung
dynamische IP Adressestatische IP Adresse
Hardware WartungHardware Wartung Team

Hindernisse beim Selfhosting

  1. Stromausfall
    Wenn es einen Stromausfall gibt ist auch automatisch die Website nicht mehr erreichbar.
  2. langsame Internetverbindung
    Für das bereitstellen der Website braucht es keinen schnellen Download Speed sondern einen guten Upload. Das ist bei den meisten Internetanbietern für den privaten Gebrauch nicht vorgesehen. Also ist die heimische Internetleitung für Selfhosting meist nicht geeignet.
  3. dynamische IP Adresse
    Deine Internet Verbindung zu Hause hat eine dynamische IP-Adresse, die sich mit der Zeit verändert. Das ist so, als ob sich die Adresse Ihres Hauses ständig ändert und man versucht, dir einen Brief zu schicken. Das macht es fast unmöglich. Es gibt einen Trick
  4. Hardware Wartung
    Wenn du deine Website zu Hause betreiben möchtest, musst du auch die Wartungsarbeiten an deinem Computer vornehmen. Geht etwas kaputt ist deine Website offline. Oder im schlimmsten Fall verlierst du sogar deine Daten.

Web Host als gute Alternative

  1. Redundante Stromversorgung
    Die Stromversorgungen der meisten Webhoster werden fast immer durch Generatoren vor Ort unterstützt, bei einem Stromausfall wird die Stromerzeugung von einem Diesel-Generator übernommen. Außerdem haben viele Server auch ein zweites Netzteil, das genutzt wird sobald das andere kaputt geht.
  2. Gigabit stabile Verbindung
    Die Internetleitung im Rechenzentrum hat einen guten stabilen Upload um die Website auch für einen großen Besucheransturm bereitzustellen.
  3. statische IP Adresse
    Mit einem Webhoster können Sie eine eigene IP-Adresse erhalten, die sich nie ändert, dadurch wird ermöglicht, dass Ihre Adresse immer die gleiche bleibt und Ihre Website immer gefunden werden kann.
  4. Hardware Wartung Team
    Das Team in einem Rechenzentrum kümmert sich um die Wartung des Computers (Server). Wenn etwas kaputt geht können sie schnell reagieren und haben meist die Ersatzteile zur Hand. In Servern laufen mehrere Festplatten gleichzeitig redundant. Dadurch kann auch eine Festplatte kaputt gehen ohne das es zum Datenverlust kommt. Manche Provider machen auch noch Backup deiner Daten damit du gut abgesichert bist.

Erste Schritte

Bevor wir unsere Website online stellen müssen wir uns für die Art des Hostings entscheiden.

Arten von Hosting

Es gibt verschiedene Möglichkeiten:

  • Shared Hosting
  • Dedicated Hosting
  • VPS – Hosting

Eine Option von den dreien sollte genau für ihr Projekt passen. Wenn du gerade erst beginnst reicht in der Regel ein Shared Hosting.

  1. Shared Hosting
    Ist bei weitem die häufigste Option für kleine Unternehmen, Privatpersonen und sogar einige beliebte Websites. Dabei sind viele verschiedene Websites auf einem einzigen Server(nur ein anderer Computer im Internet) gehostet. Der Vorteil ist, dadurch das sich viele Menschen einen Server für die Bereitstellung ihrer Website teilen, das es die günstigste Variante ist. Für Anfänger ist Shared Hosting am Besten geeignet. Da man sich nicht um die Infrastruktur kümmern muss. Das passiert alles beim Anbieter.
  2. VPS Hosting
    Es ist von allen drei am schwierigsten zu beschreiben. VPS steht für „Virtual Private Server“.
    Du kannst es so sehen, das man sich von einem großen Ressourcenpool einen teil reserviert um die Rechenleistung für das eigene Projekt zu nutzen. Der Ressourcenpool besteht aus CPU’s, Arbeitsspeicher, Speicherplatz(Festplatten und SSD’s) und auch Traffic (Datenvolumen das Übertragen werden kann ähnlich wie bei deinem Handyvertrag) .
    In Wirklichkeit sind Hunderte von Computern miteinander vernetzt und erscheinen als eine einziger Ressourcenpool. Der VPS ist außerdem von klein nach groß skalierbar. Also wenn deine Website wächst, kann man schnell mehr Ressourcen hinzu buchen. Das macht Sinn wenn das eigene Projekt schnell wächst. VPS Hosting ist gut für Nerds und richtet sich in der Regel an Programmierer und Web Developer.
  3. Dedicated Hosting
    Es ist für Projekte die eine bestimmte Anzahl an Ressourcen benötigt. Es handelt sich meist um große Projekte. Die Ressourcen sind fest dran gebunden, wie der Server konfiguriert wird. Der Vorteil ist das die Ressourcen immer da sind und man sich das ganze nicht mit anderen Leuten teilt. Der Vorteil eines dedizierten Servers ist, dass der gesamte Server (Computer) darauf ausgerichtet ist, deine Website die bestmögliche Leistung zu bieten. Diese Variante ist wohl die teuerste, aber bei großen Projekten wird von den Kunden auch eine gewisse Performance der Seite erwartet. Damit lassen sich die Kunden zufrieden stellen.

Dieser Artikel wird noch ergänzt…

Was ist ein VPN Server?

VPN steht für Virtual Privat Network. VPN ist ein privates Netzwerk auf einer öffentlich zugänglichen Infrastruktur. Nur die Partien, die zu diesem Netzwerk gehören, können miteinander kommunizieren und Daten austauschen. Virtuell in dem Sinne, dass es sich nicht um eine eigene physische Verbindung handelt, sondern um ein bestehendes Kommunikationsnetz, das als Transportmedium verwendet wird. Wie ein verschlüsselter Tunnel. Das bringt zum Beispiel mehr Sicherheit, wenn man in öffentlichen WLAN Netzwerken surfen will.

Es gibt viele verschiedene Einsatzszenarien, daher würde es hier den Rahmen sprengen hier alles zu erklären. Das haben schon viele andere im Netz gemacht, daher hier ein paar weiterführende Links zum nachlesen:

BSI – Wie funktioniert ein Virtual Private Network (VPN)?

Elektronik Kompendium – VPN – Virtual Private Network

Gründe für einen Lowend Server


Ich definieren eine „Lowend Server“ als einen günstigen virtuellen Server. Ich habe bewusst nicht das Wort „billig“ genommen, da dieser sehr relativ zu betrachten ist. Ich beschäftige mich seit 3 Jahren mit „Lowend Stuff“ und habe schon viele vServer (VPS) ausprobiert.
Diese Server werden oft von sehr kleinen Unternehmen vermietet. Es ist also nicht selten, das es nur eine 1Personen Firma ist. Daher kann es auch manchmal ein paar mehr Stunden dauern ehe auf Support Tickets geantwortet wird. Aber bei diesen günstigen Preisen, muss man auch für Kompromisse bereit sei

Warum sollte ich trotzdem Lust auf einen Lowend vServer haben? Hier kommen ein paar Gründe.

Die meisten Anbieter funktionieren über eine Art Prepaid System. Also zahlt man nur so lange wie man auch Guthaben hat. Sonst wird der Server eingefroren. Bis man diesen in einer gewissen Zeit wieder reaktiviert. Das ist aber von Anbieter zu Anbieter unterschiedlich.

Du bekommst mehr für weniger Geld, du bekommst bei manchen Anbietern schon einen kleinen vServer für 1€ und zum teil sogar weniger.

Du kannst auf einem VPS je nach Ausstattung sogar einen eigenen GameServer hosten. Zum Beispiel einen Minecraftserver. Hier habe ich eine Anleitung

Du kannst auch einen eigenen VPN Server erstellen und damit sicher in öffentlichen Netzwerken surfen. Für einen VPN Server brauchst du, wenn du ihn allein nutzt auch gar nicht viele Ressourcen.
256MB RAM, 1vCPU und 5GB SSD Speicher reichen da in der Regel aus. Was wichtig ist, das du viel Traffic zur Verfügung hast. Je nach Surfverhalten sollten da aber 2-5 TB reichen.

Du kannst deinen VPS auch als Storage Server nutzen.

Ich habe einen vServer mit:
– 4 vCPU Intel XEON
– 24GB RAM
– 180GB SSD
– 2TB HDD
Auf diesem läuft meine Nextcloud und ein paar Websites.
Ich bin mit der Preisleistung sehr zufrieden.
Wenn du mehr zum Anbieter wissen magst, schreib mir eine Nachricht über das Kontaktformular.


Ceph Speicher

Ceph läuft nur auf Linux-Systemen.

Es ist unter Open Source lizenziert. Ceph ist hoch skalierbar. Es gibt eine hohe Ausfallsicherheit durch verteilte Ablage der Daten.Er wird aber als zusammenhängender Speicher dargestellt.
Ceph benötigt mehrere miteinander vernetzte Computer. Diese werden als Cluster zusammengeschlossen. Jeder einzelne Computer wird dabei als Node (Knoten) bezeichnet. Unter den einzelnen Nodes müssen verschiedene Aufgaben verteilt werden:

  • Manager
    Verwalten den Status der Speichernutzung, der Systemlast und Auslastung der Knoten.
  • Monitor
    Verwalten den Status der einzelnen Nodes um für Ausfallsicherheit zu sorgen. Es werden mindestens 3 Monitor Nodes empfohlen.
  • Ceph OSDs [Object Storage Devices]
    Die Dienste für die eigentliche Dateiverwaltung. Sie sind für die Speicherung, Duplizierung und Wiederherstellung von Daten zuständig. Pro Cluster sollte es 3 Ceph OSDs geben.
  • Metadaten-Server (MDSs)
    Speichert die Metadaten( Speicherpfade, Dateinamen und Zeitstempel) sie sind POSIX-konform und können mittels Unix-Kommandozeilen-Programmen wie ls, find und like ausgelesen werden.

Der Algorithmus mit der Bezeichnung CRUSH (Controlled Replication Under Scalable Hashing). ermöglicht mit Hilfe einer Zuordnungstabelle der CRUSH Map, einem OSD [Object Storage Devices] mit der angeforderten Datei zu finden.
Klingt kompliziert, ist aber so 😛

Die Basis der Datenablage unter Ceph wird als RADOS bezeichnet.

RADOS steht für (a reliable, distributed object store comprised of self-healing, self-mapping, intelligent storage nodes) frei übersetzt: zuverlässiger, verteilter Objektspeicher, bestehend aus selbstheilenden, selbstabbildenden, intelligenten Speicherknoten.

Möglichkeiten des Datenzugriffs :

  • librados – eine Bibliothek für Anwendungsentwickler
  • CephFS – eigenes Dateisystem; ein Kernel-Modul für zugreifende Rechner (Fuse)
  • radosgw – ein Gateway der via HTTP gelesen oder geschrieben werden kann
  • RADOS Block Device – Einbindung durch Kernel-Module oder virtuelle Systeme wie QEMU/KVM.

Vor- und Nachteile von Ceph

Vorteil:

  • Ceph ist kostenfrei
  • Es gibt viele Tutorials zur Einrichtung und Wartung
  • Gute Dokumentation vom Hersteller
  • integrierte Redundanz sorgen für Datensicherheit

Nachteile:

  • Einrichtung ist relativ kompliziert
  • Es ist ein umfangreiches Netzwerk notwendig
  • Es ist physisch nicht ganz klar wo die Daten abgelegt werden man muss quasi dem Algorithmus vertrauen

Wie erstelle ich ein Backup?

Diese Frage habe ich mit Absicht so frei und offen gewählt. Die Backupmethoden und Möglichkeiten sind so vielfältig wie die Geräte die wir besitzen die, die Daten enthalten, die wir sichern möchten.
Jeder kann sich auf sich individuell zugeschnitten ein Backup Konzept zusammenstellen.
Zum Thema Backup-Strategie habe ich auch schon einen Beitrag verfasst.

Checkliste Backup

  1. Welche Geräte besitze / verwalte ich?
  2. Um welche Art von Daten handelt es sich?
  3. Verwalte ich Daten von anderen Personen?
  4. Welche Speichermedien stehen mir zur Verfügung?

Möglichkeiten für Daten die wichtig sein könnten

  • Bilder
  • Dokumente (gescannte Dokumente)
  • Bankunterlagen
  • Adressbuch / Kontaktliste
  • E-Mails
  • Musiksammlung
  • Spielstände / Savegames
  • Auflistung von installierter Software
  • Favoriten / Bookmarks aus Browser
  • Passwortdatenbanken / Passworttresor
  • gespeicherte Passwörter im Browser
  • Lizenzschlüssel
  • PGP Key’s / SSH Key’S /
  • Backupcodes für OTP 2FA
  • Downloads

In der vorherigen Liste, sind mit Sicherheit Punkte vertreten, an die Du im Regelfall nicht gedacht hättest, bzw. dich nicht kümmern würden.
Um im Falle eines Systemausfalls, Hardwaredefektes, Virusbefalls oder was auch immer, ein lauffähiges individuelles System wiederherstellen oder nachbilden zu können werden fast alle Punkte aus dieser Liste benötigt. In speziellen Fällen kann es natürlich zu Abweichungen kommen.

Backupmöglichkeit:

  • Boardmittel eines Betriebsystems

Backup-Medium:

  • Sicherung auf einen Online Speicherplatz (Storage, Cloudbackup, Archivbackup)
  • Backup auf eine externe Festplatte/SSD

Backup Software unter Linux:

Name Link
CYA https://github.com/cleverwise/cya
Snapper http://snapper.io/
Timeshift https://github.com/teejee2008/timeshift
Bacula https://www.bacula.org/

Backup Software unter Windows

Name Link
Personal Backup Freeware https://personal-backup.rathlev-home.de/
UrBackup https://www.urbackup.org/
EaseUS Todo Backup Free https://www.easeus.de/backup-software/todo-backup-free.html

Netzwerk Werbeblocker über Raspberry Pi-hole

Ich denke Jemensch von euch kennt dieses Problem, eine Website die du gerade besuchst ist einfach komplett voll mit Werbung. Das lenkt nicht nur vom Lesen des eigentlichen Artikels ab, sondern nervt auch noch ziemlich extrem.
Nun gibt es verschiedene Ansätze, wie man die Werbung eindemmen bzw. ganz rausfiltern kann.

  1. Ein Tool zum blocken der Werbung direkt auf dem Gerät das du benutzt installieren
    z.B. (Adblock Plus oder uBlock Origin )
  2. Oder du blockst gleich die Werbung auf Netzwerk Ebene dafür eignet sich dann Pi-hole. Um dieses Tool soll es in diesem Artikel gehen.

In diesem Artikel nehmen ich mir die Installation von Pi-hole auf einem Linux System vor. Die freie Software (Pi-hole) wurde für die Nutzung auf dem Raspberry Pi optimiert, läuft aber auch auf anderen Systemen oder in eine virtuelle Maschine mit z.B. Ubuntu, Debian und viele weitere Distributionen. Der große Vorteil ist, das die Werbung für all deine Geräte im Netzwerk funktioniert ohne das du auf jedem Gerät ein Tool wie uBlock Origin installieren musst.

Ich zeige dir in diesem Artikel, die Pi-hole Installation, wie diese ganz klassisch auf dem Raspberry Pi durchführt wird, dessen Betriebssystem Debian 11 (Bullseye) ist. Hast du keinen Raspberry Pi zu Hause, um Pihole nach dieser Anleitung zu installieren, kannst du die Installation auch in einer virtuellen Maschine z.B. Virtualbox ausprobieren.

Was ist Pi-hole ?

Ist eine OpenSource Software die der netzwerkweiten Blockade von Werbung dient.
Es läuft auf DNS-Ebene

Wie funktioniert die Werbeblockfunktion?

Wenn ein Gerät im Netzwerk, eine Verbindung zu einer Internetseite herstellt, sendet es im Hintergrund eine Anfrage an einen DNS-Server (dieser ist meist im Router hinterlegt) , um den Domain Namen in eine IP-Adresse umzuwandeln. Die Software Pi-hole wird in diesem Fall zum DNS-Server, welcher die Anfragen entgegennimmt.
Durch die Blacklist wird an dieser Stelle von Pi-hole geschaut, ob die angeforderte IP Adresse auf der Sperrliste steht. Wenn das der Fall ist wird diese Verbindung unterbunden. Wenn die Adresse nicht auf der Sperrliste steht, wird die Verbindung ganz normal zum gewünschten Server aufgebaut.
So erhälst du einen Netzwerk-gebundenen Adblocker für alle Geräte im Netzwerk.Diese Art und Weise ermöglicht es sogar Gaming-Konsolen, Smartphones, Tablets und Smart-TVs vom Weberbe-Blocking zu profitieren.

Wie installiere ich das Pi-hole

In dieser Anleitung nehme ich im ersten Schritt Bezug auf die Vorbereitung eines RaspberryPi

World Backup Day 31.03

Schütz deine Daten! Sei vorbereitet gegen Datenverlust und Datendiebstahl. Erstelle ein Backup deiner Daten am 31. März. (oder auch gern früher)

World Backup Day

Das ist wie mit Valentinstag, die Medien und einige Leute wollen dir dann klar machen, das du deinem Schatz etwas schenken oder eine ganz besondere Überraschung bekommen soll.
Nun so ist das auch ein bisschen mit dem World Backup Day. Du solltest deinem Schatz auch immer so einfach mal eine kleine Überraschung oder ein Geschenk machen. So ist es auch mit deinen Backups, diese sollten in regelmäßigen Abständen durchgeführt werden. Weil nur einmal im Jahr Backups zu machen reicht nicht aus.
Bitte gebt auch die Info weiter um noch mehr Menschen klar zu machen das Backups wichtig sind.
Ihr solltet auch einen Eid ablegen, gegenüber euch selbst und euren Mitmenschen.

Der „World Backup Day“ Eid

“Ich schwöre feierlich, am 31. März ein Backup meiner wichtigen Dokumente und wertvollen Erinnerungen zu machen.”

worldbackupday.com/de/

Ich werde auch meine Freunde und meine Familie über den „World Backup Day“ informieren – Freunde lassen Freunde nicht ohne Backup steh’n.

worldbackupday.com/de/

Bei Fragen zu Backup’s kannst du mir auch einfach eine Nachricht schicken.

Hier noch ein paar interessante Artikel:

Was ist ein Backup?

Warum sollte ich ein Backup machen?

Minecraft Server auf Debian 12 installieren

Einen eigenen Minecraft Server zu betreiben, hat einige Vorteile. Man kann z.B. die Einstellungen des Servers wählen. Du kannst außerdem entscheiden ob es ein privater Server nur für dich und deine Freunde wird, oder ob du diesen für die Allgemeinheit freigibst. Debian 12 ist für dieses Vorhaben das geeignete Betriebssystem. Im folgenden kannst du mit der Anleitung lernen, wie du einen eigenen Minecraft Server Stück für Stück aufsetzt. Diese Anleitung müsste auch auf einem RaspberryPi laufen, wurde aber nicht getestet.

Als erstes musst du dich mit deinem Server über das Terminal verbinden.

Du brauchst einige Pakete, die du herunterladen musst.
Dazu gibst du im Command Line Terminal folgende Befehle ein:

sudo apt update
sudo apt-get install wget screen openjdk-17-jre 

Erklärung zu den Paketen und was diese machen:

wgetMit wget lassen sich Datein via HTTPS direkt auf den Server runterladen
Das brauchen wir, wenn wir die Minecraft Server Software downloaden.
screenMit screen kann man bestimmte Befehle im Hintergrund weiterlaufen lassen auch wenn man das Terminal schließt.
openjdk-17-jre Das ist die sogenannte Headless Java Version. Diese wird benötigt um die Minecraft Server Software überhaupt zu starten.

User anlegen für den Server

Es ist am besten, den Minecraft-Server unter einem eigenen Konto laufen zu lassen, anstatt root oder ein anderes Konto zu verwenden. Das ist aus Sicherheit einfach besser. Erstellen ein neues Konto in Debian mit dem folgenden Befehl:

sudo useradd -m -r -d /opt/minecraft minecraft

Minecraft Server installieren

Es ist ohne Probleme möglich später auch mehrere Minecraft Server Instanzen auf einem Host zu betreiben. Daher geben wir dem ersten Server einen Namen und legen für diesen Server einen eigenen Ordner an. In dem Fall „creative“

sudo mkdir /opt/minecraft/creative

Jetzt musst du die Server Software runterladen. Dafür laden wir mit dem Tool wget eine Java Datei von der Minecraft Website herunter: https://www.minecraft.net/en-us/download/server

Nun musst du mit Hilfe von wget die java Datei runterladen und im richtigen Verzeichnis ablegen. Das alles geht mit einem Befehl:

sudo wget -O /opt/minecraft/creative/minecraft_server.jar https://piston-data.mojang.com/v1/objects/8dd1a28015f51b1803213892b50b7b4fc76e594d/server.jar

Den Link im Befehl musst du mit deinem kopierten Link von der Minecraft Website austauschen um die aktuelle Version zu haben.
Dann drückst du einfach [ENTER] und der Download beginnt.

Bevor du den Minecraft-Server installieren kannst, musst du die Nutzungsbedingungen akzeptieren. Das geht am schnellsten mit diesem Befehl:

sudo bash -c "echo eula=true > /opt/minecraft/creative/eula.txt" 

Und du musst noch dem User minecraft die notwendigen Berechtigungen geben, damit dieser im Verzeichnis /opt/minecraft/creative arbeiten darf:

sudo chown -R minecraft /opt/minecraft/creative/

Erstellen eines systemd Start Script

Dieses Script gibt dir die Möglichkeit ganz einfach den Server zu starten , neuzustarten und zu stoppen.

sudo nano /etc/systemd/system/minecraft@.service
[Unit]
Description=Minecraft Server: %i
After=network.target

[Service]
WorkingDirectory=/opt/minecraft/%i

User=minecraft
Group=minecraft

Restart=always

ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx2G -jar minecraft_server.jar nogui

ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN IN 5 SECONDS. SAVING ALL MAPS..."\015'
ExecStop=/bin/sleep 5
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"\015'
ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"\015'


[Install]
WantedBy=multi-user.target

Diesen Inhalt in die Datei einfügen und abspeichern, anschließend den File verlassen.

Unter diesem Punkt kannst du noch den Arbeitsspeicher zuweisen, wie viel der Server bekommen soll. Es sind 2GB eingestellt. Mehr sind natürlich besser: „-Xmx2G“ das G steht für die Gigabyte.

ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx2G -jar minecraft_server.jar nogui

Minecraft Server starten

Nun kannst du den Minecraft Server ganz einfach mit einem systemctl Command starten

sudo systemctl start minecraft@creative

Um den genauen Status des Servers zu sehen kannst du folgenden Befehl nutzen:

sudo systemctl status minecraft@creative

Wenn du möchtest, das dein System bei jedem Start mit hochfährt dann nimmst du den folgenden Befehl:

sudo systemctl enable minecraft@creative

Wenn auf deinem Server eine Firewall aktiv ist, musst du noch den Port freigeben. In meinem Fall nutze ich UFW. Dafür lautet der Befehl:

sudo ufw allow to any from any port 25565

Nun hast du alles gemacht, damit du deinen eigenen Minecraft Server unter Debian 12 betreiben kannst.
Ich wünsche dir viel Spaß beim zocken

Installation und Konfiguration der Nextcloud unter Debian 12

Wer sich mit dem Thema Self-Hosting auseinander setzt kommt früher oder später auf das Thema Nextcloud. Und wenn du einen vServer mit genügend freiem Speicherplatz hast, kannst du dir ja einen Cloud Server aufsetzen. Wenn du wissen willst wie, hier folgt jetzt die Anleitung.

Apache2 Webserver Installation

Zuerst installieren wir einen Webserver, ohne diesen bekommen wir nix im Browser angezeigt.
Mit dem folgenden Command wird Apache2 auf deinem Server installiert:

sudo apt install apache2

UFW installieren

Ohne eine Firewall geht es nicht. Die bekannteste Firewall ist IPTables. Aber diese ist in der Konfiguration ziemlich schwierig. Daher nutzen wir für unseren Server UFW.
Also gleich mal installieren:

sudo apt install ufw

Nun müssen wir die Firewall „UFW“ noch konfigurieren.
Die Firewall blockiert per Anfangseinstellung alle Ports, d.h. das erst einmal kein Dienst von Außen aufgerufen werden kann. Aber wir brauchen ein paar offene Ports, damit wir unserer Server nutzen können. Da fällt mir gleich der erste ein, der SSH Port, sonst kannst du dich nicht an der Konsole anmelden. Also stellst du diesen eine. Diesen Port solltest du von 22 auf einen Wunschport ändern im Kapitel „Konfiguration SSH“. Bei mir nehme ich jetzt Port 10240 diesen habe ich in der SSH-Konfigurtion so gesetzt. Dazu mehr findest du in dem Beitrag Absicherung eines Debian Server.

sudo ufw allow 10240/tcp 

Dann öffnen wir gleich mal noch die Ports HTTP und HTTPS diese werden in der Regel benötigt. Wenn du keinen Webserver betreiben möchtest, kannst du diesen Schritt überspringen.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Jetzt hast du die ersten Ports geöffnet aber müssen noch die Firewall einschalten. Daher ist es wichtig das du den richtigen SSH Port angegeben haben, sonst sperrst du dich selbst aus dem System aus.
Firewall einschalten:

sudo ufw enable 

Diese Info musst du mit einem „y“ bestätigen.
Es kommt noch die Meldung: „Firewall is active and enabled on system startup“
Im Anschluss ist nun auch die Firewall aktiv. Und sollte einige Angriffe abhalten. Wenn du einen neuen Dienst installierst, musst du dann in Zukunft die dazugehörigen Ports öffnen.

Installation PHP 8.2

Über diesen Befehl wird PHP 8.2 installiert und dazu noch einige Plugins welche für die reibungslose Funktion von Nextcloud benötigt werden.

sudo apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu libmagickcore-dev php-redis php-memcached

Jetzt kannst du direkt nach der Installation checken, ob auch das Richtige installiert wurde

php --version

Nun musst du noch die Konfigurationsdatei für Nextcloud anpassen. Alles Stück für Stück.
Mit dem nächsten Befehl kannst du die Config Datei öffnen.
Da diese Datei sehr lang ist und das stressig wird die einzelnen Werte zu suchen, kannst du die Suchfunktion von nano nutzen. Wenn du im Editor bist kannst du einfach [Strg]+[W] drücken dann erscheint eine Suchleiste. Gib einfach deinen Begriff ein und du springst an die Stelle in der Config Datei.

sudo nano /etc/php/8.2/apache2/php.ini

Kommentiere aus den Parameter date.timezone und geben Sie die richtige Zeitzone für PHP ein.

date.timezone = Europe/Berlin

Erhöhen Sie den Standardwert der Parameter memory_limit, upload_max_filesize, post_max_size und max_execution_time. Passe die Werte nach Bedarf an. Das Memory_limit orientiert sich stark am Arbeitsspeicher. Mein Server hat nur 1GB also belasse ich es bei 512MB.

memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300

Setze die Erlaubnis das Datein hochgelanden werden dürfen.

file_uploads = On
allow_url_fopen = On

Wenn das auf off steht werden mögliche Fehler in der Software Nextcloud ausgeblendet das ist besser für die Sicherheit des gesamten Systems.

display_errors = Off
output_buffering = Off

Kommentiere den Parameter zend_extension aus und ändere den Wert in opcache. Dadurch wird PHP OPcache aktiviert, das für Nextcloud benötigt wird.


zend_extension=opcache

Passe die opcache Werte wie folgt an. Dies wird auch von Nextcloud benötigt.

opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Jetzt, wenn alle Werte angepasst sind, kannst du den Apache2 Server neustarten und damit die neue Konfiguration aktivieren.

sudo systemctl restart apache2

Installation MariaDB Server

Nachdem du nun den Apache2 Webserver und PHP in der Version 8.2 installiert hast, brauchen wir noch einen Datenbank Server. Hier installieren wir MariaDB Server.

sudo apt install mariadb-server

Nach der Installation kannst du mit folgendem Befehl schauen ob der Server läuft

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Wenn alles glatt gelaufen ist sollte es in etwa so bei dir aussehen

Jetzt musst du noch den MariaDB Server absichern, das passiert mit dem folgenden Befehl

sudo mariadb-secure-installation

Während des Prozesses solltest du „Y“ eingeben, um zuzustimmen und die Konfiguration auf MariaDB anzuwenden, oder „n“ eingeben, um nicht zuzustimmen und die Konfiguration als Standard zu belassen. Nachstehend findest einige MariaDB-Konfigurationen, nach welchen du gefragt werden wirst.

  • Drück ENTER wenn du nach dem MariaDB root password gefragt wirst
  • Gib n ein wenn du noch unix_socket_authentication method gefragt wirst
  • Gib Y ein, um ein neues Passwort für den MariaDB-Root-Benutzer einzurichten. Gib dann das neue Kennwort ein und wiederholen den Vorgang.
  • Gib Y ein, um den anonymen Standardbenutzer aus MariaDB zu entfernen.
  • Gib dann erneut Y ein, um die Remote Anmeldung für den MariaDB-Root-Benutzer zu deaktivieren.
  • Gib Y ein, um den Standard-Testdatenbank von MariaDB zu entfernen
  • Gib abschließend erneut Y ein, um die Tabellenberechtigungen neu zu laden und die Änderungen zu übernehmen.

Nun ist MariaDB fertig installiert und abgesichert.

Datenbank und User erstellen

Nun legst du eine Datenbank an und dazu einen Nutzer an, beides brauchst du für die Installation von Nextcloud. In der Datenbank werden dann später z.B. die Kalenderdaten, Kontakte usw.

Mit dem Befehl meldest du dich am Datenbank-Server an:

sudo mariadb -u root -p

Das sind die Befehle zum erstellen der Datenbank und des Users
Am besten du kopierst die Zeilen einzeln in die Konsole und drückst jeweils ENTER

CREATE DATABASE nextcloud_db;
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
FLUSH PRIVILEGES;

Mit dem Befehl „quit“ meldest du dich vom Datenbank-Server ab.

Download Nextcloud

Um den Download von Nextcloud zu verarbeiten benötigst du noch zwei Tools, die du nun installieren wirst. Das ist „wget“ zum Download von Nextcloud und „unzip“ zum Entpacken.

sudo apt install wget unzip -y

Jetzt wechseln wir in das Verzeichnis, wo die Programmdaten von Nextcloud hin kommen.

cd /var/www/

Dann laden wir das Softwarepaket von Nextcloud

sudo wget https://download.nextcloud.com/server/releases/latest.zip

Dann wird die *.zip Datei entpackt

sudo unzip latest.zip
ls

Dann vergibst du noch für den gesamten Ordner „nextcloud“ die nötigen Rechte.

sudo chown -R www-data:www-data nextcloud

Erstellen des VirtualHosts unter Apache2

Nachdem du das Nextcloud Softwarepaket heruntergeladen hast, musst du die neue Konfiguration des virtuellen Apache2-Hosts erstellen, der für den Betrieb von Nextcloud verwendet werden soll. Stell sicher, dass die Domain auf die IP-Adresse deines Debian-Servers für deine Nextcloud-Installation zeigt.

Nun erstellen wir den vituellen Host unter Apache2
Wir legen dazu eine neue Datei im Verzeichnis /etc/apache2/sites-available/

sudo nano /etc/apache2/sites-available/nextcloud.conf

Das kommt in die Datei rein. Passe bite deine Domain unter ServerName an. Bei mir steht dort storage.cy3er.de

<VirtualHost *:80>
    ServerName storage.cy3er.de
    DocumentRoot /var/www/nextcloud/

    # log files
    ErrorLog /var/log/apache2/files.hwdomain.io-error.log
    CustomLog /var/log/apache2/files.hwdomain.io-access.log combined

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>
</VirtualHost>

Speicher die Datei und verlasse den Editor.

Dann noch zwei Commands

sudo a2ensite nextcloud.conf
sudo apachectl configtest

Mit dem ersten Befehl legen wir mit dem virtuellen Host eine neue Seite an die der Webserver nun bereit stellt. Der zweite Befehl checkt ob die Syntax von der Konfiguration so passt.

Nun starten wir nochmal den Apache2 Webserver neu.

sudo systemctl restart apache2
Absicherung der Nextcloud mit SSL-Zertifikat

Um eine zusätzliche Sicherheitsebene für Ihre Nextcloud hinzuzufügen, richten Sie HTTPS innerhalb Ihrer virtuellen Apache2-Host-Konfiguration über Certbot ein. Certbot ist ein Tool zur Generierung kostenloser SSL/TLS-Zertifikate von Letsencrypt.
Erstmal muss dieses Tool aber installiert werden:

sudo apt install certbot python3-certbot-apache

Und dann nutzen wir gleich das Tool um unser Zertifikat zu erzeugen und es dann mit unserer Seite zu verknüpfen. In dem Command müsst ihr eure E-Mail anpassen und auch eure Domain/Subdomain.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email hi@cy3er.de -d storage.cy3er.de

Wenn alles durchgelaufen ist müsste es bei dir möglich sein die Domain aufzurufen ohne eine Sicherheitsmeldung zu bekommen. Dort erscheint dann die Installationsmaske von der Nextcloud.

Installation der Nextcloud

In diesem Abschnitt startest du die Nextcloud-Installation über den Webbrowser. Dabei wirst du den Admin-Benutzer für Nextcloud anlegen.

Ruf den Webbrowser auf und gib deinen Domainname deiner Nextcloud-Installation auf (z.B.: http://storage.cy3er.de/). Du solltest automatisch auf eine sichere HTTPS-Verbindung umgeleitet werden und , wirst aufgefordert einen Administrator-Benutzer für Nextcloud anzulegen.

Benutzername und Passwort kannst du selber wählen. Das wird dann automatisch der Admin-Account.

Dann musst du noch die Datenbank Daten eintragen Username, Datenbankname und Passwort.
Diese haben wir in dem Schritt „Datenbank und User erstellen“ angelegt.

Dann wenn du alle Daten eingetragen hast, brauchst du nur noch auf installieren drücken. Das dauert dann einen kleinen Moment je nachdem wie schnell dein Server so ist.
Das ist dann auch das Ende. Du hast fertig einen Nextcloudserver installiert. Jetzt wird dir nur noch eine Frage gestellt, ob du ein paar nützliche Tools installieren willst. Das kannst du entscheiden danach bist du dann aber wirklich fertig.

Schlüsselpaar generieren mit puttygen unter Windows

Du wirst in diesem Tutorial lernen, wie du ein Schlüsselpaar bestehend aus öffentlichem Schlüssel (public key) und dem geheimen Schlüssel (private key) generierst. Dazu benötigst du das Programm puttygen.

Dieses kannst du dir hier downloaden:

puttygen

So sieht das Programm aus. Nun kannst du einfach auf „Generate“ klicken und das Schlüsselpaar fängt an zu generieren. Während des Prozesses musst du innerhalb des Fensters deine Maus bewegen. Die Mausbewegung wird genutzt um ein möglichst starkes Muster für die Verschlüsselung zu erstellen.

Im Anschluss siehst du die fertigen Schlüssel.
Jetzt solltest du auch noch bei „Key passphrase“ und „Confirm passphrase“ deine Passphrase mit der dein Privatekey geschützt wird eintragen.
Dann kannst du sowohl „PublicKey“ und „PrivateKey“ speichern.

Mit diesem Schlüsselpaar kannst du dich dann in putty zum Server verbinden.
Wenn du die Keys in z.B. Powershell nutzen willst musst du noch über die Menüleiste „Conversations“ -> „Export OpenSSH Key“.

Cookie Consent mit Real Cookie Banner