Lange Überschrift kurzer Sinn. Ich habe mit Docker ein Nextcloud aufgesetzt. Ich benutze nicht die Plesk Integration von Docker! Ziel war es auf einer Domain über https Nextcloud erreichbar zu machen. Deswegen habe ich über Plesk eine Domain angelegt und den nginx als Proyx von Hand (Additional nginx directives) konfiguriert.
Installation Docker
Dies sind zusammen kopierte Befehle aus der offiziellen Dokumentation. Zusätzlich habe ich direkt docker-compose mit installiert.
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose
Ich empfehle docke nicht als root laufen zu lassen. Entweder erstellt man einen eigenen Benutzer bzw. ich habe mich dazu entschieden docker unter den Benutzernamen einer meiner Domains laufen zu lassen.
sudo groupadd docker
sudo usermod -aG docker DOMAIN_USERNAME
Installation Nextcloud
Am einfachsten finde ich die Installation mit Docker-compose. Dazu habe ich im Ordner der Domain (nicht unter httpdocs) einen Ordner docker erstellt und folgende docker-compose.yml abgelegt:
version: "3.3"
services:
nextcloud:
image: nextcloud:18.0.3
container_name: NextCloud
restart: always
ports:
- 8888:80
volumes:
- /var/www/vhosts/nissel.it/docker/data/nextcloud:/var/www/html
depends_on:
- mariadb
mariadb:
image: mariadb:10.2
container_name: mariadb
restart: always
environment:
- MYSQL_ROOT_PASSWORD=passwortDeinerWahl
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=passwortDeinerWahl2
volumes:
- /var/www/vhosts/nissel.it/docker/data/mariadb:/var/lib/mysql
Wenn nun folgender Befehl eingegeben wird, passiert ein Wunder und das nexcloud image mit mariadb sind gestartet:
docker-compose up -d
Die Grundlegende Konfiguration kann dann über domain.de:8888 vorgenommen werden. Soweit funktioniert dann nextcloud.
Subdomain mit HTTPs nginx Proxy einrichten
Danach muss man unter „Apache & nginx Setting“ den Proxy einrichten. Der Hacken bei proxy mode muss aus geschaltet werden, da wir nicht zum Apache weiterleiten.
Unter „Additional nginx directives“ muss dann folgendes eingetragen werden. Dies leitet alles an den Docker container weiter.
location / {
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;
proxy_pass http://127.0.0.1:9999/;
proxy_read_timeout 36000s;
#Only use secure connection
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
#Allow big files to upload
client_max_body_size 0;
}
location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
Nextcloud configuration anpassen
Die config/config.php im Data Ordner von nextcloud (bei mir /var/www/vhosts/nissel.it/docker/data/nextcloud) muss für den Betrieb hinter einem Proxy angepasst werden.
'trusted_domains' =>
array (
0 => 'nissel.it:8888',
1 => 'meinedomain.nissel.it',
),
'overwrite.cli.url' => 'https://meinedomain.nissel.it',
'overwritehost' => 'meinedomain.nissel.it',
'overwriteprotocol' => 'https',
Umgebung
Ubuntu 18.04
Plesk 18.0.25
Docker 19.03.8
Docker-compose 1.17.1
Nextcloud 18.0.3
Mariadb 10.2
Links
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://docs.docker.com/install/linux/linux-postinstall/
https://dennisnotes.com/note/20180831-nextcloud-docker-nginx-reverse-proxy/
Ein einfacherer Weg docker zu installieren: https://linuxhint.com/install_configure_docker_ubuntu/
Hallo,
vielen Dank für den Artikel.
In der docker-compose.yml leitest du den Container Port 80 an 8888 zum localhost weiter.
Aber in der Nginx directives gibst du „proxy_pass http://127.0.0.1:9999/;“ an.
Ist das so richtig?
Falls ich da etwas durcheinander bringe, ignoriere einfach das Kommentar 🙂
Hallo,
probiere auch gerade Nextcloud mit Docker und Plesk zum laufen zu bekommen.
Nextcloud läuft bei mir, aber mit „Additional nginx directives“ von dir, kann man die Dateien ohne sich anzumelden aufrufen.
Hier eine Beispiel URL zum Demo Foto welche bei der Installation mit dabei ist.
https://cloud.meineURL.com/core/preview?fileId=33&x=2880&y=1800&a=true
Hast du dafür eine Lösung?
Hallo,
die Einstellungen sind korrekt.
Das Problem war, der Browser hat das Bild gecached und ich konnte es daher über die URL aufrufen ohne Angemeldet zu sein.