Aktionen

NextCloud unter Ubuntu 22.04 LTS installieren

Aus znilwiki

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)

Reiter Optionen

  • ...




Grundinstallation

Important.png
Hinweis:Ich habe die offizielle ISO verwendet: https://ubuntu.com/download/server (Option 1: Manual server installation - ubuntu-22.04.3-live-server-amd64.iso). Es gibt zur Zeit keine Minimalversion mit LAMP Installer.


CD einlegen und los,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):

Install Ubuntu2204 Pic1.png Ubuntu Server with the HWE kernel (=trotz LTS werden auch neuere Kernel installiert)
ClipCapIt-220427-115721.PNG Deutsch
ClipCapIt-220427-115808.PNG German / German
Wenn er einen neueren Installer findet und fragt ob er auf diesen aktualisieren soll - Ja!
Install Ubuntu2204 Pic2.png Ubuntu Server
ClipCapIt-220427-120131.PNG 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:
ClipCapIt-200521-152546.PNG ens192 => Bearbeite IPv4
ClipCapIt-200521-152642.PNG Manuell
ClipCapIt-200521-152742.PNG 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
ClipCapIt-200521-153302.PNG Erledigt
ClipCapIt-220427-120259.PNG Bei Bedarf, sonst leer lassen
ClipCapIt-220427-120335.PNG Erledigt
ClipCapIt-220427-120400.PNG Nutzt die ganze Festplatte ohne LVM (also Haken entfernen). Die Festplatte lässt sich später trotzdem leicht vergrößern
ClipCapIt-220427-120443.PNG Erledigt
ClipCapIt-220427-120505.PNG Fortfahren
ClipCapIt-220427-120827.PNG Ich lege hier den Benutzer installadmin an. Wählt euren Benutzer und Passwort nach Wunsch (Aufschreiben!)
ClipCapIt-220427-120914.PNG OpenSSH-Server auswählen => Erledigt (für Zugriff z.B. mit Putty)
ClipCapIt-220427-120938.PNG Erledigt

Ab jetzt heißt es abwarten. Wenn er kann lädt er gleich ein paar Sicherheitsupdates nach:

ClipCapIt-220427-121943.PNG Jetzt neustarten
ClipCapIt-220427-122036.PNG ISO aus der VM entfernen und Enter drücken
ClipCapIt-220427-122152.PNG 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:

ClipCapIt-200521-155245.PNG ClipCapIt-200521-155339.PNG ClipCapIt-200521-160706.PNG

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

Important.png
Hinweis: Ob nun wie ich immer als root arbeiten wollt oder aber als einfacher Benutzer und dann immer 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
ClipCapIt-200521-161108.PNG
  • 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
ClipCapIt-200521-161435.PNG

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

Important.png
Hinweis:

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 wechseln

Anmelden 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.

ClipCapIt-200521-162422.PNG

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
ClipCapIt-200521-162802.PNG

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:

ClipCapIt-200521-163633.PNG

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
Face-wink.png
Tipp: Zum kopieren der oberen Zeile mit der Maus vor das 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.

Warning.png
Warnung: Das müsst Ihr nur machen falls Ihr noch keine Partition habt, also kein /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