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
| Art | Ort | Beispiel |
|---|---|---|
| in Arbeit | Nextcloud | Entwurf der Einladung zur Jahreshauptversammlung |
| fertig, aufbewahrungspflichtig | Paperless | unterschriebenes Protokoll, Vertrag, Bescheid |
| Fotos und Videos | ResourceSpace | Bilder 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
- 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.
- Vereinskalender anlegen und an alle freigeben, auf Wunsch auch öffentlich als Abo-Link für die Website.
- Zwei-Faktor für Administratoren verpflichtend machen (App „Two-Factor TOTP“).
- 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.