[DE] Tutorial: Nextcloud auf Ubuntu Server mit nginx, PostgreSQL/MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban

Hi,

ich beschäftige mich schon länger mit dem Hosting von Nextcloud auf einem LEMP-Stack (Linux, nginx, MariaDB, PHP). Meine Erfahrungen habe ich nun in ein Tutorial zusammengefasst, welches die komplette Installation, Einrichtung und Optimierung des Systems und v.a. Nextcloud zeigt.

Neben der Verwendung von Ubuntu Server, nginx, PostgreSQL/MariaDB und PHP behandelt der Artikel das Erzeugen einen SSL-Zertifikats mit Let’s Encrypt und die weitere Optimierung der Cloud mittels Fail2ban und Redis.

Die Anleitung richtet sich v.a. an Leute, die bisher noch wenig Erfahrung mit Linux sammeln konnten. Daher ist es nicht nur eine reine Auflistung an Befehlen und Datei-Inhalten, sondern ich habe versucht, genügend Erklärungen und Hintergrundinfos in den Artikel einzubauen. Nach dem “Durcharbeiten” des Tutorials sollte daher genügend Grundverständnis der Materie vorhanden sein, dass evtl. auftretende Probleme schnell selbst behoben werden können.

Update: Neuer Artikel basierend auf Ubuntu Server 20.04 LTS.

Update 2 (26.05.2022): Ein neuer Artikel ist verfĂĽgbar, der auf Ubuntu 22.04 LTS basiert.

Der komplette Artikel ist hier zu finden:

Ich freue mich immer über Feedback, Verbesserungsvorschläge oder konstruktive Kritik.


Ă„ltere Artikel:

5 Likes

Moin,

Ich muss sagen Hammer, sehr schöne und ausführliche Anleitung. Ich dacht mir liest die mal eben durch wie lang kann die schon sein :slight_smile: Habe mich dann aber doch dazu entschieden sie nur zu überfliegen.
Ich selber sehe mich zwar nicht als Profi aber ich muss sagen damit sollte wirklich jeder was anfangen könne und hinterher auch wissen was er gemacht hat.

Danke dir fĂĽr diese Anleitung!

wow. sehr geil!!

allerdings würde ich diesen thread vielleicht eher unter international/deutsch sehen…

Der Thread war ursprünglich auch im deutschen Teil des Forums. War nicht ganz sicher, wo er am besten aufgehoben ist. Wurde dann von einem Admin nach howto verschoben. Ich denke, man wird ihn auch hier ganz gut finden…

wer will, der findet immer :wink:

aber siehste mal…
suchen würde ich ihn - wenn englisch - unter howto. klar. vielleicht also, um es ganz schön zu machen (so wie dein tutorial wirklich wunderbar ausführlich ist), noch einen thread im deutschen forum starten mit einem link hierhin?

ich kanns nicht oft genug sagen: geniale arbeit!

Yup feel free to pop a topic in the German category linking here, though I don’t see the point in separating out how-to into multiple languages (just yet) - you’ll find it if you’re looking either way :grin:

1 Like

Ich glaube irgendwo habe ich das schon einmal bemängelt. Warum installierst du den Webserver und Datenbank-Server aus fremden Quellen? Sind da wirklich funktionen oder Bugs die das notwendig machen? Ich würde das nur machen, wenn es wirklich einen großen Vorteil bringt, sonst hat das eher einen negativen Einfluss auf die Systemstabilität und ggf. Sicherheit (bietet nginx so lange Sicherheits-Fixes für diese Ubuntu Version wie der LTS-Support).

Die aktuellen Debian/Ubunutu-Versionen sind aktuell genug, damit das ordentlich läuft. Wenn man wirklich eher auf neuere Pakete setzen möchte, würde ich lieber ein System wählen, das darauf ausgelegt ist (z.B. archlinux oder FreeBSD).

Ansonsten wirklich tolles und ziemlich vollständiges Tutorial.

Hi,

ich denke, dass kein großes Risiko davon ausgeht, wenn die offiziellen Paketquellen von nginx/MariaDB hinzugefügt werden. Ich hatte mit diesen Paketen bisher noch nie Probleme. Es wird ja auch erwähnt, dass man auch die Versionen aus den Ubuntu-Paketquellen nehmen kann. Für eine aktuellere Version dann eben die offiziellen Paketquellen der Hersteller. Ich denke, dass das mehr oder weniger Geschmacksache ist.

Wovon ich dagegen immer abrate sind PPA-Quellen (dadurch wäre ja auch PHP 7.1 möglich gewesen).

Der Artikel ist genial und ich habe ihn nur durch Zufall gefunden. Für mich gehört der im Deutschen Forum gleich oben an gepinnt, kein Mensch kommt drauf so etwas in den Englischen HowTo zu suchen. Aber ich fürchte mal das ist auch nicht erwünscht. Na ja, zumindest ist hier überhaupt noch deutsch zu lesen.Danke an DecaTec für die tolle Arbeit. Schade das er es nicht im deutschen Teil lassen durfte.

1 Like

Und auch hier nochmal:
Neuer Artikel auf Basis von Nextcloud 13 und Ubuntu Server 18.04 LTS.

1 Like

Noch ein kleines Update hinterhergeschoben:
Nextcloud mit nginx 1.15 und A+ Rating/100% beim SSL-Test.

Update: Neuer Artikel - nun basierend auf Ubuntu 20.04 LTS

Wichtige Ă„nderung: Das Setup installiert Nextcloud nun nicht mehr in einem Unterverzeichnis, sondern direkt auf dem Web-Root. Diese Ă„nderung habe ich auf Grund der groĂźen Nachfrage nach einem solchen Setup eingefĂĽhrt.

Wie immer sind konstruktive Kritik und Verbesserungsvorschläge erwünscht.

Update: Neuer Artikel, basierend auf Ubuntu Server 22.04 LTS

Neben der neuen Ubuntu-Version als Unterbau enthält der Artikel erstmals Schritte zur Nutzung von PostgreSQL als Datenbank-System (als Alternative zu MariaDB).

Wichtig: Da schon auf PHP 8.1 gesetzt wird, sind die im Artikel gezeigten Schritte erst ab Nextcloud 24 umsetzbar.

2 Likes

Hallo DecaTec!

Erstmal groĂźes Lob fĂĽr dein Tutorial! Richtig gut!!!

Ich habe eine Frage, diese betrifft nicht wirklich Dein Tutorial, allerdings habe ich gesehen, dass du unter Anderem Einstellungen an der

/etc/php/8.1/fpm/php.ini

vornimmst. Genau hier scheint bei meiner Docker Installation der Schuh zu drĂĽcken. Ich habe mal mein Post hier

https://help.nextcloud.com/t/nextcloud-docker-occ-fatal-error-allowed-memory-exhausted/140814

verlinkt. Vieleicht hast Du eine Idee?

Beste GrĂĽĂźe und vielen Dank schon mal!!!

Hi,

zunächst muss ich sagen, dass ich kein Experte bin, was Nextcloud/Docker angeht, da ich hier um Docker eher einen Bogen mache.

Die Fehlermeldung, die du im verlinkten Thread erwähnst, klingt allerdings eher danach, dass dem Raspi das RAM ausgeht.
Die php.ini sollte im Docker schon soweit optimiert sein. Kontrollieren kannst du das in der Admin-UI der Nextcloud: Wenn hier keine Warnung bzgl. des Memory Limits bei PHP angezeigt wird, dann ist hier alles richtig konfiguriert.

Wie viel RAM hat dein Raspi?

Hi!
Es taucht keine Warnung auf. Der Raspi hat 4 GB.

Wenn es keine Warnungen in der Admin-UI gibt, dann wĂĽrde ich mal sagen, dass dem Raspi der RAM ausgeht.
Wie hoch ist die RAM-Auslastung im Durchschnitt?

Also laut top ist ĂĽber 2 G frei.

OK, ist zwar mittlerweile etwas Offtopic, aber hier gibt es schon mehrere Threads bzgl. dieser Fehlermeldung. Anscheinend wurde bei den meisten Fällen kein Eintrag apc.enable_cli=1 in der php.ini (CLI) hinterlegt.
Kannst ja mal ĂĽberprĂĽfen, ob das in deiner php.ini (CLI) angegeben ist (direkt im Docker-Container). Welche Datei das genau ist, kann ich dir aber leider nicht sagen, da kenne ich mich zu wenig mit der Docker-Variante von Nextcloud aus.

Ich habe diese Datei gefunden im Docker. Das klingt ja ähnlich.

root@677a3d8018b4:/usr/local/etc/php/conf.d# cat docker-php-ext-apcu.ini 
extension=apcu
apc.enable_cli=1

allerdings ist hier schon die 1 gewählt…

Edit:
Wenn man jedes mal bei den occ Befehlen die “PHP_MEMORY_LIMIT=512M” mitgibt funktioniert es.

sudo -u www-data PHP_MEMORY_LIMIT=512M php ./occ upgrade