Files
da-HomeNetDocumentation/PI5/nextcloud.md
T

123 lines
4.2 KiB
Markdown

---
title: Nextcloud auf Raspberry PI5
description: Meine Installation
published: true
date: 2026-01-13T20:35:28.604Z
tags: nextcloud, pi5, docker, traefik, hard piece of work
editor: markdown
dateCreated: 2026-01-13T20:33:57.688Z
---
# Systemdokumentation: Nextcloud auf Raspberry Pi 5
Dies ist eine umfassende Systemdokumentation deiner Nextcloud-Instanz, basierend auf der erfolgreichen Fehlerbehebung und Migration vom 4. Januar 2026.
---
## 1. Systemübersicht
Das System basiert auf einer Container-Architektur (Docker), die hinter einem **Traefik Reverse Proxy** betrieben wird. Die Konfiguration von Traefik erfolgt über den **File Provider** (dynamische YAML-Dateien).
### Komponenten & Versionen
| Komponente | Image / Version | Zweck |
| --- | --- | --- |
| **Nextcloud** | `nextcloud:latest` (32.0.3) | Hauptanwendung (PHP-Apache) |
| **MariaDB** | `mariadb:11.4` | Datenbank (Speicherung von Metadaten) |
| **Redis** | `redis:7-alpine` | In-Memory Cache (Locking & Performance) |
| **Traefik** | `traefik:latest` | Reverse Proxy & SSL-Terminierung |
---
## 2. Infrastruktur & Netzwerk
Alle Container kommunizieren über ein externes Docker-Netzwerk namens `traefik`.
* **Externes Netzwerk:** `traefik` (Zuständig für die Kommunikation zwischen Proxy und App).
* **IP-Adressbereich:** `172.16.0.0/12` (als Trusted Proxy in Nextcloud hinterlegt).
* **SSL-Zertifikate:** Automatisiert via Let's Encrypt (DNS-01 oder HTTP-01 über Traefik).
---
## 3. Dateistruktur & Volumes
Die Daten liegen persistent auf einem externen Mount-Punkt (`/mnt/data/`).
| Pfad auf Host | Zweck |
| --- | --- |
| `/mnt/data/nextcloud/www` | Nextcloud Core-Dateien & Konfiguration |
| `/mnt/data/nextcloud/data` | Benutzerdaten (Dateien, Bilder, etc.) |
| `/mnt/data/nextcloud/db` | MariaDB Datenbank-Dateien |
| `/opt/compose/nextcloud/` | Docker Compose & `.secrets` |
| `/opt/compose/traefik/dynamic/` | Traefik Routing & Middleware Konfiguration |
---
## 4. Konfigurations-Details
### 4.1 Datenbank-Zugriff
Aufgrund der Migration eines bestehenden Dumps wurde der Datenbankbenutzer auf `nextclouduser` festgeschrieben. Die Authentifizierung erfolgt über Docker Secrets.
* **DB-User:** `nextclouduser`
* **DB-Name:** `nextcloud`
* **Secrets:** Pfade liegen unter `./.secrets/` (`db_user_pw`, `db_root_pw`).
### 4.2 Traefik Routing (Dynamic Config)
Um Performance-Probleme und den Fehler `429 Too Many Requests` zu vermeiden, wurde eine spezifische Middleware-Chain für Nextcloud erstellt.
**Wichtige Middlewares:**
* **`chain-nextcloud`**: Beinhaltet Security-Headers und Kompression, verzichtet jedoch auf striktes Rate-Limiting.
* **`nextcloud-dav`**: Regelt die Weiterleitung für CalDAV/CardDAV (`.well-known` redirects).
### 4.3 Nextcloud `config.php` (Auszug)
Wichtige Parameter für den Betrieb hinter Traefik:
```php
'overwrite.cli.url' => 'https://cloud.da.home-webserver.de',
'overwritehost' => 'cloud.da.home-webserver.de',
'overwriteprotocol' => 'https',
'trusted_proxies' => ['172.16.0.0/12'],
'dbuser' => 'nextclouduser',
```
---
## 5. Wartung & Fehlerbehebung
### Häufige Befehle (OCC)
Da Nextcloud in einem Docker-Container läuft, müssen `occ` Befehle mit dem User `www-data` ausgeführt werden:
* **Indizes reparieren:**
`docker exec --user www-data nextcloud php occ db:add-missing-indices`
* **Wartungsmodus aus:**
`docker exec --user www-data nextcloud php occ maintenance:mode --off`
* **Upgrade durchführen:**
`docker exec --user www-data nextcloud php occ upgrade`
### Backup & Restore
Ein Datenbank-Import erfolgt über die Pipe-Struktur direkt in den Container:
```bash
cat backup.sql | docker exec -i nextcloud-db mariadb -u root --password=$(cat ./.secrets/db_root_pw) nextcloud
```
---
## 6. Bekannte gelöste Probleme (Historie)
* **MIME-Type Fehler:** Verursacht durch Traefik Rate-Limit (Status 429). Gelöst durch Entfernung des Rate-Limits für die Nextcloud-Domain.
* **Datenbank-Login:** Abgleich zwischen `config.php` und DB-Privilegien für `nextclouduser` korrigiert.
* **Content Security Policy (CSP):** Login-Blockade gelöst durch Setzen der `overwrite`-Parameter in der `config.php`.
---
**Dokumentationsstand:** 04. Januar 2026
**Status:** Aktiv / Stabil
Möchtest du, dass ich diesen Text in eine Datei namens `README.md` in deinem Projektordner schreibe?