Nextcloud 20 mit nur einem Skript installieren v. 2.1

Nextcloud 20 und PHP 7.4
mit nur einem Skript installieren

Mit nur einem Skript installieren Sie auch als „Newbie“ Ihre eigene Nextcloud!
Die Mindestvoraussetzungen für diese Skripte sind minimal:
* Ein frisches/neues Debian 10.5+ AMD64 oder ein frisches/neues Ubuntu 20.04.x+ AMD64 System
* ein Benutzer mit sudo-Berechtigungen

Letzte Aktualisierung: Montag, 11. Januar 2021
Die ausführliche Aktualisierungshistorie finden Sie hier.

Die Installationsmedien für den zugrundeliegenden Linux-Server erhalten Sie hier:

Ubuntu 20.04.x LTS:
Server-Installation - SSH wird vorausgesetzt (s. Bild zuvor)
Debian 10.5.x: Net ISO Installation - Standardsystemwerkzeuge u. SSH werden vorausgesetzt (s. Bild zuvor)
su -
apt install -y sudo
usermod -aG sudo <aktueller benutzer>
exit
exit

Wechseln Sie mittels sudo zu Ihrem privilegierten Benutzer:

sudo -s

Laden Sie das Installationsskript nach /usr/local/src herunter:

cd /usr/local/src && apt install bzip2 wget -y
Debian:
wget https://it-services.c-rieger.de/s/QCzDbdip4qM388P/download -O install.zip
Ubuntu:
wget https://it-services.c-rieger.de/s/G26kaw2bSdqjQeg/download -O install.zip

und entpacken dort das Skript:

apt install unzip -y && unzip install.zip

HINWEIS:
Es darf kein Apache2- oder NGINX-Webserver, MariaDB-/MySQL-Server und kein PHP installiert sein.

Für das Skript gehe ich von einem neu installierten System aus, auf dem die aktuellen OS-Patches aber keine weitere Software installiert wurde.

Markieren Sie das Skript als „ausführbar“

chmod +x install.sh

und führen es dann zur Installation aus:

./install.sh

Das Logfile finden Sie unter /usr/local/src/install.log.

(1) Sie werden nach
– einem Nextcloud-Administratornamen (Your Nextcloud Administrator),
– dem dazugehörigen Passwort (Your Nextcloud Administrator password) und
– dem Datenpfad (Your Nextcloud datapath)
gefragt, bevor die Installation beendet und

(2) Ihnen eine Zusammenfassung dargestellt wird:


Optional: Einrichtung von SSL über Let’s Encrypt

Bitte stellen Sie zuerst sicher, dass Ihr Server sowohl über Port 80/TCP als auch über Port 443/TCP von außen erreichbar ist.

Für das Zertifikatshandling erstellen wir einen technischen Benutzer und fügen diesen der www-data Gruppe hinzu:

adduser --disabled-login acmeuser
usermod -a -G www-data acmeuser

Diesem technischen Benutzer erteilen wir noch die notwendigen Berechtigungen, um bei einer Zertifikatserneuerung den notwendigen Webserverstart initiieren zu können.

visudo

In der Mitte der Datei, unterhalb von

[..]
User privilege specification
root ALL=(ALL:ALL) ALL
[...]

tragen Sie die folgende Zeile ein:

acmeuser ALL=NOPASSWD: /bin/systemctl reload nginx.service

Mit STRG+X gefolgt von einem y speichern und verlassen Sie diese Datei.

Wechseln Sie in die Shell des technischen Benutzers (acmeuser) um die Zertifikatssoftware zu installieren und verlassen diese Shell danach wieder:

su - acmeuser
curl https://get.acme.sh | sh
exit

Passen Sie die entsprechenden Berechtigungen an, um die neuen Zertifikate darin speichern zu können:

chmod -R 775 /var/www/letsencrypt /etc/letsencrypt && chown -R www-data:www-data /var/www/ /etc/letsencrypt

Wechseln Sie erneut in die Shell des technischen Benutzers

su - acmeuser

und beantragen dann die SSL-Zertifikate. Ersetzen Sie dabei ihre.domain.de mit Ihrer „echten“ Domain :

acme.sh --issue -d ihre.domain.de --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 ihre.domain.de --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"

Verlassen Sie die Shell des neuen Benutzers

exit

und legen sich dann ein Skript an, dass zukünftig die Berechtigungen überprüft und korrigiert (permissions.sh):

nano /root/permissions.sh

Kopieren Sie alle Zeilen in die Datei:

#!/bin/bash
find /var/www/ -type f -print0 | xargs -0 chmod 0640
find /var/www/ -type d -print0 | xargs -0 chmod 0750
chmod -R 775 /var/www/letsencrypt /etc/letsencrypt 
chown -R www-data:www-data /var/www /etc/letsencrypt
chown -R www-data:www-data /var/nc_data
chmod 0644 /var/www/nextcloud/.htaccess
chmod 0644 /var/www/nextcloud/.user.ini
exit 0

Hinweis:
Bitte passen Sie ggf. das Datenverzeichnis im Skript an, sofern Sie nicht das exemplarische /var/nc_data Verzeichnis während der Skriptinstallation verwendet haben.

Markieren Sie das Skript als ausführbar und führen es dann direkt aus:

chmod +x /root/permissions.sh
/root/permissions.sh

Entfernen Sie Ihre bisher verwendeten Self-Signed-Zertifikate aus nginx und aktivieren Sie die neuen, vollwertigen und bereits gültigen SSL Zertifikate von Let’s Encrypt:

sed -i '/ssl-cert-snakeoil/d' /etc/nginx/conf.d/nextcloud.conf
sed -i s/#\ssl/\ssl/g /etc/nginx/conf.d/nextcloud.conf
service nginx restart

Über einen automatisch angelegten Cronjob

crontab -l -u acmeuser

werden Ihre SSL-Zertifikate fortan regelmäßig und vollautomatisch erneuert. Bitte nehmen Sie sich etwas Zeit und überprüfen den Sicherheitsstatus Ihres Servers. Ziel sollte mind. folgendes „A+“-Ergebnis:

Glückwunsch, das war es schon! Über eine Spende würden sich meine Frau, meine Zwillinge und ich sehr freuen!

© Carsten Rieger IT-Services