Skip to main content Skip to footer Skip to navigation

OpenCloud vs NextCloud - Ersteindruck und Installation

Mit OpenCloud geht ein weiterer Fork des bekannten Owncloud aus Deutschland ins rennen und mischt die Karten bei den bestehenden Open Source Lösungen für die Cloud Dateiverwaltung neu. Wir haben OpenCloud getestet und vergleichen es mit NextCloud.

Einsatzzweck für OpenCloud

Nextcloud wie auch OpenCloud ist eine Open-Source-Software zur Datensynchronisation, -speicherung und Zusammenarbeit. Beide Lösungen werden häufig als private Alternative zu Cloud-Diensten wie Google Drive, Dropbox oder Microsoft OneDrive eingesetzt.

Dabei liegt der Fokus auf der Speicherung der Daten auf einem Cloudserver sowie der einfachen Möglichkeit einzelne Dateien oder auch Ordner mit internen Mitarbeitern und auch externen Dienstleistern oder Kunden zu teilen.

Da Bilder mehr sagen als Worte, zeigen wir hier alle wichtigen Einstellungen von OpenCloud.

Unterschiede zu NextCloud

Im Gegensatz zu NextCloud lässt sich OpenCloud nicht auf einem Webspace installieren. Das liegt daran, das NextCloud vor allem auf PHP basiert und lediglich eine SQL Datenbank benötigt. OpenCloud benötigt einen eigenständigen Linux Server mit 8 GB RAM.

Während NextCloud eine Groupware Lösung ist und mit vielen verschiedenen Erweiterungen wie Kalender, Kontakte, Aufgaben, Mailclient, Fragebogen, Projektverwaltung und sogar Videokonferenzen einen großen Funktionsumfang ermöglicht, ist OpenCloud derzeit auf die Kernfunktion einer Cloudbasierten Dateiverwaltung beschränkt.

Mittlerweile gibt es Erweiterungen für die Kalenderfunktion sowie die Integration von Draw.io und gemeinsam lässt sich via Collabora an Dokumenten im Browser arbeiten.

Aber gerade diese Beschränkung oder besser gesagt Konzentration auf das wesentliche, ist die Stärke von OpenCloud. Im direkten vergleich ist OpenCloud Ressourcen schonender und viel reaktionsschneller als NextCloud. Gerade da merkt man das NextCloud auf ein veraltetes PHP Konzept setzt.

In unserem Test lief OpenCloud über 2 Monate stabil ohne abstürze. Ehrlich gesagt haben wir das mit NextCloud in letzter Zeit nicht geschafft. Beide Systeme liefen in einer eigenen VM.

Funktionsumfang und Zielgruppe

Wie bereits in den Unterschieden zu NextCloud erklärt, beschränkt sich OpenCloud auf die Kernfunktion als Cloud basierte Dateiverwaltung.

Dazu gehören:

  • Dateiverwaltung (Eigener Bereich, gemeinsam genutzte Shared Spaces, Kontigentbegrenzung, Teilen von Dateien und Ordner mit anderen Usern oder externen über einen Public Link)
  • Userverwaltung
  • Gute Übersicht über geteilte Dateien
  • Volltextsuche inkl. OCR mittels Apache Tika
  • Virenprüfung mittels ClamAV
  • Kalender (Optional)
  • Draw.io
  • Zugriff via App (Windows, Linux, iOS, Android)
  • Zugriff via Browser
  • Zugriff via WebDav Protokoll
  • Windows Client mit virtual file / file on demand Funktion. Dabei werden nur Dateien heruntergeladen, die wirklich benötigt werden.

Die Zielgruppe sind also vor allem Organisationen, die aus Datenschutzgründen kein Sharepoint nutzen möchten. Aber ich glaube das sich wie NextCloud auch OpenCloud, bei Privatpersonen erfreut, die besonderen Wert auf die eigenen Daten legen und vor der Installation und Wartung nicht abschrecken.

Fazit

Uns gefällt die Performance und Stabilität. Wir behalten die eigene Datenhoheit und werden nicht von unzähligen Funktionen überflutet. Gerade die Konzentration auf die Kernfunktionen einer Cloud Dateiverwaltung sehen wir daher als besonderes Merkmal und nicht als Nachteil.

Gerne beraten wir auch zum Thema OpenCloud, egal ob OnPrem oder eine Installation auf einem Cloudserver. Als managed Service bieten wir auch den Betrieb einer OpenCloud Instanz in unserer Cloud an.

Installation unter Ubuntu 24.04 LTS mit Docker-Compose (OpenCloud v6.1.0)

Damit OpenCloud funktioniert, benötigen wir 3 Subdomains.

Entweder läuft die OpenCloud VM mit einer eigenen öffentlichen IPv4 oder IPv6 Adresse oder wir nutzen unseren eigenen Reverse Proxy Server. Weiter unten weisen wir auf die verschiedenen Konfigurationsschritte hin.

  • cloud.<meine-domaine.de>
  • collabora.<meine-domaine.de>
  • wopi.<meine-domaine.de>
  • keycloak.<meine-domaine.de> (Optional, wenn statt dem integrieten IDP Keycloak verwendet wird)

Diese Subdomains müssen per A-Record für IPv4 und ggf. AAAA-Record für IPv6 auf den Server oder alternativ auf Reverse Proxy Server zeigen.

Bei Verwendung eines externen Reverse Proxy Server müssen die Subdomains auf folgende IP und Port verweisen:

  • cloud.<meine-domaine.de>:9200

  • collabora.<meine-domaine.de>:9980

  • wopi.<meine-domaine.de>:9300

  • keycloak.<meine-domaine.de>:8080

Des weiteren muss für die Wopi Subdomain Websocket aktiviert sein.

Die Daten und Konfiguration legen wir außerhalb vom Docker Container ab. Dafür erstellen wir folgende Ordner und geben die Berechtigung:

mkdir -p /opt/opencloud/config && chown -R 1000:1000 /opt/opencloud/config/ \
mkdir -p /opt/opencloud/data && chown -R 1000:1000 /opt/opencloud/data/

Dann installieren wir Docker Compose und wechseln in das Verzeichnis für den Docker Container:

apt install docker-compose-v2 && apt-get install docker.io -y && systemctl enable docker && systemctl start docker
cd /opt/opencloud

und laden die benötigten Dateien herunter:

git clone https://github.com/opencloud-eu/opencloud-compose.git
cd opencloud-compose

nun müssen wir die Konfigurationsdatei erstellen:

cp .env.example .env && nano .env

In der .env editieren wir folgende Zeilen:

INSECURE=false
TRAEFIK_ACME_MAIL=<deine-email-adresse>
OC_DOMAIN=<cloud.deine-domain.de>
INITIAL_ADMIN_PASSWORD=<dein-password>
OC_CONFIG_DIR=/opt/opencloud/config
OC_DATA_DIR=/opt/opencloud/data
COLLABORA_DOMAIN=<collabora.deine-domain.de>
WOPISERVER_DOMAIN=<wopi.deine-domain.de>
COLLABORA_ADMIN_USER=<dein-user-name>
COLLABORA_ADMIN_PASSWORD=<dein-password>
COLLABORA_SSL_ENABLE=false
COLLABORA_SSL_VERIFICATION=true

Abschnitt mit Keycloak

OpenCloud bietet für kleine Installationen einen eingebauten IDP. Möchten wir hingegen für größere Instanzen Keycloak nutzen, können wir auf die vorgefertigten Konfigurationen dazu zurückgreifen.

Keycloak bietet unter anderem 2-Faktor Authentifizierung, welche der eingebaute IDP nicht bietet.

Wichtig : Nach dem einbinden von Keycloak müssen die nutzer in Keycloak verwaltet werden.

LDAP_BIND_PASSWORD=DeinLdapPass
KEYCLOAK_DOMAIN=keycloak.deine.deine-domain.de
KEYCLOAK_ADMIN=kcadmin
KEYCLOAK_ADMIN_PASSWORD=DEINKEYCLOAKadminpass
KC_DB_PASSWORD=keycloakDBPass

Hier geht es für beide Variante gleich weiter

einkommentieren:

START_ADDITIONAL_SERVICES="notifications,antivirus"

und wenn man Public Shares auch ohne Passwort generieren möchte, muss folgende Zeile am Ende hinzugefügt werden:

OC_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD=false

Ab OpenCloud Version 4.0.0 muss in die .env Konfiguration folgende Zeile hinzufügt werden. Wir haben diese Zeile unter ## Basic Settings ## eingefügt.

COMPOSE_PROJECT_NAME=opencloud_full

die Tika suche gibt es mit OCR Erkennung und ohne. Möchte man Tika mit OCR verwenden, so muss man die Zeile "TIKA_IMAGE=" wie folgt ersetzen:

TIKA_IMAGE=apache/tika:latest-full

An dieser Stelle müssen wir uns entscheiden, ob wir OpenCloud mit dem eingebauten Traefik Reverse Proxy und einer eigenen öffentlichen IPv4/IPv6 Adresse betreiben oder hinter einem eigenen Reverse Proxy.

Dazu müssen wir in der .env Datei in folgendem Block die entsprechende Zeile auskommentieren:

## Features ##
# The following variable is a convenience variable to enable or disable features of this compose project.
# Example: if you want to use traefik and letsencrypt, you can set the variable to
#COMPOSE_FILE=docker-compose.yml:traefik/opencloud.yml
# This enables you to just run `docker compose up -d` and the compose files will be added to the stack.
# As alternative approach you can run `docker compose -f docker-compose.yml -f docker-compose.traefik.yml up -d`
# Default: OpenCloud and Collabora with traefik and letsencypt
# This needs DNS entries for the domain names used in the .env file.
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
# If you want to use the external proxy, you can use the following combination.
# DNS entries and certificates need to be managed by the external environment.
# The domain names need to be entered into the .env file.
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml
# Keycloak Shared User Directory
#COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:idm/ldap-keycloak.yml:traefik/ldap-keycloak.yml

Traefik verwenden mit IDP

Folgende Zeile müssen wir für den eigenbauten Traefik Reverse Proxy einkommentieren:

Ggf. fehlt "search/tika.yml:antivirus/clamav.yml". Dieses fügen wir wie hier vorgegeben hinzu, damit die Volltextsuche und Antivirus Lösung funktioniert.

COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:traefik/collabora.yml:search/tika.yml:antivirus/clamav.yml

Traefik mit Keycloak verwenden

COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml:traefik/collabora.yml:search/tika.yml:antivirus/clamav.yml:idm/ldap-keycloak.yml:traefik/ldap-keycloak.yml

Externer Proxy mit IDP

Möchten wir hingegen einen vorhandenen Reverse Proxy verwenden, müssen wir weiter unten die Zeile einkommentieren:

Auch hier fehlt ggf. "search/tika.yml:antivirus/clamav.yml"

COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:antivirus/clamav.yml

Externer Proxy mit Keycloak

COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:antivirus/clamav.yml:idm/ldap-keycloak.yml

Dies bewirkt das für die Docker Container die external proxy Konfigurationsdatei geladen wird und die entsprechenden Ports freigegeben werden.

Zusätzlich müssen wir in der /etc/hosts unser VM sie 3 Subdomains auf den vorhandenen Reverse Proxy leiten. Dazu öffnen wir die /etc/hosts Datei:

nano /etc/hosts

und fügen folgendes hinzu:

<IP-von-meinem-reverse-proxy-server> cloud.deine-domain.de>
<IP-von-meinem-reverse-proxy-server> wopi.deine-domain.de>
<IP-von-meinem-reverse-proxy-server> collabora.deine-domain.de>

Werden diese Einträge nicht hinzugefügt, kann man sich nicht anmelden. In dem Fall erscheint ein Fehlerhinweis "Nicht angemeldet, Das könnte aufgrund einer routinemäßigen Abmeldung aus Sicherheitsgründen geschehen sein..."

Details dazu finden sich bei Github: https://github.com/orgs/opencloud-eu/discussions/767


Hier geht es für beide Variante gleich weiter

Ab hier geht es wieder für beide Varianten in der .env Datei identisch weiter.

Die SMTP Einstellungen für den E-Mail Versand sollten auch gesetzt werden:

SMTP_HOST=
SMTP_PORT=587
SMTP_SENDER=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_AUTHENTICATION=auto
SMTP_TRANSPORT_ENCYPTION=starttls
SMTP_INSECURE=false

Wie aus diesem README.md hervorgeht, nimmt sich OpenCloud immer 90% des verfügbaren RAM's. Wenn wir das begrenzen möchten, müssen wir in die docker-compose.yml Datei folgende Environment Variable einfügen:

GOGC=50

Dabei stehen die 50 für 50% des verfügbaren RAMs.

Sind alle Einstellungen gesetzt, kann der Docker Container gestartet werden:

docker compose up -d

Nun sollte OpenCloud nach wenigen Minuten unter https://<deine-domain.de> erreichbar sein.

Automatische E-Mail Benachrichtigungen bei neuen Dateien

Leider ist diese Funktion derzeit nicht in OpenCloud vorhanden.

Jedoch lässt sich mit einem eigenen Script etwas nachhelfen. Dazu werden inotifiy-tools und ssmtp mailutils benötigt sowie ein Script je Ordner den wir überwachen möchten.

Zuerst installieren wir die benötigten Pakete:

apt install inotify-tools && apt install ssmtp mailutils

Nun müssen wir festlegen, welcher Nutzer welches E-Mail Konto verwendet:

nano /etc/ssmtp/revaliases

und für den User root die Zeile ändern. Dabei wird zunächst die Absender Adresse angegeben und getrennt durch den Doppelpunkt den SMTP-Server:

root:user@gmail.com:smtp.gmail.com:587

Damit später der korrekte Absender angezeigt wird, müssen wir diesen in der Datei /etc/passwd hinzufügen:

nano /etc/passwd

Und die Zeile root bearbeiten. Nach dem vierten Doppelpunkt muss die Absender Adresse eingetragen werden:

root:x:0:0:user@gmail.com:/root:/bin/bash

Nicht ganz unwichtig ist auch die Konfiguration des SMTP-Servers. Dazu muss die Datei /etc/ssmtp/ssmtp.conf angepasst werden:

nano /etc/ssmtp/ssmtp.conf

Folgende Zeilen müssen geändert oder hinzugefügt werden:

root=user@gmail.com
rewriteDomain=gmail.com
hostname=user@gmail.com
FromLineOverride=YES
authuser=user@gmail.com
authpass=<mein-password>
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

Zur Sicherheit schränken wir die Berechtigungen für diese Datei ein:

chown root:mail /etc/ssmtp/ssmtp.conf
chmod 640 /etc/ssmtp/ssmtp.conf

Nun kommen wir zum erstellen der Scripte:

cd /opt && mkdir inotify && cd inotify

In der Textdatei newfile.txt können wir den Inhalt der E-Mail bestimmen. Dazu erstellen wir die Text Datei:

nano newfile.txt

und fügen folgendes ein sowie speichern das ganze:

Subject: New File

New File in Folder UPLOAD!

Jetzt erstellen wir das eigentliche Script. Dazu erstellen wir die Datei inotify.sh:

nano inotify.sh

und kopieren folgendes hinein:

Dabei muss der zu überwachende Ordner in der Zeile inputFolder angepasst werden. Die in OpenCloud erstellten Spaces werden im Ordner /opt/opencloud/data/storage/users/projects/ angelegt und haben leider kryptische Namen wie z.B. 5d09a2b1-7ce3-557d-7215-1234cc555555. Wir müssen uns also manuell durch die dort angezeigten Ordner suchen und den für uns richtigen finden. Den kryptischen Namen kopieren wir in die Zeile inputFolder und ersetzen die drei ???.

In der Zeile sendmail ersetzen wir die E-Mail Adresse durch unsere.

#!/bin/bash

# NEWFILE SCRIPT BY TECH-SUPPORT.KOELN
# Version: 1.0
# Date: 04.01.2026
# Author: Jan Krempchen

#----------------------------------------------------------------------------------------------------------------------

# Folder Konfiguration
inputFolder=/opt/opencloud/data/storage/users/projects/???

#----------------------------------------------------------------------------------------------------------------------

inotifywait -m "$inputFolder" -e move |
        while read -r directory action file; do

                sendmail user@gmail.com < /opt/inotify/newfile.txt

         done

EXIT

Wir speichern das Script und machen es ausführbar:

chmod +x inotify.sh

Mittels crontab lassen wir das Script bei jedem Serverneustart automatisch starten:

crontab -e

und fügen folgende Zeile ein:

@reboot /opt/inotify/inotify.sh

Somit erhalten wir eine automatische E-Mail sobald eine neue Datei in dem angegebenen Ordner hochgeladen wird.

Update des Docker Containers

Hier müssen wir zwischen Updates innerhalb einer Verison 3.x oder Versionssprünge von 3.x auf 4.x unterscheiden.

Eine Anleitung für den Versionssprung auf 4.0.0 findet sich hier: https://docs.opencloud.eu/docs/admin/maintenance/upgrade/upgrade-4.0.0

Hier gehen wir nur auf ein Update innerhalb der Hauptversion ein, also 3.x auf 3.x.

Dazu wechseln wir zunächst in das OpenCloud Docker Verzeichnis und stoppen den Container:

cd /opt/opencloud/opencloud-compose && docker compose stop

Nun können wir das neuste Docker Image herunterladen:

docker pull opencloudeu/opencloud-rolling

Anschließend müssen wir uns vergewissern, das es keine Änderungen in der Config Datei gibt. Dazu loggen wir uns in den Docker Container ein:

docker run --rm -it --entrypoint /bin/sh -v /opt/opencloud/config:/etc/opencloud opencloudeu/opencloud-rolling

und lassen uns mögliche Unterschiede der Config anzeigen:

opencloud init --diff

Sollten Unterschiede gefunden werden, müssen wir diese in unsere opencloud.yaml Konfiguration selbst hinzufügen. Diese finden wir in /opt/opencloud/config/opencloud.yaml

Dabei werden zu entfernde Zeilen mit einem "-" angezeigt und neue Zeilen mit einem "+". Die jeweils drüber und drunter liegenden Zeilen werden ebenfalls angezeigt, so das man sich schnell orientieren kann und neue Zeilen an der richtigen Stelle einfügen kann.

Sollten keine Unterschiede gefunden werden, müssen wir nichts weiter tun. In beiden Fällen verlassen wir den Docker Container mit:

exit

Den Docker Container können wir wie folgt starten:

docker compose up -d

Manchmal starten die Docker Container zwar korrekt, aber OpenCloud ist trotzdem nicht per Browser aufrufbar. In dem Fall hat das erneute restarten mit "docker compose restart" geholfen.


Gerne beraten wir Sie zum Einsatz, Installation und Betrieb von OpenCloud in Ihrer OnPrem Umgebung oder betreiben für Sie Ihre eigene Cloud Instanz. Nutzen Sie gerne unser Kontaktformular für eine unverbindliche Anfrage.



Zum Thema passende Artikel

© TECH-SUPPORT.KOELN