Anlehnend an meinen vorhergehenden Artikel, eine wirkliche 10 Minuten Kurzanleitung zur Installation einer neuen NextCloud Instanz.
- Rahmenbedingungen
- Erstellung eines virtuellen Computers in Proxmox
- Anpassungen der Ubuntu Minimalinstallation
- Programme & Funktionen nachinstallieren
- Für den NextCloud Betrieb anpassen
- Sync für Backup erstellen & durchführen
- Erstanmeldung & Konfiguration der NextCloud Instanz
- Ergebnis
- Fehlerbehandlung
- Über den Autor
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
- redis.php
- apcu.php
- opcache.php
- Nextcloud Files last.zip (https://download.nextcloud.com/server/releases/latest.zip)
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
- Prüfen ob NFS version 4.0 genutzt wird (diese Version hat einen BUG auf der Synology) -> Wechsel auf 4.1 oder 3 dann funktioniert das
- https://github.com/framps/raspiBackup/issues/159
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:
Dokumente, Bilder und Videouploads laufen sowohl von den Handys als auch den Computern durchgehend sauber und ohne nennenswerte Ausfälle durch.
Die Festplattenbelastung ist weiterhin gering – die Reaktionsfähigkeit der Webanwendung und der WebDAV Schnittstelle konstant stabil:
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:
- Der o. g. NFS Fehler tritt auf
- 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-19 | Zuletzt geändert: 2023-11-19 |
Änderungshistorie: – 2023-11-19: Basis – Layout + Text als Aufbau zum letzten Artikel |