Installation von Nextcloud auf einem Ubuntu Server 26.04 LTS mit Docker

Aus Volla Wiki
Zur Navigation springen Zur Suche springen

Nextcloud Docker-Setup mit statischen 6x CIFS-Mounts

Diese Anleitung beschreibt die Installation von Nextcloud auf einem Ubuntu Server 26.04 LTS mit Docker. Sie umfasst die Einrichtung einer MariaDB-Datenbank, Redis für Caching, Nextcloud selbst mit externen CIFS-Mounts für Speicher und Nginx Proxy Manager für HTTPS.

Voraussetzungen

Ubuntu Server 26.04 LTS (Download: https://cdimage.ubuntu.com/ubuntu-server/daily-live/current/) Root-Zugriff oder sudo-Rechte Eine statische IP-Adresse für den Server Externe SMB/CIFS-Shares (z. B. von einem NAS) mit IP-Adresse, Benutzername und Passwort DuckDNS-Konto für Dynamic DNS (optional, für externe Zugriffe)

Schritt 1: System-Update und Paket-Installation

Nach der Installation des Ubuntu Servers booten Sie das System und führen folgende Befehle aus:

sudo apt update && sudo apt upgrade -y && sudo reboot

Nach dem Neustart installieren Sie die notwendigen Pakete für CIFS und Docker:

sudo apt install cifs-utils samba samba-client -y

Installieren Sie Docker und Docker Compose (offizielle Methode):

sudo apt update

sudo apt install ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/ sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Fügen Sie Ihren Benutzer der Docker-Gruppe hinzu und testen Sie:

sudo usermod -aG docker $USER

newgrp docker

docker ps -a


Schritt 2: Verzeichnisse und Konfigurationsdateien erstellen

Erstellen Sie ein Verzeichnis für Nextcloud:

sudo mkdir -p /opt/nextcloud

cd /opt/nextcloud

Erstellen Sie eine .env-Datei für sensible Daten (z. B. Passwörter). Ersetzen Sie die Platzhalter durch starke Passwörter (32 Zeichen, a-Z, 0-9):

sudo nano .env

Inhalt der .env-Datei:

MYSQL_ROOT_PASSWORD=IhrStarkesRootPasswortHier

MYSQL_PASSWORD=IhrStarkesDbPasswortHier

NEXTCLOUD_ADMIN_USER=admin

NEXTCLOUD_ADMIN_PASSWORD=IhrAdminPasswortHier

Erstellen Sie die docker-compose.yml-Datei:

sudo nano docker-compose.yml

Inhalt der docker-compose.yml:

services:

db:

image: mariadb:lts

container_name: nextcloud_db

restart: always

command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW

volumes: - db_data:/var/lib/mysql

environment:

- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

- MYSQL_PASSWORD=${MYSQL_PASSWORD}

- MYSQL_DATABASE=nextcloud

- MYSQL_USER=nextcloud

healthcheck:

test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]

interval: 10s

timeout: 5s

retries: 3

redis:

image: redis:alpine

container_name: nextcloud_redis

restart: always

healthcheck:

test: ["CMD", "redis-cli", "ping"]

interval: 10s

timeout: 5s

retries: 3

app:

image: nextcloud:latest

container_name: nextcloud_app

restart: always

ports:

"8080:80"

depends_on:

db:

condition: service_healthy

redis:

condition: service_healthy

volumes:

nextcloud_data:/var/www/html

- cifs_volume1:/mnt/share1

- cifs_volume2:/mnt/share2

- cifs_volume3:/mnt/share3

- cifs_volume4:/mnt/share4

- cifs_volume5:/mnt/share5

- cifs_volume6:/mnt/share6

environment:

MYSQL_HOST=db

MYSQL_PASSWORD=${MYSQL_PASSWORD}

MYSQL_DATABASE=nextcloud

MYSQL_USER=nextcloud

REDIS_HOST=redis

NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}

NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}

NEXTCLOUD_TRUSTED_DOMAINS=localhost IhreDomain.duckdns.org

Empfohlen für Performance:

PHP_MEMORY_LIMIT=4096M

PHP_UPLOAD_LIMIT=40G

volumes:

db_data:

nextcloud_data:

cifs_volume1:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share1

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

cifs_volume2:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share2

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

cifs_volume3:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share3

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

cifs_volume4:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share4

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

cifs_volume5:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share5

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

cifs_volume6:

driver: local

driver_opts:

type: cifs

device: //IP_ADRESSE/share6

o: username=IhrBenutzername,password=IhrPasswort,addr=IP_ADRESSE

Hinweis: Entkommentieren Sie die CIFS-Volumes im app-Service, wenn Sie sie nutzen möchten. Ersetzen Sie IP_ADRESSE, IhrBenutzername und IhrPasswort durch Ihre Werte.

Schritt 3: Nextcloud starten

docker compose up -d

Öffnen Sie http://IhreServerIP:8080 in einem Browser. Die Installation startet automatisch mit den in .env definierten Werten. Melden Sie sich als Admin an.

Schritt 4: DuckDNS für Dynamic DNS (optional)

Registrieren Sie sich bei DuckDNS und erstellen Sie eine Subdomain (z. B. IhreDomain.duckdns.org).

Installieren Sie einen DuckDNS-Client, z. B. via Docker:

Erstellen Sie ein separates Verzeichnis:

sudo mkdir -p /opt/duckdns cd /opt/duckdns sudo nano docker-compose.yml

Inhalt: services:

duckdns:

image: lscr.io/linuxserver/duckdns:latest

container_name: duckdns

environment:

- TZ=Europe/Berlin

- SUBDOMAINS=IhreDomain

- TOKEN=IhrDuckDNSToken

restart: unless-stopped

Starten:

docker compose up -d

Schritt 5: Nginx Proxy Manager für HTTPS

Erstellen Sie ein Verzeichnis für NPM:

sudo mkdir -p /opt/npm

cd /opt/npm

sudo nano docker-compose.yml

Inhalt:

services:

app:

image: 'jc21/nginx-proxy-manager:latest'

restart: always

environment:

TZ: "Europe/Berlin"

ports:

- '80:80'

- '81:81'

- '443:443'

volumes:

- ./data:/data

- ./letsencrypt:/etc/letsencrypt

Starten:

docker compose up -d

Öffnen Sie http://IhreServerIP:81 und loggen Sie sich ein (Standard: admin@example.com / changeme). Ändern Sie das Passwort. Fügen Sie einen Proxy-Host hinzu: Subdomain (z. B. nextcloud.IhreDomain.duckdns.org) → localhost:8080. Aktivieren Sie SSL mit Let's Encrypt.

Schritt 6: Nextcloud-Konfiguration anpassen

Fügen Sie trusted_domains in der config.php hinzu (nach Proxy-Setup):

sudo -s nano /var/lib/docker/volumes/nextcloud_nextcloud_data/_data/config/config.php

Fügen Sie hinzu:

'trusted_domains' => array ( 0 => 'localhost', 1 => 'IhreServerIP', 2 => 'nextcloud.IhreDomain.duckdns.org', ),

Speichern und starten Sie den Nextcloud-Container neu:

docker compose restart app

Hinweise

Sicherheit: Verwenden Sie starke Passwörter und aktivieren Sie 2FA in Nextcloud.

Backup: Sichern Sie regelmäßig die Docker-Volumes.

Fehlerbehebung: Überprüfen Sie Logs mit docker logs nextcloud_app.

Diese Anleitung ist für den 02. Januar 2026 aktualisiert und basiert auf aktuellen Versionen.