NextCloud bringt ihnen eine erweiterte Funktionalität der Bereitstellung und Synchronisierung ihrer Daten für Mitarbeiter. NextCloud biete über Erweiterungen und Plug-Ins die Möglichkeit auch in anderen Teilen ihres Unternehmens Verbesserungen der Zusammenarbeit zu schaffen. Prinzipiell ist NextCloud aber ihre Private Cloud - Sie wissen, wo die Daten liegen und Sie wissen wer darauf zugreifen kann und darf. ## Vorbereitungen NextCloud benötigt ergänzend zu dem evtl. massiven Speicherplatzbedarf auch noch eine funktionierend SQL-Datenbank. Hierfür wird der reine Open-Source mySQL Ableger MariaDB empfohlen. ## Installation Datenbank mit Webmanagement und weiterer benötigter Komponenten ```bash sudo apt install apache2 mariadb-server libapache2-mod-php php php-mysql php-xml php-gd php-curl php-zip php-mbstring php-intl php-bcmath php-gmp php-imagick php-redis redis-server php-ldap php-smbclient unzip phpmyadmin ``` Abfragen nach dem zu verwendenden Webserver: apache2 Konfiguriere phpmyadmin: Ja Datenbank Konfigurieren Passwort setzen Im Anschluss muss die Datenbank noch gesichert werden um etwaigen Missbrauch zu unterbinden und auch das Root-Passwort wird hier gesetzt ```bash sudo mysql_secure_installation ``` 1. Abfrage des aktuellen Passwortes NICHTS EINGEBEN NUR BESTÄTIGEN 2. Soll ein Root-Passwort gesetzt werden? Y 3. Passwort eingeben und wiederholen 4. Soll der Anonyme User entfernt werden? Y 5. Remote-Login für Root deaktivieren? Y 6. test-Datenbank entfernen? Y 7. Änderungen übernehmen? Y Jetzt muss einmalig in die SQL-Datenbank der Login für root über das Webinterface aktiviert werden: ````bash sudo mysql -u root -p ```` ````sql use mysql; update user set plugin='' where User='root'; flush privileges; \q ```` Zugriff auf ihre Datebank per Webinterface: http://IP/phpmyadmin Legen Sie einen neuen Nutzer für NextCloud an und gewähren Sie dem Nutzer alle Rechte an seiner Datenbank „Nextcloud". /newpage ## NextCloud installieren NextCloud bietet derzeit keine externe Paketquellen an. Deshalb muss Nextcloud als Zip-Archiv heruntergeladen werden und im Anschluss passend entpackt werden. ```bash wget https://download.nextcloud.com/server/releases/latest.zip unzip latest.zip sudo cp -r nextcloud /var/www/ sudo chown -R www-data:www-data /var/www/nextcloud/ ``` Jetzt legen wir noch ein Separates Datenverzeichnis an. Dies bringt den Vorteil, dass dieses sich auch auf einer separaten Partition befinden kann. ```bash sudo mkdir /srv/cloud sudo chown www-data:www-data -R /srv/cloud ``` erstellen ````/etc/apache2/sites-available/nextcloud.conf```` mit Inhalt: ```apacheconf DocumentRoot "/var/www/nextcloud" ServerName nextcloud.hensel.dom ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options +FollowSymlinks AllowOverride All Dav off SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any ``` Speichern und aktivieren mit ```bash sudo a2ensite nextcloud sudo a2dissite 000-default.conf ``` Aktivieren der benötigten Apache2-Module ```bash sudo a2enmod rewrite sudo a2enmod headers sudo a2enmod env sudo a2enmod dir sudo a2enmod mime sudo a2enmod setenvif sudo a2enmod ssl sudo systemctl restart apache2 ``` Nun können Sie per http auf den Webserver zugreifen http://nextcloud.hensel.dom ![Erster Login, Eingabe der Admindaten](./nextcloud-ldap-media/image1.png){ align=left } Hier legen Sie nun das Administrator-Konto ein, wobei natürlich Admin und ein schwaches Passwort hier Tabu sind. Geben Sie als Datenverzeichnis das gerade angelegte Verzeichnis an und geben Sie die entsprechenden Daten die beim Anlagen der Datenbank gesetzt wurden ein. Nach dem Klick auf Installation abschließen werden Sie auch schon ihr eigenes Datenverzeichnis befördert, wobei ihnen erst noch ein Hinweis angezeigt wird wie Sie Desktop- und Mobile-Apps nutzen können. Wechseln Sie als nächstes in der rechten oberen Ecke in das Administrator-Menü. Im oberen Bereich begrüßen Sie dabei gleich einige Konfigurationsfehler: Wir nutzen noch kein SSL und keinen Cache. Kümmern wir uns erst einmal um den Cache, wobei wir den Redis-Server bereits installiert haben. Somit muss nur noch die Nextcloud-Configuration angepasst werden: ```bash sudo nano /var/www/nextcloud/config/config.php ``` Fügen Sie eine weitere Zeile vor der schließenden Klammer ein: ... ````php 'dbtype' => 'mysql', 'version' => '12.0.0.29', 'dbname' => 'NextCloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => 'NextCloud', 'dbpassword' => 'passw0rd#', 'logtimezone' => 'UTC', 'installed' => true, 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), ); ```` Laden Sie Sie Administrator-Seite neu -- Der Fehler sollte weg sein. ## SSL-Zertifikat Für die https / SSL Übertragung benötigen wir noch ein selbst-signiertes Zertifikat welches dem Browser übergeben werden kann. ```bash sudo -s openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/NextCloud.pem -keyout /etc/ssl/private/NextCloud.key ``` ### Konfiguration Apache für das SSL-Zertifikat Konfiguration der Benötigten Module: Bearbeiten der Datei ````/etc/apache2/sites-available/nextcloud.conf```` ````apacheconf Redirect permanent / https://nextcloud.hensel.dom SSLEngine on SSLCertificateFile /etc/ssl/certs/NextCloud.pem SSLCertificateKeyFile /etc/ssl/private/NextCloud.key Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" DocumentRoot "/var/www/nextcloud" ServerName nextcloud.hensel.dom ServerAlias www.nextcloud.hensel.dom ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options +FollowSymlinks AllowOverride All Dav off SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any ```` Aktivieren: ```bash sudo a2ensite default-ssl.conf sudo systemctl restart apache2 ``` Apache Neustarten und Fertig ## CronJob für regelmäßige Aktualisierung der Datenbank NextCloud aktualisiert bei jedem Zugriff auf das Webinterface die Datenbank, allerdings kostet dies wertvolle Sekunden bei einem „Wohlfühl-Interface" daher aktivieren Wir einen [CronJob](../basics/Automatisierung mit cron und systemd.md) Die Aktion soll vom User www-data ausgeführt werden ```bash sudo crontab -u www-data -e ``` nun können wir einen neuen Job einfügen: ``` \*/15 \* \* \* \* php -f /var/www/nextcloud/cron.php ``` Wählen Sie nun im Administrations-Bereich von NextCloud bei Cron entsprechend auch cron aus. Im Anschluss am besten einmal reboot ## LDAP Konfiguration smb.conf bei einem Samba AD-DC ````ini [global] ldap server require strong auth = no ```` ````bash sudo systemctl restart samba-ad-dc ```` Im Anschluss daran suchen wir in den NextCloud-Apps nach dem LDAP user and group backend: ![Auswahl LDAP-APP](./nextcloud-ldap-media/image2.png) Aktivieren Sie die App und wechseln Sie wieder in den Administrationsbereich. Dort finden Sie einen neuen Bereich LDAP. ![Einrichtungstab Server](./nextcloud-ldap-media/image3.png) Die benötigten Informationen finden Sie in ihrer Serverkonfiguration. In diesem Beispiel: * FQDN + Port des AD * Nutzer,Gruppe,Domäne Dieser Account muss keine Admin-Rechte haben sollte aber eigener Account sein. * Passwort * Der Ort in der Domäne an der die User zu suchen sind ![Einrichtungstab Benutzer](./nextcloud-ldap-media/image4.png) Welcher Typ soll abgefragt werden? Hier empfiehlt sich eine Separate Gruppe für Nutzer anzulegen welche NextCloud nutzen sollen. Klicken Sie am unteren Rand auf „Einstellungen prüfen und Benutzer zählen" um ihre Konfiguration zu überprüfen. ![Einrichtungstab Anmeldeattribute](./nextcloud-ldap-media/image5.png) Hier definieren Sie mit welchen Möglichkeiten sich der Nutzer Authentifizieren kann. Wählen Sie die sAMAccountName aus, um dem Nutzer zu ermöglichen Sich direkt mit seinem Windows-Login anzumelden. ![Einrichtungstab Gruppen](./nextcloud-ldap-media/image6.png) Hier definieren Sie welche Gruppen ihres Servers in NextCloud übernommen werden sollen um ihre Nutzer auch in NextCloud passend sortieren zu können und auch Gruppenspezifische Externe Laufwerke einzubinden. ![Einrichtungstab Expert](./nextcloud-ldap-media/image7.png) In der Benutzerübersicht sollen alle Nutzer mit ihrem Benutzernamen und nicht mit der UUID angezeigt werden. Somit ist es auch für die Nutzer einfacher, sich gegenseitig zu finden. [PDF herunterladen](nextcloud-ldap.pdf){ .md-button }