software:owncloud

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:owncloud [2018/05/04 08:34] – [automatischer Logout nach x Minuten] stsoftware:owncloud [2021/01/22 20:37] (aktuell) st
Zeile 1: Zeile 1:
 +====== owncloud ======
  
 +ownCloud ist eine open-source Software zur Verteilung von Daten (Filehosting) und stellt auch andere Funktionen wie Kalender zur Verfügung. Im Gegensatz zu vergleichbaren Lösungen (dropbox, [[:strato hidrive]], icloud, google drive, ...) ist man nicht von einem cloud-Anbieter abhängig sondern kann mit eigenen Servern diese Dienste bereitstellen.
 +
 +Aufgrund der stärkeren enterprise-Ausrichtung von owncloud hat sich [[software:nextcloud]] abgespalten.
 +
 +===== Zukunft =====
 +
 +Nextcloud hat durch die Implementierung vieler features und apps mittlerweise eine dominante Stellung gegenüber owncloud.
 +
 +[[https://owncloud.com/news/security-aspects-of-owncloud-infinite-scale/|ownCloud Infinite Scale]] ist der Versuch (aktuell preview-stadium) eine neue Plattform auf der Basis von microservices und der Programmierspache go zu etablieren. Fokus liegt hier auf Skalierung und Architektur, es scheint eher den Fokus der Hoster und Provider zu haben als Privatkunden und KMU.
 +
 +
 +===== Links =====
 +
 +  * [[http://owncloud.org/|owncloud]]
 +  * [[https://demo.owncloud.org/|owncloud demo]]
 +  * [[https://owncloud.org/install/|owncloud installieren]]
 +  * [[https://github.com/owncloud/core/wiki/Maintenance-and-Release-Schedule|Maintenance and Release Schedule]]
 +  * [[http://owncloud.org/install/|Clients]] für  [[https://software.opensuse.org/download/package?project=isv:ownCloud:desktop&package=owncloud-client|Linux]], Windows, MAC, [[https://play.google.com/store/apps/details?id=com.owncloud.android|Android]], [[https://itunes.apple.com/us/app/owncloud/id543672169?ls=1&mt=8|iOs]]
 +  * [[https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/caching_configuration.html|Configuring PHP Memory Caching]]
 +  * [[https://owncloud.org/changelog/|changelog]]
 +  * [[https://www.youtube.com/watch?v=G4IKY3_1H38|Owncloud 8: Google Drive einbinden]]
 +  * [[https://www.youtube.com/watch?v=Q1VqbHzvp8U|Owncloud 8 installieren - Raspberry Pi + nginx]]
 +  * [[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Mindestanforderungen/Cloud_Computing_ownCloud.pdf|Betrieb und Sicherheit von 
 +ownCloud (BSI)]]
 +  * [[windows:problembehebung#Zeitstempel von .eml-Dateien wird beim Zugriff aktualisiert]]
 +
 +
 +
 +===== Funktionen =====
 +
 +  * Dateisync ähnlich zu dropbox, Client-Software stellt syncronisiertes Verzeichnis bereit
 +  * Netzlaufwerks-Zugriff per [[netzwerke:Webdav]] mit verbreiteten Clients: https://SERVER/remote.php/webdav
 +  * Kalender (CalDAV) ''https://SERVER/remote.php/caldav/''
 +    * Android: Sync per App ([[https://play.google.com/store/apps/details?id=org.dmfs.caldav.lib|CalDAV Sync]]
 +    * iOS (iphone, ipad, ...): [[http://doc.owncloud.org/server/4.5/user_manual/sync_ios.html|mit Bordmitteln als CalDAV-Kalender einrichten]]
 +    * Thunderbird: mit SogoConnector, ... über Adresse 
 +  * Adressbuch: ''https://SERVER/owncloud/remote.php/carddav/addressbooks/USER/contacts''
 +    * Android: CardDAV mit [[https://play.google.com/store/apps/details?id=org.dmfs.carddav.Sync|CardDAV Sync]] (fuunktioniert bei mir im Test nicht)
 +    * iOS (iphone, ipad, ...): http://doc.owncloud.org/server/4.5/user_manual/sync_ios.html|mit Bordmitteln als CardDAV-Adressbuch einrichten
 +
 +
 +===== Installation =====
 +
 +Grundsätzliche Schritte:
 +
 +  * Webpacket, virtuellen Server oder Root-Server aussuchen (idealerweise mit SSH-Zugriff, nicht zu billig wg. Leistung)
 +  * LAMP-Paket installieren (incl. php5-curl)
 +  * Installationspaket in htdocs-Ordner herunterlagen (wget von owncloud.org) oder Pakete von owncloud installieren (falls SSH-Zugriff möglich)
 +  * per phpmyadmin oder Kundenmenu einen mysql-Benutzer anlegen
 +  * Webseite mit Installer aufrufen (Benötigte Infos: MySQL-Server, Datenbankname, MySQL-Benutzer, MySQL-Passwort)
 +  * ggf. Dateirechte fixen
 +  * HTTPS einrichten
 +  * PHP-Cache und HSTS einrichten, siehe Admin-Seite
 +  * **[[https://doc.owncloud.org/server/9.0/admin_manual/configuration_files/big_file_upload_configuration.html?highlight=uploading big files|upload-limits erhöhen]]**
 +
 +
 +===== Einschränkungen =====
 +
 +Aus Administrativer Sicht:
 +  - Erweiterungen werden nach Updates immer wieder mal deaktiviert (Kalender, ...)
 +  - (mindestens) die Debian-Pakete vom opensuse-Build-Service nehmen keine Anpassungen der Datenbank vor, bis diese abgeschlossen wurden (per Web oder Kommandozeile) kann owncloud nicht benutzt werden.
 +  - hin und wieder sync-Bugs (u.a. mit symlinks), unbedingt Backups anfertigen!
 +  - der Server sollte genug Leistung haben, kleine embedded-System wie der Rasperry pie sind überfordert
 +
 +
 +==== behoben ====
 +
 +
 +  * selektiver Sync, bis Clientversion 1.7 gab es keine wirklich gute Lösung auf bestimmten Rechnern (Netbook?) bestimmte Ordner (z.B. Musiksammlung) von der Syncronisierung auszuschließen.
 +  * nur ein Account pro lokalem Benutzername, vor Clientversion 2.x ging pro lokalem Benutzer im Client nur ein Benutzer auf einem owncloud-Server
 +  * Warnung vor großen Downloads: ab 2.x ab 500G pro Ordner Warnung
 +  * Freigabe-Links vom Desktop (Windows-Client ab 2.x), kein extra Icon aber Freigabe aktivier- und deaktivierbar
 +
 +
 +==== kein delta Sync ====
 +
 +Wird noch eine Weile aktuell bleiben: [[https://github.com/owncloud/client/issues/179|Sync only the file change, not entire file #179]] oder auch: [[https://dragotin.wordpress.com/2015/02/09/incremental-sync-in-owncloud/|Incremental Sync in ownCloud]].
 +Geänderte Dateien werden als ganzes hochgeladen auch wenn nur wenige Byte dazu gekommen sind. Problematisch ist dies bei VM-Images und Truecrypt-Containern die damit mit owncloud nicht sinvoll zu benutzen sind.
 +
 +Viele Benutzungsszenarien profitieren allerdings nicht von delta-sync: kleine Dateien, komprimierte Dateien und bei Einbindung von externem Speicher.
 +
 +
 +==== Android: Speicherort für sync nicht wählbar ====
 +
 +https://github.com/owncloud/android/issues/10
 +
 +
 +==== kein file-locking via Webdav ====
 +
 +Seit der Version 8.1.x ist die file-locking-Unterstützung bei Zugriff über Webdav entfallen. Je nach Client hat das keine bis ernsthafte Auswirkung:
 +
 +  - Linux (davfs2): Nur Warnmeldung
 +  - **MacOS/Finder (WebDAVFS): Laufwerk wird lediglich schreibgeschützt eingebunden**! Ein entsprechender [[https://github.com/owncloud/core/pull/20505|workaround ist entwickelt]] aber bisher für Version 9.x vorgesehen, möglicherweise wird er zurückportiert auf 8.1.x/8.2x, die Entscheidung steht noch aus wie man im [[https://github.com/owncloud/core/issues/17732|Bugticket #17732]] ablesen kann.
 +
 +
 +
 +
 +
 +===== Konfiguration =====
 +
 +==== Absicherung ====
 +
 +  * [[https://doc.owncloud.org/server/9.2/admin_manual/configuration_server/harden_server.html|Hardening and Security Guidance]] befolgen
 +  * [[https://www.ssllabs.com/ssltest/|ssltest]] vornehmen
 +  * [[https://scan.nextcloud.com/|Nextcloud Security Scan]]
 +  * Webserver absichern (SSL-Konfiguration)
 +  * Betriebbssystem absichern
 +
 +  * Gerätepasswörter: Alle Benutzer sollten ihre Geräte (Handy/Laptop) namentlich per Gerätepasswort eintragen: Benutzer -> Einstellungen -> Sicherheit ( https://domain.tld/index.php/settings/user/security ) damit immer klar ist welchen Gerät wann zugegriffen hat. Das allgemeine Passwort sollte nur per Web (in Ausnahmefällen) verwendet werden.
 +  * möglichst 2-Faktor-Authentifizierung das das Web benutzen
 +
 +==== MySQL Einstellungen ====
 +
 +Die Standard-Einstellungen müssen verändert werden, die transaction-isolation ist nämlich standardmäßig REPEATABLE-READ (muss READ-COMMITTED sein, siehe https://doc.owncloud.org/server/9.1/admin_manual/installation/system_requirements.html#database-requirements-for-mysql-mariadb)
 +
 +In der ''/etc/mysql/my.cnf'' bzw. ''/etc/mysql/mysql.conf.d/mysqld.cnf'':
 +<file>
 +[mysqld]
 +...
 +# owncloud
 +binlog-format = MIXED
 +transaction-isolation = READ-COMMITTED
 +</file>
 +
 +
 +
 +==== php-memcache und HSTS aktivieren ====
 +
 +APC(u):
 +  * bis incl. PHP-Version 5.4 (debian:Debian Wheezy): <code bash>aptitude install php-apc && /etc/init.d/apache2 reload</code>
 +  * ab PHP-Version 5.5 (debian:Debian Jessie): <code bash>aptitude install php5-apcu && /etc/init.d/apache2 reload</code>
 +  * ab PHP-Version 7.0 (debian:Debian Jessie): <code bash>aptitude install php-apcu && /etc/init.d/apache2 reload</code>
 +
 +Für den Cronjob per php-cli eintragen: In ''/etc/php5/cli/php.ini'' oder ''/etc/php/7.0/cli/php.ini''
 +<file>apc.enable_cli=1</file>
 +
 +''config.php'':
 +
 +<file>'memcache.local' => '\\OC\\Memcache\\APC',</file>
 +in neueren Version (ab 10.2  oder 10.3):
 +<file>'memcache.local' => '\OC\Memcache\APCu',</file>
 +
 +**HSTS in Apache aktivieren**:
 +<file>
 +<IfModule mod_headers.c>
 +  Header always set Strict-Transport-Security "max-age=15768000"
 +</IfModule>
 +</file>
 +<code bash>service apache2 restart</code>
 +
 +ggf. das Modul headers aktivieren: <code bash> a2enmod headers && service apache2 restart</code>
 +
 +
 +==== automatischer Logout nach x Minuten ====
 +
 +Beispiel für 15Minuten (Standard ist 24h):
 +
 +<code php>
 +<?php
 +$CONFIG = array (
 +  ...
 +  'session_lifetime' => '60*15',
 +  ...
 +);</code>
 +
 +
 +==== Wartungsmodus ====
 +
 +<code bash>sudo -u www-data php occ maintenance:mode --on</code>
 +
 +oder in der ''config/config.php'': <file> maintenance" => true,</file>
 +
 +
 +==== owncloud in frames erlauben ====
 +
 +Damit owncloud in frames funktioniert muss eine Zeile in der ''config/onfig.php'' ergänzt werden:
 +<code php>
 +<?php
 +$CONFIG = array (
 +  ...
 +  'xframe_restriction' => false,
 +  ...
 +);</code>
 +
 +==== Datenverzeichnis verschieben ====
 +
 +Um den Pfad des Datenverzeichnisses von owncloud zu ändern sind leider viele manuelle Schritte notwendig, unter anderem Änderungen in der Datenbank und Dateianpassungen (maintenance-Modus anschalten!).
 +Dies kann durch symbolische Links von dem alten und das neue Verzeichnis vermieden werden.
 +Ansonsten dieser Anleitung folgen: https://doc.owncloud.com/server/admin_manual/maintenance/manually-moving-data-folders.html
 +
 +Mindestens diese Schritte sind notwendig:
 +<code php>
 +$CONFIG = array (
 +  'datadirectory' => '/NEW/DIR/data',
 +</code>
 +
 +<code sql>
 +UPDATE oc_accounts
 +  SET home = REPLACE(
 +    home,
 +    '/OLD/DIR/',
 +    '/NEW/DIR/'
 +  );
 +</code>
 +
 +Bei nextcloud ist die Sache etwas anders: https://help.nextcloud.com/t/howto-change-move-data-directory-after-installation/17170 .
 +==== Datenbank von Sqlite zu MySQL konvertieren ====
 +
 +Sqlite ist für den Mehrbenutzerbetrieb nicht gut geeignet da die Datenbank als Datei auf dem Server liegt und bei jedem Zugriff gelesen wird, das kostet Performance.
 +
 +
 +Konvertierung am Beispiel von owncloud 7.0.1:
 +
 +  - das Skript "occ" muss ausführbar gemacht werden, es befindet sich im Stammordner der owncloud-Installation (z.B. ''/var/www/owncloud'') <code bash>chmod +x occ</code>
 +  - Mysql muss installiert sein (Paket mysql-server bei Debian) und (z.B. mit phpmyadmin) ein Benutzer + eine leere Datenbank mit allen Rechten für diesen Benutzer angelegt sein.
 +  - das occ-Skript wird zur Konvertierung gestartet (im Beispiel ist der DB-Benutzer: owncloud mit Passwort "geheim" auf Server "localhost" mit der Datenbank "owncloudDBName"): <code bash>./occ db:convert-type --password="geheim" --all-apps mysql owncloud localhost owncloudDBName</code><file>
 +Creating schema in new database
 +The following tables will not be converted:
 +oc_permissions
 +Continue with the conversion?y
 +oc_activity
 + 3780/3784 [===========================> 99%
 +oc_activity_mq
 +    0/0 [============================]   0%
 +oc_appconfig
 + 85/85 [============================] 100%
 +oc_clndr_calendars
 + 11/11 [============================] 100%
 +oc_clndr_objects
 + 31/31 [============================] 100%
 +oc_clndr_repeat
 + 66/66 [============================] 100%
 +oc_clndr_share_calendar
 +  0/0 [============================]   0%
 +oc_clndr_share_event
 +  0/0 [============================]   0%
 +oc_contacts_addressbooks
 + 7/7 [============================] 100%
 +oc_contacts_cards
 + 0/0 [============================]   0%
 +oc_contacts_cards_properties
 + 0/0 [============================]   0%
 +oc_documents_invite
 + 0/0 [============================]   0%
 +oc_documents_member
 + 0/0 [============================]   0%
 +oc_documents_op
 + 0/0 [============================]   0%
 +oc_documents_revisions
 + 0/0 [============================]   0%
 +oc_documents_session
 + 0/0 [============================]   0%
 +oc_file_map
 + 0/0 [============================]   0%
 +oc_filecache
 + 3225/3226 [===========================> 99%
 +oc_files_trash
 + 28/28 [============================] 100%
 +oc_gallery_sharing
 +  0/0 [============================]   0%
 +oc_group_admin
 + 4/4 [============================] 100%
 +oc_group_user
 + 14/14 [============================] 100%
 +oc_groups
 + 5/5 [============================] 100%
 +oc_jobs
 + 2770/2771 [===========================> 99%
 +oc_locks
 +    0/0 [============================]   0%
 +oc_lucene_status
 + 38/38 [============================] 100%
 +oc_mimetypes
 + 36/36 [============================] 100%
 +oc_pictures_images_cache
 +  0/0 [============================]   0%
 +oc_preferences
 + 29/29 [============================] 100%
 +oc_privatedata
 +  0/0 [============================]   0%
 +oc_properties
 +  0/0 [============================]   0%
 +oc_share
 + 11/11 [============================] 100%
 +oc_share_external
 +  0/0 [============================]   0%
 +oc_storages
 + 7/7 [============================] 100%
 +oc_users
 + 9/9 [============================] 100%
 +oc_vcategory
 + 31/31 [============================] 100%
 +oc_vcategory_to_object
 +  0/0 [============================]   0%
 +</file>
 +Das Skript nimmt ebenfalls selbstständig die Einstellungen in der Konfigurationsdatei config/config.php vor.
 +
 +
 +[[https://www.youtube.com/watch?v=HsXE5dfwtUw|SemperVideo - Owncloud 8: Datenbank auf MySQL konvertieren]], eine Anleitung für Version 8 incl. Webmin.
 +
 +
 +==== Calendar-Plugin / neuer Appstore ====
 +
 +[[https://github.com/owncloud/calendar/issues/800|Nach dem update auf Version 9.1.6 würden Code-Integritätswarnungen für das Calendar-Plugin ausgegeben]]. Das ist nun mit dem [[https://owncloud.org/blog/good-bye-apps-owncloud-com/|neuen App-store]] behoben:
 +
 +''config/config.php'':
 +<file>
 +'appstoreurl' => 'https://marketplace.owncloud.com/api/v0', 
 +</file>
 +
 +===== Wartungsfunktionen =====
 +
 +  * Wartungsmodus einschalten: ''sudo -u www-data php /srv/www/occ maintenance:mode --on''
 +  * ..aus: ''sudo -u www-data php /srv/www/occ maintenance:mode --off''
 +  * Datenbank mit der Realität (=vorhandene Dateien) abgleichen: ''sudo -u www-data php /srv/www/occ files:scan --all''
 +  * shares, tags, comments aufräumen: ''sudo -u www-data php /srv/www/occ help files:cleanup''