slider
Hinweis nach DSGVO: Diese Website verwendet nicht personalisierte Anzeigen von Google Adsense und im Zusammehang damit Cookies. Weitere Informationen finden Sie in der Datenschutzerklärung.
logo mit Text lexexakt.de Werbung
Artikel Diskussion (0)
nextcloud
(it.nextcloud)
    

Inhalt
          1. 1. Übersicht
          2. 2. Hardware
             2.1. Raspberry/Desktop AMD/Intel NUC
             2.2. Raspberry PI
             2.3. INTEL NUC Kit NUC5PPYH
          3. 3. Betriebssystem, z.B. Debian/raspian
             3.1. update debian/raspbian/ubuntu
          4. 4. Webserver
             4.1. nginx
             4.2. apache2
             4.3. nginx
          5. 5. PHP (7.3)
             5.1. php.ini
             5.2. Notwendige Module für PHP:
                5.2.1. Modul ZIP (php-zip)
                5.2.2. Modul APCu
          6. nextcloud
          7. 6. mariadb
             7.1. Problem: Exception File Locked
          8. https/letsencrypt.org
             8.1. Erneuern:
             8.2. Problem: Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG
          9. DynDNS
          10. RAID-System
          11. nmon
          12. Autoshutdown/Wake on LAN
             12.1. Änderungslog nextcloud mit Problemen

1. 1. Übersicht

Nextcloud, PHP (z.B. Vers. 7.0), Webserver (z.B. apache2 oder nginx), Datenbank (postgres oder maria), Betriebssystem (z.B. Linux) und Hardware (z.B. raspberry Pi mit Harddisks) sind sechs verschiedene Komponenten die aufeinander aufbauen aber überwiegend austauschbar sind und zusammen den Betrieb einer "eigenen" cloud ermöglichen.

2. 2. Hardware

2.1. Raspberry/Desktop AMD/Intel NUC

Als Hardware kann ein raspberry oder ein beliebiger AMD/Intel-PC genutzt werden. Empfehlenswert der Einsatz von schnellen SSD-Platten um die Zugriffszeiten so kurz wie möglich zu halten. Dazu kommt ein Netzwerkanschluss mit möglichst hohem UP-/DOWN-Link, wenn die Cloud nicht nur im internen Netzwerk arbeiten soll.

Bei der Hardwareauswahl sollte ein Kompromiss zwischen Stromverbrauch und Leistung gefunden werden, hier kommt es auf jedes Watt an, da der Server ja 24/7 laufen wird. Ein an sich ausreichender 5 Jahre alter Desktop PC mit einer max. Leistungsaufnahme von 350 KW verursacht nennenswert mehr Stromkosten als z.B. ein Intel NUC (max. 10 Watt) oder rasperry PI (max 7.6 Watt).

  1. 350 Watt bei 0,29 Cent verursachen im Dauerbetrieb rund 880,-/Jahr
  2. 10 Watt bei 0,29 Cent verursachen im Dauerbetrieb rund 25,-/Jahr
  3. 7,6 Watt bei 0,29 Cent verursachen im Dauerbetrieb rund 19,25/Jahr
  4. Quelle: https://www.wiwo.de/tools/stromkostenrechner

D.h. im Vergleich mit Kosten für externes Hosting (192,- Euro/Jahr für 200 GB) fällt die Nutzung eines alten Desktops als Alternative weg, auch wenn man die Einmalkosten für einen NUC (ca. 130,- für 240 GB) oder Raspberyy (ca. 100,- Euro) berücksichtigt.

2.2. Raspberry PI

Funktioniert grundsätzlich ohne Probleme. Die Anbindung von Hdd-Festplatten über USB führt allerdings zu Verzögerungen beim Zugriff.

2.3. INTEL NUC Kit NUC5PPYH

Auch ein NUC Kit NUC5PPYH von Intel kommt in Betracht. Einschränkung kann es insoweit mit der Kompatibilität zu verschiedenen Linux Distributionen kmmen. Siehe unten

3. 3. Betriebssystem, z.B. Debian/raspian

Auf die Hardware setzt ein Betriebssystem auf, üblicherweise eine Linux-Variante. Raspbian für raspberry Pi oder debian für Desktopsysteme. Das gewählte Betriebssystem ist mittels Bootimages auf die gewünschte Hardware aufzuspielen. Bie Debian kann z.B. unter Windows mittels der Software Rufus eine USB-Stick/CD-ROM erstellt werden.

Das NUC Kit NUC5PPYH hatte Probleme mit dem X-Server unter Debian 10 (Buster), ohne Probleme hingegen liess sich ein Ubutunu 20.04 installieren.

Das Clear-Linux von Intel habe ich nicht probiert.

3.1. update debian/raspbian/ubuntu

$ sudo apt-get upgrade

$ sudo apt-get update

4. 4. Webserver

4.1. nginx

Unter ubuntu muss man sich darüber klaren werden, ob man die stabilen Quellen des Pakets oder die aktuelleren des Herstellers verwenden möchte.

4.2. apache2

Da nextcloud ein webbasierter Dienst, muss ein Webserver, wie z.B. apache2 oder nginx laufen.

Installation/Konfiguration

Um Apache zu installieren ist der Befehl:

apt-get install apache2 

Apache2 wird über

/etc/apache2/apache2.conf
und über die ins das Verzeichnis
/etc/apache2/mods-enabled
verlinkten Dateien aus dem Verzeichnis der verfügbaren (= available)
/etc/apache2/mods-available
konfiguriert. Das Gleiche gilt für die Konfigurationen (confs).

Beispiel: Nach der Installation von PHP müssen die beiden Dateien

php7.0.conf
und
php7.0.load
in das Verzeichnis
/etc/apache2/mods-enabled
verlinkt werden:
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/php7.0.conf
sudo ln -s ../mods-available/php7.0.load

Mit dem Befehlt:

apachectl -t -D DUMP_MODULES

Können die geladenen Module angezeigt werden.

$ sudo service apache2 restart

error-log

/var/log/apache2/error.log

Notwendige weitere Installationspakete

  1. libapache2-mod-php
  2. wget [wird später für zum Download des nextcloud.zip gebraucht]
  3. unzip [wird zum auspacken des nextcloud.zip gebraucht]

4.3. nginx

Die Alternatvie zu apache is nginx. Im wesentlichen ist nginx wie apache zu bedienen. Es gilt z.B. auch für einen Neustart:

sudo service nginx restart

5. PHP (7.3)

PHP (PHP: Hypertext Preprocessor) ist eine serverseitig interpretierte Seitenbeschreibungssprache mit der dynamischer HTML Code geschrieben werden kann. PHP muss in apache2 intergriert werden und kann insoweit als Modul von apache2 betrachtet werden.

5.1. php.ini

Die php.ini enthält die Konfigurationsdaten für das PHP-Modul. Es gibt jeweils eine davon in den Verzeichnissen

/etc/php/7.4/cli/
/etc/php/7.4/fpm/
/etc/php/7.4//phpdbg/

Dabei sind die Einstellungen im Unterverzeichnis cli (= Comand Line Interface) maßgeblich für die PHP-Skripte die über die Lokal über das Command Line Interface interpretiert werden. Überprüfen kann man mit dem Befehl:

php --ini | grep php.ini

Die Antwort lautet dann:

Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini

Die php.ini im Verzeichnis ./fpm ist maßgeblich für die Interpretation der PHP-Skripte durch den Webservr (z.B. nginx). Was man wiederum über eine index.php mit dem folgendem Befehl als einzigem Inhalt:

phpinfo();
ermittlen kann. Die Antwort sollte lauten:
PHP Version 7.4.3
(...)
Configuration File (php.ini) Path 	/etc/php/7.4/fpm
Loaded Configuration File 	/etc/php/7.4/fpm/php.ini
Scan this dir for additional .ini files 	/etc/php/7.4/fpm/conf.d 

D.h. je nach Anwendungsfall (Command Line oder Webserver) wird eine andere ini-Datei gelesen.

Ergänzend werden die jeweiligen .ini-Datein in dem jeweiligen Verzeichnis conf.d eingelesen. Hier gibt es für verschiedene PHP-Module nochmals eigene Einstellungen.

5.2. Notwendige Module für PHP:

Folgende Module müssen auch mit

apt-get install ...
geladen werden. Dass kann in einem Befehl zusammengefasst werden:
apt-get install php-xml php-cli ...

Mit dem Kommando

php -m
kann man sich zuvor die installierten Module anzeigen lassen.

php-xml 
php-cli 
php-cgi 
php-mbstring 
php-gd 
php-curl 
Modul ZIP (php-zip)
5.2.2. Modul APCu

APCu (= APC User Cache) Ist eine Form des APC (Alternative PHP Cache) der zur Beschleunigung von Zugriffen auf PHP-Sites dient.

Ist Nextcloud für die Nutzung von APCu konfiguriert führt ein fehlen des Moduls zu einem "Internal Server Error".

6. nextcloud

Nextcloud selbst ist ein auf PHP basierender Dienst der innerhalb des Webservers apache2 läuft. Das Paket wird mit dem Befehl

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip

heruntergeladen. Dabei sollte die 18.0.4 durch die aktuelleste Versionsnummer ersetzt werden, die man ggf. googlen kann.

Die Dateien sollten dann nach
/var/www/html/
verschoben werden mit
sudo mv nextcloud-18.0.4.zip /var/www/html/

Dort muss dass Paket dann "unziped" werden und der Inhalt in das html-Verzeichnis kopiert werden, dessen Rechte/Eigentümerschaft angepasstw werden müssen (www-data:www-data), damit apache2 zugreifen kann.

Maintenance-Mode

$ sudo -u www-data php occ maintenance:mode --on

$ sudo -u www-data php occ maintenance:mode --off
/var/www/html/

occ commandos ausführen

sudo -u www-data php occ [Kommando]

Die Configurationsdatei unter:

/var/www/html/config/

7. 6. mariadb

Installation/Konfiguration

Installiert wird die Datenbank MariaDB/mySQL auch über

apt-get install mariadb-server 

Wichtig ist dass auch das php-Modul:

php-mysql
installiert worden ist/wird.

Es muss dann ein Root-User, eine Datenbank und ein Datenbanknutzer angelegt werden.

Augerufen wird die Datenbank über den Befehl:

mysql -u root -p

Auf das -u folgt der Nutzername (hier root), das -p führt zur Passwordabfrage.

7.1. Problem: Exception File Locked

nextcloud in maintenancemode versetzen!

$ sudo mariadb --password=XXXXX
MariaDB[(none)]>  show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nextcloud          |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

MariaDB[(none)]> use nextcloud;
MariaDB[(none)]> delete from oc_file_locks where 1;
MariaDB[(none)]> exit;
$ 

maintenance-mode beenden!

8. https/letsencrypt.org

Unter:

:/etc/apache2/sites-available#

liegt eine Konfigurationdatei für den virtuellen SSL-Host z.B.

000-default-le-ssl.conf

Diese Konfiguration muss aktiviert werden mit dem Kommando

a2ensite 000-default-le-ssl.conf
und verweist auf den Speicherort für die Schlüsseldateien.

Z.B: /etc/letsencrypt/live/domain.de/

This directory contains your keys and certificates.

`privkey.pem`  : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem`     : will break many server configurations, and should not be used
                 without reading further documentation (see link below).

We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

8.1. Erneuern:

sudo /etc/letsencrypt/letsencrypt-auto renew

(...)
-------------------------------------------------------------------------------
Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/sub.example.com/fullchain.pem (success)
-------------------------------------------------------------------------------

Achtung der Prozess benötigt an der Stelle

Creating virtual environment...
Installing Python packages...
mehrere Minuten für die Ausführung.

Nach Abschluss muss ggf. der Server (z.B. apache2) neu gestartet werden (siehe dort).

8.2. Problem: Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG

1. Https läuft über Port 443, daher muss der Port offen sein. Dass kann wie folgt überprüft werden:

$ nmap host.com

Starting Nmap 7.01 ( https://nmap.org ) at 2019-10-12 13:15 CEST
Nmap scan report for host.com (192.168.178.35)
Host is up (0.020s latency).
Other addresses for host.com (not scanned): 2003:dd:9f48:de00:ec7a:6c4d:6313:7bff
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
139/tcp open  netbios-ssn
443/tcp open  https
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds

2. Der virtuelle SSL host (VHOST) muss aktiviert sein:

apachectl -t -D DUMP_VHOSTS
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:443                  host.com (/etc/apache2/sites-enabled/000-default-le-ssl.conf:2)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)

Läuft kein virtueller Host für https auf Port 443 muss dieser host aktiviert werden. Siehe oben.

9. DynDNS

10. RAID-System

Alle Blockdevices anzeigen:

$ blockdev --report

sudo apt-get install mdadm -y

sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1

Status abfragen

cat /proc/mdstat

Auswerten:;

  • [UU]
    Array ist intakt und synchron
  • [U_]
    Eine Platte ist nicht synchron

Ist eine Platte nicht synchron ist es sinnvoll die Details abzufragen:

Details abfragen

$ mdadm --detail /dev/md0

Je nach Status muss die fehlende Platte wieder hinzugefügt (siehe unten) oder ein resync durchgeführt werden.

Platte entfernen

$ mdadm /dev/md1 -r /dev/sdb1

Platte hinzufügen

$ mdadm /dev/md0 -a /dev/sdb1

11. nmon

Mit nmon kann über die Konsole ein ...

12. Autoshutdown/Wake on LAN

Über cron (user root) wird alle 20 Minuten (kann mit [crontab -u root -e] geändert werdeSkriptmit dem Namen checkshutdwon.sh aufgerufen.

Das Skript liegt in:

/usr/local/sbin$

12.1. Änderungslog nextcloud mit Problemen

Update auf 21.0.3:

$ sudo -u www-data php /var/www/nextcloud/occ  maintenance:repair
An unhandled exception has been thrown:
OCHintException: [0]: Memcache OCMemcacheAPCu not available for local cache (Is the matching PHP module installed and enabled?)

Lösung: in

/etc/php/8.0/mods-available/apcu.ini
ist die Zeile
apc.enable_cli=1
einzufügen. Es wird auch empfohlen die Zeile in der php.ini (siehe oben) zu ergänzen.

Werbung:

Auf diesen Artikel verweisen: keine Verweise Werbung: