Schritt für Schritt

Nextcloud

Kapitel 11 von 164 Min. Lesezeitaktualisiert 17.10.2026

Nextcloud ist der gemeinsame Schreibtisch des Vereins: Dateien, an denen noch gearbeitet wird, gemeinsame Kalender und Kontakte. Paperless ist das Archiv für Fertiges, Nextcloud der Ort für alles, was gerade entsteht.

Was kann Nextcloud?

  • Dateien im Browser, am Rechner (Sync-Programm) und auf dem Handy. Ordner lassen sich an Gruppen freigeben, etwa „Vorstand“ oder „Jugend“.
  • Kalender und Kontakte per CalDAV und CardDAV, die sich in jedes Handy einbinden lassen. Ein Vereinskalender für alle, ein Hallenplan nur für die Übungsleitung.
  • Links zum Teilen mit Ablaufdatum und Passwort, z. B. für Unterlagen an die Stadt oder den Verband.
  • Apps für Umfragen, Formulare, Aufgaben und gemeinsames Bearbeiten von Dokumenten.

Wo welche Datei hingehört

ArtOrtBeispiel
in ArbeitNextcloudEntwurf der Einladung zur Jahreshauptversammlung
fertig, aufbewahrungspflichtigPaperlessunterschriebenes Protokoll, Vertrag, Bescheid
Fotos und VideosResourceSpaceBilder vom Sommerfest

Diese Regel kommt in den Ablageplan. Sonst landet nach einem Jahr wieder alles überall.

Der Container

# auf dem Proxmox-Knoten
pct clone 9000 115 --hostname cloud --full
pct set 115 --cores 2 --memory 2048 --onboot 1 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.178.45/24,gw=192.168.178.1
pct resize 115 rootfs 16G
pct start 115
pct exec 115 -- dpkg-reconfigure openssh-server

Die Dateien selbst liegen auf einem eigenen Datenträger auf dem Datenlaufwerk: Ressourcen → Hinzufügen → Mount Point, eingehängt unter /srv/nextcloud-data.

Installation

Nextcloud läuft direkt im Container mit Apache, PHP und MariaDB, dazu Redis als schneller Zwischenspeicher.

sudo apt install -y apache2 libapache2-mod-php mariadb-server redis-server unzip \
  php php-mysql php-gd php-curl php-mbstring php-intl php-gmp php-bcmath \
  php-xml php-zip php-imagick php-apcu php-redis
sudo a2enmod rewrite headers env dir mime

# Datenbank
sudo mariadb <<'SQL'
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'HIER-EIN-STARKES-PASSWORT';
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost';
SQL

# Nextcloud herunterladen
cd /tmp
curl -fsSLO https://download.nextcloud.com/server/releases/latest.zip
unzip -q latest.zip
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data: /var/www/nextcloud /srv/nextcloud-data

Apache auf Nextcloud zeigen lassen:

# /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
    DocumentRoot /var/www/nextcloud
    <Directory /var/www/nextcloud>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>
</VirtualHost>
sudo a2dissite 000-default && sudo a2ensite nextcloud
sudo systemctl reload apache2

# Installation per Kommandozeile (Passwörter anpassen)
cd /var/www/nextcloud
sudo -u www-data php occ maintenance:install \
  --database mysql --database-name nextcloud \
  --database-user nextcloud --database-pass 'HIER-EIN-STARKES-PASSWORT' \
  --admin-user admin --admin-pass 'NOCH-EIN-STARKES-PASSWORT' \
  --data-dir /srv/nextcloud-data

Hinter dem Proxy und schnell

cd /var/www/nextcloud
occ() { sudo -u www-data php occ "$@"; }

occ config:system:set trusted_domains 1 --value=cloud.meinverein.de
occ config:system:set trusted_proxies 0 --value=192.168.178.30
occ config:system:set overwriteprotocol --value=https
occ config:system:set overwrite.cli.url --value=https://cloud.meinverein.de
occ config:system:set default_phone_region --value=DE

occ config:system:set memcache.local   --value='\OC\Memcache\APCu'
occ config:system:set memcache.locking --value='\OC\Memcache\Redis'
occ config:system:set redis host --value=localhost
occ config:system:set redis port --value=6379 --type=integer

# Hintergrundaufgaben per Cron statt beim Seitenaufruf
occ background:cron
echo '*/5 * * * * php -f /var/www/nextcloud/cron.php' | sudo crontab -u www-data -

In der php.ini von Apache (/etc/php/*/apache2/php.ini) memory_limit = 512M und upload_max_filesize sowie post_max_size auf z. B. 2G setzen. Damit Cron und occ den APCu-Speicher nutzen können, zusätzlich echo "apc.enable_cli=1" | sudo tee -a /etc/php/*/mods-available/apcu.ini. Im Reverse Proxy cloud.meinverein.de auf http://192.168.178.45 zeigen lassen und client_max_body_size 2G; eintragen. Unter Verwaltung → Übersicht zeigt Nextcloud danach, ob noch etwas fehlt.

Einrichtung für den Verein

  1. Gruppen nach Ämtern anlegen und Gruppenordner (App „Team folders“ bzw. „Group folders“) verwenden. Dann gehören die Dateien dem Amt, nicht der Person, und bleiben beim Vorstandswechsel erhalten.
  2. Vereinskalender anlegen und an alle freigeben, auf Wunsch auch öffentlich als Abo-Link für die Website.
  3. Zwei-Faktor für Administratoren verpflichtend machen (App „Two-Factor TOTP“).
  4. Anmeldung mit Vereinskonto: Mit der offiziellen App „OpenID Connect user backend“ lässt sich Nextcloud an Keycloak anbinden.

Updates laufen über Verwaltung → Übersicht → Updater oder per sudo -u www-data php updater/updater.phar. Vorher immer einen Snapshot des Containers anlegen.

Moin!

Stehst du vor ähnlichen Fragen?

Ob eigener Verein, Homelab oder einfach Neugier: Ich freue mich über Fragen und Erfahrungen.