Zurück zum Blog

Nextcloud Self-Hosted File Sharing

Nextcloud Deployment: Self-Hosted File Sharing & Collaboration

Nextcloud: Self-Hosted File Sharing & Collaboration Platform

Veröffentlicht 2. Januar 2026
Kategorie Infrastructure & File Sharing
Server ssh2.matzka.cloud
Lesezeit 15 Minuten

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.

Nextcloud Highlights:
  • 📁 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
Performance-Tipp: Redis Cache reduziert Database-Last um ~70% und verbessert Response-Zeiten erheblich. Für Production ist Redis eine Anforderung.

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

Authentik Group: usersnextcloud-users

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
⚠️ Wichtig: Backup-Strategie Alle Volumes werden täglich mit offen/docker-volume-backup gesichert. Retention Policy: 30 Tage.

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

Lösungsschritte:
  1. Prüfe Authentik SSO Konfiguration
  2. Verifiziere Benutzer ist in "usersnextcloud-users" Gruppe
  3. Cache leeren: docker exec redis-nextcloud redis-cli FLUSHALL
  4. Logs prüfen: docker logs nextcloud

❌ Problem: Dateisynchronisierung langsam

Performance-Tipps:
  • 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

Sicherheitsmaßnahmen:
  • 🔐 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

Überwachte Metriken:
  • Container Health (Docker)
  • Database Connections (PostgreSQL)
  • Disk Space Usage
  • Failed Login Attempts (Log Monitoring)
  • Memory & CPU Usage (Prometheus)

✅ Backup & Recovery

Backup-Strategie:
  • 📅 Automatische tägliche Backups
  • 🔄 30-Tage Retention Policy
  • ✅ Monatliche Restore-Tests
  • 📍 Backups auf separatem Storage
  • 🔐 Backup-Verschlüsselung aktiviert