Installieren Sie Ihre eigene „OpenCloud“ sicher (Qualys SSL Labs: A+) hinter einem nginx Reverse Proxy, abgesichert mittels Let’s Encrypt-Zertifikaten auf einem Ubuntu 24 LTS Server in nur wenigen Minuten. Wir beschreiben die Mindestvoraussetzungen, die Installation der Dockersoftware, die Installation und Einrichtung des Webservers nginx inkl. eigener Let’s Encrypt Zertifikaten sowie die Basiskonfiguration und Basisinstallation der OpenCloud Software inkl. Volltextsuche und Kalender/Kontakte (DAV)-Integration.
Weiterführende Herstellerinformationen:
Webseite: https://opencloud.eu/de/funktionen
Doku: https://docs.opencloud.eu/



Inhaltsverzeichnis
- Mindestvoraussetzungen
- Basissoftware- und Dockerinstallationinstallation (docker, docker-compose)
- Webserverinstallation (nginx)
– acme (Let’s Encrypt) - OpenCloud
- vHosts (Reverse Proxy)
- OpenCloud nutzen
- SMTP Konfiguration
- Desktop-Client
1 Mindestvoraussetzungen:
Die Mindestvoraussetzungen lauten:
- Server mit einer statischen IPv4-Adresse
- DNS-Records
- cloud.yourdomain.de
- collabora.yourdomain.de
- wopiserver.yourdomain.de
- Docker und Docker-Compose
- Webserver nginx
- Let’s Encrypt (acme)
Eine vollständige Liste finden Sie hier.
Unsere Anleitung basiert auf einem Ubuntu Server 24 LTS kann aber auch bspw. für Debian basierende Serversysteme adaptiert werden.
2 Installation der Basis- und Dockersoftware
Melden Sie sich mit root Berechtigungen an ihrem Server an.
sudo -s
Aktualisieren Sie ihr System und installieren die Basis- sowie die Dockersoftware.
apt update && apt upgrade -y
apt install curl git gnupg2 ca-certificates lsb-release nano socat ubuntu-keyring ufw
ufw allow 22/tcp comment SSH
ufw allow 80/tcp comment HTTP
ufw allow 443/tcp comment HTTPS
ufw enable
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
Installieren und aktivieren Sie nun die Dockersoftware.
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker && systemctl start docker
3 Installation des Webservers nginx
Binden Sie das nginx-Repository und den dazugehörigen Schlüssel in Ihr System ein und installieren anschließend den Webserver nginx.
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| tee /etc/apt/preferences.d/99nginx
apt update && make-ssl-cert generate-default-snakeoil nginx -y
systemctl enable nginx.service
Erstellen Sie die notwendigen Verzeichnisse für den Betrieb des Webservers.
mkdir -p /etc/letsencrypt/{rsa-certs,ecc-certs} /var/www/letsencrypt
Schaffen Sie nun die Rahmenbedingungen für die Verwendung der acme-Skripte, mit dessen Hilfe die Let’s Encrypt-Zertifikate erstellt und auch automatisch erneuert werden. Erstellen SIe einen technischen User und vergeben die notwendigen Berechtigungen.
adduser acmeuser --gecos "" --disabled-password
usermod -aG www-data acmeuser
touch /etc/sudoers.d/acmeuser
cat <<EOF >/etc/sudoers.d/acmeuser
acmeuser ALL=NOPASSWD: /bin/systemctl reload nginx.service
EOF
Installieren Sie anschließend die acme-Software.
su - acmeuser -c "/usr/bin/curl https://get.acme.sh | sh"
su - acmeuser -c ".acme.sh/acme.sh --set-default-ca --server letsencrypt"
su - acmeuser -c ".acme.sh/acme.sh --upgrade"
chmod -R 775 /var/www/letsencrypt && chmod -R 770 /etc/letsencrypt && chown -R www-data:www-data /var/www/ /etc/letsencrypt
Wechseln Sie in die Shell des acme-Benutzers und beantragen die Zertifikate.
su - acmeuser
acme.sh --issue -d cloud.yourdomain.de -d collabora.yourdomain.de -d wopiserver.yourdomain.de --server letsencrypt --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/rsa-certs/privkey.pem --ca-file /etc/letsencrypt/rsa-certs/chain.pem --cert-file /etc/letsencrypt/rsa-certs/cert.pem --fullchain-file /etc/letsencrypt/rsa-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
acme.sh --issue -d cloud.yourdomain.de -d collabora.yourdomain.de -d wopiserver.yourdomain.de --server letsencrypt --keylength ec-384 -w /var/www/letsencrypt --key-file /etc/letsencrypt/ecc-certs/privkey.pem --ca-file /etc/letsencrypt/ecc-certs/chain.pem --cert-file /etc/letsencrypt/ecc-certs/cert.pem --fullchain-file /etc/letsencrypt/ecc-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
exit
4 Installation der OpenCloud
Erstellen Sie sich ein Arbeitsverzeichnis und klonen sich dann das GIT-Repo.
mkdir -p /opt/opencloud/opencloud/{data,config,apps,radicale}
cd /opt/opencloud
git clone https://github.com/opencloud-eu/opencloud-compose.git
cd opencloud-compose
cp .env.example .env
nano .env
Bearbeiten Sie für diese exemplarische Anleitung mindestens diese Parameter.
[...]
# INSECURE=true
[...]
COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml:search/tika.yml:radicale/radicale.yml
[...]
OC_DOMAIN=cloud.yourdomain.de
[...]
INITIAL_ADMIN_PASSWORD=GeHeimEsP@ssworT
[...]
OC_CONFIG_DIR=/opt/opencloud/opencloud/config
OC_DATA_DIR=/opt/opencloud/opencloud/data
[...]
OC_APPS_DIR=/opt/opencloud/opencloud/apps
[...]
COLLABORA_DOMAIN=collabora.yourdomain.de
[...]
WOPISERVER_DOMAIN=wopiserver.yourdomain.de
[...]
RADICALE_DOCKER_IMAGE=opencloudeu/radicale
[...]
RADICALE_DATA_DIR=/opt/opencloud/opencloud/radicale
[...]
Starten Sie anschließend erstmalig die zugehörigen OpenCloud-Dockercontainer.
docker compose up -d

5 Webserver vHost-Datei für OpenCloud
Richten Sie den DH-Key ein und erstellen die zugrundeliegende Webserverkonfiguration
openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Erstellen Sie den vHost und die ssl.Konfiguration.
nano /etc/nginx/sites-available/opencloud.conf
Fügen Sie den nachfolgenden Inhalt ein
# OpenCloud
server {
listen 443 ssl;
http2 on;
server_name cloud.yourdomain.de;
include /etc/nginx/ssl.conf;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
keepalive_timeout 3600s;
proxy_next_upstream off;
keepalive_requests 100000;
http2_max_concurrent_streams 512;
location / {
proxy_pass http://127.0.0.1:9200;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Collabora
server {
listen 443 ssl;
http2 on;
server_name collabora.yourdomain.de;
include /etc/nginx/ssl.conf;
location / {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Host $host;
}
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://127.0.0.1:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
# WOPI Server
server {
listen 443 ssl;
http2 on;
server_name wopiserver.yourdomain.de;
include /etc/nginx/ssl.conf;
location / {
proxy_pass http://127.0.0.1:9300;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Erstellen Sie zum Abschluss die ausgelagerten Härtungsparameter des Webservers in die Datei ssl.conf
nano /etc/nginx/ssl.conf
Fügen Sie den nachfolgenden Inhalt ein
ssl_certificate /etc/letsencrypt/rsa-certs/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/rsa-certs/privkey.pem;
ssl_certificate /etc/letsencrypt/ecc-certs/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/ecc-certs/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/ecc-certs/chain.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';
ssl_ecdh_curve X448:secp521r1:secp384r1;
ssl_prefer_server_ciphers on;
client_max_body_size 10G;
client_body_timeout 3600s;
client_body_buffer_size 512k;
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
add_header Permissions-Policy "interest-cohort=()";
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
Überprüfen Sie die Konfiguration des Webservers.
nginx -t
Sofern der Test mit
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
bestätigt wurde, so starten Sie den Webserver final neu.
systemctl restart nginx.service && systemctl status nginx.service

6 Ihre OpenCloud im Web
Rufen Sie im Webbrowser Ihre Domain (cloud.yourdomain.de) auf und melden sich als Benutzer „admin“ an Ihrer openCloud an.
https://cloud.yourdomain.de

Nutzen Sie als Passwort das in der .env-Datei hinterlegt Initialpasswort (link).
Ihnen wird nun die OpenCloud dargestellt und Sie können unmittelbar mit der Verwaltung und Erstellung Ihrer Dokumente beginnen.

Eine Online-Officesuite ist bereits implementiert.

Ebenso können Sie direkt neue Benutzer und Gruppen anlegen.

Den Texteditor nutzen.

Durch die Integration von Radicale (carddav/calDAV) können sie bspw. in Thunderbird oder mittels DAVx5 Ihre Kalender und Kontakte verwalten. Die Einstellungen bzgl. DAV finden Sie hier:

Nach der Einrichtung der carddav/caldav-URLs sieht es exemplarisch in den Anwendungen wie folgt aus:



7 SMTP-Konfiguration
Um Benachrichtigungen zu erhalten muss in der .env Ihr SMTP-Server konfiguriert werden. Stoppen Sie die Anwendung
docker compose down
Editieren Sie die .env – Datei
nano /opt/opencloud/opencloud-compose/.env
Im Bereich SMTP fügen Sie die Mailparameter (ohne einzelne oder doppelte Hochkommatas) ein, exemplarisch wie folgt:
[...]
# SMTP host to connect to.
SMTP_HOST=mail.yourdomain.de
# Port of the SMTP host to connect to.
SMTP_PORT=587
# An eMail address that is used for sending OpenCloud notification eMails
# like "opencloud notifications <noreply@yourdomain.com>".
SMTP_SENDER=OpenCloud <noreply@yourdomain.de>
# Username for the SMTP host to connect to.
SMTP_USERNAME=IhrBenutzername
# Password for the SMTP host to connect to.
SMTP_PASSWORD=MailPasswort
# Authentication method for the SMTP communication.
SMTP_AUTHENTICATION=auto
# Encryption method for the SMTP communication. Possible values are 'starttls', 'ssltls' and 'none'
SMTP_TRANSPORT_ENCRYPTION=starttls
# Allow insecure connections to the SMTP server. Defaults to false.
SMTP_INSECURE=
[...]
START_ADDITIONAL_SERVICES="notifications"
[...]Hersteller-Dokumentation: hier
Starten Sie nun die OpenCloud neu
docker compose up -d --force-recreate
Es gibt noch Vieles mehr … weitere Informationen (bspw. direkt vom Hersteller) finden Sie u.a. hier.
8 Desktop-Client (am Beispiel Linux)
Suchen Sie OpenCloud-Desktop oder Mobile Apps, so werden diese hier angeboten. Wir zeigen Ihnen die Einrichtung des Linux Desktop-Clients.







Wir wünschen Ihnen viel Spaß mit Ihrer eigenen OpenCloud. Über Ihre Unterstützung würden wir uns sehr freuen – vorab vielen und herzlichen Dank dafür.

