Nextcloud Self-Hosted File Sharing
Nextcloud: Self-Hosted File Sharing & Collaboration Platform
Inhaltsverzeichnis
Nextcloud: Die Alternative zu Dropbox, Google Drive & OneDrive
Nextcloud ist eine freie und quelloffene Collaboration Plattform, die File Sharing, Synchronisation und Collaboration Tools bietet. Im Gegensatz zu kommerziellen Lösungen haben Sie vollständige Kontrolle über Ihre Daten und können Nextcloud auf Ihrer eigenen Infrastruktur betreiben.
- 📁 File Sync & Share - Dateiensynchronisierung zwischen Geräten
- 👥 Collaboration - Online-Editing, Kommentare, Tags
- 📞 Video Conferencing - Talk App für WebRTC Calls
- 📧 Email & Calendar - Integrierte PIM Suite
- 🔐 Full Control - Vollständige Kontrolle über Daten & Datenschutz
Architektur Übersicht
Die Nextcloud Installation bei matzka.cloud nutzt eine moderne, containerisierte Architektur mit separaten Services für Application, Database und Cache.
Service-Topologie
┌─────────────────────────────────────────────┐
│ Traefik Reverse Proxy (Port 443) │
│ Domain: next.matzka.cloud │
└──────────────────┬──────────────────────┘
│
┌──────────┴──────────┐
│ │
┌────▼─────┐ ┌────▼──────┐
│ Nextcloud │ │PostgreSQL │
│ App │ │ Database │
│ Port 80 │ │ Port 5432│
└────┬─────┘ └──────┬────┘
│ │
┌────▼──────────────────────▼──────┐
│ Redis Cache (Port 6379) │
│ Session & Object Store │
└───────────────────────────────────┘
Komponenten Details
1. Nextcloud Web Application
| Container Name | nextcloud |
| Base Image | nextcloud:latest (PHP 8.2 Alpine) |
| Port | 80/TCP (intern), 443 via Traefik |
| Domain | next.matzka.cloud |
| SSL/TLS | Let's Encrypt (Traefik) |
Die Nextcloud Application Container ist ein vollständiger PHP-basierter Webserver mit allen erforderlichen Erweiterungen (GD, Imagick, ZIP, etc.).
2. PostgreSQL Database
| Container Name | postgres-nextcloud |
| Version | PostgreSQL 17 (Alpine) |
| Database Name | nextcloud |
| User | nextcloud |
| Volume | postgres_nextcloud_data |
| Backup Status | Daily (offen/docker-volume-backup) |
PostgreSQL speichert alle Metadaten: Benutzerkonten, Dateiinformationen, Freigabeeinstellungen, Kalendereinträge etc. Eine robuste, sichere Datenbank ist kritisch.
3. Redis Cache Layer
| Container Name | redis-nextcloud |
| Version | Redis 7 (Alpine) |
| Port | 6379/TCP (intern) |
| Purpose | Session Storage, Object Cache |
| Password | Konfiguriert in docker-compose.yml |
Single Sign-On (SSO) Integration
Nextcloud ist in das Authentik SSO System integriert, was eine einheitliche Authentisierung über alle Dienste ermöglicht.
OIDC Configuration
| Parameter | Wert |
|---|---|
| Provider | Authentik (OpenID Connect) |
| Provider ID | 1 |
| Direct SSO URL | https://next.matzka.cloud/apps/user_oidc/login/1 |
| Discovery URL | https://auth.matzka.cloud/application/o/nextcloud/.well-known/openid-configuration |
Group-Based Access Control
Nur Benutzer in dieser Gruppe können auf Nextcloud zugreifen. Andere Authentik-Benutzer werden abgelehnt.
Auto-Login Konfiguration
// apps/user_oidc/appinfo/app.php
\OC::$CLASSPATH['OCA\UserOidc\AppInfo\Application'] = 'user_oidc/appinfo/application.php';
// Automatischer Redirect zur OIDC Authentik
// wenn nicht authentisiert
Deployment & Konfiguration
Docker Compose Stack
Die komplette Nextcloud Installation wird via Docker Compose orchestriert.
Location: /opt/docker/compose/
Files:
- docker-compose.yml (Nextcloud Stack)
- .env (Environment Secrets)
- traefik/ (Reverse Proxy Config)
Networks:
- frontend (Public, mit Traefik)
- cloud (Internal, für DB/Cache)
- mailcowdockerized_mailcow-network (Mailcow Integration)
Volume Management
| Volume | Pfad | Zweck |
|---|---|---|
| postgres_nextcloud_data | /var/lib/postgresql/data | Datenbankdateien |
| redis_nextcloud_data | /data | Redis Persistence |
| nextcloud_data | /var/www/html | Benutzer Dateien |
Administration & Maintenance
OCC Commands (Nextcloud Console)
User Management
# Benutzer auflisten
ssh root@ssh2.matzka.cloud "docker exec -u www-data nextcloud \
php occ user:list"
# OIDC Provider konfigurieren
ssh root@ssh2.matzka.cloud "docker exec -u www-data nextcloud \
php occ user_oidc:provider"
# Maintenance Modus aktivieren
ssh root@ssh2.matzka.cloud "docker exec -u www-data nextcloud \
php occ maintenance:mode --on"
Database Maintenance
# Database Integrität prüfen
docker exec postgres-nextcloud pg_isready -U nextcloud
# Backups testen
docker exec backup backup
# Volume-Größe prüfen
docker volume ls -q | grep nextcloud
Häufige Probleme & Lösungen
❌ Problem: Benutzer kann sich nicht anmelden
- Prüfe Authentik SSO Konfiguration
- Verifiziere Benutzer ist in "usersnextcloud-users" Gruppe
- Cache leeren:
docker exec redis-nextcloud redis-cli FLUSHALL - Logs prüfen:
docker logs nextcloud
❌ Problem: Dateisynchronisierung langsam
- Redis Cache Status überprüfen
- PostgreSQL Query Performance analysieren
- File Indexing neu starten:
occ files:scan --all - Große Dateifreigaben in Batches hochladen
❌ Problem: Storage voll
# Verwendeter Speicher prüfen
docker exec nextcloud df -h /var/www/html
# Alte Dateien löschen
docker exec -u www-data nextcloud php occ trashbin:cleanup
# Temporary Files löschen
docker exec nextcloud rm -rf /var/www/html/data/
*/.htaccess /var/www/html/temp
Best Practices für Production
✅ Security Best Practices
- 🔐 HTTPS erzwingen (nur Port 443)
- 🔑 Strong Passwords für Administratoren
- 🛡️ Firewall-Regeln: Nur autorisierte IPs
- 🔄 Regular Backups testen
- 📊 Activity Logging aktiviert
- 🚫 Ungenutzte Apps deaktivieren
- 🔐 2FA für Administratoren aktivieren
✅ Performance Optimization
| Setting | Value | Effekt |
|---|---|---|
| Redis Cache | Enabled | ~70% weniger DB-Load |
| Memory Limit | 512MB | Ausreichend für 100+ Users |
| Execution Time | 300 Sekunden | Große Dateiuploads |
| Preview Generation | Async (Cron) | Non-blocking UX |
✅ Monitoring & Alerting
- Container Health (Docker)
- Database Connections (PostgreSQL)
- Disk Space Usage
- Failed Login Attempts (Log Monitoring)
- Memory & CPU Usage (Prometheus)
✅ Backup & Recovery
- 📅 Automatische tägliche Backups
- 🔄 30-Tage Retention Policy
- ✅ Monatliche Restore-Tests
- 📍 Backups auf separatem Storage
- 🔐 Backup-Verschlüsselung aktiviert