Aktuelle Anleitung [[https://codeberg.org/strobelstefan.org/nextcloud-installation-configuration|hier]] oder [[https://howtodotech.de/nextcloud-23-auf-ubuntu-20-04-server-installieren/|hier]]. ====NextCloud auf den Raspberry Pi installieren==== Für die nächsten Befehle dauerhaft Root-Rechte organisieren: sudo -i Alle installierten Pakete auf den neuesten Stand bringen: apt update && apt upgrade -y Webserver Apache und PHP installieren: sudo apt install apache2 php7.3 php7.3-gd php7.3-curl php7.3-common php7.3-intl php-pear php-apcu php7.3-xml libapache2-mod-php7.3 php7.3-mbstring php7.3-zip curl libcurl3 libcurl3-dev php7.3-mysql mariadb-server-10.1 smbclient MariaDB vorbereiten sudo mysql_secure_installation Dabei wird ein Root-Passwort vergeben, der anonyme Benutzer entfernt, root die remote-Anmeldung verboten und die Testdatenbank gelöscht. Anschliessende wird die Datenbank für NextCloud erstellt und dem nextcloud-user alle Zugriffrechte auf diese Datenbank vergeben. sudo mariadb create database nextcloud character set utf8mb4 collate utf8mb4_general_ci; create user nextcloud@localhost identified by 'password'; grant all privileges on nextcloud.* to nextcloud@localhost; flush privileges; quit; Anschliessend kann die aktuelle NextCloud-Version heruntergeladen werden: cd ~/Downloads wget https://download.nextcloud.com/server/releases/latest.zip Das Archiv entpacken unzip latest.zip und ins Webroot verschieben sudo mv nextcloud/ /var/www/html/ Die Eigentums- und Schreibrechte müssen auf den Web-User übertragen werden sudo chown -R www-data.www-data /var/www/html/nextcloud Die abschliessende NextCloud-Einrichtung erfolgt über das Web-Frontend http:///nextcloud Zur endgültigen Nutzung sind noch einige Anpassungen vorzunehmen. Die Hinweise dazu findet man in der NextCloud in den Einstellungen. >==========================================================< PHP-APC installieren: apt-get install php-apc Die Datei /etc/apache2/sites-available/default editieren: nano /etc/apache2/sites-available/default Nach der vorletzten Zeile und vor der Zeile den folgenden Text einfügen: Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. Die neue Konfiguration einlesen: service apache2 reload Benutzer und Rechte im Owncloud-Verzeichnis setzen: find /var/www/owncloud/ -type f -print0 | xargs -0 chmod 0640 find /var/www/owncloud/ -type d -print0 | xargs -0 chmod 0750 chown -R root:www-data /var/www/owncloud/ chown -R www-data:www-data /var/www/owncloud/apps/ chown -R www-data:www-data /var/www/owncloud/config/ chown -R www-data:www-data /var/www/owncloud/data/ chown -R www-data:www-data /var/www/owncloud/themes/ chown root:www-data /var/www/owncloud/.htaccess chown root:www-data /var/www/owncloud/data/.htaccess chmod 0644 /var/www/owncloud/.htaccess chmod 0644 /var/www/owncloud/data/.htaccess Ins Owncloud-Verzeichnis wechseln: cd /var/www/owncloud/ Owncloud initialisieren: Achtung: MySQL-root-Passwort durch das bei der MySQL-Installation für root vergebene Passwort ersetzen. Owncloud-admin-Passwort durch ein eigenes gutes Paswort für den Owncloud-Administrator ersetzen (und aufschreiben). Bei --admin-user kann statt admin auch ein beliebiger anderer Benutzername angegeben werden. sudo -u www-data php occ maintenance:install --database "mysql" --database-name "owncloud" --database-user "root" --database-pass "MySQL-root-Passwort" --admin-user "admin" --admin-pass "Owncloud-admin-Passwort" occ wird zuerst "ownCloud is not installed - only a limited number of commands are available" anzeigen, dann nach einigen Sekunden "ownCloud was successfully installed". In Owncloud die Apps Calendar und Contacts aktivieren (wenn nicht nur Dateien sondern auch Kalender und Kontakte abgeglichen werden sollen): sudo -u www-data php occ app:enable calendar sudo -u www-data php occ app:enable contacts Maximale Dateigröße für Uploads einstellen (2GB ist das maximal mögliche): nano /var/www/owncloud/.htaccess In den beiden Zeilen php_value upload_max_filesize 513M php_value post_max_size 513M das 513M durch 2G ersetzen. Das soll dann also so aussehen: php_value upload_max_filesize 2G php_value post_max_size 2G Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. Cron-Job für Owncloud erzeugen: crontab -u www-data -e Am Ende der Datei die folgende Zeile einfügen: */15 * * * * php -f /var/www/owncloud/cron.php Dann mit Strg-O und Enter speichern und mit Strg-X den Editor beenden. PHP auf UTF-8-Zeichensatz umstellen: nano /etc/php5/apache2/php.ini In der Zeile ;default_charset = "UTF-8" den Strichpunkt am Anfang der Zeile löschen. (Um diese Zeile zu finden Strg-W drücken und default_charset eintippen.) Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. APC auch für PHP-CLI einschalten (sonst schmeißt der Owncloud-Cron-Job Fehlermeldungen): nano /etc/php5/cli/php.ini Am Schluss der Datei die folgende Zeile einfügen: apc.enable_cli=1 Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. Erlaubte-Domain-Namen erweitern: nano /var/www/owncloud/config/config.php Den Eintrag 'trusted_domains' => array ( 0 => 'localhost', ), erweitern um die lokal und extern für Owncloud verwendeten URLs. Z.B. so (wobei 192.168.xxx.yyy durch die an den Raspi vergebene IP-Adresse und meine.dyndns.adr durch die eingerichtete DynDNS-Adresse ersetzt werden muss): 'trusted_domains' => array ( 0 => 'localhost', 1 => 'raspberrypi', 2 => '192.168.xxx.yyy', 3 => 'meine.dyndns.adr', ), Am Ende der Datei, vor der letzten Zeile mit der schließenden runden Klammer, noch den folgenden Text einfügen: # Wer die Ansprache gerne etwas lockerer hat kann # in der folgenden Zeile auch 'de' verwenden. 'default_language' => 'de_DE', # In der folgenden Zeile kann statt 'calendar' auch z.B. 'contacts' # angegeben werden, oder die Zeile ganz auskommentieren oder löschen, # dann wird files angezeigt. 'defaultapp' => 'calendar', 'memcache.local' => '\OC\Memcache\APC', Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. Um SSL verwenden zu können in /etc/apache2/ das Unterverzeichnis SSL anlegen: mkdir /etc/apache2/ssl Mit dem folgenden Befehl einen SSL-Schlüssel erzeugen: openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem OpenSSL fragt nach einigen Daten. Als Common Name muss der reine DynDNS-Name (z.B.: meine.dyndns.adr, also ohne https:%%//%% davor oder /owncloud dahinter) eingegeben werden, alle anderen Felder können mit mehr oder weniger sinnvollen Angaben befüllt werden, aber auch leer bleiben. Der folgende Befehl erzeugt einen Link mit dem Hash des Schlüssels als Namen auf die Schlüsseldatei: ln -sf /etc/apache2/ssl/apache.pem /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2 ssl/apache.pem` Jetzt noch die richtigen Dateirechte setzen: chmod 600 /etc/apache2/ssl/apache.pem Benötigte Module für Apache laden: service apache2 reload a2enmod ssl a2enmod headers service apache2 restart Die Datei /etc/apache2/sites-available/ssl erzeugen: nano /etc/apache2/sites-available/ssl Den folgenden Text eingeben: SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem #Die folgende Zeile schließt unsichere SSL-Protokolle aus: SSLProtocol All -SSLv2 -SSLv3 #Die folgende Zeile lässt nur die sichersten Verschlüsselungen zu: #(Das könnte allerdings Probleme mit alten Browsern geben) SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH DocumentRoot /var/www #Die folgende Zeile beseitigt die Sicherheitswarnung #"Strict-Transport-Security" in Owncloud: Header always add Strict-Transport-Security "max-age=15768000; includeSubDomain; preload" Änderungen mit Strg-O und Enter speichern, dann nano mit Strg-X verlassen. SSL einschalten: a2ensite ssl Den Web-Server neu starten: service apache2 restart MySQL sicherer machen: mysql_secure_installation Die erste Frage ("Change the root password? [Y/n]") mit Nein beantworten, alle weiteren mit Ja. Und ganz zum Schluss die Root-Rechte wieder abgeben: exit Owncloud ist jetzt über einen Browser erreichbar: Auf dem Raspi selbst über https://localhost/owncloud oder https://127.0.0.1/owncloud Im eigenen Netz über https://raspberrypi/owncloud oder https://192.168.xxx.yyy/owncloud Von außen über https://meine.dyndns.adr/owncloud Was noch fehlt: Im Router muß noch DynDNS und eine Portweiterleitung für den Port 443 auf den Raspi gesetzt werden. Wer eine Fritz-Box hat ist klar im Vorteil, weil die ein eigenes kostenloses DynDNS (Stichwort MyFritz) bietet. Die DynDNS-Adresse sieht dann etwa so aus: abc123xyz.myfritz.net, wobei der erste Teil von AVM beim Einrichten von MyFritz automatisch an die Fritz-Box vergeben wird. Wer keine Fritz-Box hat, muß sich um einen anderen DynDNS-Dienst kümmern. Das erzeugte Zertifikat muss auf den Geräten installiert werden, mit denen auf die Owncloud zugegriffen werden soll. Edit 16.8.15: "sudo pcmanfm" auf "gksu pcmanfm" umgestellt (Danke an Frischwind und rpi444). Edit 24.8.15: "apc.enable_cli=1" in /etc/php5/cli/php.ini eingefügt. Edit 28.8.15: Der cron-Job läuft wieder und ich weiß eigentlich nicht warum bzw. warum er vorher eine Zeit lang nicht mehr lief. Ich hab jetzt den entsprechenden Warnhinweis oben wieder gelöscht. Edit 5.10.15: Aus Sicherheitsgründen in der Datei /etc/apache2/sites-available/ssl die Parameter SSLProtocol und SSLCypherSuite gesetzt. MySQL mit mysql_secure_installation abgedichtet. Quelle: [[http://www.forum-raspberrypi.de/Thread-tutorial-owncloud-8-1-installation-mit-apache-und-mysql]] [[ocbackup|Backup und Restore]]