Homeserver/NAS mit Ubuntu 18.04: Teil 5, Nextcloud

Homeserver 18.04 Teil 5 Beitragsbild

Dieser Artikel ist Teil der Reihe selbstgebauter Homeserver/Nas mit Ubuntu 18.04

Anzeige:

Nextcloud ist die Eierlegende-Wollmilchsau für selbstgehostete Cloudanwendungen. Das Projekt findet sich unter nextcloud.com, ist OpenSource und kann kostenlos heruntergeladen und genutzt werden.

In Nextcloud können Kalender und Kontakte gespeichert werden und mit dem Smartphone synchronisiert werden. Nextcloud kann Dienste wie Google Calendar komplett ersetzten. Außerdem gibt es einen Desktopclient mit welchem Dateien über mehrere Computer synchronisiert werden können, genau wie das bei Diensten wie Dropbox der Fall ist. Eine App für das Smartphone ermöglicht den Zugriff auf die Dateien von unterwegs. Außerdem ermöglicht die App den sofortigen Upload von Fotos oder Videos die mit dem Smartphone erstellt werden. Nextcloud bietet ein übersichtliches Webinterface, über welches man von jedem Computer mit jedem Webbrowser auf die Dateien auf dem Homeserver zugreifen kann.

Nextcloud ist in PHP geschrieben und benötigt einen Webserver und eine Datenbank.

Als Webserver wird Apache und als Datenbank MariaDB installiert.

Installation der MariaDB-Datenbank

MariaDB ist ein Datenbank-Server, welcher kompatibel zu Oracles MySQL-Server ist. Da Oracle den freien MySQL-Server sehr stiefmütterlich behandelt wird zunehmend auf MariaDB als Alternative gesetzt.

Der Datenbank-Server wird installiert mit

sudo apt install mariadb-server

Mit dem nächsten Befehl kann die MariaDB Installation abgesichert, bzw. für den Produktivbetrieb bereit gemacht werden indem z.B. der anonyme Benutzer gelöscht wird.

Im Gegensatz zu anderen Distributionen, oder wenn MariaDB aus anderen Quellen installiert wird, findet bei Ubuntu die Authentifizierung über einen Unix-Socket mit den Rechten des lokalen Benutzer statt. Wenn also ein MariaDB-Befehl als Root oder mit sudo aufgerufen wird, wird dieser auch als Rootuser im Datenbankserver ausgeführt. Ein lokaler Benutzer der sudo nicht nutzen darf (z.B. die bereits angelegten User heimnetz und heimgast) hat auch keinen Rootzugriff auf den Datenbankserver. Aus diesem Grund ist es nicht nötig und nicht sinnvoll in dieser Konfiguration ein Rootpasswort für den Datenbankserver zu vergeben. Wer sich für weitere Details interessiert findet hierzu einen interessanten Beitrag im Blog von Michael Kofler.

Die Absicherung erfolgt nun mit folgendem Befehl und folgenden Antworten:

Anzeige:
sudo mysql_secure_installation

Enter current password for root (enter for none): Enter
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Anlegen der Datenbank für Nextcloud

Nach der Installation des Datenbabank-Servers kann die Datenbank für die Nextcloud angelegt werden. Als erstes muss man sich auf dem Datenbank-Server einloggen.

sudo mysql -u root

Dann wird eine neue Datenbank mit dem Namen nextcloud angelegt

CREATE DATABASE nextcloud;

Im nächsten Schritt wird ein neuer Datenbankbenutzer für die Nextcloud Installation vergeben. Für diesen Benutzer wird ein Passwort vergeben, da dieser im Gegensatz zum Rootuser nicht an ein lokales Benutzerkonto gekoppelt ist. Das Passwort muss natürlich individuell festgelegt werden.

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';

im letzten Schritt werden dem Benutzer nextcloud alle Rechte an der gleichnamigen Datenbank eingeräumt.

GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Damit ist die Datenbank bereit. Die Änderungen werden nur noch gespeichert und anschließend loggen wir uns aus dem Datenbankserver wieder aus.

FLUSH PRIVILEGES;
EXIT;

Installation des Apache Webserver

Nun wird der Apache Webserver installiert. Die Wahl fällt auf Apache, weil dieser weit verbreitet, gut dokumentiert ist und in der offiziellen Dokumentation von Nextcloud verwendet wird. Das Ausführen der PHP-Dateien übernimmt mod_php, eine Erweiterung für Apache.

Apache und mod_php werden mit diesem Befehl installiert:

sudo apt install apache2 libapache2-mod-php7.2

Außerdem benötigt Nextcloud weitere PHP-Module, welche mit den folgenden Befehl installiert werden:

sudo apt install php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php-imagick php7.2-xml php7.2-zip

Damit ist der Webserver grundsätzlich schon einsatzbereit. Ein Aufruf im Webbrowser über http://mimashome.ddns.org oder die IP-Adresse http://192.168.30.114 gibt bereits eine Webseite aus.

Anzeige:

Apache Default Page

Einrichten des Let’s Encrypt https-Zertifikats

Damit die Übertragung der Daten über das Internet verschlüsselt und ohne störende Fehlermeldungen des Browsers erfolgen kann, wird ein Schlüsselpaar und ein Verschlüsselungszertifikat benötigt. Seit der Gründung von Let’s Encrypt sind solche, von allen Browsern und Betriebssystemen anerkannte Zertifikate nicht nur kostenlos sondern auch automatisiert und sofort zu erhalten. Ein echter Meilenstein für das Internet.

Die Erstellung der Schlüssel und das Beantragen, sowie die anschließende Zertifikatsverwaltung übernimmt die Software Certbot, welche zuerst wieder installiert werden muss.

sudo apt install certbot python-certbot-apache

Dann wird ein Schlüsselpaar erstellt und ein Zertifikat für unsere DynDNS Adresse beantragt.

sudo certbot --apache certonly

Hierzu müssen ein paar Fragen beantwortet werden

  • Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
    cancel): deine Emailadresse für Benachrichtigungen
  • Please read the Terms of Service. (A)gree/(C)ancel: A
  • Would you be willing to share your email address with the Electronic Frontier
    Foundation. (Y)es/(N)o: Y oder N, je nachdem ob man Mitteilungen Lets Encrypt bekommen möchte
  • No names were found in your configuration files. Please enter in your domain
    name(s) (comma and/or space separated) (Enter ‘c’ to cancel): mimashome.ddns.net

Jetzt werden die Daten überprüft und die Zertifikate erstellt und unter /etc/letsencrypt/live/mimashome.ddns.net gespeichert.

Wichtig: Dieser Punkt muss erfolgreich abgeschlossen werden, ansonsten werden die weiteren Schritte, sowie der Zugriff auf Nextcloud nicht funktionieren. Wenn die Erstellung der Zertifikate fehlschlägt, liegt wahrscheinlich ein Fehler bei der DynDNS-Konfiguration oder der Portweiterleitung im Router vor.

Wenn die Verifizierung der Domain und die Erstellung der Zertifikate erfolgreich war, beendet sich Certbot mit folgendem Hinweis.

Certbot erfolgreich

Automatische Erneuerung der Zertifikate einrichten

Aus Sicherheitsgründen sind Let’s Encrypt Zertifikate nur drei Monate gültig. Sofern einem das Zertifikat abhanden kommt, ist der potentielle Schaden geringer als bei einem Zertifikat mir langer Laufzeit. Um ein wartungsarmes System zu bekommen muss die Aktualisierung der Zertifikate automatisiert werden. Dies übernimmt ein Cronjob, der wiederum regelmäßig einen Certbot-Befehl zum erneuern des Zertifikats ausführt.

Hierzu öffnen wir die Datei /etc/crontab

sudo nano /etc/crontab

und fügen vor der abschließenden Raute den folgenden Befehl ein:

Anzeige:
@weekly root certbot renew

die crontab sollte dann etwa so aussehen

Crontab für Let's Encrypt

Damit wird einmal wöchentlich die Gültigkeitsdauer aller vorhandenen Zertifikate überprüft und bei Bedarf eine Neuausstellung beantragt.

Installation von Nextcloud und Konfiguration des Apache Webserver

Als erstes besorgen wir uns die Nextcloud Dateien. Diese findet man auf der offiziellen Webseite unter Downloads. Die Dateien können aber auch direkt über die Kommandozeile heruntergeladen werden, wobei wir zuerst in unser Homeverzeichnis wechseln und dann den Download starten.

cd ~
wget https://download.nextcloud.com/server/releases/latest.tar.bz2

Damit wird automatisch die aktuelle Version von Nextcloud heruntergeladen (Danke für den Tipp in den Kommentaren).

Nach dem Download werden die Dateien nach /var/www/html entpackt. Dies ist das Standardverzeichnis in welchem der Apache Webserver Webseiten erwartet. Beim entpacken wird automatisch das Unterverzeichnis Nextcloud erstellt. Anschließend werden die Dateirechte auf den Benutzer des Apache Webservers geändert, so dass Apache die Dateien lesen und für Updates auch beschreiben darf.

sudo tar -xjvf latest.tar.bz2 -C /var/www/html/
sudo chown -R www-data:www-data /var/www/html/nextcloud

Apache konfigurieren

Nun folgt noch die Konfiguration des Webservers. Für jeden Dienst der über Apache ausgeliefert wird, wird eine sogenannte Virtual-Host unter /etc/apache2/sites-available Konfiguration erstellt. Diese erstellen wir mit dem folgenden Befehl und öffnen die leere Datei anschließend mit dem Texteditor.

sudo touch /etc/apache2/sites-available/001-nextcloud.conf
sudo nano /etc/apache2/sites-available/001-nextcloud.conf

In diese Date wird folgender Inhalt kopiert:

<VirtualHost *:80>
ServerName mimashome.ddns.net

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Redirect permanent / https://mimashome.ddns.net
</VirtualHost>

<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
<VirtualHost *:443>

ServerName mimashome.ddns.net

DocumentRoot /var/www/html/nextcloud

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# SSL Konfiguration
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mimashome.ddns.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mimashome.ddns.net/privkey.pem
SSLProtocol All -SSLv2 -SSLv3 -TLSv1.1

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>

#Nextcloud Konfiguration
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>

</VirtualHost>
</IfModule>

Nun wird die bereits vorhandene Standardseite deaktiviert und dafür unsere neue Nextcloudkonfiguration aktiviert.

sudo a2dissite 000-default.conf
sudo a2ensite 001-nextcloud.conf

Außerdem benötigt Nextcloud noch ein paar weitere Apache Module, die mit diesem Befehl aktiviert werden.

sudo a2enmod ssl rewrite headers env dir mime

Damit alle jetzt vorgenommenen Änderungen aktiviert werden muss der Apache Webserver einmal neu gestartet werden mit

sudo systemctl restart apache2

Nextcloud einrichten

Jetzt kann Nextcloud über den Webbrowser eingerichtet werden. Dazu wird die angelegte Dyndns Adresse über eine verschlüsselte https-Verbindung aufgerufen. https://mimashome.ddns.net.
Hier werden wir bereits von der funktionierenden, aber noch nicht eingerichteten Nextcloud empfangen.

Zuerst müssen wir jedoch im Dateisystem noch ein Verzeichnis anlegen in welches Nextcloud unsere Dateien speichert. In der Standardeinstellung würden diese auf der SystemSSD liegen. Wir wollen aber natürlich dass die Dateien auf unserem sicheren Storage-Raid abgelegt werden. Dazu wird das Verzeichnis zuerst erstellt und anschließend die Rechte so angepasst dass Apache und damit Nextcloud Zugriff bekommen.

sudo mkdir -p /mnt/storage/nextcloud
sudo chown -R www-data:www-data /mnt/storage/nextcloud

Dann werden die Felder auf der Konfigurationsseite ausgefüllt.

  • Benutzername und Passwort können hier frei vergeben werden. Hiermit loggt man sich später in die Nextcloud ein
  • Dateiverzeichnis sollte geändert werden, so dass dieses nicht auf der SystemSSD sondern auf unseren Storage-Raid liegt. In diesem Fall /mnt/storage/nextcloud
  • Datenbank-Benutzer ist nextcloud
  • Datenbank-Password ist das beim Anlegen der Datenbank vergebene Passwort
  • Datenbank-Name ist nextcloud
  • localhost bleibt unverändert, da sich die Datenbank auf dem gleichen Computer befindet.

Mit einem Klick auf Installation abschließen wird Nextcloud eingerichtet und einsatzbereit gemacht.

Nextcloud einrichten

Damit ist Nextcloud grundsätzlich Einsatzbereit. Allerdings haben wir derzeit nur Zugriff auf die Dateien unter /mnt/storage/nextcloud. Daten die wir über die im vorherigen Artikel  angelegt haben sind noch nicht erreichbar.

Dies lösen wir dadurch, dass über die Nextcloud App “external storage support” die bereits vorhandenen Verzeichnisse eingebunden werden. Damit Nextcloud auch Schreibzugriff auf die Dateien hat, die ja mit dem Benutzer heimnetz erstellt werden und nicht mit dem Benutzer des Webservers, benötigen wir noch die Software smbclient, die wieder über das Terminal installiert werden muss. Damit Nextcloud die Änderung mitbekommt starten wir anschließend den Apache einmal neu.

sudo apt install smbclient
sudo systemctl restart apache2

Zum aktivieren der App in Nextcloud klickt man in der rechten oberen Ecke auf das Symbol mit dem Anfangsbuchstaben des Benutzernamens und anschließend auf Apps.

Bei den Apps findet man unter dem Punkt deaktivierte Apps die App External Storage Support, welche mit einem Klick auf aktivieren verfügbar gemacht wird.

Nextcloud Apps aktivieren

Zum Einbinden der vorhandenen Ordner gehen wir wieder auf das Symbol in der rechten oberen Ecke und anschließend auf Einstellungen. Im linken Bereich findet man verwirrender Weise zwei Punkte mit dem Namen “Externe Speicher“. Zum Einrichten benötigen wir den unteren.

  • Ordnername wird entsprechend der Freigabe benannt. Z.B. lokale Videos
  • Externer Speicher ist SMB/CIFS
  • Authentifizierung ist Benutzername und Passwort
  • Konfiguration:
    Host ist localhost
    Share ist der Name der Freigabe. Z.B. Video
    Entfernter Unterordner bleibt leer
    Domain bleibt ebenfalls leer
    Benutzername ist heimnetz oder heimgast. Je nachdem ob die Dateien mit Schreibrechten (heimnetz) oder aus Sicherheitsgründen nur mit Leserechten (heimgast) eingebunden werden sollen
    Passwort ist das zum Benutzername gehörende Passwort

Ein klick auf den kleinen Haken am Ende des Formularfeldes bindet den Ordner in Nextcloud ein.

Nextcloud mount SMB-Shares

Dies wird für alle Freigaben wiederholt, die in Nextcloud eingebunden werden sollen. Also z.B. Audio, Dokumente…

Anschließend sind die eingebundenen Freigaben über Nextcloud erreichbar.


Homeserver/NAS mit Ubuntu 18.04: Teil 1, Einleitung, Hardware und Kosten
Homeserver/NAS mit Ubuntu 18.04: Teil 2, Systeminstallation
Homeserver/NAS mit Ubuntu 18.04: Teil 3, Grundkonfiguration
Homeserver/NAS mit Ubuntu 18.04: Teil 4, Dateifreigaben im Heimnetz
Homeserver/NAS mit Ubuntu 18.04: Teil 5, Nextcloud
Homeserver/NAS mit Ubuntu 18.04: Teil 6, Media Streaming mit Plex
Homeserver/NAS mit Ubuntu 18.04: Teil 7, Backups mit Duplicati und Rsnapshot


Anzeige:
Echo Show, Intelligenter Lautsprecher mit 7-Zoll Bildschirm und Alexa - schwarz
Echo Show, Intelligenter Lautsprecher mit 7-Zoll Bildschirm und Alexa - schwarz
Preis: € 119,99 Prime
(1269 Bewertungen)
Jetzt auf Amazon kaufen
Preis inkl. MwSt., zzgl. Versandkosten
Aktualisiert am 20. November 2018 um 0:46 . Preise können sich geändert haben. Alle Angaben ohne Gewähr.

39 Kommentare

  1. Hi Niko,
    noch eine Frage zur Systemsicherheit. Der hier gezeigte Daten-Server (NAS) beherbergt die Next-Cloud, hier im Artikel ist die einzige (?) Sicherheitsstufe Username und Passwort oder irre ich mich? Sollte der Server, der nextcloud hostet nicht mit weiteren Massnahmen gehärtet werden? two-factor-authentification und/oder fail2ban… ich weiß nicht, was es noch gibt. Oder wie machst Du das?
    Gruß, Alex

    • Klar, du kannst das beliebig ausbauen. Das ist ja der Vorteil von einem selbstkonfigurierten System. Nextcloud bring eine Brute Force Protection mit, die das reihenweise durchprobieren von Passwörtern verhindert. Natürlich kannst du zusätzlich Fail2ban konfigurieren. Two factor authentication ist immer eine gute Idee, birgt aber auch die Gefahr sich selbst auzusperren, wenn man den zweiten Faktor/Handy verliert.
      Wie gesagt, man kann diese Tutorial beliebig ausbauen. Dann ist es aber schnell nicht mehr einsteigerfreundlich.

  2. Habe eigentlich vor einen kleinen Homeserver mit Proxmox aufzusetzen und dort einige Linux Container und 2-3 VM laufen zu lassen. U.a. Nextcloud, OMV, Asterisk….

    Übrigens: tolle Anleitung, nur das mit Let´s Encrypt werde ich benötigen. Eventl. ein Sef-signed Certificate

  3. Hi.
    Deine Anleitung ist ganz nett, aber ich habe ein großes Problem. Ich komme nur bis zu dem Punkt, wo Apache fertig konfiguriert wurde und neugestartet wird. Beim Neustarten von Apache kommt das hier:
    stephanj@UbuntuServerSJL:~$ sudo systemctl restart apache2
    Job for apache2.service failed because the control process exited with error code.
    See “systemctl status apache2.service” and “journalctl -xe” for details.

    als “systemctl status apache2.service” kommt das:

    ● apache2.service – The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
    Drop-In: /lib/systemd/system/apache2.service.d
    └─apache2-systemd.conf
    Active: failed (Result: exit-code) since Fri 2018-08-17 18:35:01 CEST; 3min 34s ago
    Process: 29940 ExecStop=/usr/sbin/apachectl stop (code=exited, status=1/FAILURE)
    Process: 29948 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
    Main PID: 24040 (code=exited, status=0/SUCCESS)

    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: Starting The Apache HTTP Server…
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: AH00526: Syntax error on line 23 of /etc/apache2/sit
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: SSLCertificateFile: file ‘/etc/letsencrypt/live/medi
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: Action ‘start’ failed.
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: The Apache error log may have more information.
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: apache2.service: Control process exited, code=exited statu
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: apache2.service: Failed with result ‘exit-code’.
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: Failed to start The Apache HTTP Server.

    und als “journalctl -xe” das:

    Job for apache2.service failed because the control process exited with error code.
    See “systemctl status apache2.service” and “journalctl -xe” for details.
    stephanj@UbuntuServerSJL:~$ journalctl -xe
    — Subject: Unit apache2.service has begun start-up
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit apache2.service has begun starting up.
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: AH00526: Syntax error on line 23 of /etc/apache2/sit
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: SSLCertificateFile: file ‘/etc/letsencrypt/live/medi
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: Action ‘start’ failed.
    Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: The Apache error log may have more information.
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: apache2.service: Control process exited, code=exited statu
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: apache2.service: Failed with result ‘exit-code’.
    Aug 17 18:35:01 UbuntuServerSJL systemd[1]: Failed to start The Apache HTTP Server.
    — Subject: Unit apache2.service has failed
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit apache2.service has failed.

    — The result is RESULT.
    Aug 17 18:35:01 UbuntuServerSJL sudo[29937]: pam_unix(sudo:session): session closed for user root
    Aug 17 18:39:01 UbuntuServerSJL CRON[30014]: pam_unix(cron:session): session opened for user root by (
    Aug 17 18:39:01 UbuntuServerSJL CRON[30015]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ !
    Aug 17 18:39:01 UbuntuServerSJL CRON[30014]: pam_unix(cron:session): session closed for user root
    Aug 17 18:39:24 UbuntuServerSJL systemd[1]: Starting Clean php session files…
    — Subject: Unit phpsessionclean.service has begun start-up
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit phpsessionclean.service has begun starting up.
    Aug 17 18:39:24 UbuntuServerSJL systemd[1]: Started Clean php session files.
    — Subject: Unit phpsessionclean.service has finished start-up
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit phpsessionclean.service has finished starting up.

    — The start-up result is RESULT.
    Aug 17 18:40:00 UbuntuServerSJL sudo[30096]: stephanj : TTY=pts/0 ; PWD=/home/stephanj ; USER=root ; C
    Aug 17 18:40:00 UbuntuServerSJL sudo[30096]: pam_unix(sudo:session): session opened for user root by s
    Aug 17 18:40:00 UbuntuServerSJL systemd[1]: Starting The Apache HTTP Server…
    — Subject: Unit apache2.service has begun start-up
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit apache2.service has begun starting up.
    Aug 17 18:40:00 UbuntuServerSJL apachectl[30099]: AH00526: Syntax error on line 23 of /etc/apache2/sit
    Aug 17 18:40:00 UbuntuServerSJL apachectl[30099]: SSLCertificateFile: file ‘/etc/letsencrypt/live/medi
    Aug 17 18:40:00 UbuntuServerSJL apachectl[30099]: Action ‘start’ failed.
    Aug 17 18:40:00 UbuntuServerSJL apachectl[30099]: The Apache error log may have more information.
    Aug 17 18:40:00 UbuntuServerSJL systemd[1]: apache2.service: Control process exited, code=exited statu
    Aug 17 18:40:00 UbuntuServerSJL systemd[1]: apache2.service: Failed with result ‘exit-code’.
    Aug 17 18:40:00 UbuntuServerSJL systemd[1]: Failed to start The Apache HTTP Server.
    — Subject: Unit apache2.service has failed
    — Defined-By: systemd
    — Support: http://www.ubuntu.com/support

    — Unit apache2.service has failed.

    — The result is RESULT.
    Aug 17 18:40:00 UbuntuServerSJL sudo[30096]: pam_unix(sudo:session): session closed for user root

    Kannst du mir helfen?
    Mfg
    Stephan

    • Die entscheidenden Zeilen sind:
      Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: AH00526: Syntax error on line 23 of /etc/apache2/sit
      Aug 17 18:35:01 UbuntuServerSJL apachectl[29948]: SSLCertificateFile: file ‘/etc/letsencrypt/live/medi
      Die Zeilen sind in deinem Post am Ende abgeschnitten. Man sieht aber dass in Zeile 23 der Konfigurationsdatei ein Syntaxfehler ist, also irgendetwas ist falsch geschrieben. Außerdem ist irgendwas mit dem Zertifikat. evtl. existiert es nicht oder der Pfad ist nicht korrekt.
      Du kannst auch mal schauen was das Error Log unter /var/log/apache2/error.log sagt.

      • Zeile habe ich bearbeitet, jetzt kommt dafür:

        Aug 17 18:53:45 UbuntuServerSJL apachectl[30246]: Action ‘start’ failed.
        Aug 17 18:53:45 UbuntuServerSJL apachectl[30246]: The Apache error log may have more information.
        Aug 17 18:53:45 UbuntuServerSJL systemd[1]: apache2.service: Control process exited, code=exited status=1
        Aug 17 18:53:45 UbuntuServerSJL systemd[1]: apache2.service: Failed with result ‘exit-code’.
        Aug 17 18:53:45 UbuntuServerSJL systemd[1]: Failed to start The Apache HTTP Server.
        — Subject: Unit apache2.service has failed
        — Defined-By: systemd
        — Support: http://www.ubuntu.com/support

        — Unit apache2.service has failed.

      • Oder auch:

        — Unit apache2.service has begun starting up.
        Aug 17 19:12:16 UbuntuServerSJL apachectl[30466]: Action ‘start’ failed.
        Aug 17 19:12:16 UbuntuServerSJL apachectl[30466]: The Apache error log may have more information.
        Aug 17 19:12:16 UbuntuServerSJL systemd[1]: apache2.service: Control process exited, code=exited status=1
        Aug 17 19:12:16 UbuntuServerSJL systemd[1]: apache2.service: Failed with result ‘exit-code’.
        Aug 17 19:12:16 UbuntuServerSJL systemd[1]: Failed to start The Apache HTTP Server.
        — Subject: Unit apache2.service has failed
        — Defined-By: systemd
        — Support: http://www.ubuntu.com/support

        — Unit apache2.service has failed.

        — The result is RESULT.
        Aug 17 19:12:16 UbuntuServerSJL sudo[30463]: pam_unix(sudo:session): session closed for user root

        Wenn man das mit sudo macht.

      • Error.log sagt nur das:
        [Fri Aug 17 19:12:16.015997 2018] [ssl:emerg] [pid 30473] AH02572: Failed to configure at least one certificate and key for medienserXXXXXX.ddns.net:443
        [Fri Aug 17 19:12:16.016066 2018] [ssl:emerg] [pid 30473] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
        [Fri Aug 17 19:12:16.016179 2018] [ssl:emerg] [pid 30473] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information
        AH00016: Configuration Failed

        Also kurz zusammengefasst, man soll in /var/log/apache2/error.log nachschauen, um den hinweis zu finden, dass man doch bitte in /var/log/apache2/error.log schauen soll. XD

        Sorry für die vielen Kommentare. 🙂

      • Etwas stimmt mit der Konfiguration deiner Zertifikate nicht.
        Hast du das Let’s Encrypt Zertifikat auch vorher erstellt?
        Ansonsten solltest du noch prüfen ob du auch wirklich die Zeilen
        SSLCertificateFile /etc/letsencrypt/live/mimashome.ddns.net/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mimashome.ddns.net/privkey.pem
        so in der Konfigurationsdatei hast und ob die Pfade auch wirklich korrekt sind. Dann sollte es eigentlich passen.

  4. Genau diese Zeilen waren drin, nur mit meinen dns Angaben. Allerdings hat er rum gemeckert. Ich kann es Ja nochmal versuchen. Mit mimashome, oder mit meinem?

    • Mit deinem, sonst kann es nicht klappen.
      Kannst anschließend mit
      cat /etc/letsencrypt/live/mimashome.ddns.net/fullchain.pem
      schauen ob es die Datei auch wirklich gibt. Wenn er dir das Zertifikat anzeigt stimmt auch der Pfad. Ansonsten kommt eine Fehlermeldung

  5. Das hier ist im übrigen die ominöse Zeile 23:
    Aug 17 19:55:01 UbuntuServerSJL apachectl[31393]: SSLCertificateFile: file ‘/etc/letsencrypt/live/medienseXXXXXX.ddns.net/fullchain.pem’ does not exist or is empty

      • Ist erstellt, es liegt eben nur in /etc/letsencrypt/keys und heißt 0000_key-certbot.pem, dementsprechend müsste ich die Zeile abändern, oder nicht?

      • Du musst die Dateinamen natürlich an dein System anpassen. Allerdings solltest Du immer das /etc/letsencrypt/live Verzeichnis nutzen. Deine Schlüsseldatei in /etc/letsencrypt/keys ändert sich bei jeder Erneuerung alle drei Monate. Und dann geht deine Konfiguration wieder kaputt.
        Wenn das “live” Verzeichnis nicht existiert, dann hat die Erstellung, bzw. Verifizierung des Zertifikats nicht funktioniert.

  6. Das gab es nicht. Das habe ich eben jetzt erstellt. Kann man die Zertifizierung einfach neu starten? beim 1. Mal kam auch die Meldung, habe dann das Betriebssystem neuinstalliert, und kam an der selben Stelle.

  7. Hi,

    wie kann man den mehrer vhost in Apache2 aktivieren ?
    Gebe ich diesen Befehl ein:
    sudo a2ensite 002-linux-dash.conf u. Apache2 restarte,
    lande immer wieder auf der Nextcloud seite.

  8. Moin,

    danke deiner Anleitung habe ich mein Nextcloud am Laufen. Leider kann ich meine Kontakte und mein Kalender nicht mit meinem iPhone, iPad oder Macbook synchronisieren.
    Hast du bei diesem Thema Erfahrung und eine Idee was hier falsch läuft. Es kommt immer die Meldung, dass die Accountüberprüfung fehlgeschlagen ist.

    Danke im Voraus.
    Sven

  9. Ja, habe ich. Leider ohne Erfolg. Ich habe keinen Ansatz was da schief läuft bei CalDav bzw. CardDav. Denn alles andere läuft super.
    Gibt es irgend welche logs, die helfen könnten?

  10. Hallo,

    erstmal danke für die Anleitung. Kann mir jedoch bitte jemand bei folgendem Problem helfen:

    Ich starte die maske von nextcloud und gebe alles entsprechend ein und wenn ich dann die Installation abschließen möchte erhalte ich folgende Nachricht:

    Fehler
    Das Datenverzeichnis /mnt/storage/nextcloud kann nicht erstellt oder es kann darin nicht geschrieben werden.

    Der entsprechende Ordner hat volle lese und schreibrechte von “www-data”

    Bitte um Aufklärung

    • Ich denke dass die Fehlermeldung schon korrekt ist. Irgendetwas stimmt mit den Lese-/Schreibrechten des Ordners nicht.
      Vielleicht darf www-data schon gar nicht auf /mnt/storage zugreifen. Prüfe mal ob hier die Rechte auf 0755, bzw. rwxr-xr-x gesetzt sind, so dass alle User auf den Ordner zugreifen dürfen.

  11. Was ich nicht ganz verstehe: Welchen Vorteil hat es, die SMB Shares in Nextcloud als SMB Shares einzubinden anstatt als lokale Shares? Nextcloud und Samba Server befinden sich doch auf dem gleichen Host.

    • Um Probleme mit den Lese-/Schreibberechtigungen auf Dateisystemebene zum umgehen, ohne beide Dienste (Samba und Apache) mit dem selben User laufen zu lassen.

      • Ich verstehe, danke für die Antwort! Ich löse das so:
        bindfs –map=heimnetz/root:@heimnetz/@root /media/storage/share /media/storage/ncshare
        Das macht einen fuse mount vom SMB Share /media/storage/share in /media/storage/ncshare und mappt die Berechtigungen, so dass Nextcloud es passt.
        Dadurch kann man Nextcloud den Share mit den richtigen Rechten anbieten.

  12. Hi,
    die Serverhardware konnte ich nach deinen Vorgaben bauen … läuft gut.
    Owncloud hat mir graue Haare gemacht. Ich musste noch den php-smbclient nachinstallieren, damit SMB/CIFS zur Auswahl steht. In der Domäne musste dann noch die Windows-Arbeitsgruppe (workgroup)eingetragen werden. Warum das so ist … vermutlich irgend etwas im Rahmen der Installation durcheinander geraten, da ich mehrmals PHP und Apache installiert habe.

    Danke für die hervorragende Anleitung! Mal sehen was Plex anrichtet 🙂

    • Wenn eine neue Nextcloud-Version zur Verfügung steht, wird man förmlich mit Hinweisen zugeballert. Die Smartphone App schickt eine Notification, der Desktopclient meldet die neue Version und in der Weboberfläche erscheint auch ein Hinweis.
      Ich nutze dann den eingebauten Updater über die Weboberfläche. Damit ist das Update praktisch mit einem Klick erledigt.

      • Hallo Niko,

        Danke, die Info reicht mir dann 😉

        Bzgl. Zugriff von außen habe ich eine Ergänzung – habe es hoffentlich bei dir nicht überlesen:

        in der /var/www/html/nextloud/config/conig.php muss der URI eingetragen werden, von dem aus zugegriffen werden darf. sonst erhält man eine entsprechende Fehler-MEldung und es erscheint kein Login-Screen.

        vgl. https://docs.nextcloud.com/server/14/admin_manual/installation/installation_wizard.html#trusted-domains

        Vllt. kannst du das noch mit aufnehmen.

        Ansonsten schonmal schöne Woche!
        Matthias

      • Hallo Matthias,
        schön dass Du die Dokumentation liest und nicht einfach nur Befehle kopierst.
        Das manuelle bearbeiten der config.php sollte aber nicht nötig sein. Deine DynDNS-Domain wird automatisch eingetragen, sofern Du das Setup bereits über diese Domain aufrufst. Das ist in der Anleitung der Fall.
        Nur wenn Du die Einrichtung z.B. über http://localhost vornimmst, oder aber die Domain nachträglich änderst, dann musst Du die Domain in die config.php eintragen.
        Wenn man aber nur den Schritten im Tutorial folgt, ist das nicht nötig.
        Gruß
        Niko

  13. Ah, ok, danke. Hab mich in der Tat erst nachträglich entschieden für externen Zugriff. War mir halt noch nicht sicher, ob ich das wirklich möchte 😉

    Tolles Tutorial
    Matthias

  14. Hallo,
    danke für die super Anleitung.
    Lokal in einer Test-VM hat alles super geklappt.
    Nun wollte ich das Ganze live auf dem Server nachvollziehen und scheitere mit Let’s encrypt, da dort AUSSCHLIESSLICH Port 80 oder 443 akzeptiert werden!
    Dies als Hinweis für alle anderen Nutzer.
    Ich habe einen Server mit mehreren VMs laufen, die über verscheidene Ports von außen erreichbar sind. Dafür muss ich wohl doch selbstsignierte Zertifikate verwenden (ist ja auch NUR für bekannte Nutzer).

    Oder gibt es andere Vorschläge von Euch???
    LG
    Matthias (der Zweite ;-))


Die Angabe eines Namens oder einer Webseite ist optional. Weitere Informationen: siehe Datenschutzerklärung