README.md aktualisiert
All checks were successful
release-tag / release-image (push) Successful in 45s

This commit is contained in:
2024-12-21 22:02:04 +00:00
parent d7ec50359a
commit bacb5f821f

275
README.md
View File

@@ -1,2 +1,277 @@
# nextcloud_traefik
0. Grundvoraussetzung
Docker & Docker Compose v2 (Debian / Ubuntu)
Traefik V3 Installation, Konfiguration und CrowdSec-Security
Als Grundlage meiner Anleitung dient die offizielle Nextcloud Anleitung für Docker.
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/nextcloud/{database,app,daten}
2. Docker Grundlagen
2.1 Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Nextcloud Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/nextcloud/docker-compose.yml
Inhalt
mit neuer Traefik Anleitung
services:
nextcloud-db:
image: mariadb:10.11
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --innodb_read_only_compressed=OFF
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /opt/containers/nextcloud/database:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=test #SQL root Passwort eingeben
- MYSQL_PASSWORD=test #SQL Benutzer Passwort eingeben
- MYSQL_DATABASE=nextcloud #Datenbank Name
- MYSQL_USER=nextcloud #SQL Nutzername
- MYSQL_INITDB_SKIP_TZINFO=1
- MARIADB_AUTO_UPGRADE=1
networks:
- default
nextcloud-redis:
image: redis:alpine
container_name: nextcloud-redis
hostname: nextcloud-redis
networks:
- default
restart: unless-stopped
command: redis-server --requirepass test # Redis Passwort eingeben
nextcloud-app:
build: .
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- nextcloud-db
- nextcloud-redis
environment:
TRUSTED_PROXIES: 172.30.255.254/16
OVERWRITEPROTOCOL: https
OVERWRITECLIURL: https://nextcloud.euredomain.de
OVERWRITEHOST: nextcloud.euredomain.de
REDIS_HOST: nextcloud-redis
REDIS_HOST_PASSWORD: test # Redis Passwort von oben wieder eingeben
volumes:
- ./app:/var/www/html
- ./daten:/var/www/html/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.rule=(Host(`nextcloud.euredomain.de`))"
- "traefik.http.routers.nextcloud.tls=true"
- "traefik.http.routers.nextcloud.tls.certresolver=http_resolver"
- "traefik.http.routers.nextcloud.service=nextcloud"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"
- "traefik.http.routers.nextcloud.middlewares=default@file"
networks:
- proxy
- default
networks:
proxy:
external: true
Notwendige Anpassungen:
MySQL Root Passwort ändern
MySQL User Kennwort ändern
MySQL User für Nextcloud ändern
eure Domain bei Traefik anpassen (“nextcloud.euredomain.de”)
OVERWRITECLIURL anpassen
OVERWRITEHOST anpassen
2.2 Dockerfile erstellen
Nun erstellen wir uns ein Dockerfile. Dies hat den Grund, dass wir so die Erweiterung bz2 zusätzlich installieren können. Dazu gebt ihr folgendes ein:
nano /opt/containers/nextcloud/Dockerfile
Inhalt:
FROM nextcloud:latest
RUN apt-get update && apt-get install -y libbz2-dev && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install bz2
2.3 Docker Image bauen
Nun lassen wir uns das Image bauen. Dazu gebt ihr folgendes ein:
cd /opt/containers/nextcloud
docker compose build --no-cache
3. Nextcloud Server starten
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/nextcloud/docker-compose.yml up -d
4. Nextcloud einrichten
Zuerst klickt ihr auf “Speicher & Datenbank”.
Hier wählt ihr nun “MySQL/MariaDB” aus.
Jetzt solltet ihr folgendes sehen.
Gebt hier nun folgendes ein:
Administrator-Konto anlegen
Benutzername: Wie euer Nextcloud Admin heißen soll
Passwort: Wählt ein Passwort
Datenbank Verbindung herstellen
Datenbank-Benutzer: Holt den Namen aus dem Docker Compose Datei
Datenbank-Passwort: Holt das Passwort aus dem Docker Compose Datei
Datenbank-Name: Haben wir in Docker Compose auf “nextcloud” festgelegt
Datenbank-Host: Haben wir in Docker Compose auf “nextcloud-db” festgelegt
Wenn ihr anschließend auf “Installation abschließen” klickt, dauert es ca. 30 Sekunden, bis die Webseite neu lädt und ihr folgendes angezeigt bekommt. Hier könnt ihr auf “Abbrechen” klicken oder alle “Empfohlen Apps” direkt mit installieren lassen. Ich drücke immer abbrechen, da ihr die Apps auch später mit einem Klick installieren könnt.
Anschließend werdet ihr von diesem Startbildschirm begrüßt.
6. Optimierungen
Wenn ihr oben rechts auf eueren “Buchstaben”. Dann wählt ihr “Einstellungen” -> “Übersicht” aus. Nun solltet ihr feststellen, dass Nextcloud noch “Optimierungsbedarf” sieht. Dies wollen wir nun tun.
6.1 Standardtelefonregion festlegen
Dazu öffnet ihr folgende Datei:
nano /opt/containers/nextcloud/app/config/config.php
Fügt nun folgende Zeile hinzu:
'default_phone_region' => 'DE',
Dies setzt die Standardregion auf Deutschland. Beispiele dazu findet ihr hier. Nun könnt ihr die Datei wieder schließen.
Bei mir sieht es dann so aus:
.
.
.
'dbuser' => 'nextcloud',
'dbpassword' => 'test',
'installed' => true,
'default_phone_region' => 'DE',
);
6.2 Der Server hat keine konfigurierte Startzeit für das Wartungsfenster
Dies könnt ihr sehr leicht beheben. Das Wartungsfenster geht immer 4 Stunden. Ihr müsst / könnt hier lediglich wählen, wann es beginnen soll. In unserem Fall soll es um “1” Uhr beginnen.
Wir öffnen folgende Datei:
nano /opt/containers/nextcloud/app/config/config.php
Fügt dort folgendes hinzu:
'maintenance_window_start' => '1',
Wer es um 2 Uhr beginnen lassen möchte, der schreibt hier eine “2” hin.
Bei mir sieht es dann so aus:
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => 'test',
'installed' => true,
'default_phone_region' => 'DE',
'maintenance_window_start' => '1',
);
6.3 .well-known/webfinger und .well-known/nodeinfo kann nicht aufgelöst werden (nur bis Nextcloud Version < 29)
Diese Fehlermeldung solltet ihr nicht mehr bekommen, da wir sie in der Docker Compose Datei bereits behoben haben. Man behebt sie sehr leicht mit folgenden Codezeilen:
nano /opt/containers/nextcloud/docker-compose.yml
Hier fügt ihr folgendes hinzu:
nextcloud-app:
labels:
- "traefik.http.routers.nextcloud.middlewares=nextcloud-wellknown,default@file"
- "traefik.http.middlewares.nextcloud-wellknown.replacepathregex.regex=^(/.well-known.*)"
- "traefik.http.middlewares.nextcloud-wellknown.replacepathregex.replacement=/index.php$${1}"
6.4 BadRequest Erwartete Dateigröße
Falls ihr einen solchen Fehler beim Uploaden einer Datei habt:
BadRequest
Erwartete Dateigröße von 10485760 Bytes, aber 8306688 Bytes gelesen (vom Nextcloud-Client) und geschrieben (in den Nextcloud-Speicher). Dies kann entweder ein Netzwerkproblem auf der sendenden Seite oder ein Problem beim Schreiben in den Speicher auf der Serverseite sein.
Öffnet folgende Datei:
nano /opt/containers/nextcloud/app/.user.ini
Fügt hier folgendes hinzu:
php_value upload_max_filesize 16G
php_value post_max_size 16G
Nun solltet ihr Dateien bis maximal 16 GB hochladen können.
6.5 fehlende optionale Indizes erkannt
Ich bekomme noch folgende Fehlermeldung, dass Einige fehlende optionale Indizes wurden erkannt. Gelegentlich werden neue Indizes hinzugefügt (von Nextcloud oder installierten Anwendungen), um die Datenbankleistung zu verbessern fehlen. Dies könnt ihr so beheben:
docker exec -it -u 33 nextcloud-app /bin/bash
./occ db:add-missing-indices
exit
6.6 One or more mimetype migrations are available
Dies behebt ihr mit folgendem Befehl:
docker exec -it -u 33 nextcloud-app /bin/bash
./occ maintenance:repair --include-expensive
exit
6.7 Container neu starten
Nun starten wir Nextcloud neu um sicherzugehen, dass alle Einstellungen übernommen werden.
docker compose -f /opt/containers/nextcloud/docker-compose.yml down
docker compose -f /opt/containers/nextcloud/docker-compose.yml up -d
Nun sollten alle diese Fehlermeldungen behoben sein.
6.8 allgemeine Befehle im Nextcloud Container ausführen
Speziell nach Updates bekommt ihr manchmal eine Meldung wie solche:
One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations.
Ihr bekommt den Befehl angezeigt, welchen ihr ausführen sollt. Hier zeige ich euch, wie ihr dies schnell erledigen könnt. Dazu gebt ihr folgendes ein:
docker exec -it -u 33 nextcloud-app /bin/bash
Nun könnt ihr den Befehl eingeben. In meinem Fall also:
./occ maintenance:repair --include-expensive
Wichtig: Achtet auf “./” vor dem Befehl.
7. Nextcloud mittels CrowdSec absichern
Nun könnt ihr Nextcloud innerhalb weniger Minuten noch zusätzlich mittels CrowdSec absichern. Eine Anleitung dazu findet ihr hier.
8. Collabora Office integrieren
Ich habe hier eine Anleitung geschrieben, wie ihr in wenigen Minuten Collabora Office mittels Docker installiert und in Nextcloud integrieren könnt. Collabora Office ermöglicht euch ein komplettes online Office innerhalb von Nextcloud.
9. OnlyOffice integireren
Neben Collabora Office könnt ihr auch innerhalb weniger Minuten OnlyOffice mittels Docker installieren und integrieren. Es hat einen ähnlichen Funktionsumfang wie Collabora Office.
10. Nextcloud Cron einrichten
Nun fügen wir auf unserem Server noch einen Cron Eintrag hinzu. Dieser bewirkt, dass Nextcloud alle 5 Minuten die Hintergrundjobs abarbeitet. Um Cron zu starten gebt ihr folgendes ein:
crontab -e
Beim ersten Start erscheint nun folgende Meldung. Wählt hier 1 aus.
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
Choose 1-2 [1]: 1
Hier fügt ihr nun folgende Zeile hinzu:
*/5 * * * * docker exec -u www-data nextcloud-app php cron.php
Diese Zeile bewirkt, dass euer Server alle 5 Minuten die cron.php Datei ausführt in eurem Nextcloud Container.
Nachdem ihr dies eingerichtet habt, könnt ihr dies auch kontrollieren. Geht dazu in eure Nextcloud als Administrator. Wählt dann bei Hintergrundaufgaben noch Cron (Empfohlen)”. Hier solltet ihr nun folgendes in den Einstellungen sehen. Wichtig ist, dass die Letzte Aufgabe ausgeführt…” maximal 5 Minuten sein sollte. Wenn dies so ist, dann funktioniert alles.
11. Nextcloud updaten
Docker bringt uns den Vorteil, dass wir neue Updates einfach mit wenigen Befehlen einspielen können. Da wir im Schritt 2.2 ein eigenes Image bauen, können wir den normalen pull Befehl nicht verwenden. Um ein Image upzudaten gebt ihr folgendes ein:
cd /opt/containers/nextcloud
docker compose down
docker compose build --no-cache
docker compose up -d
Wenn ihr auf eine spezielle Version updaten wollt, öffnet ihr folgende Datei:
nano /opt/containers/nextcloud/Dockerfile
Hier könnt ihr nun die genaue Version angeben:
FROM nextcloud:28.0-fpm-alpine