NextCloud unter Ubuntu 22.04 LTS installieren: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) |
BLinz (Diskussion | Beiträge) |
||
Zeile 565: | Zeile 565: | ||
apt install php-ldap | apt install php-ldap | ||
<br> | <br> | ||
Wir gehen in der Managementoberfläche in das Apps-Menü und aktivieren das '''''LDAP user an group backend''''':<br> | Wir gehen in der Managementoberfläche in das Apps-Menü und aktivieren das '''''LDAP user an group backend''''':<br>[[Datei:ImageNextCloudLDAP1.png]] |
Version vom 29. Januar 2024, 13:58 Uhr
Changelog:
- 29.01.2024 erste Version
Installation Ubuntu Server 22.04.x LTS (Long Term Support)
Einstellungen für die VM
Falls Ihr den NextCloud-Server als virtuelle Maschine (VM) installiert so könnt Ihr Beispielsweise folgenden Einstellungen nehmen. Diese berücksichtigen auch die Mindestanforderungen von Ubuntu 22.04
- Konfiguration: Typisch
- Name und Speicherort: Nach eigener Wahl
- Speicher: Nach eigener Wahl
- Gastbetriebssystem: (*) Linux --> Ubuntu (64-Bit)
- Netzwerk:
- Wie viele Netzwerkkarten möchten Sie anschließen: 1
- Netzwerk: Nach Wahl (VM Network?)
- Adapter: VMXNET 3
- Größer der virtuellen Festplatte:
- Hängt von der Anzahl der überwachten Geräte / Items ab.
- Ich empfehle min 32GB für das Betriebssystem des Servers. Für die Datenpartition hängen wir später noch eine zweite Festplatte an.
- Die Festplatte kann bei einer VM nachträglich vergrößert werden - siehe dazu den Abschnitt in diesem Artikel weiter unten
- Thick-Provision Lazy-Zeroed
Danach Einstellungen der VM bearbeiten: Reiter Hardware:
- Arbeitsspeicher:
- 4GB oder mehr
- CPUs:
- Anzahl der virtuellen Sockets
- 4 oder mehr
- Anzahl der Cores pro Socket: 1 (Immer Anzahl der Sockets erhöhen)
- Anzahl der virtuellen Sockets
Reiter Optionen
- ...
Grundinstallation
CD einlegen und los,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):
- Ubuntu Server with the HWE kernel (=trotz LTS werden auch neuere Kernel installiert)
- Deutsch
- German / German
- Wenn er einen neueren Installer findet und fragt ob er auf diesen aktualisieren soll - Ja!
- Ubuntu Server
- Jetzt könnt Ihr schon die gewünschte feste IP-Adresse einstellen. Wählt dazu mit den Pfeiltasten den
ens160
Eintrag aus und drückt Enter: - ens192 => Bearbeite IPv4
- Manuell
- Bei Subnetz kommt nicht die Subnetzmaske sondern das Netzwerk mit Suffix. Bei einer 24 Maske (= 255.255.255.0) ist das die IP 0 mit Suffix /24
- Erledigt
- Bei Bedarf, sonst leer lassen
- Erledigt
- Nutzt die ganze Festplatte ohne LVM (also Haken entfernen). Die Festplatte lässt sich später trotzdem leicht vergrößern
- Erledigt
- Fortfahren
- Ich lege hier den Benutzer installadmin an. Wählt euren Benutzer und Passwort nach Wunsch (Aufschreiben!)
- OpenSSH-Server auswählen => Erledigt (für Zugriff z.B. mit Putty)
- Erledigt
Ab jetzt heißt es abwarten. Wenn er kann lädt er gleich ein paar Sicherheitsupdates nach:
- Jetzt neustarten
- ISO aus der VM entfernen und Enter drücken
- Nach dem Reboot wartet ab bis diverse Meldungen abgelaufen sind
PuTTY
Ab dieser Stelle könnt Ihr PuTTY oder den SSH Client eurer Wahl nutzen - was ich dringend empfehle. Denn dann könnt Ihr hier vorgeschlagenen Befehle einfach per Copy&Paste übernehmen.
Die IP-Adresse habt Ihr zu diesem Zeitpunkt ja bereits festgelegt:
Nach der Anmeldung nutze ich immer gerne ein
sudo -i
Damit wechselt man dauerhaft zum root Benutzer und muss nicht vor jedem Befehl ein sudo
stellen.
root wieder freischalten
sudo
verwendet müsst Ihr selbst wissen- Mit Benutzer installadmin anmelden
sudo -i
- Kennwort des Benutzer installadmin eintippen
passwd root
- neues Kennwort für "root" 2x eintippen
- Lokal Anmelden kann man sich nun mit root - aber eine Anmeldung über SSH funktioniert dann immer noch nicht.
- Damit diese auch funktioniert müsst ihr die
sshd_config
bearbeiten:
nano /etc/ssh/sshd_config
sucht nach der Zeile (STRG + W ist Suchen) nach
#PermitRootLogin without-password
und stellt den Cursor in die Zeile.
Drückt nun einmal F9 und 2x F10 - damit erstellt Ihr eine Kopie der Zeile.
Ändert die Kopie wie folgt ab:
PermitRootLogin yes
Speichert die Datei (STRG + x, dann y und Enter) und startet den ssh Dienst neu:
systemctl restart ssh.service
Ab dann klappt es auch mit dem SSH-Login für den Benutzer root, z.B. über puTTY
Jetzt 2x
exit
eintippen wodurch sich das PuTTY Fenster schließt - der (eingeschränkte) Benutzer installadmin hat sich somit abgemeldet
Ja, ich persönlich arbeite gerne als root und habe diesen für die Anmeldung freigeschaltet. Was ich nicht mache ist das Login per SSH mit Passwort zu erlauben. Ich hinterlege also immer einen SSH-Key für die Anmeldung und nutze diesen statt des Kennwortes. Die Lösung hier ist einfach gehalten, der Profi mögen anpassen wie er es braucht. Ein Anmeldung als eingeschränkter Benutzer geht natürlich auch, das erste was ich dann immer mache ist ein
sudo -i
um dauerhaft zum root zu wechselnAnmelden als root
Startet PuTTY wieder und meldet euch diesmal gleich als Benutzer root an.
nano & Co auf Deutsch
nano war eben z.B. noch auf Englisch, mit
apt install -y language-pack-de
ist es (und vieles andere) auf deutsch.
root farbiger Prompt
Als root anmelden:
nano ~/.bashrc
Zeile 39 (Alt + C aktiviert Zeilennummernanzeige):
#force_color_prompt=yes
ändern zu (# entfernen):
force_color_prompt=yes
nun wieder Abmelden - ab der nächsten Anmeldung ist der neue Prompt aktiv.
Wer den sofort haben will (ohne neu Anmelden):
source ~/.bashrc
Feste IP-Adresse vergeben
Der Server hat dank des neuen Setupdialoges nun bereits eine feste IP-Adresse.
Solltet Ihr an dieser etwas ändern müssen so bearbeitet die Datei
nano /etc/netplan/00-installer-config.yaml
Updates einspielen
- wieder anmelden als root bzw. zum root wechseln
- Updates suchen für Betriebssystem: (aktualisiert den Katalog aus den Update-Quellen)
apt update
- Updates einspielen:
apt upgrade -y
- Nach Update überflüssige Pakete entfernen:
apt autoremove -y
Ich mache das normalerweise immer als Einzeiler:
apt update && apt upgrade -y && apt autoremove -y
Multipathing deinstallieren (wenn der Server eine VM ist)
Ab Werk wird nun das
/var/log/syslog
mit Multipath-Meldungen vollgemüllt:
May 21 14:28:19 zabbix multipathd[674]: sda: add missing path May 21 14:28:19 zabbix multipathd[674]: sda: failed to get udev uid: Invalid argument May 21 14:28:19 zabbix multipathd[674]: sda: failed to get sysfs uid: Invalid argument May 21 14:28:19 zabbix multipathd[674]: sda: failed to get sgio uid: No such file or directory
Unter Ubuntu 22.04 scheint es nicht mehr ganz so schlimm wie unter 20.04 - aber in einer VM macht Multipath keinen Sinn, also deaktivieren und deinstallieren um das Syslog von den Meldungen befreien:
systemctl stop multipathd.service && systemctl disable multipathd.service apt install kpartx libsgutils2-2 liburcu8 sg3-utils sg3-utils-udev apt remove -y multipath-tools && apt purge -y multipath-tools
Die apt install
Zeile ist da drin weil diese Pakete ggf. von anderen Anleitung vorausgesetzt werden. Die Pakte werden dadurch auf manuell installiert gesetzt und dann nicht bei einem apt autoremove
deinstalliert
Cloud-Init deinstallieren (Wenn es keine VM bei einem Cloudanbieter ist)
Wenn Ihr die VM reboootet und die Console betrachtet tauchen kurz nach dem Reboot (Fehler-)Meldungen zum Cloud-init auf:
Das Cloud-Init ist - wenn ich mich recht erinnere - dafür da falls eure VM z.B. bei Amazon AWS, Azure oder andere Anbieter läuft um z.B. die Netzwerkinformationen vom Hoster/Provider zu erhalten.
Brauchen wir nicht, also weg damit:
echo 'datasource_list: [ None ]' | tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg apt purge -y cloud-init rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/ apt install eatmydata libeatmydata1 python-babel-localedata python3-babel python3-certifi python3-jinja2 python3-json-pointer python3-jsonpatch python3-jsonschema python3-markupsafe python3-pyrsistent python3-requests python3-tz python3-urllib3 -y reboot
Die apt install
Zeile ist da drin weil diese Pakete ggf. von anderen Anleitung vorausgesetzt werden. Die Pakte werden dadurch auf manuell installiert gesetzt und dann nicht bei einem apt autoremove
deinstalliert
Zeitzone setzen
In meiner VM ist die Uhrzeit zu diesem Zeitpunkt falsch (gebt mal probeweise date
ein) - weil der ESXi-Host auf UTC Zeit läuft und die Ubuntu in der VM die richtige Zeitzone nicht eingestellt hat.
Wir korrigieren das mit
timedatectl set-timezone Europe/Berlin
ein
date
sollte dann die richtige Uhrzeit ausspucken.
Automatische Updates deaktivieren
Ich persönlich möchte nicht das der Zabbix-Server automatisch Updates einspielt.
Die automatischen Updates aktualisieren - soweit ich das beobachten konnte - nur den Kernel. Aber auch das möchte ich nicht. Ich möchte das geplant durchführen.
Die automatischen Updates verhindern wir mit
apt remove -y unattended-upgrades
Benötigte Programme für Nextcloud installieren
Die nachfolgende Zeile installiert alles notwendige die auch nachfolgend beschriebenen Features von NextCloud zu nutzen. Als Datenbank wird MariaDB verwendet.
apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip php-ldap php-bz2 php-json unzip zip -y
apt
gehen und 3x Klicken. Ggf. mehrmals versuchen - bis die ganze Zeile markiert ist. Diese kann dann so in z.B. PuTTY eingefügt werden
Zusätzliche Festplatte einbinden
Die Daten von NextCloud sollen auf einer 2. Festplatte gespeichert werden - exklusive der SQL-Datenbank, diese wird auf der Festplatte mit dem Betriebssystem liegen.
Dazu habe ich der VM einfach eine weitere Festplatte mit 50GiB hinzugefügt. Diese können wir später bei bedarf einfach vergrößern.
Nach dem hinzufügen startet Ihr den Server einmal neu.
Zuerst müssen wir herausfinden wie die 2. Festplatte unter Ubuntu heißt:
ls -l /dev/sd*
Ausgabe:
brw-rw---- 1 root disk 8, 0 Jan 29 10:46 /dev/sda
brw-rw---- 1 root disk 8, 1 Jan 29 10:46 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jan 29 10:46 /dev/sda2
brw-rw---- 1 root disk 8, 16 Jan 29 10:46 /dev/sdb
/dev/sda
ist die erste Festplatte, sda1
und sda2
sind Partitionen auf dieser.
Unsere Zielfestplatte Platte ist die /dev/sdb
Da wir hier keine /dev/sdb1
sehen hat diese Festplatte noch keine Partitionen.
Ich arbeite hier ohne LVM, die Festplatte können wir später trotzdem leicht vergrößern.
/dev/sda1
sondern nur /dev/sda
Wir tippen ein:
fdisk /dev/sdb
Da kommt dann etwas Text und die Aufforderung
Befehl (m für Hilfe):
Wir drücken
n
um eine neue Partition zu erstellen und dann
p
für eine Primäre Partition, dann
1
für die erste Partition.
Dann drückt 2x Enter um die vorgeschlagenen Werte zu übernehmen.
Jetzt sollte da wieder
Befehl (m für Hilfe):
stehen und wir drücken
w
um das ganze auf die Platte zu schreiben.
Das sollte also etwas so aussehen:
root@nextcloud1:~# fdisk /dev/sdb Willkommen bei fdisk (util-linux 2.37.2). Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich entscheiden, sie zu schreiben. Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden. Gerät enthält keine erkennbare Partitionstabelle. Eine neue DOS-Festplattenbezeichnung 0xdc256c5b wurde erstellt. Befehl (m für Hilfe): n Partitionstyp p Primär (0 primär, 0 erweitert, 4 frei) e Erweitert (Container für logische Partitionen) Wählen (Vorgabe p): p Partitionsnummer (1-4, Vorgabe 1): 1 Erster Sektor (2048-104857599, Vorgabe 2048): Letzter Sektor, +/-Sektoren oder +/-Größe{K,M,G,T,P} (2048-104857599, Vorgabe 104857599): Eine neue Partition 1 des Typs „Linux“ und der Größe 50 GiB wurde erstellt. Befehl (m für Hilfe): w Die Partitionstabelle wurde verändert. ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen. Festplatten werden synchronisiert.
Prima, jetzt haben wir eine Partition /dev/sdb1
, diese formatieren wir nun mit dem ext4 Dateisystem:
mkfs.ext4 /dev/sdb1
Ausgabe:
root@nextcloud1:~# mkfs.ext4 /dev/sdb1 mke2fs 1.46.5 (30-Dec-2021) Geräteblöcke werden verworfen: erledigt Ein Dateisystem mit 13106944 (4k) Blöcken und 3276800 Inodes wird erzeugt. UUID des Dateisystems: 2ead4117-e280-4ac4-8038-f41ef64c1e70 Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 beim Anfordern von Speicher für die Gruppentabellen: erledigt Inode-Tabellen werden geschrieben: erledigt Das Journal (65536 Blöcke) wird angelegt: fertig Die Superblöcke und die Informationen über die Dateisystemnutzung werden geschrieben: erledigt
Nun müssen wir die Festplatte noch mounten. NextCloud werden wir nach
/var/www/nextcloud
installieren. Deshalb hängen wir die neue Festplatte unterhalb von /var/www
ein. In diesem Verzeichnis gibt es im Moment noch das Unterverzeichnis html
was wir uns vorher wegsichern:
mv /var/www/html /tmp/html
Dann mounten wir unsere neue Partition an diesen Pfad:
mount /dev/sdb1 /var/www/
Prüfen wir ob das geklappt hat:
root@nextcloud1:~# df -h Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf tmpfs 391M 1,2M 390M 1% /run /dev/sda2 32G 7,5G 23G 26% / tmpfs 2,0G 0 2,0G 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 391M 4,0K 391M 1% /run/user/1000 /dev/sdb1 49G 24K 47G 1% /var/www
In der letzten Zeile sehen wir das es geklappt hat.
Nun müssen wir dafür sorgen das dies auch beim nächsten Booten automatisch gemacht wird. Dazu brauchen wir die UUID die wir wie folgt herausbekommen:
ls -l /dev/disk/by-uuid/ | grep sdb
Ergebnis bei mir:
lrwxrwxrwx 1 root root 10 Jan 29 11:10 2ead4117-e280-4ac4-8038-f41ef64c1e70 -> ../../sdb1
Nun bearbeiten wir die fstab
:
nano /etc/fstab
und hängen unten folgende Zeile an:
/dev/disk/by-uuid/2ead4117-e280-4ac4-8038-f41ef64c1e70 /var/www ext4 defaults 0 1
Die Werte bedeuten:
/dev/disk/by-uuid/2ead4117-e280-4ac4-8038-f41ef64c1e70 : Pfad mit UUID des Datenträgers /var/www : Das Verzeichnis in das gemountet werden soll ext4 : Welches Dateisystem soll gemountet werden, ggf. auch mit auto probieren defaults : Mit Standardeinstellungen / Rechten mounten, Detail siehe z.B. hier: https://wiki.archlinux.de/title/Fstab 0 : Für den Befehl Dump, 0 bedeutet "keine Systempartition" 0 : Für Dateisystemprüfung, 1 bedeutet "mit Prüfung" einbinden
Bevor wir nun neu Starten verschieben wir noch das html
Verzeichnis zurück:
mv /tmp/html /var/www/html
Als Test nun einen Reboot - danach sollte die Platte weiterhin/wieder eingehängt sein. Das könnte ihr wieder mit df -h
kontrollieren:
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf tmpfs 391M 1,2M 390M 1% /run /dev/sda2 32G 7,5G 23G 26% / tmpfs 2,0G 0 2,0G 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock /dev/sdb1 49G 40K 47G 1% /var/www tmpfs 391M 4,0K 391M 1% /run/user/1000
Nextcloud installieren
Die folgenden Installationsschritte habe ich mir aus verschiedenen Anleitungen zusammengesucht, die Quellen sind:
- https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html
- https://mailserverguru.com/install-nextcloud-on-ubuntu-22-04-lts/
Datenbank erstellen
NextCloud benötigt eine MySQL / MariaDB Datenbank die wir wie folgt erstellen:<brA>
mysql -u root -e "CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
mysql -u root -e "CREATE USER 'dbusernextcloud'@'localhost' IDENTIFIED BY 'password4nextclouddb'"
mysql -u root -e "GRANT ALL PRIVILEGES ON nextcloud.* TO 'dbusernextcloud'@'localhost'"
mysql -u root -e "FLUSH PRIVILEGES"
Damit wird eine Datenbank nextcloud erstellt (falls noch nicht vorhanden) und dem lokalen Benutzer dbusernextcloud mit dem Passwort password4nextclouddb darauf Zugriff gewährt.
NextCloud herunterladen
Die folgenden Befehle laden die aktuellste Version als .zip herunter, entpacken diese in den Ordern /var/www/nextcloud
, löschen die .zip und geben dem Benzutzer unter dem der Webserver läuft volle Rechte auf den Ordner:
cd /var/www/ wget https://download.nextcloud.com/server/releases/latest.zip unzip latest.zip rm -rf latest.zip chown -R www-data:www-data /var/www/nextcloud/
Webserver auf NextCloud-Pfad setzen
Die Default-Webseite zeigt im Moment noch auf /var/www/html
, wir ändern dies auf unser neues Verzeichnis:
nano /etc/apache2/sites-enabled/000-default.conf
Mit F9 könnt Ihr den gesamten Inhalt der Datei löschen und das nachfolgende einfügen.
Geändert wird aber erst einmal nur die Zeile mit DocumentRoot
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Wo wir schon mal dabei sind aktivieren wir gleich weitere Apache2 Module die wir gleich noch brauchen:
a2enmod rewrite dir mime env headers
und starten den Webserver dann neu:
systemctl restart apache2
Grundsetup über das Webinterface
Im Webbrowser müsstet Ihr jetzt über die IP-Adresse des Servers das Setup erreichen:
http://IP-eurer-NextCloud-VM/
Den Benutzernamen und das Passwort dürft Ihr euch frei ausdenken. Das wird der erste Admin-Benutzer.
Das Datenverzeichnis lasst Ihr so stehen wie vorgeschlagen auf
/var/www/nextcloud/data
Beim Datenbank-Benutzer müsst tragt Ihr - wenn Ihr mein Beispiel übernommen habt
dbusernextcloud
ein, das Passwort ist
password4nextclouddb
und der Datenbank-Name
nextcloud
Den Host last ihr wie er ist.
Auf installieren drücken und Geduld beweisen, nach 10 bis 30 Sekunden geht es weiter:
Das könnt Ihr nach eigenen Gutdünken entscheiden, ich überspringe hier da ich den Server nur für den Austausch von Dateien verwenden möchte.
Es folgt eine Infoseite durch die man sich durchklickt bis man bei Los gehts! landet.
Fertig! Der grundlegende NextCloud-Server läuft nun!
Feintuning Teil 1
Im Verwaltungsbereich wird uns NextCloud ein paar Warnung bezüglich verschiedener Einstellungen geben, ein paar davon stellen wir hier ab.
Zudem folgen wir den Empfehlungen von https://mailserverguru.com/install-nextcloud-on-ubuntu-22-04-lts/ und bauen auf PHP-FPM um, das wird auch von NextCloud selbst empfohlen (aus Performancegründen):
apt install php-fpm
Der Dienst dazu sollte automatisch starten, das können wir per
systemctl status php8.1-fpm.service
prüfen.
Nun wechseln wir die PHP-Engine von Apache:
a2dismod php8.1 a2dismod mpm_prefork a2enmod mpm_event proxy_fcgi setenvif a2enconf php8.1-fpm
dann bearbeiten wir die Datei
nano /etc/php/8.1/fpm/php.ini
und ändern folgende Zeilen (STRG + W ist suchen):
upload_max_filesize = 1024M
post_max_size = 1536M
memory_limit = 2048M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Nun noch die FPM-Pool-Einstellungen:
nano /etc/php/8.1/fpm/pool.d/www.conf
und folgende Änderungen:
pm.max_children = 64
pm.start_servers = 16
pm.min_spare_servers = 16
pm.max_spare_servers = 32
Im Anschluss den Dients neu starten:
systemctl restart php8.1-fpm.service
Jetzt noch die Webseitenkonfiguration anpassen damit php-fpm verwendet wird:
nano /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
<Directory /var/www/nextcloud>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch ".php$">
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Umbau auf https - Selbstsigniertes Zertifikat
In der http://
Anzeige funktioniert zunächst alles, aber zum Beispiel das kopieren von Links zum Teilen nicht.
Wir machen den Server also über https://
erreichbar, zunächst mit einem selbst signierten Zertifikat:
https-Unterstützung des Apache2 aktivieren:
a2enmod ssl systemctl restart apache2
Dann erstellen wir unser eigenes SSL-Zertifikat:
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt
Die Fragen beantwortet ihr nach eigenem Gutdünken oder eben gar nicht (einfach mit Enter bestätigen).
Bei Common Name (e.g. server FQDN or YOUR name) []: solltet Ihr den DNS-Namen eintragen unter dem der Server später erreicht werden soll:
Common Name (e.g. server FQDN or YOUR name) []:nextcloud1.test.local
Nun erstellen wir eine neue Apache2-Konfiguration für den verschlüsselten Zugriff:
nano /etc/apache2/sites-available/nextcloud-ssl.conf
mit folgendem Inhalt:
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/nextcloud-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/nextcloud-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
Jetzt müssen wir die Seite noch aktivieren:
a2ensite nextcloud-ssl.conf systemctl reload apache2
Nun müssen wir NextCloud noch davon erzählen - das der Zugriff per DNS-Name aus dem Zertifikat ok ist:
nano /var/www/nextcloud/config/config.php
und oben folgenden Eintrag ergänzen (der 1 =>
):
array ( 0 => '192.168.1.10', 1 => 'nextcloud1.test.local', ),
und nun sollte Ihr im Webbrowser eure NextCloud-Installation auch per https erreichen. (mit Zertifikatswarnung).
Damit es über den Namen klappt müsst Ihr diesen auf eurem DNS-Server hinterlegen.
kurze URLs verwenden
Die Links wenn Ihr später Dateien teilt enthalten immer die index.php
https://192.168.1.10/index.php/s/2D7HRQ2NnzHX8BW
Um diese Anzeige zu entfernen bearbeiten wir die Konfigurationsdatei von NextCloud:
nano /var/www/nextcloud/config/config.php
und hängen unten folgende Zeile an (vor dem );
in der letzten Zeile):
'overwrite.cli.url' => 'https://nextcloud1.test.local/', 'htaccess.RewriteBase' => '/',
Speichern und dann folgenden Befehl ausführen:
sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/occ maintenance:update:htaccess
Ab jetzt müsstet Ihr den Server über seinen DNS-Namen aufrufen!
LDAP / Active Directory anbinden
Für die LDAP-Anbindung muss das LDAP-PHP Modul installiert sein, nach dieser Anleitung ist das schon der Fall.
Ansonsten:
apt install php-ldap
Wir gehen in der Managementoberfläche in das Apps-Menü und aktivieren das LDAP user an group backend: