von 0 zum NextCloud Betrieb in 10 Minuten

Anlehnend an meinen vorhergehenden Artikel, eine wirkliche 10 Minuten Kurzanleitung zur Installation einer neuen NextCloud Instanz.

Rahmenbedingungen

Der Aufbau soll als virtuelle Maschine erfolgen. Diese Instanz soll für alle Office Endgeräte im lokalen Netzwerk inclusive einem lokalen MySQL Server verwendet werden.

Eine Einbindung in das Internet wird in den folgenden Artikeln beschrieben

Erstellung eines virtuellen Computers in Proxmox

• Eine Detailanleitung zur Erstellung einer Computerhülle kann hier abgerufen werden.

• Die Installation eines Ubuntu Minimalsystems wird hier beschrieben.

Nachbereitung in Proxmox

  • CD-Rom auswerfen
  • Boot on Startup aktivieren
  • QEMU Agent aktivieren
  • In Backup Jobs integrieren

Anpassungen der Ubuntu Minimalinstallation

Direkten SSH Zugriff mit root-Rechten aktivieren

sudo passwd root
sudo apt install vim
sudo vi /etc/ssh/sshd_config
	○ PermitRootLogin yes
sudo init 6

Nach einem Neustart kann direkt via SSH remote gearbeitet werden. Ein “sudo” ist dann nicht mehr notwendig.

ACHTUNG: Dieses Vorgehen wird generell nicht vorgeschlagen. Sollte diese Erleichterung genutzt werden, empfiehlt es sich aus Sicherheitsgründen diese im Nachgang wieder Rückgängig zu machen.

Nachbereitung für Proxmox

Nachfolgend werden die Schritte für den Aufbau einer neuen virtuellen Maschine beschrieben.

apt-get update
apt-get upgrade
apt install qemu-guest-agent
systemctl start qemu-guest-agent
systemctl enable qemu-guest-agent
systemctl status qemu-guest-agent

Danach werden in der Proxmox GUI die Daten & Werte zu CPU, Festplatten etc. angezeigt.

IPv6 deaktivieren

In einigen EDV Umgebungen gibt es Probleme, wenn IPv6 verwendet wird. Ich deaktiviere daher gerne vor der IPv6 Einführung im Netzwerk, dies in allen neuen virtuellen Systemen.

vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
init 6

Nach dem Einfügen der Zeilen ist der neuen virtuelle Computer nur noch über IPv4 erreichbar.

Standardfarbschema VIM anpassen

Für einige ist das Standard VI Farbschema optisch nicht ansprechend oder ausreichend kontrastiert. Ich schalte es gerne um auf :color blue, delek oder industry. Eine Übersicht aller Standard-Farbschamata erhältst du mit

:colorscheme [space] [Ctrl+d]

vim ~/.vimrc
color industry
syntax on

Optional kann zusätzlich die Syntaxerkennung mit “syntax on” hinzugefügt werden.

FileSystem Memory Chaching

Wir wollen so viele Dateisystemobjekte wie möglich im Arbeitsspeicher halten. Dadurch wird die NextCloud noch etwas schneller beim häufigen Zugriff auf Dateien. memory tuning Kernel Prozesse

memory tuning Kernel Prozesse

Im Leerlauf hat das neue System ca. 40% RAM Nutzung bei 2 GB RAM

cat /proc/sys/vm/swappiness 

Bei einem Standardwert von 60 bedeutet dies, eine gute Balance zwischen RAM und auslagern in SWAP.

* 0: swap is disable

* 1: minimum amount of swapping without disabling it entirely

* 10: recommended value to improve performance when sufficient memory exists in a system

* 100: aggressive swapping

Ich setze es gerne so gering wie möglich, aber so dass das System noch Lauffähig ist. Zum Testen kann

echo 5 > /proc/sys/vm/swappiness

eingegeben werden. Ein permanentes aktivieren erfolgt durch

vi /etc/sysctl.conf
vm.swappiness=5

Damit swapped das system weniger und nimmt mehr RAM.

Wieviel vom Arbeitsspeicher durch welchen Prozess genutzt wird, kann mit dem nachfolgenden Befehl herausgefunden werden.

ps aux --sort -rss

Memory tuning für langsame Festplatten

cat /proc/sys/vm/vfs_cache_pressure

Bei einem Wert von 100 wird alles wieder an das Dateisystem zurückgegeben.

0 bedeutet das so viel wie möglich im RAM verbleibt. (Das wollen wir nicht, da noch andere Prozesse am Arbeitsspeicher interessiert sind)

vi /proc/sys/vm/vfs_cache_pressure
vm.vfs_cache_pressure=50

Mit einem Wert von 50 habe ich die besten Erfahrungen gemacht.

Programme & Funktionen nachinstallieren

apt-get install mlocate && updatedb
apt-get install net-tools

MySql Installieren & anpassen

apt install mysql-server
mysql_secure_installation

In der Konfiguration des MySQL Servers aktivieren wir:

  • Strong Password
  • Remove Anonymous Users
  • Disallow Root Remote
  • Remove Test Database
  • Reload Privilege Table

Prüfen der Logins:

mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;

Umstellen Root User auf caching_sha2_password

Meine Empfehlung: Passwörter können jederzeit via https://passwordsgenerator.net/ generiert werden.

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<your-password-here';
FLUSH PRIVILEGES;
exit

Testen.

mysql -u root -p

MySQL Datenbank und User für NextCloud erstellen

mysql -u root -p
CREATE USER 'NextCloudUser'@'localhost' IDENTIFIED BY '<your-password-here';
select user from mysql.user ;
CREATE DATABASE NextCloudDB;
GRANT ALL PRIVILEGES ON NextCloudDB. * TO 'NextCloudUser'@'localhost';
FLUSH PRIVILEGES;

MySQL BIN Log ausschalten

mysql -u root -p
SET GLOBAL general_log = 'OFF';
SET sql_log_bin = 0;
PURGE BINARY LOGS BEFORE NOW();
SHOW MASTER STATUS;
exit
vi /etc/mysql/my.cnf (kann verweisen auf u. g. Datei)
vi /etc/mysql/mysql.conf.d/mysqld.cnf

vi /etc/mysql/my.cnf (kann verweisen auf u. g. Datei)

vi /etc/mysql/mysql.conf.d/mysqld.cnf

Auskommentieren des Eintrags “log_bin” (sofern gesetzt)

Für den NextCloud Betrieb anpassen

Pakete Installieren:

apt install apache2 ffmpeg
apt update && apt install -y php-common \
php8.1-{fpm,gd,curl,xml,zip,intl,mbstring,bz2,ldap,apcu,bcmath,gmp,imagick,igbinary,mysql,redis,smbclient,cli,common,opcache,readline} \
imagemagick --allow-change-held-packages

Backups anlegen:

cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/www.conf.bak
cp /etc/php/8.1/fpm/php-fpm.conf /etc/php/8.1/fpm/php-fpm.conf.bak
cp /etc/php/8.1/cli/php.ini /etc/php/8.1/cli/php.ini.bak
cp /etc/php/8.1/fpm/php.ini /etc/php/8.1/fpm/php.ini.bak
cp /etc/php/8.1/fpm/php-fpm.conf /etc/php/8.1/fpm/php-fpm.conf.bak
cp /etc/php/8.1/mods-available/apcu.ini /etc/php/8.1/mods-available/apcu.ini.bak
cp /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xml.bak

Aktivieren der Zusatzmodule:

a2enmod proxy_fcgi setenvif
a2enconf php8.1-fpm
a2enmod rewrite
systemctl reload apache2

Testen via http://<IPv4-Adresse-des-Servers>

FSCache Installieren

apt install cachefilesd
systemctl enable --now cachefilesd
systemctl status cachefilesd
	
vi /etc/default/cachefilesd
RUN="yes"
	
vi /etc/cachefilesd.conf
	
systemctl stop cachefilesd
systemctl start cachefilesd
systemctl status cachefilesd

MountPoint setzen (wo am Ende alles liegt)

apt install nfs-common
mkdir /media/nextcloud
vi /etc/fstab
<IPv4-Adresse-des-Zielservers> :/volume1/web/nextcloud               /media/nextcloud      nfs               noatime,nodiratime,relatime,async,tcp,fsc

Anpassungen in der Synology Freigabe

Nach dem Systemneustart ist dann der mount-Point gesetzt und kann verwendet werden.

Verzeichnisse anlegen & Rechte für apache Webserver setzen

mkdir /media/nextcloud/scripts
mkdir /media/nextcloud/wwwroot
mkdir /media/nextcloud/ncdata
mkdir /media/nextcloud/ncbackup
       

Rechte Anpassen (falls ein Datenverzeichnis übernommen wird)

chown -R www-data:www-data /media/nextcloud/ncdata chown -R www-data:www-data /media/nextcloud/wwwroot chown -R www-data:www-data /var/www/html find /media/nextcloud/ncdata/ -type d -print0 | xargs -0 chmod 0750 find /media/nextcloud/ncdata/ -type f -print0 | xargs -0 chmod 0640          

Anpassen des open_basedir in PHP

vi /etc/php/8.1/cli/php.ini
vi /etc/php/8.1/fpm/php.ini

open_basedir = /media/nextcloud/ncdata/:/var/www/html/:/tmp/:/proc/:/usr/bin/ffmpeg
open_basedir = /media/nextcloud/ncdata/:/var/www/html/:/tmp/:/proc/:/usr/bin/ffmpeg
	
/etc/init.d/php8.1-fpm reload

Sync für Backup erstellen & durchführen

apt-get install rsync
vi /media/nextcloud/scripts/BackupApache.sh
	
	apachedir="/var/www/html/"
	backupdir="/media/nextcloud/wwwroot/"
	
	
	clear
	echo
	echo "#########################################################"
	echo "Sync von ${apachedir}"
	echo "Sync nach ${backupdir}"
	echo "#########################################################"
	read -p "Zum fortfahren druecke eine beliebige Taste..."
	
	rsync -a -P --ignore-existing -E --delete --stats --progress -h $apachedir $backupdir

chmod +x /media/nextcloud/scripts/BackupApache.sh
/media/nextcloud/scripts/BackupApache.sh

Hochladen von Daten für erste Installation auf wwwroot

Wir brauchen

Sync für Restore erstellen & durchführen

vi /media/nextcloud/scripts/RestoreApache.sh
	
	apachedir="/var/www/html/"
	backupdir="/media/nextcloud/wwwroot/"
	
	
	clear
	echo
	echo "#########################################################"
	echo "Restore von ${backupdir}"
	echo "Restore nach ${apachedir}"
	echo "#########################################################"
	read -p "Zum fortfahren druecke eine beliebige Taste..."
	
	rsync -a -P --ignore-existing -E --delete --stats --progress -h $backupdir $apachedir 
	
chmod +x /media/nextcloud/scripts/RestoreApache.sh
/media/nextcloud/scripts/RestoreApache.sh

Danach kann die Startseite zur Installation als auch die php-Scripte aufgerufen werden.

Anpassen von Rechten

chown -R www-data:www-data /media/nextcloud
chown -R www-data:www-data /media/nextcloud/ncdata
chown -R www-data:www-data /media/nextcloud/wwwroot
chown -R www-data:www-data /var/www/html
	
find /media/nextcloud/ncdata/ -type d -print0 | xargs -0 chmod 0750
find /media/nextcloud/ncdata/ -type f -print0 | xargs -0 chmod 0640
                 

ACHTUNG -> Wenn dann immer noch nicht der User auf www-data steht und beim Übernehmen “Invalid Argument” steht

Erstanmeldung & Konfiguration der NextCloud Instanz

Beim Aufruf der IP-Adresse wird der Ersteinrichtungsassistent gestartet.

hier den Datenpfad /media/nextcloud/ncdata wählen und die zuvor angegebenen Kennwörter eingeben.

Danach Installiert sich die NextCloud-Instanz

Ergebnis

Läuft – Performant und stabil. Vollständig intern und inklusive zwischen den Benutzern geteilter Dateiablage. Für alle Endgeräte im lokalen Netzwerk und via VPN.

Der Arbeitsspeicher ist dabei fast durchgehend am oberen Limit, ohne Paging:

Apache2 für NextCloud – Arbeisspeicherauslastung im Betrieb

Dokumente, Bilder und Videouploads laufen sowohl von den Handys als auch den Computern durchgehend sauber und ohne nennenswerte Ausfälle durch.

Apache2 für NextCloud – Netzwerkauslastung im Betrieb

Die Festplattenbelastung ist weiterhin gering – die Reaktionsfähigkeit der Webanwendung und der WebDAV Schnittstelle konstant stabil:

Apache2 für NextCloud – Festplatten IO im Betrieb mit Peak Upload

Die CPU-Auslastung der VM hält sich laufend in Grenzen.

Fehlerbehandlung

In einigen Fällen wird der Fehler “Cannot create or write into the data directory” angezeigt. Mögliche Ursachen:

  1. Der o. g. NFS Fehler tritt auf
  2. Das Verzeichnis hat tatsächlich nicht die passenden Rechte

Prüfen der Rechte auf das Datenverzeichnis:

Dem Zielverzeichnis Rückwerts folgend ein Verzeichnis-listing als www-data aufrufen.

root@nextcloud:/media/nextcloud# sudo -u www-data ls -la /media/nextcloud/ncdata/
ls: cannot access '/media/nextcloud/ncdata/': Permission denied
root@nextcloud:/media/nextcloud# sudo -u www-data ls -la /media/nextcloud/
ls: cannot open directory '/media/nextcloud/': Permission denied
root@nextcloud:/media/nextcloud# sudo -u www-data ls -la /media/
total 16
drwxr-xr-x  3 root     root     4096 Oct 23 16:08 .
drwxr-xr-x 20 root     root     4096 Oct 23 11:56 ..
d---------  8 www-data www-data 4096 Oct 23 18:53 nextcloud
root@nextcloud:/media/nextcloud# 

Aus dem oben dargestellten Aufruf geht hervor, dass ab dem NextCloud Verzeichnis der Zugriff verweigert wird. Lösung:

chmod 777 /media/nextcloud/ 

Ein erneuter Test bestätigt dann den Vollständigen Zugriff.


Über den Autor

Gregor Tomitzek – IT Berater, Trainer und Mentor

Seit über 25 Jahren berate ich Firmen und private Personen in allen Belangen der Computertechnik. Als Leiter eines Infrastrukturteams bringe ich die technischen Anforderungen der Kunden zu Lösungen, und ermögliche dadurch ein besseres und schnelleres Arbeiten.

Durch meine langjährige Erfahrung, die Ausbildungen und der Nähe zu allen Unternehmensprozessen, unterstütze ich Leistungsträger, Teamleiter und Vorstände dabei, die Überlastung in IT-Abteilung zu senken und zugleich die Leistungsfähigkeit und Zufriedenheit von IT-Teams wahrnehmbar zu steigern.


Änderungshistorie

Erstellt: 2023-11-19Zuletzt geändert: 2023-11-19
Änderungshistorie: –
2023-11-19: Basis – Layout + Text als Aufbau zum letzten Artikel


Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

3 × 5 =