123 lines
4.2 KiB
Markdown
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? |