Nextcloud 20 (NextcloudHub) wurde veröffentlicht und es gibt viele Neuerungen. Oliver Pifferi hat hier eine schöne Zusammenfassung, auch über die Nextcloud Konferenz, geschrieben.
Verweisen möchte ich auch auf das aktuelle ChangeLog.
Die wichtigsten neuen Key-Features kurz zusammengefasst:
Das neue Dashboard bietet einen hervorragenden Ausgangspunkt für den Tag. Über ein Dutzend Widgets von Twitter und Github bis hin zu Moodle und Zammad sind bereits verfügbar
Die Suche wurde vereinheitlicht und die Suchergebnisse von Nextcloud-Apps sowie externen Diensten wie Gitlab, Jira und Discourse wurden an einem Ort zusammengefasst
Talk führt die „Brücke“ zu anderen Plattformen ein, darunter MS Teams, Slack, IRC, Matrix und ein Dutzend andere
Aber nun beginnen wir mit der Installation. Welche Voraussetzungen braucht Ihr:
– einen VPS/Root-Server mit Ubuntu 20.04 Minimal Image (wer noch keinen hat, kann hier bei @netcup einen mit 5 € Rabatt bestellen, oder hier bei Hetzner Cloud mit 20€ Startguthaben anfangen)
– root-Zugriff
– Einen DNS A- und optional AAAA-Rekord für unsere Nextcloud
Schritt 1: Firewall installieren und aktivieren
Als erstes installieren wir auf unser System die Firewall und lassen nur die Ports für den Webserver und ssh offen, um den Server zu administrieren:
apt install ufw -y
ufw allow http
ufw allow https
ufw allow ssh
ufw enable
Mit „y“ bestätigen und weiter geht es mit…
Schritt 2: postgreSQL 13 installieren
Bevor wir postgreSQL 13 installieren können, müssen wir erst das Repository zu den Paketquellen hinzufügen:
echo "deb [arch=amd64] http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt update
Danach können wir mit den folgenden Befehlen den Datenbank-Server installieren:
apt install -y postgresql-13 postgresql-client-13
Nach der Installation prüfen wir, ob wir uns mit dem DB-Server verbinden können:
sudo -u postgres psql
psql (13.0 (Ubuntu 13.0-1.pgdg20.04+1))
Type "help" for help.
postgres=#
und lassen uns die Verbindungsinformationen anzeigen:
postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432
danach schließen wir die Verbindung wieder:
postgres-# \q
und gehen zum nächsten Schritt über
Schritt 3: Webserver installieren
Als Webserver nutzen wir in diesem Tutorial Apache2, den wir wie folgt installieren
apt install -y apache2 apache2-utils
nach der Installation prüfen wir kurz den Status des Webservers:
systemctl status apache2
der Output sollte in etwa so aussehen:
Wenn dem so ist, gehen wir zum nächsten Schritt und installieren php7.4-fpm.
Schritt 4: php7.4-fpm installieren
Da php-smbclient nicht mehr im offiziellen Repository von Ubuntu 20.04 vorhanden ist, nutzen wir das PPA von Ondrej. Dazu müssen wir dieses zu unseren Paketquellen hinzufügen:
echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/php.list
und den Key ebenfalls:
apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com:443 4F4EA0AAE5267A6C
danach aktualisieren wir unsere Paketquellen und installieren die benötigten Pakete:
apt update && apt install -y php7.4-cli php7.4-common php7.4-mbstring php7.4-gd php-imagick php7.4-intl php7.4-bz2 php7.4-xml php7.4-pgsql php7.4-zip php7.4-dev php7.4-curl php7.4-fpm php-dompdf redis-server php-redis php-smbclient php7.4-ldap php7.4-bcmath php7.4-gmp
nach der Installation widmen wir uns der Apache-Konfiguration
Schritt 5: Konfiguration Apache2 und php7.4-fpm
Für die Nutzung von Nextcloud benötigen wir einige Apache2-Module, die wir mit dem folgendem Befehl aktivieren:
a2enmod proxy_fcgi setenvif mpm_event rewrite headers env dir mime ssl http2
Desweiteren müssen wir das zuvor installierte php7.4-fpm akivieren:
a2enconf php7.4-fpm
in der Apache2-Konfiguration passen wir jetzt noch einige Parameter an, damit die .htaccess-Datei von Nextcloud genutzt wird und http2:
nano /etc/apache2/apache2.conf
dort suchen wir nach den folgenden Einträgen:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
und ändern „None“ zu „All“:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Für http2 setzen wir noch den folgenden Code in die config-Datei:
Protocols h2 h2c http/1.1
und schließen mit STRG+x
Nun passen wir noch php an und stellen die Voraussetzungen für Nextcloud her:
nano /etc/php/7.4/fpm/php.ini
Dort setzen wir die folgenden Parameter ein:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
max_execution_time = 300
max_input_time = 600
memory_limit = 512M
upload_max_filesize = 10240M
Danach starten wir Apache2 und php7.4-fpm neu:
systemctl restart apache2 php7.4-fpm
und gehen zum nächsten….
Schritt 6: Installation Certbot und weitere Tools
Um unsere Nextcloud mit einem Zertifikat abzusichern nutzen wir Certbot mit dem Apache2-Plugin:
apt install -y python3-certbot-apache certbot wget curl sudo unzip
Die anderen Tools benötigen wir zum Herunterladen, entpacken und für die Einrichtung eines Cronjobs. Weiter geht es mit…
Schritt 7: Datenbank anlegen
Nextcloud benötigt eine Datenbank, die wir wie folgt anlegen:
sudo -u postgres psql
und dann:
CREATE USER nextcloud WITH PASSWORD 'your-password';
CREATE DATABASE nextclouddb TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextclouddb OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextclouddb TO nextcloud;
\q
nun können wir uns die Installationsdateien herunterladen…
Schritt 8: Download Nextcloud
Die ZIP-Datei bekommen wir wie folgt auf unseren Server:
wget https://download.nextcloud.com/server/releases/latest-20.zip
im Anschluß entpacken wir die Dateien:
unzip latest-20.zip
und verschieben sie an die richtige Stelle inklusive Anpassung der Rechte:
mv nextcloud /var/www/html/
chown -R www-data:www-data /var/www/html/nextcloud
das Archiv können wir wieder löschen:
rm latest-20.zip
für unsere Dateien legen wir einen extra Ordner außerhalb der Webroot an:
mkdir /nextcloud_data
und passen hier auch die Rechte an, damit der Webserver die Dateien lesen kann:
chown -R www-data:www-data /nextcloud_data
weiter geht es mit dem…
Schritt 9: Anlegen Apache2-vHost und Zertifikat
den vHost für Apache2 legen wir in das Standard-Verzeichnis /etc/apache2/sites-available :
nano /etc/apache2/sites-available/001-nextcloud.conf
für erste tragen wir dort den folgenden Block ein (Servernamen anpassen):
<VirtualHost *:80>
ServerName nextcloud.your-domain.tld
ServerAdmin webmaster@your-domain.tld
DocumentRoot /var/www/html/nextcloud
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
und speichern wieder mit STRG+x. Danach müssen wir die Seite aktivieren, den von Apache2 angelegten default-vHost deaktivieren wir auch gleich:
a2ensite 001-nextcloud.conf
a2dissite 000-default.conf
systemctl reload apache2
danach fordern wir ein entsprechendes Zertfikat für https an:
certbot --apache --rsa-key-size 4096
die letzte Abfrage beantworten wir mit „2“ für Redirect
und passen den automatisch erstellten vHost an:
nano /etc/apache2/sites-available/001-nextcloud-le-ssl.conf
unter DocumentRoot setzen wir den folgenden Block:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; preload"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Prevent MIME based attacks
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
</IfModule>
# SSL Configuration - uses strong cipher list - these might need to be downgraded if you need to support older browsers/devices
SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
<Directory /var/www/html/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any
</Directory>
und führen ein Reload durch:
systemctl reload apache2
Schritt 10: Konfiguration Nextcloud
Im Anschluß rufen wir unsere Seite im Browser unserer Wahl auf und schließen die Konfiguration ab:
Wenn der Installer fertig ist, passen wir die config.php an, damit unser redis-server als cache genutzt wird:
nano /var/www/html/nextcloud/config/config.php
dort unter dem array „trusted_domains“ den folgenden Block einfügen:
'memcache.local' => '\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
und mit STRG+x abspeichern.
In den Einstellungen ändern wir „Hintergrund-Aufgaben“ auf Cron:
und erstellen dazu den Cron-Job für den User www-data:
sudo crontab -u www-data -e
in der letzten Zeile folgendes einfügen:
*/5 * * * * php7.4 -f /var/www/html/nextcloud/cron.php
und mit STRG+x speichern.
Im Anschluß prüfen wir, ob in der Übersicht noch Warnungen auftreten:
Jetzt habt Ihr es fasst geschafft und müsst nur noch die Mailserver-Einstellungen anpassen.
Ich wünsche Euch viel Spaß mit Eurer Nextcloud.
Bis zum nächsten Mal.
Beitragsbild mit freundlicher Genehmigung von Marcus Günther.
http://guenique-photography.de