NextCloud als docker installieren
Nextcloud mit Docker installieren
Docker installieren
sudo snap install docker
Nextcloud herunterladen, instanziieren & starten
Als nächstes lädt man den Nextcloud Container vom Docker Hub herunter, in welchem die öffentlich verfügbaren Container gelistet werden.
sudo docker pull nextcloud
Dann legt man noch ein Volume für die Nutzerdaten an, und anschließend kann man in einem Befehl den Container instanziieren und starten:
sudo docker volume create --name nextcloud-data sudo docker run -d -v nextcloud-data:/var/www/html -p 8080:80 --name nextcloud nextcloud
Die Parameter bewirken dabei folgendes: -d – Den Container im Hintergrund laufen lassen -v nextcloud-data:/var/www/html – Bindet das Volume „nextcloud-data“ im Container unter /var/www/html ein, dort liegen die Nutzerdaten -p 8080:80 – Mappt den internen Port 80 auf den Port 8080 des Hostsystems --name nextcloud1 – Vergibt den Namen „nextcloud“ an den Container nextcloud – Gibt den Container an, der als Grundlage dienen soll Der Container ist somit instanziiert und auch bereits gestartet (Anmerkung: „docker run“ kombiniert die Befehle „docker create“ sowie „docker start“)
Container automatisch neu starten
sudo docker update --restart=always nextcloud
Mysql installieren und User anlegen
root@ubuntu-2gb-nbg1-1:~# apt-get install mysql-server
root@ubuntu-2gb-nbg1-1:~# mysql
mysql> CREATE DATABASE nextcloud; mysql> CREATE USER 'nextcloud' IDENTIFIED BY 'PASSWORD'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'nextcloud'@localhost IDENTIFIED BY 'PASSWORD'; mysql> quit
Datenbank von aussen zugreifbar machen
root@ubuntu-2gb-nbg1-1:/etc/mysql/mysql.conf.d# cp mysqld.cnf mysqld.cnf.bk root@ubuntu-2gb-nbg1-1:/etc/mysql/mysql.conf.d# nano mysqld.cnf
bind-address = 0.0.0.0
root@ubuntu-2gb-nbg1-1:/etc/mysql/mysql.conf.d# mysql -u root -p mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO 'nextcloud'@'%'; mysql> FLUSH PRIVILEGES; mysql> quit;
Zugriff von aussen unter
<IP-Adresse>:3306
Let's encrypt Zertifikat erstellen
siehe Lets Encrypt
Apache konfigurieren
- alle Domains anlegen
- a2ensite <DOMAIN> (zB. cloud.familie-roebke.de)
- Zertifikate erstellen (siehe Lets Encrypt)
- Proxy Weiterleitung einrichten
ProxyPass '/' 'http://127.0.0.1:8080/' ProxyPassReverse '/' 'http://127.0.0.1:8080/'
Beispiel: cloud.familie-roebke.de-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName cloud.familie-roebke.de SSLProxyEngine On ProxyPass '/' 'http://127.0.0.1:8080/' ProxyPassReverse '/' 'http://127.0.0.1:8080/' ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/familie-roebke.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/familie-roebke.de/privkey.pem </VirtualHost> </IfModule>
Beispiel: cloud.familie-roebke.de.conf
<VirtualHost *:80> ServerName cloud.familie-roebke.de ServerAdmin webmaster@localhost ProxyPass '/' 'http://127.0.0.1:8080/' ProxyPassReverse '/' 'http://127.0.0.1:8080/' DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =cloud.familie-roebke.de RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Nextcloud konfigurieren
sudo docker exec -i -t nextcloud /bin/bash
cd config cp config.sample.php config.php nano config.php 'trusted_proxies' => array('203.0.113.45', '198.51.100.128'), 'trusted_proxies' => ['172.17.0.1'], 'overwritehost' => 'familie-roebke.de', 'overwriteprotocol' => 'https", 'overwritewebroot' => '/, 'overwritecondaddr' => '^172\.17\.0\.1$',
nextcloud:data umziehen
zuerst externes Volume erstellen
Alle Aktionen als root
Backup des Ordners
cd /var/snap/docker/common/var-lib-docker/volumes/ mv nextcloud-data/ nextcloud-data.bk
neuen Ordern als Mountpunkt anlegen
mkdir nextcloud-data
Eintrag des externen Volumes in fstab
nano /etc/fstab /dev/disk/by-id/scsi-0HC_Volume_2001067 /var/snap/docker/common/var-lib-docker/volumes/nextcloud-data/ ext4 discard,nofail,defaults 0 0
mount -av / : ignored /media/floppy0 : ignored /var/snap/docker/common/var-lib-docker/volumes/nextcloud-data: successfully mounted
Dateien in neuen Ordner umziehen
cd nextcloud-data.bk/ cp -Rv _data/ /var/snap/docker/common/var-lib-docker/volumes/nextcloud-data/
Dateirechte anpassen
cd /var/snap/docker/common/var-lib-docker/volumes/nextcloud-data/_data chown -R www-data:root *
Optional: Backup auf neues Volume verschieben
cd /var/snap/docker/common/var-lib-docker/volumes/ mv nextcloud-data.bk/ /var/snap/docker/common/var-lib-docker/volumes/nextcloud-data/