From 3ef7cc9427ece01723eb8629fa83db2e6bef17c5 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 7 Oct 2015 06:56:34 -0700 Subject: [PATCH 01/69] add note re memcache locking --- .../configuration_files/files_locking_transactional.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/admin_manual/configuration_files/files_locking_transactional.rst b/admin_manual/configuration_files/files_locking_transactional.rst index 083aa5d80..7b14cc5a8 100644 --- a/admin_manual/configuration_files/files_locking_transactional.rst +++ b/admin_manual/configuration_files/files_locking_transactional.rst @@ -5,7 +5,7 @@ Transactional File Locking ownCloud's new transactional file locking mechanism operates differently than the old File Locking application, and will eventually replace it. The purpose of this mechanism is to avoid file corruption during normal operation. If you -select to use the new file locking mechanism make sure you disable the File +elect to use the new file locking mechanism make sure you disable the File Locking app. The new file locking mechanism has these capabilities: @@ -34,6 +34,12 @@ file like this example:: 'port' => 6379, 'timeout' => 0.0, ), + +.. note:: Large installations especially benefit from setting + ``memcache.locking``. File locking is enable by default, which uses the + database locking backend. This places a significant load on your database. + Using ``memcache.locking`` relieves the database load and improves + performance. The **Server status** section on your ownCloud Admin page indicates whether experimental file locking is enabled or disabled. From 54415a737f971b29541f13f0606e0274b3ea7756 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 7 Oct 2015 11:25:28 -0700 Subject: [PATCH 02/69] Update files_locking_transactional.rst --- .../configuration_files/files_locking_transactional.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/configuration_files/files_locking_transactional.rst b/admin_manual/configuration_files/files_locking_transactional.rst index 7b14cc5a8..fca3c476b 100644 --- a/admin_manual/configuration_files/files_locking_transactional.rst +++ b/admin_manual/configuration_files/files_locking_transactional.rst @@ -36,7 +36,7 @@ file like this example:: ), .. note:: Large installations especially benefit from setting - ``memcache.locking``. File locking is enable by default, which uses the + ``memcache.locking``. File locking is enabled by default, which uses the database locking backend. This places a significant load on your database. Using ``memcache.locking`` relieves the database load and improves performance. From b954d8579d3fba4f83efa6247a63248c69685fd5 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 7 Oct 2015 15:27:29 -0700 Subject: [PATCH 03/69] mystery section commented out --- .../performance_tuning/webserver_tips.rst | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst index d90d1498e..985ac0b94 100644 --- a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst +++ b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst @@ -107,23 +107,24 @@ down errors. .. todo: loglevel? -MaxKeepAliveRequests 4096 -^^^^^^^^^^^^^^^^^^^^^^^^^ +.. commented out until somebody knows what to do with it +.. MaxKeepAliveRequests 4096 +.. ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. code-block:: apache +.. .. code-block:: apache - - StartServers 100 - MinSpareServers 100 - MaxSpareServers 2000 - ServerLimit 6000 - MaxClients 6000 - MaxRequestsPerChild 4000 - +.. +.. StartServers 100 +.. MinSpareServers 100 +.. MaxSpareServers 2000 +.. ServerLimit 6000 +.. MaxClients 6000 +.. MaxRequestsPerChild 4000 +.. - - Options Indexes SymLinksIfOwnerMatch AllowOverride All - +.. +.. Options Indexes SymLinksIfOwnerMatch AllowOverride All +.. Nginx: caching ownCloud gallery thumbnails ------------------------------------------ @@ -343,4 +344,4 @@ Add *inside* the ``server{}`` block, as an example of a configuration:: * Open the gallery app again and browse to the folders you accessed before. Your thumbnails should appear more or less immediately. * ``htop`` will not show up additional load while processing, compared to - the high load before. \ No newline at end of file + the high load before. From e85bd202e18a990736c05aed74259b5205e832a1 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 9 Oct 2015 06:48:58 -0700 Subject: [PATCH 04/69] update occ with gobs of new commands --- .../encryption_configuration.rst | 43 +- .../configuration_server/occ_command.rst | 406 +++++++++++------- .../command_line_installation.rst | 4 +- 3 files changed, 253 insertions(+), 200 deletions(-) diff --git a/admin_manual/configuration_files/encryption_configuration.rst b/admin_manual/configuration_files/encryption_configuration.rst index ebcb2d2ce..2865dc232 100644 --- a/admin_manual/configuration_files/encryption_configuration.rst +++ b/admin_manual/configuration_files/encryption_configuration.rst @@ -3,7 +3,7 @@ Encryption Configuration ======================== If you are upgrading from ownCloud 8.0, and have encryption enabled, please see -:ref:`upgrading` (below) for the correct steps to upgrade your encryption. +:ref:`upgrading_encryption_label` (below) for the correct steps to upgrade your encryption. In ownCloud 8.1 and up the server-side encryption has a number of changes and improvements, including: @@ -81,12 +81,9 @@ storage. Before Enabling Encryption -------------------------- -Plan very carefully before enabling encryption because **it is not -reversible**, and if you lose your encryption keys your files are not -recoverable. Always have backups of your encryption keys stored in a safe -location, and consider enabling all recovery options. +Plan very carefully before enabling encryption because if you lose your encryption keys your files are not recoverable. Always have backups of your encryption keys stored in a safe location, and consider enabling all recovery options. -.. _enable_encryption: +.. _enable_encryption_label: Enabling Encryption ------------------- @@ -193,8 +190,7 @@ Select a different default Encryption module:: The [module ID] is taken from the ``encryption:list-modules`` command. -See :doc:`../configuration_server/occ_command` for detailed instructions on -using ``occ``. +See :ref:`encryption_label` for detailed instructions on using ``occ``. Files Not Encrypted ------------------- @@ -222,7 +218,7 @@ Key then you can change a user's password in the ownCloud Users panel to match their back-end password, and then, of course, notify the user and give them their new password. -.. _upgrading: +.. _upgrading_encryption_label: Upgrading From ownCloud 8.0 --------------------------- @@ -236,7 +232,7 @@ Before you start your upgrade, put your ownCloud server into You must do this to prevent users and sync clients from accessing files before you have completed your encryption migration. -After your upgrade is complete, follow the steps in :ref:`enable_encryption` to +After your upgrade is complete, follow the steps in :ref:`enable_encryption_label` to enable the new encryption system. Then click the **Start Migration** button on your Admin page to migrate your encryption keys, or use the ``occ`` command. We strongly recommend using the ``occ`` command; the **Start Migration** button is @@ -327,28 +323,5 @@ File keys for files owned by the user: Share keys for files owned by the user (one key for the owner and one key for each user with access to the file): :file:`data//files_encryption/keys///OC_DEFAULT_MODULE/.shareKey` - - - -.. This section commented out because there is no windows support -.. in oC8; un-comment this if windows support is restored -.. "Missing requirements" Message on Windows Servers -.. -------------------------------------------------- - -.. If you get a "Missing requirements" error message when you enable encryption -.. on a Windows server, enter the absolute location of your openSSL -.. configuration file in ``config.php``:: - -.. 'openssl' => array( -.. 'config' => 'C:\path\to\openssl.cnf', -.. ), - -.. For example, in a typical installation on a 64-bit Windows 7 system it looks -.. like this:: - -.. 'openssl' => array( -.. 'config' => 'C:\OpenSSL-Win64\openssl.cnf', -.. ), - -.. There are many ways to configure OpenSSL, so be sure to verify your correct -.. file location. +.. references -- https://github.com/owncloud/QA/issues/16 +.. \ No newline at end of file diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index 1beab87ca..c8b17839b 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -3,20 +3,32 @@ Using the occ Command ===================== ownCloud's ``occ`` command (ownCloud console) is ownCloud's command-line -interface. You can perform many common server operations with ``occ``:: - -* Manage apps -* Manage users -* Reset passwords, including administrator passwords -* Convert the ownCloud database from SQLite to a more performant DB -* Query and change LDAP settings +interface. You can perform many common server operations with ``occ``, such as installing and upgrading ownCloud, manage users, encryption, passwords, and LDAP setting, and more. ``occ`` is in the :file:`owncloud/` directory; for example :file:`/var/www/owncloud` on Ubuntu Linux. ``occ`` is a PHP script. You must run it as your HTTP user to ensure that the correct permissions are maintained on your ownCloud files and directories. -.. _http_user: +occ Command Directory +--------------------- + +* :ref:`http_user_label` +* :ref:`apps_commands_label` +* :ref:`background_jobs_selector_label` +* :ref:`config_commands_label` +* :ref:`database_conversion_label` +* :ref:`encryption_label` +* :ref:`file_operations_label` +* :ref:`create_javascript_translation_files_label` +* :ref:`ldap_commands_label` +* :ref:`logging_commands_label` +* :ref:`maintenance_commands_label` +* :ref:`user_commands_label` +* :ref:`command_line_installation_label` +* :ref:`command_line_upgrade_label` + +.. _http_user_label: Run occ As Your HTTP User ------------------------- @@ -29,17 +41,15 @@ The HTTP user is different on the various Linux distributions. See * The HTTP user and group in Arch Linux is http. * The HTTP user in openSUSE is wwwrun, and the HTTP group is www. - -If your HTTP server is configured to use a different php version than the default (/usr/bin/php), occ should be run with the same version. Example: In CentOS 6.5 with SCL-PHP54 installed, the command looks like this:: +If your HTTP server is configured to use a different PHP version than the default (/usr/bin/php), ``occ`` should be run with the same version. Example: In CentOS 6.5 with SCL-PHP54 installed, the command looks like this:: $ sudo -u apache /opt/rh/php54/root/usr/bin/php /var/www/html/owncloud/occ ... - Running it with no options lists all commands and options, like this example on Ubuntu:: $ sudo -u www-data php occ - ownCloud version 8.1 + ownCloud version 8.2 Usage: [options] command [arguments] @@ -70,14 +80,14 @@ Run it with the ``-h`` option for syntax help:: Display your ownCloud version:: $ sudo -u www-data php occ -V - ownCloud version 8.1 + ownCloud version 8.2 Query your ownCloud server status:: $ sudo -u www-data php occ status - installed: true - - version: 8.1.0.4 - - versionstring: 8.1 alpha 3 + - version: 8.2.0.9 + - versionstring: 8.2 - edition: ``occ`` has options, commands, and arguments. Options and arguments are @@ -107,17 +117,17 @@ this example for the ``maintenance:mode`` command:: The ``status`` command from above has an option to define the output format. Default is plain text, but it can also be ``json``:: - $ sudo -u www-data php status --output json - {"installed":true,"version":"8.1.0.4","versionstring":"8.1 alpha 3", + $ sudo -u www-data php status --output =json + {"installed":true,"version":"8.2.0.9","versionstring":"8.2", "edition":"Enterprise"} or ``json_pretty``:: - $ sudo -u www-data php status --output json_pretty + $ sudo -u www-data php status --output =json_pretty { "installed": true, - "version": "8.1.0.4", - "versionstring": "8.1 alpha 3", + "version": "8.2.0.9", + "versionstring": "8.2", "edition": "Enterprise" } @@ -125,10 +135,12 @@ This ``output`` option is available on all list and list-like commands: ``status``, ``check``, ``app:list``, ``encryption:status`` and ``encryption:list-modules`` +.. _apps_commands_label: + Apps Commands ------------- -The ``app`` commands list, enable, and disable apps. This lists all of your +The ``app`` commands list, enable, and disable apps. This example lists all of your installed apps, and shows whether they are enabled or disabled:: $ sudo -u www-data php occ app:list @@ -138,23 +150,29 @@ Enable an app:: $ sudo -u www-data php occ app:enable external external enabled -``app:check-code`` checks if the app uses ownCloud's public API (``OCP``) or -private API (``OC_``). If the app uses the private API it will print a -warning:: - - $ sudo -u www-data php occ app:check-code activity - [snip] - Analysing /var/www/owncloud/apps/activity/extension/files_sharing.php - 0 errors - Analysing /var/www/owncloud/apps/activity/extension/files.php - 0 errors - App is not compliant - Disable an app:: $ sudo -u www-data php occ app:disable external external disabled +``app:check-code`` has multiple checks: it checks if an app uses ownCloud's public API (``OCP``) or private API (``OC_``), and it also checks for deprecated methods and the validity of the ``info.xml`` file. By default all checks are enabled. The Activity app is an example of a correctly-formatted app:: + + $ sudo -u www-data php occ app:check-code activity + App is compliant - awesome job! + +If your app has issues, you'll see output like this:: + + $ sudo -u www-data php occ app:check-code foo_app + Analysing /opt/owncloud/apps/foo_app/events/event/ruleevent.php + 1 errors + line 33: OC_L10N - private class must not be instantiated + Analysing /opt/owncloud/apps/foo_app/events/listeners/failurelistener.php + 1 errors + line 46: OC_User - Static method of private class must not be called + PHP Fatal error: Call to undefined method PhpParser\Node\Expr\Variable::toString() in /opt/owncloud/lib/private/app/codechecker/nodevisitor.php on line 171 + +.. _background_jobs_selector_label: + Background Jobs Selector ------------------------ @@ -174,22 +192,23 @@ The other two commands are: See :doc:`../configuration_server/background_jobs_configuration` to learn more. +.. _config_commands_label: + Config Commands --------------- -The ``config`` commands can be used to configure the ownCloud server. It is -possible to list all config values with one command:: +The ``config`` commands are used to configure the ownCloud server. You can list all configuration values with one command:: $ sudo -u www-data php occ config:list By default passwords and other sensitive data are omitted from the report, so the output can be posted publicly (e.g. as part of a bug report). In order to -generate a full backport of all config values the ``--private`` flag needs to be +generate a full backport of all configuration values the ``--private`` flag needs to be set:: $ sudo -u www-data php occ config:list --private -The exported content can also be imported again to allow the fast set up of +The exported content can also be imported again to allow the fast setup of similar instances. The import command will only add/update values. Values that exist in the current configuration, but not in the one that is being imported are left untouched:: @@ -207,10 +226,10 @@ It is also possible to import remote files, by piping the input:: directly. Use the ``occ app:enable``, ``occ app:disable`` and ``occ update`` commands instead. -Getting a single config value -+++++++++++++++++++++++++++++ +Getting a Single Configuration Value +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -There are also commands to get the value of a single app or system config:: +These commands get the value of a single app and system configuration:: $ sudo -u www-data php occ config:system:get version 8.2.0.2 @@ -219,10 +238,10 @@ There are also commands to get the value of a single app or system config:: 2.1.0 -Setting a single config value -+++++++++++++++++++++++++++++ +Setting a Single Configuration Value +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -There are also commands to get the value of a single app or system config:: +These commands get the value of a single app or system configuration:: $ sudo -u www-data php /occ config:system:set logtimezone --value="Europe/Berlin" System config value logtimezone set to Europe/Berlin @@ -230,17 +249,15 @@ There are also commands to get the value of a single app or system config:: $ sudo -u www-data php occ config:app:set files_sharing incoming_server2server_share_enabled --value="yes" Config value incoming_server2server_share_enabled for app files_sharing set to yes -The set command will create the value, when it did not exist before. If you only -want to update the value, you can set the ``--update-only``:: +The ``set`` command creates the value, if it does not already exist. To update the value, set ``--update-only``:: $ sudo -u www-data php occ config:system:set doesnotexist --value="true" --update-only Value not updated, as it has not been set before. +Deleting a Single Configuration Value +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Deleting a single config value -++++++++++++++++++++++++++++++ - -There are also commands to delete a config of an app or system config:: +These commands delete the configuration of an app or system configuration:: $ sudo -u www-data php occ config:system:delete doesnotexistanymore System config value doesnotexistanymore deleted @@ -248,14 +265,15 @@ There are also commands to delete a config of an app or system config:: $ sudo -u www-data php occ config:app:delete appname doesnotexistanymore Config value doesnotexistanymore of app appname deleted -The delete command will by default not complain if the config was not set +The delete command will by default not complain if the configuration was not set before. If you want to be notified in that case, set the ``--error-if-not-exists`` flag:: $ sudo -u www-data php occ config:system:delete doesnotexist --error-if-not-exists System config doesnotexist could not be deleted because it did not exist - +.. _database_conversion_label: + Database Conversion ------------------- @@ -276,13 +294,61 @@ This is example converts to SQLite MySQL/MariaDB:: For a more detailed explanation see :doc:`../configuration_database/db_conversion` +.. _encryption_label: + Encryption ---------- -When you are using encryption, you must manually migrate your encryption -keys after upgrading your ownCloud server:: +ownCloud 8.2 introduces a new set of encryption commands:: - $ sudo -u www-data php occ encryption:migrate + encryption:change-key-storage-root + encryption:show-key-storage-root + encryption:set-default-module + encryption:list-modules + encryption:encrypt-all + encryption:decrypt-all + encryption:disable + encryption:status + encryption:enable + encryption:enable-master-key + encryption:migrate + +``encryption:status`` shows whether you have active encryption, and your default encryption module. To enable encryption you must first enable the Encryption app, and then run ``encryption:enable``:: + + $ sudo -u www-data php occ app:enable encryption + $ sudo -u www-data php occ encryption:enable + $ sudo -u www-data php occ encryption:status + - enabled: true + - defaultModule: OC_DEFAULT_MODULE + +``encryption:change-key-storage-root`` is for moving your encryption keys to a different folder. It takes one argument, ``newRoot``, which defines your new root folder:: + + $ sudo -u www-data php occ encryption:change-key-storage-root /etc/oc-keys + +You can see the current location of your keys folder:: + + sudo -u www-data php occ encryption:show-key-storage-root + Current key storage root: default storage location (data/) + +``encryption:list-modules`` displays your available encryption modules. You will see a list of modules only if you have enabled the Encryption app. Use ``encryption:set-default-module [module name]`` to set your desired module. + +``encryption:encrypt-all`` encrypts all data files for all users. You must first put your ownCloud server into single-user mode to prevent any user activity until encryption is completed. + +``encryption:decrypt-all`` decrypts all user data files, or optionally a single user:: + + $ sudo -u www-data php occ encryption:decrypt freda + +Users must have enabled recovery keys on their Personal pages. You must first put your ownCloud server into single-user mode to prevent any user activity until encryption is completed. + +Use ``encryption:disable`` to disable your encryption module. You must first put your ownCloud server into single-user mode to prevent any user activity. + +``encryption:enable-master-key`` creates a new master key, which is used for all user data instead of individual user keys. This is especially useful to enable single-sign on Use this only on fresh installations with no existing data, or on systems where encryption has not already been enabled. It is not possible to disable it. + +``encryption:migrate`` migatres encryption keys after a major ownCloud version upgrade. You may optionally specify individual users in a space-delimited list. + +See :doc:`../configuration_files/encryption_configuration` to learn more. + +.. _file_operations_label: File Operations --------------- @@ -307,98 +373,9 @@ search path:: ``files:cleanup`` tidies up the server's file cache by deleting all file entries that have no matching entries in the storage table. -.. _cli_installation: - -Command Line Installation -------------------------- - -You can install ownCloud entirely from the command line. After downloading the -tarball and copying ownCloud into the appropriate directories, or -after installing ownCloud packages (See -:doc:`../installation/linux_installation` and -:doc:`../installation/source_installation`) you can use ``occ`` commands in -place of running the graphical Installation Wizard. - -Apply correct permissions to your ownCloud directories; see -:ref:`strong_perms`. Then choose your ``occ`` options. This lists your -available options:: - - $ sudo -u www-data php /var/www/owncloud/occ - ownCloud is not installed - only a limited number of commands are available - ownCloud version 8.1.0 - - Usage: - [options] command [arguments] - - Options: - --help (-h) Display this help message - --quiet (-q) Do not output any message - --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal - output, 2 for more verbose output and 3 for debug - --version (-V) Display this application version - --ansi Force ANSI output - --no-ansi Disable ANSI output - --no-interaction (-n) Do not ask any interactive question - - Available commands: - check check dependencies of the server environment - help Displays help for a command - list Lists commands - status show some status information - app - app:check-code check code to be compliant - l10n - l10n:createjs Create javascript translation files for a given app - maintenance - maintenance:install install ownCloud - -Display your ``maintenance:install`` options:: - - $ sudo -u www-data php occ help maintenance:install - ownCloud is not installed - only a limited number of commands are available - Usage: - maintenance:install [--database="..."] [--database-name="..."] - [--database-host="..."] [--database-user="..."] [--database-pass[="..."]] - [--database-table-prefix[="..."]] [--admin-user="..."] [--admin-pass="..."] - [--data-dir="..."] - - Options: - --database Supported database type (default: "sqlite") - --database-name Name of the database - --database-host Hostname of the database (default: "localhost") - --database-user User name to connect to the database - --database-pass Password of the database user - --database-table-prefix Prefix for all tables (default: oc_) - --admin-user User name of the admin account (default: "admin") - --admin-pass Password of the admin account - --data-dir Path to data directory (default: - "/var/www/owncloud/data") - --help (-h) Display this help message - --quiet (-q) Do not output any message - --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal - output, 2 for more verbose output and 3 for debug - --version (-V) Display this application version - --ansi Force ANSI output - --no-ansi Disable ANSI output - --no-interaction (-n) Do not ask any interactive question - -This example completes the installation:: - - $ cd /var/www/owncloud/ - $ sudo -u www-data php occ maintenance:install --database - "mysql" --database-name "owncloud" --database-user "root" --database-pass - "password" --admin-user "admin" --admin-pass "password" - ownCloud is not installed - only a limited number of commands are available - ownCloud was successfully installed - -Supported databases are:: - - - sqlite (SQLite3 - Community Edition Only) - - mysql (MySQL/MariaDB) - - pgsql (PostgreSQL) - - oci (Oracle) +.. _create_javascript_translation_files_label: -l10n, Create javascript Translation Files for Apps +l10n, Create Javascript Translation Files for Apps -------------------------------------------------- Use the ``l10n:createjs`` to migrate your PHP-based translation files into Javascript files:: @@ -439,6 +416,8 @@ Names of Languages en_GB fy_NL mg sl en_NZ gl mk sq +.. _ldap_commands_label: + LDAP Commands ------------- @@ -505,7 +484,28 @@ the server:: The configuration is valid and the connection could be established! ``ldap:show-remnants`` is for cleaning up the LDAP mappings table, and is -documented in :doc:`../configuration_user/user_auth_ldap_cleanup`. +documented in :doc:`../configuration_user/user_auth_ldap_cleanup`. + +.. _logging_commands_label: + +Logging Commands +---------------- + +Run ``log:owncloud`` to see your current logging status:: + + $ sudo -u www-data php occ log:owncloud + Log backend ownCloud: enabled + Log file: /opt/owncloud/data/owncloud.log + Rotate at: disabled + +Use the ``--enable`` option to turn on logging. Use ``--file`` to set a different log file path. Set your rotation by log file size in bytes with ``--rotate-size``; 0 disables rotation. + +``log:manage`` sets your logging backend, log level, and timezone. The defaults are ``owncloud``, ``Warning``, and ``UTC``. Available options are: + +* --backend [owncloud, syslog, errorlog] +* --level [debug, info, warning, error] + +.. _maintenance_commands_label: Maintenance Commands -------------------- @@ -553,6 +553,8 @@ to:: - 0 tags with no entries have been removed. - Re-enable file app +.. _user_commands_label: + User Commands ------------- @@ -638,9 +640,102 @@ authentication servers such as LDAP:: | | | | user directories | 2 | +------------------+----+ + +.. _command_line_installation_label: + +Command Line Installation +------------------------- + +You can install ownCloud entirely from the command line. After downloading the +tarball and copying ownCloud into the appropriate directories, or +after installing ownCloud packages (See +:doc:`../installation/linux_installation` and +:doc:`../installation/source_installation`) you can use ``occ`` commands in +place of running the graphical Installation Wizard. + +Apply correct permissions to your ownCloud directories; see +:ref:`strong_perms`. Then choose your ``occ`` options. This lists your +available options:: + + $ sudo -u www-data php /var/www/owncloud/occ + ownCloud is not installed - only a limited number of commands are available + ownCloud version 8.2.0 + + Usage: + [options] command [arguments] + + Options: + --help (-h) Display this help message + --quiet (-q) Do not output any message + --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal + output, 2 for more verbose output and 3 for debug + --version (-V) Display this application version + --ansi Force ANSI output + --no-ansi Disable ANSI output + --no-interaction (-n) Do not ask any interactive question + + Available commands: + check check dependencies of the server environment + help Displays help for a command + list Lists commands + status show some status information + app + app:check-code check code to be compliant + l10n + l10n:createjs Create javascript translation files for a given app + maintenance + maintenance:install install ownCloud + +Display your ``maintenance:install`` options:: + + $ sudo -u www-data php occ help maintenance:install + ownCloud is not installed - only a limited number of commands are available + Usage: + maintenance:install [--database="..."] [--database-name="..."] + [--database-host="..."] [--database-user="..."] [--database-pass[="..."]] + [--database-table-prefix[="..."]] [--admin-user="..."] [--admin-pass="..."] + [--data-dir="..."] + + Options: + --database Supported database type (default: "sqlite") + --database-name Name of the database + --database-host Hostname of the database (default: "localhost") + --database-user User name to connect to the database + --database-pass Password of the database user + --database-table-prefix Prefix for all tables (default: oc_) + --admin-user User name of the admin account (default: "admin") + --admin-pass Password of the admin account + --data-dir Path to data directory (default: + "/var/www/owncloud/data") + --help (-h) Display this help message + --quiet (-q) Do not output any message + --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal + output, 2 for more verbose output and 3 for debug + --version (-V) Display this application version + --ansi Force ANSI output + --no-ansi Disable ANSI output + --no-interaction (-n) Do not ask any interactive question + +This example completes the installation:: + + $ cd /var/www/owncloud/ + $ sudo -u www-data php occ maintenance:install --database + "mysql" --database-name "owncloud" --database-user "root" --database-pass + "password" --admin-user "admin" --admin-pass "password" + ownCloud is not installed - only a limited number of commands are available + ownCloud was successfully installed + +Supported databases are:: + + - sqlite (SQLite3 - Community Edition Only) + - mysql (MySQL/MariaDB) + - pgsql (PostgreSQL) + - oci (Oracle) + +.. _command_line_upgrade_label: -Upgrade Command ---------------- +Command Line Upgrade +-------------------- List all options, like this example on CentOS Linux:: @@ -711,21 +806,6 @@ or to use in a bug report:: ServerNotAvailableException: LDAP server is not available Update failed Turned off maintenance mode - -.. uncomment when 8.1.1 is released -.. If you enable verbosity you'll see even more details -.. of the upgrade process:: -.. ownCloud or one of the apps require upgrade - only a limited number of -.. commands are available -.. Turned on maintenance mode -.. Repair step: Repair MySQL database engine -.. Repair info: Not a mysql database -> nothing to do -.. Repair step: Repair MySQL collation -.. Repair info: Not a mysql database -> nothing to no -.. Repair step: Repair SQLite autoincrement -.. ... -.. Update successful -.. Turned off maintenance mode Before completing the upgrade, ownCloud first runs a simulation by copying all database tables to a temporary directory and then performing the diff --git a/admin_manual/installation/command_line_installation.rst b/admin_manual/installation/command_line_installation.rst index 492cf00ce..7fdffbb87 100644 --- a/admin_manual/installation/command_line_installation.rst +++ b/admin_manual/installation/command_line_installation.rst @@ -17,7 +17,7 @@ and unpack the tarball in the appropriate directories. (See 3. Use the ``occ`` command to complete your installation. This takes the place of running the graphical Installation Wizard. -You must run ``occ`` as your HTTP user; see :ref:`http_user`. This example +You must run ``occ`` as your HTTP user; see :ref:`http_user_label`. This example shows how to complete your ownCloud installation with ``occ`` on Ubuntu Linux:: $ cd /var/www/owncloud/ @@ -38,4 +38,4 @@ Supported databases are:: - pgsql (PostgreSQL) - oci (Oracle) -See :ref:`cli_installation` for more information. +See :ref:`command_line_installation_label` for more information. From bd67fa1c8a7ce7e190d94a7305eaa5de9aa7de7d Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 9 Oct 2015 07:55:10 -0700 Subject: [PATCH 05/69] add maintenance:mimetype:update-db --- admin_manual/configuration_server/occ_command.rst | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index c8b17839b..76a107573 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -510,8 +510,12 @@ Use the ``--enable`` option to turn on logging. Use ``--file`` to set a differen Maintenance Commands -------------------- -These maintenance commands put your ownCloud server into -maintenance and single-user mode, and run repair steps during updates. +The available maintenance commands are: + +* maintenance:mimetype:update-db +* maintenance:mode +* maintenance:repair +* maintenance:singleuser You must put your ownCloud server into maintenance mode whenever you perform an update or upgrade. This locks the sessions of all logged-in users, including @@ -530,7 +534,7 @@ troubleshooting on a running server:: $ sudo -u www-data php occ maintenance:singleuser --on Single user mode enabled -And turn it off when you're finished:: +Turn it off when you're finished:: $ sudo -u www-data php occ maintenance:singleuser --off Single user mode disabled @@ -551,8 +555,10 @@ to:: - 0 tags for delete files have been removed. - 0 tag entries for deleted tags have been removed. - 0 tags with no entries have been removed. - - Re-enable file app + - Re-enable file app +``maintenance:mimetype:update-db`` updates the ownCloud database and file cache with changed mimetypes found in ``config/mimetypemapping.json``. Run this command after modifying ``config/mimetypemapping.json``. If you change a mimetype, run ``maintenance:mimetype:update-db --repair-filecache`` to apply the change to existing files. + .. _user_commands_label: User Commands From b114926325ff1724ccdf8af24c92eda97750456c Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 9 Oct 2015 08:23:57 -0700 Subject: [PATCH 06/69] more updates to occ, ldap, install and upgrade --- admin_manual/configuration_server/occ_command.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index 76a107573..68a77a748 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -421,7 +421,7 @@ Names of Languages LDAP Commands ------------- -You can run the following LDAP commands with ``occ``. +These LDAP commands appear only when you have enabled the LDAP backend. Then you can run the following LDAP commands with ``occ``. Search for an LDAP user, using this syntax:: @@ -652,6 +652,8 @@ authentication servers such as LDAP:: Command Line Installation ------------------------- +These commands are available only after you have downloaded and unpacked the ownCloud archive, and before you complete the installation. + You can install ownCloud entirely from the command line. After downloading the tarball and copying ownCloud into the appropriate directories, or after installing ownCloud packages (See @@ -743,6 +745,8 @@ Supported databases are:: Command Line Upgrade -------------------- +These commands are available only after you have download upgraded packages or archives, and before you complete the upgrade. + List all options, like this example on CentOS Linux:: $ sudo -u apache php occ upgrade -h From a0ad7cf4b18154b2690ba77802bbadcd869335cf Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 9 Oct 2015 10:05:02 -0700 Subject: [PATCH 07/69] more corrections to occ doc --- admin_manual/configuration_server/occ_command.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index 68a77a748..f475bc53b 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -342,7 +342,7 @@ Users must have enabled recovery keys on their Personal pages. You must first pu Use ``encryption:disable`` to disable your encryption module. You must first put your ownCloud server into single-user mode to prevent any user activity. -``encryption:enable-master-key`` creates a new master key, which is used for all user data instead of individual user keys. This is especially useful to enable single-sign on Use this only on fresh installations with no existing data, or on systems where encryption has not already been enabled. It is not possible to disable it. +``encryption:enable-master-key`` creates a new master key, which is used for all user data instead of individual user keys. This is especially useful to enable single-sign on. Use this only on fresh installations with no existing data, or on systems where encryption has not already been enabled. It is not possible to disable it. ``encryption:migrate`` migatres encryption keys after a major ownCloud version upgrade. You may optionally specify individual users in a space-delimited list. @@ -745,7 +745,7 @@ Supported databases are:: Command Line Upgrade -------------------- -These commands are available only after you have download upgraded packages or archives, and before you complete the upgrade. +These commands are available only after you have downloaded upgraded packages or archives, and before you complete the upgrade. List all options, like this example on CentOS Linux:: From 4861de818708e8eb5da7a3952ebe994636110b6d Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 9 Oct 2015 12:52:29 -0700 Subject: [PATCH 08/69] fix typo --- admin_manual/configuration_server/occ_command.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index f475bc53b..9ecaf08c0 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -421,7 +421,7 @@ Names of Languages LDAP Commands ------------- -These LDAP commands appear only when you have enabled the LDAP backend. Then you can run the following LDAP commands with ``occ``. +These LDAP commands appear only when you have enabled the LDAP backend on your Apps page. Then you can run the following LDAP commands with ``occ``. Search for an LDAP user, using this syntax:: From 027cd6f9107d467390065ed8eee96f0522d598e3 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Sun, 11 Oct 2015 19:09:29 +0200 Subject: [PATCH 09/69] Add redis example to connect to an unix socket. --- .../files_locking_transactional.rst | 14 +++++++++++++- .../configuration_server/caching_configuration.rst | 11 +++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/admin_manual/configuration_files/files_locking_transactional.rst b/admin_manual/configuration_files/files_locking_transactional.rst index fca3c476b..41af85d4a 100644 --- a/admin_manual/configuration_files/files_locking_transactional.rst +++ b/admin_manual/configuration_files/files_locking_transactional.rst @@ -34,7 +34,19 @@ file like this example:: 'port' => 6379, 'timeout' => 0.0, ), - + +If you want to connect to Redis configured to listen on an unix socket (which is +recommended if Redis is running on the same system as ownCloud) use this example +``config.php`` configuration:: + + 'filelocking.enabled' => 'true', + 'memcache.locking' => '\OC\Memcache\Redis', + 'redis' => array( + 'host' => '/var/run/redis/redis.sock', + 'port' => 0, + 'timeout' => 0.0, + ), + .. note:: Large installations especially benefit from setting ``memcache.locking``. File locking is enabled by default, which uses the database locking backend. This places a significant load on your database. diff --git a/admin_manual/configuration_server/caching_configuration.rst b/admin_manual/configuration_server/caching_configuration.rst index 054338bef..11960106e 100644 --- a/admin_manual/configuration_server/caching_configuration.rst +++ b/admin_manual/configuration_server/caching_configuration.rst @@ -180,6 +180,17 @@ Redis for the local server cache:: 'timeout' => 0.0, ), +If you want to connect to Redis configured to listen on an unix socket (which is +recommended if Redis is running on the same system as ownCloud) use this example +``config.php`` configuration:: + + 'memcache.local' => '\OC\Memcache\Redis', + 'redis' => array( + 'host' => '/var/run/redis/redis.sock', + 'port' => 0, + 'timeout' => 0.0, + ), + Redis is very configurable; consult `the Redis documentation `_ to learn more. From 922eb7cbfb9a734b573aabbd00695ba922dbc390 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Mon, 12 Oct 2015 09:05:49 +0200 Subject: [PATCH 10/69] Set corret group in permission script --- admin_manual/installation/installation_wizard.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/admin_manual/installation/installation_wizard.rst b/admin_manual/installation/installation_wizard.rst index 3b92766a6..e748faebf 100644 --- a/admin_manual/installation/installation_wizard.rst +++ b/admin_manual/installation/installation_wizard.rst @@ -144,18 +144,19 @@ replace the ``htuser`` and ``htgroup`` variables with your HTTP user and group:: ocpath='/var/www/owncloud' htuser='www-data' htgroup='www-data' + rootuser='root' # On QNAP this is admin find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 - chown -R root:${htuser} ${ocpath}/ + chown -R ${rootuser}:${htgroup} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ - chown root:${htuser} ${ocpath}/.htaccess - chown root:${htuser} ${ocpath}/data/.htaccess + chown ${rootuser}:${htgroup} ${ocpath}/.htaccess + chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess chmod 0644 ${ocpath}/.htaccess chmod 0644 ${ocpath}/data/.htaccess From aa6937cc1fb0637a10e866e03568cc1bd9141b65 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Mon, 12 Oct 2015 13:37:36 +0200 Subject: [PATCH 11/69] fix how to get the App container --- developer_manual/app/container.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/developer_manual/app/container.rst b/developer_manual/app/container.rst index 2d188d195..1908af7e4 100644 --- a/developer_manual/app/container.rst +++ b/developer_manual/app/container.rst @@ -185,14 +185,14 @@ So basically the following is now possible: } } - $container = new \OCP\App('myapp'); + $app = new \OCP\AppFramework\App('myapp'); - $class2 = $container->query('OCA\MyApp\MyTestClass2'); + $class2 = $app->getContainer()->query('OCA\MyApp\MyTestClass2'); $class2 instanceof MyTestClass2; // true $class2->class instanceof MyTestClass; // true $class2->appName === 'appname'; // true - $class2 === $container->query('OCA\MyApp\MyTestClass2'); // true + $class2 === $app->getContainer()->query('OCA\MyApp\MyTestClass2'); // true .. note:: $AppName is resolved because the container registered a parameter under the key 'AppName' which will return the app id. The lookup is case sensitive so while $AppName will work correctly, using $appName as a constructor parameter will fail. @@ -203,7 +203,7 @@ How does it affect the request lifecycle * All apps' **routes.php** files are loaded * If a **routes.php** file returns an array, and an **appname/appinfo/application.php** exists, include it, create a new instance of **\\OCA\\AppName\\AppInfo\\Application.php** and register the routes on it. That way a container can be used while still benefitting from the new routes behavior - * If a **routes.php** file returns an array, but there is no **appname/appinfo/application.php**, create a new \\OCP\\App instance with the app id and register the routes on it + * If a **routes.php** file returns an array, but there is no **appname/appinfo/application.php**, create a new \\OCP\\AppFramework\\App instance with the app id and register the routes on it * A request is matched for the route, e.g. with the name **page#index** * The appropriate container is being queried for the entry PageController (to keep backwards compability) From 92b3cf08f514249c93dccaeff17246c1877d0430 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Tue, 13 Oct 2015 10:30:42 +0200 Subject: [PATCH 12/69] generate documentation from config.sample.php --- .../config_sample_php_parameters.rst | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 966bec72f..eed1aad56 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -54,13 +54,6 @@ installer. (There are also per-user salts.) If you lose this salt you lose all your passwords. This example is for documentation only, and you should never use it. -:: - - 'hashingCost' => 10, - -The hashing cost used by hashes generated by ownCloud -Using a higher value requires more time and CPU power to calculate the hashes - :: 'trusted_domains' => @@ -82,17 +75,6 @@ directory. The SQLite database is also stored here, when you use SQLite. (SQLite is not available in ownCloud Enterprise Edition) -:: - - 'tempdirectory' => '/tmp/owncloudtemp', - -Override where ownCloud stores temporary files. Useful in situations where -the system temporary directory is on a limited space ramdisk or is otherwise -restricted, or if external storages which do not support streaming are in -use. - -The web server user must have write access to this directory. - :: 'version' => '', @@ -150,22 +132,6 @@ you shouldn't need to change it. Prefix for the ownCloud tables in the database. -:: - - 'dbdriveroptions' => array( - PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem', - ), - -Additional driver options for the database connection, eg. to enable SSL -encryption in MySQL. - -:: - - 'sqlite.journal_mode' => 'DELETE', - -sqlite3 journal mode can be specified using this config parameter - can be -'WAL' or 'DELETE' see for more details https://www.sqlite.org/wal.html - :: 'installed' => false, @@ -1131,6 +1097,26 @@ to be fetched in addition to any requested file. One way to test is applying for a trystack account at http://trystack.org/ +All other config options +------------------------ + + +:: + + 'dbdriveroptions' => array( + PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem', + ), + +Additional driver options for the database connection, eg. to enable SSL +encryption in MySQL. + +:: + + 'sqlite.journal_mode' => 'DELETE', + +sqlite3 journal mode can be specified using this config parameter - can be +'WAL' or 'DELETE' see for more details https://www.sqlite.org/wal.html + :: 'supportedDatabases' => array( @@ -1148,9 +1134,23 @@ Available: - pgsql (PostgreSQL) - oci (Oracle - Enterprise Edition Only) -All other config options ------------------------- +:: + 'tempdirectory' => '/tmp/owncloudtemp', + +Override where ownCloud stores temporary files. Useful in situations where +the system temporary directory is on a limited space ramdisk or is otherwise +restricted, or if external storages which do not support streaming are in +use. + +The web server user must have write access to this directory. + +:: + + 'hashingCost' => 10, + +The hashing cost used by hashes generated by ownCloud +Using a higher value requires more time and CPU power to calculate the hashes :: From d9e30faae91097bf971e080e5f17d893a9667e30 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Tue, 13 Oct 2015 18:15:21 +0200 Subject: [PATCH 13/69] Add needed linebreak to config_sample_php_parameters.rst --- .../configuration_server/config_sample_php_parameters.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index eed1aad56..739cdd07e 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -139,6 +139,7 @@ Prefix for the ownCloud tables in the database. Indicates whether the ownCloud instance was installed successfully; ``true`` indicates a successful installation, and ``false`` indicates an unsuccessful installation. + .. DEFAULT_SECTION_END .. Generated content above. Don't change this. From 41d667599626901e49ff86e79009b37045f4cab9 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 13 Oct 2015 09:59:44 -0700 Subject: [PATCH 14/69] updates for 8.2 --- .../encryption_configuration.rst | 88 ++++++++++++------ admin_manual/images/encryption1.png | Bin 12827 -> 9439 bytes admin_manual/images/encryption14.png | Bin 16431 -> 12617 bytes admin_manual/images/encryption3.png | Bin 20160 -> 39246 bytes 4 files changed, 60 insertions(+), 28 deletions(-) diff --git a/admin_manual/configuration_files/encryption_configuration.rst b/admin_manual/configuration_files/encryption_configuration.rst index 2865dc232..dc400d40e 100644 --- a/admin_manual/configuration_files/encryption_configuration.rst +++ b/admin_manual/configuration_files/encryption_configuration.rst @@ -3,30 +3,29 @@ Encryption Configuration ======================== If you are upgrading from ownCloud 8.0, and have encryption enabled, please see -:ref:`upgrading_encryption_label` (below) for the correct steps to upgrade your encryption. +:ref:`upgrading_encryption_label` (below) for the correct steps to upgrade your +encryption. -In ownCloud 8.1 and up the server-side encryption has a number of changes and +The primary purpose of the ownCloud server-side encryption is to protect users' +files on remote storage, such as Dropbox and Google Drive, and to do it easily +and seamlessly from within ownCloud. + +In ownCloud 8.2 the server-side encryption has a number of changes and improvements, including: -* When encryption is enabled, all files are no longer encrypted at user's first - logins because this causes timeouts on large installations. Instead, only - files that are created or updated after encryption has been enabled are - encrypted. - -* The "decrypt all" option in the Personal settings has been removed, also for - performance reasons. - -* A new option for users to enable/disable encryption on a per mount-point - basis. - -* The option to choose from multiple encryption modules. +* An option to create a master encryption key, which replaces all individual + user keys. This is especially useful for single-sign on. +* Encrypt all data files at once when enabling encryption. +* Decrypt all data files, or per user. +* Users may decrypt their own files. +* Migrate all keys after a major upgrade, or per user. +* Move your keys to a different folder. ownCloud server-side encryption encrypts files stored on the ownCloud server, and files on remote storage that is connected to your ownCloud server. Encryption and decryption are performed on the ownCloud server. All files sent -to remote storage (for example Dropbox and Google Drive) will be encrypted by -the ownCloud server, and upon retrieval, decrypted before serving them to you -and anyone you have shared them with. +to remote storage will be encrypted by the ownCloud server, and upon retrieval, +decrypted before serving them to you and anyone you have shared them with. .. note:: Encrypting files increases their size by roughly 35%, so you must take this into account when you are provisioning storage and setting @@ -37,10 +36,6 @@ When files on external storage are encrypted in ownCloud, you cannot share them directly from the external storage services, but only through ownCloud sharing because the key to decrypt the data never leaves the ownCloud server. -The main purpose of the ownCloud server-side encryption is to protect users' -files on remote storage, and to do it easily and seamlessly from within -ownCloud. - ownCloud's server-side encryption generates a strong encryption key, which is unlocked by user's passwords. Your users don't need to track an extra password, but simply log in as they normally do. It encrypts only the contents @@ -81,14 +76,19 @@ storage. Before Enabling Encryption -------------------------- -Plan very carefully before enabling encryption because if you lose your encryption keys your files are not recoverable. Always have backups of your encryption keys stored in a safe location, and consider enabling all recovery options. +Plan very carefully before enabling encryption because it is not reversible via +the ownCloud Web interface. If you lose your encryption keys your files are not +recoverable. Always have backups of your encryption keys stored in a safe +location, and consider enabling all recovery options. + +You have more options via the ``occ`` command (see :ref:`occ_encryption_label`) .. _enable_encryption_label: Enabling Encryption ------------------- -ownCloud encryption now consists of two parts. The base encryption system is +ownCloud encryption consists of two parts. The base encryption system is enabled and disabled on your Admin page. First you must enable this, and then select an encryption module to load. Currently the only available encryption module is the ownCloud Default Encryption Module. @@ -166,10 +166,14 @@ You may change your Recovery Key password. .. figure:: ../images/encryption12.png +.. _occ_encryption_label: + occ Encryption Commands ----------------------- -You may also use the ``occ`` command to perform encryption operations. +If you have shell access you may use the ``occ`` command to perform encryption +operations, and you have additional options such as decryption and creating a +single master encryption key. Get the current status of encryption and the loaded encryption module:: @@ -188,17 +192,45 @@ Select a different default Encryption module:: occ encryption:set-default-module [Module ID]. -The [module ID] is taken from the ``encryption:list-modules`` command. +The [module ID] is taken from the ``encryption:list-modules`` command. + +Encrypt all data files for all users. For performance reasons, when you enable +encryption on an ownCloud server only new and changed files are encrypted. This +command gives you the option to encrypt all files. This command give You must +first put your ownCloud server into single-user mode to prevent any user +activity until encryption is completed:: + + occ encryption:encrypt-all + +Decrypt all user data files, or optionally a single user:: + + occ encryption:decrypt-all [username] + +Move keys to a different folder:: + + occ encryption:change-key-storage-root + +View current location of keys:: + + occ encryption:show-key-storage-root + +Create a new master key. Use this when you have a single-sign on +infrastructure. Use this only on fresh installations with no existing data, or +on systems where encryption has not already been enabled. It is not possible to +disable it:: + + occ encryption:enable-master-key See :ref:`encryption_label` for detailed instructions on using ``occ``. Files Not Encrypted ------------------- -Only the data in your files is encrypted, and not the filenames or folder -structures. These files are never encrypted: +Only the data in the files in ``data/user/files`` is encrypted, and not the +filenames or folder structures. These files are never encrypted: -- Old files in the trash bin +- Files in the trash bin +- Versions - Image thumbnails from the Gallery app - Previews from the Files app - The search index from the full text search app diff --git a/admin_manual/images/encryption1.png b/admin_manual/images/encryption1.png index 4af2e51b339c15d101e2a7c84e1b085e50ab5598..fded54448760d7aecbfd381facfaf07c48f8cc63 100644 GIT binary patch literal 9439 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 literal 16431 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 ZWhdsTHyx$|e9J$eAfx)eO6tSs{{im+)9U~L diff --git a/admin_manual/images/encryption3.png b/admin_manual/images/encryption3.png index 7401ac915f74f91375c8f3c269377e41416ddb5c..5f21da3e3f897704f7e27f01b44869e1441ba407 100644 GIT binary patch literal 39246 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 z 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 Date: Tue, 13 Oct 2015 11:45:40 -0700 Subject: [PATCH 15/69] update what's new and release notes --- admin_manual/release_notes.rst | 5 ++ admin_manual/whats_new_admin.rst | 124 +++++++------------------------ user_manual/whats_new.rst | 11 +++ 3 files changed, 41 insertions(+), 99 deletions(-) diff --git a/admin_manual/release_notes.rst b/admin_manual/release_notes.rst index 153993eea..f8dfaedd5 100644 --- a/admin_manual/release_notes.rst +++ b/admin_manual/release_notes.rst @@ -5,6 +5,11 @@ ownCloud |version| Release Notes Changes in 8.2 -------------- +``filesystem_check_changes`` in ``config.php`` is set to 0 by default. This +prevents unnecessary update checks and improves performance. If you are using +external storage mounts such as NFS on a remote storage server, set this to 1 +so that ownCloud will detect remote file changes. + XSendFile support has been removed, so there is no longer support for `serving static files `_ +on Github for a comprehensive list of new features and updates. -We are introducing a new packaging system (starting in ownCloud 8.0). Instead of -two editions, Community and Enterprise, we now offer Server to replace the old -Community edition, and Enterprise Subscription replaces the old Enterprise -Edition. +Some of the improvements of interest to ownCloud admins are: -Server includes core file share and synchronization features plus community -apps, and is community-supported and free of cost. See `owncloud.org -`_ for current information and links to downloads. +* Configurable temporary directory +* Many new occ commands for logging, encryption, and apps +* Unavailable external storages are not rechecked every request; rather, their + failed state is saved and they are tried again after 10 minutes +* External storages now support modular authentication mechanisms +* Transactional file locking prevents data corruption and race conditions on + concurrent access +* Files app new sidebar shows details about files +* Admins can define custom mimetype mappings and aliases +* Mimetypes in the database can be updated when changed +* Downgrades are prevented because they are unsupported +* Admin page warning for EOL PHP version +* Show apps that will be updated on the DB update page -ownCloud now offers two levels of paid support: +There are many security enhancements, including: -* ownCloud Standard -* ownCloud Enterprise - -The ownCloud Standard Subscription is for customers who want paid support for -the core Server, and do not need Enterprise apps. This includes: - -* ownCloud Server -* ownCloud desktop and mobile apps (without the custom branding build service) -* ownCloud open-source apps licensed as AGPL (Share Files, - Federated Cloud, Versions, Deleted files, LDAP/AD, Antivirus, Encryption, - External Storage. etc.), 8x5 support hours - -Note: This does not include support for Contacts, Calendar, Tasks, Chat, -Documents, or any other community-only apps, and it does not include support -for Enterprise-only apps or services. - -The ownCloud Enterprise Subscription replaces the Enterprise Edition. This -includes the core Server plus Enterprise apps. The Enterprise Subscription -includes: - -* ownCloud Standard Subscription -* ownCloud Enterprise apps (Logging modules, SAML, File Firewall, Sharepoint, - Windows Network Drive, Home Directory Mounts, etc) -* ownBrander for mobile app branding -* ownCloud Commercial License for closed-source customizations -* Up to 24x7 support -* Deployment assistance for the rollout - -New customers, or customers upgrading from the old Enterprise Edition will -install ownCloud 8 from the existing ``owncloud-enterprise`` repository. The -``owncloud-server`` dependency will be pulled in automatically. Customers using -the community edition will upgrade via package manager by adding the -``owncloud-enterprise repository``, and installing ownCloud Enterprise Edition -apps on top of their ``owncloud-server``. - -Visit `owncloud.com `_ for more information on the -Enterprise Subscription. - -Improvements and New Features ------------------------------ - -ownCloud Server and Enterprise Subscription |version| are shipping with a batch -of improvements and new features, including: - -* Auto-completion of usernames in file share dialogs -* Improved performance, with faster file transfers, much faster file deletion, - improved scalability through improved handling of parallel requests, and up - to 50% more users on each ownCloud server instance. -* Better file locking -* Updated encryption with support for multiple encryption backends and - migration tools for 8.0 -> 8.1 -* Improved LDAP configuration wizard -* WebDAV performance enhancements -* SFTP external storage with SSH keys -* SMB external storage is now based on ``libsmbclient`` - -* Individual settings per external storage mount, including encryption and previews -* Improved performance and better storage space management of preview - generation -* UI improvements for configuring external storage -* The ownCloud Appstore shows now different trust levels, and allows enabling - experimental apps -* Deleted files & folders now keep the share info after restoring from trashbin - (local shares only and not external storage) - - -* Many more links from the administration UI to the relevant documentation -* ``occ`` command updated to allow installing ownCloud completely from the - command line -* User avatars are displayed in share dialogs -* Font preview, 3D pictures media type (previewed as JPEG) and raw media type - support without previews -* A new simple example theme is included -* All shares now have at least read permissions, which prevents unpredictable - server behavior -* Support for shortened URLs -* Users may not remove share expiration dates when the admin settings require - them -* Auto complete in share dialog works again when sharing is limited to groups -* `Developer changelog - `_ - is available in the Developer's Manual - -* File IDs are now persistent when moving files across storages, deleted to - trashbin or restored as version -* Ship ca-bundle.crt to work around issues on systems that experience failed - connections to the Appstore -* Introduce new "OC-ETag" header fixing issues with server configs stripping off - ETags "No E-Tag received from server" +* $.get and $.post cannot be used to execute remote JavaScript +* Referers are not sent anymore to prevent leaking of potential sensitive + information within the URL such as the filename +* Autoloader will only allow loading files from enabled apps +* Encrypt session data to ensure that sensitive data such as remote storage + passwords or encryption keys are not written on disk +* If the shareAPI is disabled link shares no longer work \ No newline at end of file diff --git a/user_manual/whats_new.rst b/user_manual/whats_new.rst index 8877e5783..402f8ad6e 100644 --- a/user_manual/whats_new.rst +++ b/user_manual/whats_new.rst @@ -2,6 +2,17 @@ What's New for Users in ownCloud |version| ========================================== +File upload action is now in the "New" menu in the files app. + +The Files app has a new sidebar displaying file details. + +The Pictures app has been almost entirely rewritten and is now known as Gallery. + +Password reset tokens are expire after 12 hours, or after you log in within 12 +hours of request a reset. + +Federated shares now appear on your "Shared with you" tab. + Groups Listings on Personal Page -------------------------------- From 3c64be11c46565725adde8564c34c73b2e99abfd Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 13 Oct 2015 13:42:23 -0700 Subject: [PATCH 16/69] corrections re provisioning profiles --- .../enterprise_ios_app/publishing_ios_app_5.rst | 9 ++++++--- .../enterprise_ios_app/publishing_ios_app_9.rst | 10 +++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/admin_manual/enterprise_ios_app/publishing_ios_app_5.rst b/admin_manual/enterprise_ios_app/publishing_ios_app_5.rst index c8d5cfa59..99a67b668 100644 --- a/admin_manual/enterprise_ios_app/publishing_ios_app_5.rst +++ b/admin_manual/enterprise_ios_app/publishing_ios_app_5.rst @@ -3,12 +3,13 @@ Create Provisioning Profiles ============================ The next phase of this glorious journey is to create eight provisioning -profiles: 4 Ad Hoc and 4 App Store. You will email the four Ad Hoc profiles, +profiles: 4 Ad Hoc and :ref:`4 App Store `. You will +email the four Ad Hoc profiles, and your :doc:`P12 certificate ` (which you will create after your provisioning profiles), to branding@owncloud.com after building your branded app with the ownBrander app on `Customer.owncloud.com -`_. Do not send us the App Store -profiles. All eight of these profiles must be stored on your Mac PC. +`_. **Do not send us the App Store +profiles.** All eight of these profiles must be stored on your Mac PC. First Ad Hoc Provisioning Profile --------------------------------- @@ -152,6 +153,8 @@ Provisioning Profiles". .. figure:: ../images/cert-59.png +.. _app_store_profiles_label: + Create Four App Store Profiles ------------------------------ diff --git a/admin_manual/enterprise_ios_app/publishing_ios_app_9.rst b/admin_manual/enterprise_ios_app/publishing_ios_app_9.rst index 5f7794644..2e7460e49 100644 --- a/admin_manual/enterprise_ios_app/publishing_ios_app_9.rst +++ b/admin_manual/enterprise_ios_app/publishing_ios_app_9.rst @@ -4,11 +4,11 @@ Publishing Your New Branded iOS App At last, after following all the previous steps and passing beta testing, your branded iOS app is ready to publish for general distribution on iTunes. You need -a Mac computer with Xcode installed (Xcode is a free download), and you need -the three provisioning profiles and p12 file that you created copied to the -same computer that you are using to upload your app to iTunes. You will also -need a number of screenshots of your app in specific sizes and resolutions, -which are detailed in your iTunes Connect setup screen. +a Mac computer with Xcode installed (Xcode is a free download), and you need the +eight provisioning profiles (4 Ad Hoc and 4 Apple Store) and p12 file that you +created copied to the same computer that you are using to upload your app to +iTunes. You will also need a number of screenshots of your app in specific sizes +and resolutions, which are detailed in your iTunes Connect setup screen. .. Note:: Apple must review and approve your app, and the approval process can take several days to several weeks. From 732407145a0069777b0bbe7637c6efcc6420a7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 14 Oct 2015 09:09:12 +0200 Subject: [PATCH 17/69] Add cURL WebDAV examples --- user_manual/files/access_webdav.rst | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/user_manual/files/access_webdav.rst b/user_manual/files/access_webdav.rst index 13ac9a521..b6bf861a3 100644 --- a/user_manual/files/access_webdav.rst +++ b/user_manual/files/access_webdav.rst @@ -427,6 +427,68 @@ Solution Workarounds are documented in the KB2668751_ article. + +Accessing Files Using cURL +-------------------------- + +Since WebDAV is an extension of HTTP cURL can be used to script file operations. + +To create a folder with the current date as name: + +.. code-block:: bash + + $ curl -u user:pass -X MKCOL "http://example.org/owncloud/remote.php/webdav/$(date '+%d-%b-%Y')" + +To upload a file ``error.log`` into that directory: + +.. code-block:: bash + + $ curl -u user:pass -T error.log "http://example.org/owncloud/remote.php/webdav/$(date '+%d-%b-%Y')/error.log" + +To move a file: + +.. code-block:: bash + + $ curl -u user:pass -X MOVE --header 'Destination: http://example.org/owncloud/remote.php/webdav/target.jpg' http://example.org/owncloud/remote.php/webdav/source.jpg + +To get the properties of files in the root folder: + +.. code-block:: bash + + $ curl -X PROPFIND -H "Depth: 1" -u user:pass http://example.org/owncloud/remote.php/webdav/ | xml_pp + + + + /owncloud/remote.php/webdav/ + + + Tue, 13 Oct 2015 17:07:45 GMT + + + + 163 + 11802275840 + "561d3a6139d05" + + HTTP/1.1 200 OK + + + + /owncloud/remote.php/webdav/welcome.txt + + + Tue, 13 Oct 2015 17:07:35 GMT + 163 + + "47465fae667b2d0fee154f5e17d1f0f1" + text/plain + + HTTP/1.1 200 OK + + + + + .. _KB2668751: https://support.microsoft.com/kb/2668751 .. _KB2123563: https://support.microsoft.com/kb/2123563 .. _in your file manager: http://en.wikipedia.org/wiki/Webdav#WebDAV_client_applications From 3f07b869616ccdcc9de284fab808c0cc3f7a7023 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 14 Oct 2015 11:37:59 +0200 Subject: [PATCH 18/69] update nginx cache purge setup Update to use if {} as alternative to map missed set $skip_cache 1; --- .../performance_tuning/webserver_tips.rst | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst index 985ac0b94..c835a94d8 100644 --- a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst +++ b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst @@ -273,7 +273,7 @@ Configure Nginx with the ``nginx-cache-purge`` module 1. **Preparation** Create a directory where Nginx will save the cached thumbnails. Use any path that fits to your environment. Replace ``{path}`` in this example with - your file path: + your path created: .. code-block:: bash @@ -284,25 +284,36 @@ Configure Nginx with the ``nginx-cache-purge`` module .. code-block:: bash sudo vi /etc/nginx/sites-enabled/{your-ownCloud-nginx-config-file} - + Add at the *beginning*, but *outside* the ``server{}`` block:: + # cache_purge fastcgi_cache_path {path} levels=1:2 keys_zone=OWNCLOUD:100m inactive=60m; + map $request_uri $skip_cache { + default 1; + ~*/thumbnail.php 0; + ~*/apps/galleryplus/ 0; + ~*/apps/gallery/ 0; + } + +.. note:: Please adopt or delete any regex line in the ``map`` block according + your needs and the ownCloud version used. +.. note:: As an alternative to mapping, you can use as many ``if`` statements in + your server block as necessary:: + set $skip_cache 1; + if ($request_uri ~* "thumbnail.php") { set $skip_cache 0; } + if ($request_uri ~* "/apps/galleryplus/") { set $skip_cache 0; } + if ($request_uri ~* "/apps/gallery/") { set $skip_cache 0; } + Add *inside* the ``server{}`` block, as an example of a configuration:: - set $skip_cache 1; - - # POST requests and urls with a query string should always go to PHP - - if ($request_uri ~* "thumbnail.php") - { set $skip_cache 0; - } - + + # cache_purge fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; - + location ~ \.php(?:$/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; @@ -312,28 +323,29 @@ Add *inside* the ``server{}`` block, as an example of a configuration:: fastcgi_param HTTPS on; fastcgi_pass php-handler; + # cache_purge fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache OWNCLOUD; fastcgi_cache_valid 60m; } -.. note: Note regarding the ``fastcgi_pass`` parameter: +.. note:: Note regarding the ``fastcgi_pass`` parameter: Use whatever fits your configuration. In the example above, an ``upstream`` was defined in an Nginx global configuration file. - This then can look like:: + This may look like:: upstream php-handler { - server 127.0.0.1:9000; + server unix:/var/run/php5-fpm.sock; # or - #server unix:/var/run/php5-fpm.sock; + # server 127.0.0.1:9000; } 3. **Test the configuration** .. code-block:: bash - sudo service nginx restart + sudo nginx -s reload * Open your browser and clear your cache. * Logon to your ownCloud instance, open the gallery app, move thru your From bf25bdfdc79ea46f6bb46e6f8fb382d442c2aed1 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 14 Oct 2015 09:10:16 -0700 Subject: [PATCH 19/69] correct typos --- .../configuration_files/encryption_configuration.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_manual/configuration_files/encryption_configuration.rst b/admin_manual/configuration_files/encryption_configuration.rst index dc400d40e..a0846d7c1 100644 --- a/admin_manual/configuration_files/encryption_configuration.rst +++ b/admin_manual/configuration_files/encryption_configuration.rst @@ -196,9 +196,9 @@ The [module ID] is taken from the ``encryption:list-modules`` command. Encrypt all data files for all users. For performance reasons, when you enable encryption on an ownCloud server only new and changed files are encrypted. This -command gives you the option to encrypt all files. This command give You must -first put your ownCloud server into single-user mode to prevent any user -activity until encryption is completed:: +command gives you the option to encrypt all files. You must first put your +ownCloud server into single-user mode to prevent any user activity until +encryption is completed:: occ encryption:encrypt-all From 209abbd60649b2e423af0f10b062229a045f28a4 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 14 Oct 2015 13:58:56 -0700 Subject: [PATCH 20/69] placeholder for gallery app manual page --- user_manual/files/gallery_app.rst | 9 +++++++++ user_manual/files/index.rst | 1 + 2 files changed, 10 insertions(+) create mode 100644 user_manual/files/gallery_app.rst diff --git a/user_manual/files/gallery_app.rst b/user_manual/files/gallery_app.rst new file mode 100644 index 000000000..bccc5b77b --- /dev/null +++ b/user_manual/files/gallery_app.rst @@ -0,0 +1,9 @@ +=========== +Gallery App +=========== + +The Pictures app has been rewritten and improved, and is now called the Gallery +app. It supports more image formats, sorting, zoom, and scrolling. It also +supports advanced customizations via a simple text file; see `Gallery +configuration `_ +for more information. \ No newline at end of file diff --git a/user_manual/files/index.rst b/user_manual/files/index.rst index 2ad381a81..083b1ac9b 100644 --- a/user_manual/files/index.rst +++ b/user_manual/files/index.rst @@ -7,6 +7,7 @@ Files & Synchronization access_webgui access_webdav + gallery_app deleted_file_management desktop_mobile_sync encrypting_files From fd9386b67b79e0627731b4f35ff3bfbbffac1dd9 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Thu, 15 Oct 2015 08:40:10 +0200 Subject: [PATCH 21/69] Max. upload of 4GB also valid for IE11 --- .../configuration_files/big_file_upload_configuration.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/configuration_files/big_file_upload_configuration.rst b/admin_manual/configuration_files/big_file_upload_configuration.rst index bd0db261c..345ac7e60 100644 --- a/admin_manual/configuration_files/big_file_upload_configuration.rst +++ b/admin_manual/configuration_files/big_file_upload_configuration.rst @@ -10,7 +10,7 @@ hard limits that cannot be exceeded: * < 2GB on Windows (32Bit and 64Bit) * < 2GB with Server Version 4.5 or older * < 2GB with IE6 - IE8 -* < 4GB with IE9 - IE10 +* < 4GB with IE9 - IE11 64-bit filesystems have much higher limits; consult the documentation for your filesystem. From b2d496e4f147dbe4629044c1c13d7048665a832c Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Mon, 19 Oct 2015 14:02:05 -0700 Subject: [PATCH 22/69] encryption corrections --- .../configuration_files/encryption_configuration.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_manual/configuration_files/encryption_configuration.rst b/admin_manual/configuration_files/encryption_configuration.rst index a0846d7c1..1adb85e88 100644 --- a/admin_manual/configuration_files/encryption_configuration.rst +++ b/admin_manual/configuration_files/encryption_configuration.rst @@ -18,7 +18,6 @@ improvements, including: * Encrypt all data files at once when enabling encryption. * Decrypt all data files, or per user. * Users may decrypt their own files. -* Migrate all keys after a major upgrade, or per user. * Move your keys to a different folder. ownCloud server-side encryption encrypts files stored on the ownCloud server, @@ -229,8 +228,9 @@ Files Not Encrypted Only the data in the files in ``data/user/files`` is encrypted, and not the filenames or folder structures. These files are never encrypted: -- Files in the trash bin -- Versions +- Existing files in the trash bin & Versions. Only new and changed files after + encryption is enabled are encrypted. +- Existing files in Versions - Image thumbnails from the Gallery app - Previews from the Files app - The search index from the full text search app From 8c89f6da2e87cf6f5d7a26cee6dd777e7a1eb2b1 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Mon, 19 Oct 2015 14:04:01 -0700 Subject: [PATCH 23/69] encryption corrections --- admin_manual/configuration_files/encryption_configuration.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/configuration_files/encryption_configuration.rst b/admin_manual/configuration_files/encryption_configuration.rst index 1adb85e88..2727be9a1 100644 --- a/admin_manual/configuration_files/encryption_configuration.rst +++ b/admin_manual/configuration_files/encryption_configuration.rst @@ -205,7 +205,7 @@ Decrypt all user data files, or optionally a single user:: occ encryption:decrypt-all [username] -Move keys to a different folder:: +Move keys to a different folder, either locally or on a different server:: occ encryption:change-key-storage-root From c7b730e895f7474ecb084301d6ce3172870fe349 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Mon, 19 Oct 2015 15:31:57 -0700 Subject: [PATCH 24/69] expanded credentials information --- .../windows-network-drive_configuration.rst | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst index 1549e28d7..8ce218a8e 100644 --- a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst +++ b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst @@ -99,12 +99,20 @@ the server address, the share name, and the folder you want to connect to. You have four options for login credentials: -* **User credentials**. -* **Global credentials**, which uses the credentials set in the Global +* **User credentials**. For admin-created global mountpoints; users must + click on the share and then enter their personal credentials to access the + share. +* **Global credentials**. Uses the credentials set in the Global credentials fields * **Login credentials** is for users to connect to the mountpoint using their - DOMAIN/logincredentials; enter the domain in the **Domain** field. -* **Custom Credentials** + DOMAIN/login credentials; enter the domain in the **Domain** field. +* **Custom Credentials**. On admin-created global mountpoints, the admin may + configure custom credentials to access the shares. For example, the admin + uses a single system account to mount company folders for all users. The + folder permissions are mapped with the system account permissions. When users + create a share on their Personal pages, custom credentials are only for that + mountpoint. For example, User A creates a mountpoint that is accessible with + User B's credentials. .. figure:: images/wnd-2.png :scale: 45% From ea7d5e0de91efbec31c88ea47972dec9fa378943 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Tue, 20 Oct 2015 10:52:49 +0200 Subject: [PATCH 25/69] Bump master to 9.0 --- admin_manual/conf.py | 4 ++-- developer_manual/conf.py | 4 ++-- user_manual/conf.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/admin_manual/conf.py b/admin_manual/conf.py index 32c2e823c..af81c223a 100644 --- a/admin_manual/conf.py +++ b/admin_manual/conf.py @@ -49,9 +49,9 @@ copyright = u'2012-2015, The ownCloud developers' # built documents. # # The short X.Y version. -version = '8.2' +version = '9.0' # The full version, including alpha/beta/rc tags. -release = '8.2' +release = '9.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/developer_manual/conf.py b/developer_manual/conf.py index 9544924e7..25f6467fa 100644 --- a/developer_manual/conf.py +++ b/developer_manual/conf.py @@ -48,9 +48,9 @@ copyright = u'2012-2015, The ownCloud developers' # built documents. # # The short X.Y version. -version = '8.2' +version = '9.0' # The full version, including alpha/beta/rc tags. -release = '8.2' +release = '9.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/user_manual/conf.py b/user_manual/conf.py index 43127fbd5..5b6bf2b64 100644 --- a/user_manual/conf.py +++ b/user_manual/conf.py @@ -48,9 +48,9 @@ copyright = u'2012-2015, The ownCloud developers' # built documents. # # The short X.Y version. -version = '8.2' +version = '9.0' # The full version, including alpha/beta/rc tags. -release = '8.2' +release = '9.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 536c8a9a987119a645c15770f08a576e67b5c58b Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Tue, 20 Oct 2015 11:15:02 +0200 Subject: [PATCH 26/69] update also URLs to 9.0 --- admin_manual/enterprise_clients/publishing_android_app.rst | 2 +- admin_manual/installation/apps_management_installation.rst | 2 +- admin_manual/issues/index.rst | 2 +- developer_manual/core/ocs-share-api.rst | 2 +- developer_manual/core/theming.rst | 2 +- developer_manual/general/devenv.rst | 4 ++-- user_manual/external_storage/external_storage.rst | 2 +- user_manual/files/large_file_upload.rst | 2 +- user_manual/pim/calendar.rst | 4 ++-- user_manual/pim/contacts.rst | 6 +++--- user_manual/pim/sync_ios.rst | 2 +- user_manual/pim/sync_osx.rst | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/admin_manual/enterprise_clients/publishing_android_app.rst b/admin_manual/enterprise_clients/publishing_android_app.rst index f87c9fa7e..0f76f8a9e 100644 --- a/admin_manual/enterprise_clients/publishing_android_app.rst +++ b/admin_manual/enterprise_clients/publishing_android_app.rst @@ -231,7 +231,7 @@ to your ownCloud server and share it like any other file: you can create normal ownCloud shares with ownCloud users and groups, and you may create a link share to share it with anyone. (See the **Files & Synchronization** section of the `ownCloud User Manual -`_ to learn +`_ to learn more about sharing files.) .. _publish_google_play: diff --git a/admin_manual/installation/apps_management_installation.rst b/admin_manual/installation/apps_management_installation.rst index 59f11cdc3..24be684ef 100644 --- a/admin_manual/installation/apps_management_installation.rst +++ b/admin_manual/installation/apps_management_installation.rst @@ -94,7 +94,7 @@ API. If they are then they will not be installed. .. note:: If you would like to create or add your own ownCloud app, please use the *Add your App...* button on the same page. This button redirects you to the `App Development documentation - `_, + `_, where you can find information about creating and adding your own apps. Using Custom App Directories diff --git a/admin_manual/issues/index.rst b/admin_manual/issues/index.rst index 157ccaf6b..b1d4ef203 100644 --- a/admin_manual/issues/index.rst +++ b/admin_manual/issues/index.rst @@ -41,7 +41,7 @@ If you can't find a solution, please use our `bugtracker`_. .. _webchat: http://webchat.freenode.net/?channels=owncloud .. _Enterprise Subscription: https://owncloud.com/lp/community-or-enterprise/ .. _bugtracker: - http://doc.owncloud.org/server/8.2/developer_manual/bugtracker/index.html + http://doc.owncloud.org/server/9.0/developer_manual/bugtracker/index.html .. TODO ON RELEASE: Update version number above on release General Troubleshooting diff --git a/developer_manual/core/ocs-share-api.rst b/developer_manual/core/ocs-share-api.rst index faa028968..01e59b5a1 100644 --- a/developer_manual/core/ocs-share-api.rst +++ b/developer_manual/core/ocs-share-api.rst @@ -136,7 +136,7 @@ Federated Cloud Shares ====================== Both the sending and the receiving instance need to have federated cloud sharing -enabled and configured. See `Configuring Federated Cloud Sharing `_. +enabled and configured. See `Configuring Federated Cloud Sharing `_. Create a new Federated Cloud Share ---------------------------------- diff --git a/developer_manual/core/theming.rst b/developer_manual/core/theming.rst index 5755365be..543c3c246 100644 --- a/developer_manual/core/theming.rst +++ b/developer_manual/core/theming.rst @@ -203,7 +203,7 @@ One exception is the method ``buildDocLinkToKey`` which gets passed in a key as .. code-block:: php public function buildDocLinkToKey($key) { - return $this->getDocBaseUrl() . '/server/8.2/go.php?to=' . $key; + return $this->getDocBaseUrl() . '/server/9.0/go.php?to=' . $key; } Testing the new theme out diff --git a/developer_manual/general/devenv.rst b/developer_manual/general/devenv.rst index ad25984c0..4b0f65c48 100644 --- a/developer_manual/general/devenv.rst +++ b/developer_manual/general/devenv.rst @@ -11,7 +11,7 @@ Please follow the steps on this page to set up your development environment. Set up web server and database ============================== -First `set up your web server and database `_ (**Section**: Manual Installation - Prerequisites). +First `set up your web server and database `_ (**Section**: Manual Installation - Prerequisites). .. TODO ON RELEASE: Update version number above on release Get the source @@ -19,7 +19,7 @@ Get the source There are two ways to obtain ownCloud sources: -* Using the `stable version `_ +* Using the `stable version `_ .. TODO ON RELEASE: Update version number above on release * Using the development version from `GitHub`_ which will be explained below. diff --git a/user_manual/external_storage/external_storage.rst b/user_manual/external_storage/external_storage.rst index 3ef1632e1..d808bc74b 100644 --- a/user_manual/external_storage/external_storage.rst +++ b/user_manual/external_storage/external_storage.rst @@ -6,6 +6,6 @@ The External Storage application allows you to mount external storage services, such as Google Drive, Dropbox, Amazon S3, SMB/CIFS fileservers, and FTP servers in ownCloud. Your ownCloud server administrator controls which of these are available to you. Please see `Configuring External Storage (GUI) -`_ in the ownCloud Administrator's manual for configuration howtos and examples. diff --git a/user_manual/files/large_file_upload.rst b/user_manual/files/large_file_upload.rst index b43c8216d..377160f1a 100644 --- a/user_manual/files/large_file_upload.rst +++ b/user_manual/files/large_file_upload.rst @@ -15,6 +15,6 @@ set by your administrator): * Contact your administrator to request an increase in these variables * Refer to the section in the `Admin Documentation - `_ that describes how to manage file upload size limits. diff --git a/user_manual/pim/calendar.rst b/user_manual/pim/calendar.rst index 30a4bd11e..1c04277ed 100644 --- a/user_manual/pim/calendar.rst +++ b/user_manual/pim/calendar.rst @@ -6,10 +6,10 @@ The Calendar app is not enabled by default in ownCloud 8 and needs to be enabled seperately. It is also not a supported core app. You may ask your ownCloud server admin to enable it, and if you are your own admin consult the `Installation > Installing and Managing Apps -`_ section of the `ownCloud Server Administration Manual -`_. +`_. The ownCloud Calendar app enables you to create and edit events, synchronize to other calendars you might use, and create new, personalized calendars. diff --git a/user_manual/pim/contacts.rst b/user_manual/pim/contacts.rst index c6635e29f..405897b56 100644 --- a/user_manual/pim/contacts.rst +++ b/user_manual/pim/contacts.rst @@ -6,10 +6,10 @@ The Contacts app is not enabled by default in ownCloud 8 and needs to be enabled seperately. It is also not a supported core app. You may ask your ownCloud server admin to enable it, and if you are your own admin consult the `Installation > Installing and Managing Apps -`_ section of the `ownCloud Server Administration Manual -`_. +`_. The ownCloud Contacts app is similar to other mobile contact applications, but with more functionality. When you first access the Contacts app, a default @@ -347,4 +347,4 @@ Troubleshooting Are you having problems using the app? Have a look at the :doc:`troubleshooting` and `Troubleshooting Contacts & Calendar`_ guides. -.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/8.2/admin_manual/issues/index.html#troubleshooting-contacts-calendar \ No newline at end of file +.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/9.0/admin_manual/issues/index.html#troubleshooting-contacts-calendar \ No newline at end of file diff --git a/user_manual/pim/sync_ios.rst b/user_manual/pim/sync_ios.rst index 5eb63655c..024c0a130 100644 --- a/user_manual/pim/sync_ios.rst +++ b/user_manual/pim/sync_ios.rst @@ -52,4 +52,4 @@ Now should now find your contacts in the address book of your iPhone. If it's still not working, have a look at the :doc:`troubleshooting` and `Troubleshooting Contacts & Calendar`_ guides. -.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/8.2/admin_manual/issues/index.html#troubleshooting-contacts-calendar \ No newline at end of file +.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/9.0/admin_manual/issues/index.html#troubleshooting-contacts-calendar \ No newline at end of file diff --git a/user_manual/pim/sync_osx.rst b/user_manual/pim/sync_osx.rst index 794c8d6ba..4cf7dcf91 100644 --- a/user_manual/pim/sync_osx.rst +++ b/user_manual/pim/sync_osx.rst @@ -34,4 +34,4 @@ There is also an easy `HOWTO`_ in the forum. .. _HOWTO: http://forum.owncloud.org/viewtopic.php?f=3&t=132 -.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/8.2/admin_manual/issues/index.html#troubleshooting-contacts-calendar +.. _Troubleshooting Contacts & Calendar: https://doc.owncloud.org/server/9.0/admin_manual/issues/index.html#troubleshooting-contacts-calendar From cc254d7715669e960f0d56476dba2a4fe92bf7d2 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 20 Oct 2015 06:32:23 -0700 Subject: [PATCH 27/69] master is now 9.0 --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index d8ba781f4..b29c1ebaa 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ This repository hosts three manuals: * **Administration Manual** * **Developers Manual** -Please work in the appropriate branch. stable6 is for ownCloud 6, stable7 is for ownCloud 7, stable8 is 8.0, stable8.1 is 8.1, and master is version 8.2. +Please work in the appropriate branch. stable6 is for ownCloud 6, stable7 is for ownCloud 7, stable8 is 8.0, stable8.1 is 8.1, and stable8.2 is 8.2, and master is version 9. Please wrap lines at 80 characters. From 436a1658fdc77a64ad3b0a752bb53f2616506b49 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 20 Oct 2015 06:34:56 -0700 Subject: [PATCH 28/69] master is now 9.0 --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index b29c1ebaa..e6f776a74 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ This repository hosts three manuals: * **Administration Manual** * **Developers Manual** -Please work in the appropriate branch. stable6 is for ownCloud 6, stable7 is for ownCloud 7, stable8 is 8.0, stable8.1 is 8.1, and stable8.2 is 8.2, and master is version 9. +Please work in the appropriate branch. Stable7 is for ownCloud 7, stable8 is 8.0, stable8.1 is 8.1, stable8.2 is 8.2, and master is version 9. Please wrap lines at 80 characters. From 5e8347907a961f44c33b6fa25f65d36c35a00053 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 21 Oct 2015 15:25:43 -0700 Subject: [PATCH 29/69] restore page on enterprise logging apps Conflicts: admin_manual/contents.rst --- admin_manual/contents.rst | 3 ++ .../enterprise_logging_apps.rst | 39 +++++++++++++++++++ admin_manual/enterprise_logging/index.rst | 8 ++++ 3 files changed, 50 insertions(+) create mode 100644 admin_manual/enterprise_logging/enterprise_logging_apps.rst create mode 100644 admin_manual/enterprise_logging/index.rst diff --git a/admin_manual/contents.rst b/admin_manual/contents.rst index f163b8e40..1849a0ca0 100644 --- a/admin_manual/contents.rst +++ b/admin_manual/contents.rst @@ -30,3 +30,6 @@ Enterprise Subscription Only enterprise_external_storage/index enterprise_user_management/index enterprise_files_drop/index + enterprise_logging/index + + diff --git a/admin_manual/enterprise_logging/enterprise_logging_apps.rst b/admin_manual/enterprise_logging/enterprise_logging_apps.rst new file mode 100644 index 000000000..759494a26 --- /dev/null +++ b/admin_manual/enterprise_logging/enterprise_logging_apps.rst @@ -0,0 +1,39 @@ +======================= +Enterprise Logging Apps +======================= + +There are two enterprise logging apps available to ownCloud Enterprise +Subscription customers: **File Shared access logging app** and **Log audit +info**. The **File Shared access logging app** records the file sharing activity +of your users, and **Log audit info** records user logins and logouts. + +.. figure:: images/logging-1.png + +.. figure:: images/logging-2.png + :alt: The two enterprise logging apps on the Apps page. + +These two apps work together, and should be enabled together. Your logging +level must be set to at least **Info, warnings, errors, and fatal issues** on +your ownCloud admin page, or ``'loglevel' => 1`` in ``config.php``. + +View your logfiles on your admin page. This shows which logging app recorded +the entries, timestamps, usernames, and their activities: + +.. figure:: images/logging-3.png + :alt: Graphical log example. + +Click the **Download logfile** button to dump the plain text log, or open the +logfile directly in a text editor. The default location is +``owncloud/data/owncloud.log``. This is what the raw log looks like:: + + {"reqId":"uaG6sHiutvgzVUCUXM3W","remoteAddr":"::1","app":"admin_audit", + "message":"Rename \"\/molly\/files\/server-and-enterprise-installation\" to + \"\/molly\/files\/shared\/server-and-enterprise-installation\" by user molly, + owner: molly","level":1,"time":"2015-10-21T22:07:14+00:00"} + {"reqId":"Krsnp8BgtLCtuT4zLTWs","remoteAddr":"::1","app":"admin_audit", + "message":"Rename \"\/molly\/files\/shared\/San%20Francisco.jpg\" to + \"\/molly\/files\/shared\/SanFrancisco.jpg\" by user molly, owner: + molly","level":1,"time":"2015-10-21T22:07:25+00:00"} + +See :doc:`../configuration_server/logging_configuration` for more information +on logging. diff --git a/admin_manual/enterprise_logging/index.rst b/admin_manual/enterprise_logging/index.rst new file mode 100644 index 000000000..b257ebdeb --- /dev/null +++ b/admin_manual/enterprise_logging/index.rst @@ -0,0 +1,8 @@ +================================= +Enterprise Logging Apps (ES only) +================================= + +.. toctree:: + :maxdepth: 2 + + enterprise_logging_apps \ No newline at end of file From 847a5299fe3872c0d41df392984d62005aeb8577 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 21 Oct 2015 16:19:45 -0700 Subject: [PATCH 30/69] restore enterprise logging apps page --- admin_manual/enterprise_logging/enterprise_logging_apps.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/admin_manual/enterprise_logging/enterprise_logging_apps.rst b/admin_manual/enterprise_logging/enterprise_logging_apps.rst index 759494a26..8d0ae810d 100644 --- a/admin_manual/enterprise_logging/enterprise_logging_apps.rst +++ b/admin_manual/enterprise_logging/enterprise_logging_apps.rst @@ -8,8 +8,6 @@ info**. The **File Shared access logging app** records the file sharing activity of your users, and **Log audit info** records user logins and logouts. .. figure:: images/logging-1.png - -.. figure:: images/logging-2.png :alt: The two enterprise logging apps on the Apps page. These two apps work together, and should be enabled together. Your logging From 61c39f3cabab1e0668f0d2a9968701cfa4a866fb Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 21 Oct 2015 16:26:12 -0700 Subject: [PATCH 31/69] restore enterprise logging apps page --- .../enterprise_logging_apps.rst | 6 +++--- .../enterprise_logging/images/logging-1.png | Bin 0 -> 22341 bytes .../enterprise_logging/images/logging-3.png | Bin 0 -> 22855 bytes 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 admin_manual/enterprise_logging/images/logging-1.png create mode 100644 admin_manual/enterprise_logging/images/logging-3.png diff --git a/admin_manual/enterprise_logging/enterprise_logging_apps.rst b/admin_manual/enterprise_logging/enterprise_logging_apps.rst index 8d0ae810d..30e09773d 100644 --- a/admin_manual/enterprise_logging/enterprise_logging_apps.rst +++ b/admin_manual/enterprise_logging/enterprise_logging_apps.rst @@ -3,9 +3,9 @@ Enterprise Logging Apps ======================= There are two enterprise logging apps available to ownCloud Enterprise -Subscription customers: **File Shared access logging app** and **Log audit -info**. The **File Shared access logging app** records the file sharing activity -of your users, and **Log audit info** records user logins and logouts. +Subscription customers: **Log file sharing** and **Log user actions**. The **Log +file sharing** app records the file sharing activity of your users, and **Log +user actions** records user logins and logouts. .. figure:: images/logging-1.png :alt: The two enterprise logging apps on the Apps page. diff --git a/admin_manual/enterprise_logging/images/logging-1.png b/admin_manual/enterprise_logging/images/logging-1.png new file mode 100644 index 0000000000000000000000000000000000000000..30e50730bfbd4ef1383f2faf8a674025bb7495f6 GIT binary patch literal 22341 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 literal 0 HcmV?d00001 diff --git a/admin_manual/enterprise_logging/images/logging-3.png b/admin_manual/enterprise_logging/images/logging-3.png new file mode 100644 index 0000000000000000000000000000000000000000..18c3fb254da9299cc188445d8c614b1e9e2dc2b6 GIT binary patch literal 22855 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 JOv=RnzW}-ok}v=O literal 0 HcmV?d00001 From 5b4b35aa23c9ee0bf648456ec59e20157caeeaef Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Sat, 24 Oct 2015 03:35:13 +0200 Subject: [PATCH 32/69] generate documentation from config.sample.php --- .../config_sample_php_parameters.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 739cdd07e..474442972 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -624,6 +624,16 @@ Defaults to ``[datadirectory]/owncloud.log`` Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 = Warning, 3 = Error, and 4 = Fatal. The default value is Warning. +:: + + 'syslog_tag' => 'ownCloud', + +If you maintain different instances and aggregate the logs, you may want +to distinguish between them. ``syslog_tag`` can be set per instance +with a unique id. Only available if ``log_type`` is set to ``syslog``. + +The default value is ``ownCloud``. + :: 'log.condition' => [ From cd59dd7c6b77ebbef7dcb8e47a4e2f9a8f91ecc0 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Mon, 26 Oct 2015 08:18:24 +0100 Subject: [PATCH 33/69] fix typo --- developer_manual/general/devenv.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer_manual/general/devenv.rst b/developer_manual/general/devenv.rst index 4b0f65c48..35a5889cf 100644 --- a/developer_manual/general/devenv.rst +++ b/developer_manual/general/devenv.rst @@ -19,7 +19,7 @@ Get the source There are two ways to obtain ownCloud sources: -* Using the `stable version `_ +* Using the `stable version `_ .. TODO ON RELEASE: Update version number above on release * Using the development version from `GitHub`_ which will be explained below. From d712be6415835244aed78ea793d67f950e4e5a47 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Tue, 27 Oct 2015 09:04:28 +0100 Subject: [PATCH 34/69] Documentation for .well-known urls when running in subdir --- admin_manual/installation/linux_installation.rst | 6 +++++- admin_manual/installation/source_installation.rst | 15 +++++++++------ admin_manual/issues/index.rst | 7 ++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/admin_manual/installation/linux_installation.rst b/admin_manual/installation/linux_installation.rst index 86961bc38..23365b731 100644 --- a/admin_manual/installation/linux_installation.rst +++ b/admin_manual/installation/linux_installation.rst @@ -69,4 +69,8 @@ Mageia software repository. **Debian/Ubuntu:** The package installs an additional Apache config file to ``/etc/apache2/conf.d/owncloud.conf`` which contains an ``Alias`` to the owncloud installation directory as well as some more needed configuration -options. \ No newline at end of file +options. + +**Running ownCloud in a subdir**: If you're running ownCloud in a subdir and +want to use CalDAV or CardDAV clients make sure you have configured the correct +:ref:`service-discovery-label` URLs. \ No newline at end of file diff --git a/admin_manual/installation/source_installation.rst b/admin_manual/installation/source_installation.rst index 547a679e8..7aeae0953 100644 --- a/admin_manual/installation/source_installation.rst +++ b/admin_manual/installation/source_installation.rst @@ -208,20 +208,23 @@ Additional Apache Configurations the server configuration, as well as in the CommonName field of the certificate. If you want your ownCloud to be reachable via the internet, then set both of these to the domain you want to reach your ownCloud server. - + * Now restart Apache:: - + service apache2 restart - -.. note:: You can use ownCloud over plain HTTP, but we strongly encourage you to - use SSL/TLS to encrypt all of your server traffic, and to protect - user's logins and data in transit. + +* If you're running ownCloud in a subdir and want to use CalDAV or CardDAV clients + make sure you have configured the correct :ref:`service-discovery-label` URLs. .. _enabling-ssl-label: Enabling SSL ------------ +.. note:: You can use ownCloud over plain HTTP, but we strongly encourage you to + use SSL/TLS to encrypt all of your server traffic, and to protect + user's logins and data in transit. + Apache installed under Ubuntu comes already set-up with a simple self-signed certificate. All you have to do is to enable the ssl module and the default site. Open a terminal and run:: diff --git a/admin_manual/issues/index.rst b/admin_manual/issues/index.rst index b1d4ef203..8bb330e82 100644 --- a/admin_manual/issues/index.rst +++ b/admin_manual/issues/index.rst @@ -239,6 +239,8 @@ which contains various additional information about WebDAV problems. Troubleshooting Contacts & Calendar ----------------------------------- +.. _service-discovery-label: + Service discovery ^^^^^^^^^^^^^^^^^ @@ -248,11 +250,6 @@ when explicitly configured to use it. There are several techniques to remedy this, which are described extensively at the `Sabre DAV website `_. -Apple iOS -^^^^^^^^^ - -Below is what has been proven to work with iOS including iOS 7. - If your ownCloud instance is installed in a subfolder under the web server's document root and the client has difficulties finding the Cal- or CardDAV end-points, configure your web server to redirect from a "well-known" URL to From dc712c01cd754a79025cb6e58e8bf5a412aed671 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 27 Oct 2015 09:52:21 -0700 Subject: [PATCH 35/69] Update windows-network-drive_configuration.rst --- .../windows-network-drive_configuration.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst index 8ce218a8e..107e3b002 100644 --- a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst +++ b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst @@ -120,7 +120,13 @@ You have four options for login credentials: *Figure 2: Windows Network Drive configuration panel. (Click to enlarge.)* -When you're finished click the **Save** button. +When you're finished click the **Save** button. + + + +.. note:: + +When you create a new mountpoint using Login credentials you must log out of ownCloud, and then log back in so you can access the share. You only have to do this the first time. Personal SMB Mounts ------------------- From 4a9acccbe757c7cef7c36e496970b8c0c15571a2 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 27 Oct 2015 09:53:04 -0700 Subject: [PATCH 36/69] Update windows-network-drive_configuration.rst --- .../windows-network-drive_configuration.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst index 107e3b002..4333fb034 100644 --- a/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst +++ b/admin_manual/enterprise_external_storage/windows-network-drive_configuration.rst @@ -124,9 +124,7 @@ When you're finished click the **Save** button. -.. note:: - -When you create a new mountpoint using Login credentials you must log out of ownCloud, and then log back in so you can access the share. You only have to do this the first time. +.. note:: When you create a new mountpoint using Login credentials you must log out of ownCloud, and then log back in so you can access the share. You only have to do this the first time. Personal SMB Mounts ------------------- From a0a4d1899c3f2c235c87093fa37bc5e612530ac8 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 27 Oct 2015 19:22:34 +0100 Subject: [PATCH 37/69] Update nginx cache purge to be multi user proof --- .../performance_tuning/webserver_tips.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst index c835a94d8..878121830 100644 --- a/admin_manual/configuration_server/performance_tuning/webserver_tips.rst +++ b/admin_manual/configuration_server/performance_tuning/webserver_tips.rst @@ -309,8 +309,8 @@ Add at the *beginning*, but *outside* the ``server{}`` block:: Add *inside* the ``server{}`` block, as an example of a configuration:: - # cache_purge - fastcgi_cache_key "$scheme$request_method$host$request_uri"; + # cache_purge (with $http_cookies we have unique keys for the user) + fastcgi_cache_key $http_cookie$request_method$host$request_uri; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; @@ -328,6 +328,7 @@ Add *inside* the ``server{}`` block, as an example of a configuration:: fastcgi_no_cache $skip_cache; fastcgi_cache OWNCLOUD; fastcgi_cache_valid 60m; + fastcgi_cache_methods GET HEAD; } .. note:: Note regarding the ``fastcgi_pass`` parameter: From 7186c0e67196328f77c2966f0bbdd370d45c411f Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 27 Oct 2015 16:17:04 -0700 Subject: [PATCH 38/69] Update release_notes.rst --- admin_manual/release_notes.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/admin_manual/release_notes.rst b/admin_manual/release_notes.rst index f8dfaedd5..25fe4ce37 100644 --- a/admin_manual/release_notes.rst +++ b/admin_manual/release_notes.rst @@ -5,6 +5,8 @@ ownCloud |version| Release Notes Changes in 8.2 -------------- +PHP 5.6.11+ breaks the LDAP wizard with a 'Could not connect to LDAP' error. See https://github.com/owncloud/core/issues/20020. + ``filesystem_check_changes`` in ``config.php`` is set to 0 by default. This prevents unnecessary update checks and improves performance. If you are using external storage mounts such as NFS on a remote storage server, set this to 1 @@ -28,6 +30,9 @@ Run ``sudo -u www-data php occ ldap:show-config`` to find the correct ``sNN`` value; if there is not one then use empty quotes, ``""``. (See :doc:`configuration_server/occ_command`.) +Users of the Linux Package need to update their repository setup as described +in this `blogpost `_. + Changes in 8.1 -------------- From c437851b3af115d758fe4d16c3d646eac7a37ae1 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 27 Oct 2015 16:17:37 -0700 Subject: [PATCH 39/69] Update release_notes.rst --- admin_manual/release_notes.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin_manual/release_notes.rst b/admin_manual/release_notes.rst index 25fe4ce37..a18b14c85 100644 --- a/admin_manual/release_notes.rst +++ b/admin_manual/release_notes.rst @@ -2,6 +2,10 @@ ownCloud |version| Release Notes ================================ + +Changes in 9.0 +-------------- + Changes in 8.2 -------------- From 6843b309d011094422016c05ee4a146b8916f0fb Mon Sep 17 00:00:00 2001 From: RealRancor Date: Wed, 28 Oct 2015 07:15:30 +0100 Subject: [PATCH 40/69] Disable 3rdparty / non-shipped apps when having issues. --- admin_manual/issues/index.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/admin_manual/issues/index.rst b/admin_manual/issues/index.rst index 8bb330e82..c50e3213a 100644 --- a/admin_manual/issues/index.rst +++ b/admin_manual/issues/index.rst @@ -47,6 +47,13 @@ If you can't find a solution, please use our `bugtracker`_. General Troubleshooting ----------------------- +Disable 3rdparty / non-shipped apps +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It might be possible that 3rdparty / non-shipped apps are causing various different +issues. Please refer to the :ref:`apps_commands_label` on how to disable an app +from command line. + ownCloud Logfiles ^^^^^^^^^^^^^^^^^ From 6d1205613b2b16ef5a406bf183891ed455790761 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Wed, 28 Oct 2015 12:57:36 -0700 Subject: [PATCH 41/69] update download links --- .../installation/linux_installation.rst | 18 +++++++++--------- .../installation/source_installation.rst | 2 +- admin_manual/maintenance/upgrade.rst | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/admin_manual/installation/linux_installation.rst b/admin_manual/installation/linux_installation.rst index 23365b731..d54928bd2 100644 --- a/admin_manual/installation/linux_installation.rst +++ b/admin_manual/installation/linux_installation.rst @@ -8,21 +8,21 @@ Installation Quick Start See the :doc:`system_requirements` for the recommended ownCloud setup and supported platforms. -Installing ownCloud Server (the free community edition) on Linux from the -`openSUSE Build Service`_ packages is the preferred method. These are -maintained -by ownCloud engineers, and you can use your package manager to keep your -ownCloud server up-to-date. Follow the instructions for your distro to add the -oBS repository, download and install the repository signing key, and install +Installing ownCloud Server (the free community edition) on Linux from our `Open +Build Service`_ packages is the preferred method. These are maintained by +ownCloud engineers, and you can use your package manager to keep your ownCloud +server up-to-date. Follow the instructions for your distro to add the oBS +repository, download and install the repository signing key, and install ownCloud. Then run the Installation Wizard to complete your installation. (see :doc:`installation_wizard`). .. note:: Do not move the folders provided by these packages after the installation, as this will break updates. + + https://download.owncloud.org/download/repositories/8.2/owncloud/ -.. _openSUSE Build Service: - http://software.opensuse.org/download.html?project=isv:ownCloud:community& - package=owncloud +.. _Open Build Service: + https://download.owncloud.org/download/repositories/8.2/owncloud/ Installing ownCloud Enterprise Subscription ------------------------------------------- diff --git a/admin_manual/installation/source_installation.rst b/admin_manual/installation/source_installation.rst index 7aeae0953..82d786f87 100644 --- a/admin_manual/installation/source_installation.rst +++ b/admin_manual/installation/source_installation.rst @@ -2,7 +2,7 @@ Manual Installation on Linux ============================ -Installing ownCloud on Linux from the openSUSE Build Service packages is the +Installing ownCloud on Linux from our Open Build Service packages is the preferred method (see :doc:`linux_installation`). These are maintained by ownCloud engineers, and you can use your package manager to keep your ownCloud server up-to-date. diff --git a/admin_manual/maintenance/upgrade.rst b/admin_manual/maintenance/upgrade.rst index ce5a9b745..822919033 100644 --- a/admin_manual/maintenance/upgrade.rst +++ b/admin_manual/maintenance/upgrade.rst @@ -45,9 +45,9 @@ Preferred Upgrade Method ------------------------ The best method for keeping ownCloud on Linux servers current is by -configuring your system to use the `openSUSE Build Service -`_ (see :doc:`../installation/linux_installation`); just +configuring your system to use our `Open Build Service +`_ (see +:doc:`../installation/linux_installation`); just follow the instructions on oBS for setting up your package manager. Then stay current by using your Linux package manager to upgrade. From 1d280c9fcb51306b40920cea070bfe9d9360d416 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 29 Oct 2015 03:35:13 +0100 Subject: [PATCH 42/69] generate documentation from config.sample.php --- .../config_sample_php_parameters.rst | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 474442972..147d11d9e 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -1335,16 +1335,6 @@ Set this ownCloud instance to debugging mode Only enable this for local development and not in production environments This will disable the minifier and outputs some additional debug information -:: - - 'update.skip-migration-test' => false, - -Skips the migration test during upgrades - -If this is set to true the migration test are deactivated during upgrade. -This is only recommended in installations where upgrade tests are run in -advance with the same data on a test system. - :: 'copied_sample_config' => true, From 4be83165206d8c755764de21f14a1928d49864fc Mon Sep 17 00:00:00 2001 From: Pellaeon Lin Date: Thu, 29 Oct 2015 11:24:18 +0800 Subject: [PATCH 43/69] Update Javascript L10N section --- developer_manual/app/l10n.rst | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/developer_manual/app/l10n.rst b/developer_manual/app/l10n.rst index 5563c606b..fcc5b62da 100644 --- a/developer_manual/app/l10n.rst +++ b/developer_manual/app/l10n.rst @@ -97,17 +97,13 @@ In every template the global variable **$l** can be used to translate the string JavaScript ========== -There is currently no good way to translate JavaScript strings. One way to still use translated strings in the scripts is to create an invisible HTML element with all the translations in it which can be parsed in the JavaScript code: - -.. code-block:: php - -
    -
  • t('Add new file')); ?>
  • -
+There is a global function **t()** available for translating strings. The first argument is your app name, the second argument is the string to translate. .. code-block:: js - var addNewTranslation = $('#add-new').text(); + t('myapp', 'Hello World!'); + +For advanced usage, refer to the source code **core/js/l10n.js**, **t()** is bind to **OC.L10N.translate()**. Hints ===== From 8b3ab9d73f15b40de56d0728a4cf6112f329aa26 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 29 Oct 2015 16:37:10 +0100 Subject: [PATCH 44/69] document extending the new menu in files app --- developer_manual/app/js.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/developer_manual/app/js.rst b/developer_manual/app/js.rst index ecd31090f..b82a86303 100644 --- a/developer_manual/app/js.rst +++ b/developer_manual/app/js.rst @@ -46,3 +46,37 @@ Full URLs can be generated by using: .. code-block:: js var authorUrl = OC.generateUrl('/apps/myapp/authors/1'); + + +Extending core parts +==================== + +It is possible to extend components of the core web UI. The following examples +should show how this is possible. + +Extending the "new" menu in the files app +----------------------------------------- + +.. versionadded:: 9.0 + +.. code-block:: js + + var myNewFileEntry = { + attach: function (menu) { + menu.addMenuEntry({ + id: 'abc', + displayName: 'Menu display name', + templateName: 'templateName.ext', + iconClass: 'icon-filetype-text', + fileType: 'file', + actionHandler: function () { + console.log('do something here'); + } + }); + } + }; + OC.Plugins.register('OCA.Files.NewFileMenu', myNewFileEntry); + +This will register a new menu entry in the "New" menu of the files app. The +method ``attach()`` is called once the menu is build. This usually happens right +after the click on the button. From 76c45891de4bfb011f1242ce5e6def427f3517aa Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 29 Oct 2015 17:12:59 +0100 Subject: [PATCH 45/69] Rename variable --- developer_manual/app/js.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/developer_manual/app/js.rst b/developer_manual/app/js.rst index b82a86303..f52824bcf 100644 --- a/developer_manual/app/js.rst +++ b/developer_manual/app/js.rst @@ -61,7 +61,7 @@ Extending the "new" menu in the files app .. code-block:: js - var myNewFileEntry = { + var myFileMenuPlugin = { attach: function (menu) { menu.addMenuEntry({ id: 'abc', @@ -75,7 +75,7 @@ Extending the "new" menu in the files app }); } }; - OC.Plugins.register('OCA.Files.NewFileMenu', myNewFileEntry); + OC.Plugins.register('OCA.Files.NewFileMenu', myFileMenuPlugin); This will register a new menu entry in the "New" menu of the files app. The method ``attach()`` is called once the menu is build. This usually happens right From 14768f98d27e780fbacddcb1a4f7c45e8bfc6c00 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 29 Oct 2015 17:27:33 +0100 Subject: [PATCH 46/69] Fix typo --- developer_manual/app/js.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer_manual/app/js.rst b/developer_manual/app/js.rst index f52824bcf..1c7d783a8 100644 --- a/developer_manual/app/js.rst +++ b/developer_manual/app/js.rst @@ -78,5 +78,5 @@ Extending the "new" menu in the files app OC.Plugins.register('OCA.Files.NewFileMenu', myFileMenuPlugin); This will register a new menu entry in the "New" menu of the files app. The -method ``attach()`` is called once the menu is build. This usually happens right +method ``attach()`` is called once the menu is built. This usually happens right after the click on the button. From 7887a493c28b03b9350d3734ae44a4e6df3ee11a Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Thu, 29 Oct 2015 10:23:27 -0700 Subject: [PATCH 47/69] many updates to upgrading docs --- .../external_storage/local.rst | 4 +- .../configuration_server/occ_command.rst | 4 +- .../linux_installation.rst | 29 +-- admin_manual/images/upgrade-1.png | Bin 33175 -> 0 bytes .../command_line_installation.rst | 2 +- .../installation/images/upgrade-1.png | Bin 0 -> 26477 bytes .../installation/images/upgrade-2.png | Bin 0 -> 47237 bytes .../installation/installation_wizard.rst | 21 +- .../installation/source_installation.rst | 3 +- admin_manual/maintenance/images/upgrade-1.png | Bin 0 -> 26477 bytes admin_manual/maintenance/images/upgrade-2.png | Bin 0 -> 47237 bytes admin_manual/maintenance/upgrade.rst | 237 ++++++++---------- admin_manual/release_notes.rst | 3 + admin_manual/whats_new_admin.rst | 2 + 14 files changed, 146 insertions(+), 159 deletions(-) delete mode 100644 admin_manual/images/upgrade-1.png create mode 100644 admin_manual/installation/images/upgrade-1.png create mode 100644 admin_manual/installation/images/upgrade-2.png create mode 100644 admin_manual/maintenance/images/upgrade-1.png create mode 100644 admin_manual/maintenance/images/upgrade-2.png diff --git a/admin_manual/configuration_files/external_storage/local.rst b/admin_manual/configuration_files/external_storage/local.rst index 064fa82d7..9a91d09bc 100644 --- a/admin_manual/configuration_files/external_storage/local.rst +++ b/admin_manual/configuration_files/external_storage/local.rst @@ -15,8 +15,8 @@ are on Ubuntu Linux:: sudo -u www-data chown -R www-data:www-data /localdir sudo -u www-data chmod -R 0750 /localdir -See :ref:`label-setting-strong-perms` for information on correct file permissions, -and find your HTTP user :ref:`label-phpinfo`. +See :ref:`strong-perms-label` for information on correct file permissions, and +find your HTTP user :ref:`label-phpinfo`. In the **Folder name** field enter the folder name that you want to appear on your ownCloud Files page. diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index 9ecaf08c0..0eb0ba1da 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -34,7 +34,7 @@ Run occ As Your HTTP User ------------------------- The HTTP user is different on the various Linux distributions. See -:ref:`strong_perms` to learn how to find your HTTP user. +:ref:`strong-perms-label` to learn how to find your HTTP user. * The HTTP user and group in Debian/Ubuntu is www-data. * The HTTP user and group in Fedora/CentOS is apache. @@ -662,7 +662,7 @@ after installing ownCloud packages (See place of running the graphical Installation Wizard. Apply correct permissions to your ownCloud directories; see -:ref:`strong_perms`. Then choose your ``occ`` options. This lists your +:ref:`strong-perms-label`. Then choose your ``occ`` options. This lists your available options:: $ sudo -u www-data php /var/www/owncloud/occ diff --git a/admin_manual/enterprise_installation/linux_installation.rst b/admin_manual/enterprise_installation/linux_installation.rst index b0ec39e8c..91ae93093 100644 --- a/admin_manual/enterprise_installation/linux_installation.rst +++ b/admin_manual/enterprise_installation/linux_installation.rst @@ -1,18 +1,22 @@ -==================================================== -Installing ownCloud Enterprise Subscription on Linux -==================================================== +======================================================= +Installing & Upgrading ownCloud Enterprise Subscription +======================================================= The recommended method for installing and maintaining your ownCloud Enterprise -Subscription is with your Linux package manager. Configure your package manager to -use the ownCloud Enterprise Subscription repository, import the signing key, and then -install and update ownCloud like any other software package. Please refer to -the ``README - ownCloud Package Installation.txt`` document in your account at -`Customer.owncloud.com `_ account for -instructions on setting up your Linux package manager. +Subscription is with your Linux package manager. Configure your package manager +to use the ownCloud Enterprise Subscription repository, import the signing key, +and then install and update ownCloud packages like any other software package. +Please refer to the ``README - ownCloud Package Installation.txt`` document in +your account at `Customer.owncloud.com +`_ account for instructions on setting +up your Linux package manager. After you have completed your initial installation of ownCloud as detailed in -the README, follow the instructions in :doc:`../installation/installation_wizard` to finish -setting up ownCloud. +the README, follow the instructions in +:doc:`../installation/installation_wizard` to finish setting up ownCloud. + +To upgrade your Enterprise Subscription, refer to +:doc:`../maintenance/upgrade`. SELinux ------- @@ -20,6 +24,3 @@ SELinux Linux distributions that use SELinux need to take some extra steps so that ownCloud will operate correctly under SELinux. Please see :doc:`../installation/selinux_configuration` for some recommended configurations. - - - diff --git a/admin_manual/images/upgrade-1.png b/admin_manual/images/upgrade-1.png deleted file mode 100644 index 1b574fa9db07977ce51b03f5e21ff10f042c8142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33175 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
av~zkGPy(gLQFp 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%0D>HsJ@y!w?QS@2_oI&CR%>gMgNH`?tn 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 Nw1k3q8PG7`-vCqgDCqzI literal 0 HcmV?d00001 diff --git a/admin_manual/installation/images/upgrade-2.png b/admin_manual/installation/images/upgrade-2.png new file mode 100644 index 0000000000000000000000000000000000000000..17cab4d87fadef96ae16ead4affb54492cdc97de GIT binary patch literal 47237 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

;fE<&~WJRuI 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 literal 0 HcmV?d00001 diff --git a/admin_manual/maintenance/upgrade.rst b/admin_manual/maintenance/upgrade.rst index 822919033..93a30abaf 100644 --- a/admin_manual/maintenance/upgrade.rst +++ b/admin_manual/maintenance/upgrade.rst @@ -2,80 +2,79 @@ Upgrading Your ownCloud Server ============================== +For ownCloud 8.2 the Linux package repositories have changed, and **you must +configure your system to use these new repos**. The new repos are at our `Open +Build Service`_. Just follow the instructions for your Linux distribution, and +then install new ownCloud packages in the usual way with your package manager. + It is best to keep your ownCloud server upgraded regularly, and to install all point releases and major releases without skipping any of them, as skipping -releases increases the risk of errors. Major releases are 6.0, 7.0, and 8.0, and -point releases are intermediate releases for each major release. For example, -8.0.1 and 8.0.2 are point releases. +releases increases the risk of errors. Major releases are 8.0, 8.1, and +8.2. Point releases are intermediate releases for each major release. For +example, 8.0.9 and 8.1.3 are point releases. -.. note:: **Downgrading** is not supported and risks corrupting your data! If - you want to revert to an older ownCloud version, install it from scratch - and then restore your data from backup. Before doing this, file a support - ticket (if you have paid support) or ask for help in the ownCloud forums to - see if your issue can be resolved without downgrading. - -Version numbering changed with ownCloud 8.0. Major releases are now indicated -by the second number, so 8.0. 8.1, and 8.2 are major releases. The third number -indicates an intermediate release, e.g. 8.0.5. - -.. note:: If you are using the Encryption app and upgrading from older - versions of ownCloud to ownCloud 8.0, you must manually migrate your - encryption keys with the *occ* command after the upgrade is complete, like - this example for CentOS: - *sudo -u apache php occ encryption:migrate* - You must run *occ* as your HTTP user. See - :doc:`../configuration_server/occ_command` to learn more about *occ* - -There are multiple ways to keep your ownCloud server upgraded: with the Updater -App (Server Edition only), with your Linux package manager, and by manually -upgrading. In this chapter you will learn how to keep your ownCloud installation -current with your Linux package manager, and by manually upgrading. - -(See :doc:`update` to learn about the Updater App.) - -.. note:: Before upgrading to a new major release, always first review any - third-party apps you have installed for compatibility with - the new ownCloud release. Any apps that are not developed by ownCloud show a - 3rd party designation. Install unsupported apps at your own risk. Then, - before the upgrade, they must all be disabled. After the upgrade is - complete and you are sure they are compatible with the new ownCloud - release you may re-enable them. - -Preferred Upgrade Method ------------------------- - -The best method for keeping ownCloud on Linux servers current is by -configuring your system to use our `Open Build Service -`_ (see -:doc:`../installation/linux_installation`); just -follow the instructions on oBS for setting up your package manager. Then -stay current by using your Linux package manager to upgrade. +There are multiple ways to keep your ownCloud server upgraded: with the +:doc:`Updater App ` (Server Edition only), with your Linux package +manager, and by manually upgrading. In this chapter you will learn how to keep +your ownCloud installation current with your Linux package manager, and by +manually upgrading. .. note:: Enterprise Subscription customers will use their Enterprise software - repositories to install and update their ownCloud installations, rather - than the openSUSE Build Service. Please see + repositories to install ownCloud packages, rather + than the Open Build Service. Then follow the instructions on this page + for completing upgrades. Please see :doc:`../enterprise_installation/linux_installation` for more information. -You should always maintain regular backups (see :doc:`../maintenance/backup`), -and make a backup before every upgrade. +When you are upgrading to a major release, evaluate any third-party apps for +compatibility with the upgrade, and then disable them before upgrading. You may +re-enable them after the upgrade is completed. -When a new ownCloud release is available you will see a yellow banner in your -ownCloud Web interface. +.. note:: **Downgrading** is not supported and risks corrupting your data! If + you want to revert to an older ownCloud version, make a new, fresh + installation and then restore your data from backup. Before doing this, + file a support ticket (if you have paid support) or ask for help in the + ownCloud forums to see if your issue can be resolved without downgrading. -.. figure:: ../images/updater-1.png +Upgrade Quickstart +------------------ -**Upgrading is disruptive**. When you upgrade ownCloud with your Linux package -manager, that is just the first step to applying the upgrade. After -downloading the new ownCloud packages your session will be interrupted, and you -must run the upgrade wizard to complete the upgrade, which is discussed in the -next section. +The best method for keeping ownCloud on Linux servers current is by configuring +your system to use ownCloud's `Open Build Service`_ repository. Then stay +current by using your Linux package manager to install fresh ownCloud packages. +After installing upgraded packages you must run a few more steps to complete +the upgrade. These are the basic steps to upgrading ownCloud: + +* Disable all third-party apps. +* Make a fresh backup (see :doc:`../maintenance/backup`). +* Install new packages from the ownCloud `Open Build Service`_. +* Take your ownCloud server out of maintenance mode. +* Run the upgrade wizard. +* Log in and apply strong permissions to your ownCloud directories apps. +* Re-enable third-party apps. + +Prerequisites +------------- + +You should always maintain regular backups and make a fresh backup before every +upgrade. + +Then review any third-party apps you have installed for compatibility with the +new ownCloud release. Any apps that are not developed by ownCloud show a 3rd +party designation. **Install unsupported apps at your own risk**. Then, before +the upgrade, they must all be disabled. After the upgrade is complete and you +are sure they are compatible with the new ownCloud release you may re-enable +them. + +**Upgrading is disruptive**. Your ownCloud server will be automatically put +into maintenance mode, so your users will be locked out until the upgrade is +completed. Large installations may take several hours to complete the upgrade. Upgrading With Your Linux Package Manager ----------------------------------------- -When an ownCloud upgrade is available from the openSUSE Build Service -repository, you can apply it just like any normal Linux upgrade. For example, -on Debian or Ubuntu Linux this is the standard system upgrade command:: +When an ownCloud upgrade is available from ownCloud's `Open Build Service`_ +repository, apply it just like any normal Linux upgrade. For example, on Debian +or Ubuntu Linux this is the standard system upgrade command:: $ sudo apt-get update && sudo apt-get upgrade @@ -95,82 +94,69 @@ Or update only ownCloud:: $ sudo yum update owncloud -Your Linux package manager only downloads the current ownCloud packages. There -is one more step, and that is to run the upgrade wizard to perform the final -steps of updating the database and turning off maintenance mode. After using -your package manager to install the current ownCloud release, you will see two -screens. On the first screen, click the Start Upgrade button, or optionally run -the ``occ upgrade`` command instead of clicking the button. +Your Linux package manager only downloads the current ownCloud packages. Then +your ownCloud server is automatically put into maintenance mode. -.. figure:: ../images/updater-8.png +.. figure:: images/upgrade-1.png -``occ upgrade`` -is more reliable, especially on installations with large datasets and large -numbers of users because it avoids the risk of PHP timeouts. +Next, take your server out of maintenance mode. You can do this by changing +``'maintenance' => true, to 'maintenance' => false,`` in ``config.php``, or use +the :doc:`../configuration_server/occ_command`, like this example on Ubuntu:: -.. note:: The ``occ`` command does not download ownCloud updates. You must first download - the updated code, and then ``occ`` performs the final upgrade steps. + $ sudo -u www-data php occ maintenance:mode --off -The ``occ`` command -is in your ``owncloud/`` directory. You must run it as your HTTP user. This -example is for Debian/Ubuntu:: +The final step is to run the upgrade wizard to perform the final steps of +updating your apps and database. You will see a screen with a summary of apps +that will be updated, and a **Start Update** button. If you have shell access is +it better to **not** click the Start Update button, but rather to use ``occ +upgrade``, like this example on CentOS:: + + $ sudo -u apache php occ upgrade + +.. figure:: images/upgrade-2.png + +``occ upgrade`` is more reliable, especially on installations with large +datasets and large numbers of users because it avoids the risk of PHP timeouts. + +Migration Test +^^^^^^^^^^^^^^ - $ sudo -u www-data php occ upgrade - Before completing the upgrade, ownCloud first runs a simulation by copying all database tables to a temporary directory and then performing the upgrade on -them, to ensure that the upgrade will complete correctly. This takes twice as -much time, which on large installations can be many hours, so you can omit this -step with the ``--skip-migration-test`` option:: +them, to ensure that the upgrade will complete correctly. This can delay large +installations by several hours, so you can omit this step with the +``--skip-migration-test`` option, like this example on CentOS:: - $ sudo -u www-data php occ upgrade --skip-migration-test - -This example is for Fedora, CentOS, and Red Hat Linux:: + $ sudo -u apache php occ upgrade --skip-migration-test - $ sudo -u apache php occ upgrade - -Or:: +When the upgrade is successful you will be returned to the login screen. - $ sudo -u apache php occ upgrade -skip-migration-test +Setting Strong Permissions +^^^^^^^^^^^^^^^^^^^^^^^^^^ -* The HTTP user and group in Debian/Ubuntu is ``www-data``. -* The HTTP user and group in Fedora/CentOS/RHEL is ``apache``. -* The HTTP user and group in Arch Linux is ``http``. -* The HTTP user in openSUSE is ``wwwrun``, and the HTTP group is ``www``. - -See :doc:`../configuration_server/occ_command` to learn more about using the -``occ`` command, and see the **Setting Strong Directory Permissions** section -of :doc:`../installation/installation_wizard` to learn how to find your -HTTP user. - -When the upgrade is successful you will see the following screen: - -.. figure:: ../images/updater-7.png - -After upgrading, verify that your ownCloud -directory permissions are set according to the **Setting Strong Directory Permissions** -section of :doc:`../installation/installation_wizard`. +After upgrading, verify that your ownCloud directory permissions are set +according to :ref:`strong-perms-label`. If the upgrade fails, then you must try a manual upgrade. Manual Upgrade Procedure ------------------------ -If you are upgrading to a major release, for example from 7.0.5 to -8.0, you must review all third party applications (not core apps), for +Always start by making a fresh backup. + +If you are upgrading to a major release, for example from 8.1.3 to +8.2, you must review all third party applications (not core apps) for compatibility with your new ownCloud version. Then disable all of them before starting the upgrade. -Next put your server in maintenance mode. This prevents new logins, -locks the sessions of logged-in users, and displays a status screen so users -know what is happening. There are two ways to do this, and the preferred method -is to use the ``occ`` command, which you must run as your HTTP user. This example -is for Ubuntu Linux:: +Next put your server in maintenance mode. This prevents new logins, locks the +sessions of logged-in users, and displays a status screen so users know what is +happening. There are two ways to do this, and the preferred method is to use the +:doc:`occ command <../configuration_server/occ_command>`, which you must run as +your HTTP user. This example is for Ubuntu Linux:: $ sudo -u www-data php occ maintenance:mode --on -Please see :doc:`../configuration_server/occ_command` to learn more about ``occ``. - The other way is by entering your ``config.php`` file and changing ``'maintenance' => false,`` to ``'maintenance' => true,``. @@ -182,10 +168,11 @@ The other way is by entering your ``config.php`` file and changing of your current installation. For example, if your current ownCloud is installed in ``/var/www/owncloud/`` you could create a new directory called ``/var/www/owncloud2/`` -3. Stop your web server. +3. Stop your Web server. -Apache 2 is the recommended server for ownCloud (see :doc:`../release_notes` -for recommended setups and supported platforms.) +Apache 2 is the recommended server for ownCloud (see +:doc:`../installation/system_requirements` for recommended setups and supported +platforms.) +-----------------------+-----------------------------------------+ | Operating System | Command (as root) | @@ -265,18 +252,11 @@ for recommended setups and supported platforms.) Assuming your upgrade succeeded, take a look at the bottom of your Admin page to verify the version number. Check your other settings to make sure they're correct. Go to the Apps page and review the core apps to make sure the right -ones are enabled. Finally, re-enable your third-party apps. +ones are enabled. Re-enable your third-party apps. Then apply strong +permissions to your ownCloud directories (:ref:`strong-perms-label`). -Setting Strong Permissions --------------------------- - -For hardened security we highly recommend setting the permissions on your -ownCloud directory as strictly as possible. After upgrading, verify that your ownCloud -directory permissions are set according to the **Setting Strong Directory Permissions** -section of :doc:`../installation/installation_wizard`. - -Restore From Backup -------------------- +Reverse Upgrade +--------------- If you need to reverse your upgrade, see :doc:`restore`. @@ -325,3 +305,6 @@ And start the manual process:: If this does not work properly, try the repair function:: $ sudo -u www-data php occ maintenance:repair + +.. _Open Build Service: + https://download.owncloud.org/download/repositories/8.2/owncloud/ \ No newline at end of file diff --git a/admin_manual/release_notes.rst b/admin_manual/release_notes.rst index a18b14c85..a91d22387 100644 --- a/admin_manual/release_notes.rst +++ b/admin_manual/release_notes.rst @@ -9,6 +9,9 @@ Changes in 9.0 Changes in 8.2 -------------- +New location for Linux package repositories; ownCloud admins must manually +change to the new repos. See :doc:`maintenance/upgrade` + PHP 5.6.11+ breaks the LDAP wizard with a 'Could not connect to LDAP' error. See https://github.com/owncloud/core/issues/20020. ``filesystem_check_changes`` in ``config.php`` is set to 0 by default. This diff --git a/admin_manual/whats_new_admin.rst b/admin_manual/whats_new_admin.rst index c03a206f0..aa828fee2 100644 --- a/admin_manual/whats_new_admin.rst +++ b/admin_manual/whats_new_admin.rst @@ -8,6 +8,8 @@ on Github for a comprehensive list of new features and updates. Some of the improvements of interest to ownCloud admins are: +* New ownCloud package repositories (admins must manually change to these, see + :doc:`maintenance/upgrade`) * Configurable temporary directory * Many new occ commands for logging, encryption, and apps * Unavailable external storages are not rechecked every request; rather, their From 956f46b9a0379a9f51b15918cd1969927873427b Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Thu, 29 Oct 2015 14:29:44 -0700 Subject: [PATCH 48/69] fix typos --- admin_manual/maintenance/upgrade.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_manual/maintenance/upgrade.rst b/admin_manual/maintenance/upgrade.rst index 93a30abaf..e684b021f 100644 --- a/admin_manual/maintenance/upgrade.rst +++ b/admin_manual/maintenance/upgrade.rst @@ -49,7 +49,7 @@ the upgrade. These are the basic steps to upgrading ownCloud: * Install new packages from the ownCloud `Open Build Service`_. * Take your ownCloud server out of maintenance mode. * Run the upgrade wizard. -* Log in and apply strong permissions to your ownCloud directories apps. +* Log in and apply strong permissions to your ownCloud directories. * Re-enable third-party apps. Prerequisites @@ -107,8 +107,8 @@ the :doc:`../configuration_server/occ_command`, like this example on Ubuntu:: The final step is to run the upgrade wizard to perform the final steps of updating your apps and database. You will see a screen with a summary of apps -that will be updated, and a **Start Update** button. If you have shell access is -it better to **not** click the Start Update button, but rather to use ``occ +that will be updated, and a **Start Update** button. If you have shell access it +is better to **not** click the Start Update button, but rather to use ``occ upgrade``, like this example on CentOS:: $ sudo -u apache php occ upgrade From bda9173cac9b7ef0fbdadbdd0782a8a3f1f4e8a2 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Thu, 29 Oct 2015 15:09:09 -0700 Subject: [PATCH 49/69] correct typo --- admin_manual/installation/linux_installation.rst | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/admin_manual/installation/linux_installation.rst b/admin_manual/installation/linux_installation.rst index d54928bd2..87f168cdc 100644 --- a/admin_manual/installation/linux_installation.rst +++ b/admin_manual/installation/linux_installation.rst @@ -11,15 +11,13 @@ supported platforms. Installing ownCloud Server (the free community edition) on Linux from our `Open Build Service`_ packages is the preferred method. These are maintained by ownCloud engineers, and you can use your package manager to keep your ownCloud -server up-to-date. Follow the instructions for your distro to add the oBS -repository, download and install the repository signing key, and install -ownCloud. Then run the Installation Wizard to complete your installation. (see -:doc:`installation_wizard`). +server up-to-date. Follow the instructions for your distro to add the ownCloud +Open Build Service repository, download and install the repository signing key, +and install ownCloud. Then run the Installation Wizard to complete your +installation. (see :doc:`installation_wizard`). .. note:: Do not move the folders provided by these packages after the installation, as this will break updates. - - https://download.owncloud.org/download/repositories/8.2/owncloud/ .. _Open Build Service: https://download.owncloud.org/download/repositories/8.2/owncloud/ @@ -36,8 +34,7 @@ Downgrading Not Supported Downgrading is not supported and risks corrupting your data! If you want to revert to an older ownCloud version, install it from scratch and then restore your data from backup. Before doing this, file a support ticket (if you have -paid support) or ask for help in the ownCloud forums to see if your issue can -be +paid support) or ask for help in the ownCloud forums to see if your issue can be resolved without downgrading. Additional Installation Guides and Notes From 8d28d3db3ce10022fc76795831e5ac66b4121760 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Thu, 29 Oct 2015 15:40:47 -0700 Subject: [PATCH 50/69] typo corrections --- admin_manual/installation/installation_wizard.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/installation/installation_wizard.rst b/admin_manual/installation/installation_wizard.rst index 2e2e83e94..e75712155 100644 --- a/admin_manual/installation/installation_wizard.rst +++ b/admin_manual/installation/installation_wizard.rst @@ -61,7 +61,7 @@ SQLite is the default database for ownCloud Server (it is not available and not supported in the Enterprise edition), and it is good only for testing and lightweight single-user setups without client synchronization. Supported databases are MySQL, MariaDB, Oracle 11g, and PostgreSQL, and we -recommend :doc:`MySQL/MariaDB <../release_notes>`. Your database and PHP +recommend :doc:`MySQL/MariaDB `. Your database and PHP connectors must be installed before you run the Installation Wizard. When you install ownCloud from packages all the necessary dependencies will be satisfied (see :doc:`source_installation` for a detailed listing of required and optional From ae234e3f10ecd984e62aa301e654cdc36172c62f Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 30 Oct 2015 08:59:21 -0700 Subject: [PATCH 51/69] more upgrade corrections, ref label corrections --- .../external_storage/local.rst | 2 +- .../configuration_server/occ_command.rst | 4 +- .../command_line_installation.rst | 2 +- .../installation/installation_wizard.rst | 20 +-- .../installation/source_installation.rst | 2 +- admin_manual/maintenance/upgrade.rst | 118 ++++++++---------- 6 files changed, 68 insertions(+), 80 deletions(-) diff --git a/admin_manual/configuration_files/external_storage/local.rst b/admin_manual/configuration_files/external_storage/local.rst index 9a91d09bc..2c97e308d 100644 --- a/admin_manual/configuration_files/external_storage/local.rst +++ b/admin_manual/configuration_files/external_storage/local.rst @@ -15,7 +15,7 @@ are on Ubuntu Linux:: sudo -u www-data chown -R www-data:www-data /localdir sudo -u www-data chmod -R 0750 /localdir -See :ref:`strong-perms-label` for information on correct file permissions, and +See :ref:`strong_perms_label` for information on correct file permissions, and find your HTTP user :ref:`label-phpinfo`. In the **Folder name** field enter the folder name that you want to appear on diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index 0eb0ba1da..b9510bcca 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -34,7 +34,7 @@ Run occ As Your HTTP User ------------------------- The HTTP user is different on the various Linux distributions. See -:ref:`strong-perms-label` to learn how to find your HTTP user. +:ref:`strong_perms_label` to learn how to find your HTTP user. * The HTTP user and group in Debian/Ubuntu is www-data. * The HTTP user and group in Fedora/CentOS is apache. @@ -662,7 +662,7 @@ after installing ownCloud packages (See place of running the graphical Installation Wizard. Apply correct permissions to your ownCloud directories; see -:ref:`strong-perms-label`. Then choose your ``occ`` options. This lists your +:ref:`strong_perms_label`. Then choose your ``occ`` options. This lists your available options:: $ sudo -u www-data php /var/www/owncloud/occ diff --git a/admin_manual/installation/command_line_installation.rst b/admin_manual/installation/command_line_installation.rst index 931585a4b..a05bd0f5b 100644 --- a/admin_manual/installation/command_line_installation.rst +++ b/admin_manual/installation/command_line_installation.rst @@ -12,7 +12,7 @@ and unpack the tarball in the appropriate directories. (See :doc:`linux_installation` and :doc:`source_installation`.) 2. Apply the correction permissions to your ownCloud files and directories (see -:ref:`strong-perms-label`.) +:ref:`strong_perms_label`.) 3. Use the ``occ`` command to complete your installation. This takes the place of running the graphical Installation Wizard. diff --git a/admin_manual/installation/installation_wizard.rst b/admin_manual/installation/installation_wizard.rst index e75712155..ede86ebd9 100644 --- a/admin_manual/installation/installation_wizard.rst +++ b/admin_manual/installation/installation_wizard.rst @@ -23,15 +23,15 @@ You're finished and can start using your new ownCloud server. Of course, there is much more that you can do to set up your ownCloud server for best performance and security. In the following sections we will cover important installation and post-installation steps. Note that you must follow the -instructions in :ref:`Setting Strong Permissions ` in order +instructions in :ref:`Setting Strong Permissions ` in order to use the :doc:`occ Command <../configuration_server/occ_command>`. -* :ref:`Data Directory Location ` -* :ref:`Database Choice ` -* :ref:`Trusted Domains ` -* :ref:`Setting Strong Permissions ` +* :ref:`Data Directory Location ` +* :ref:`Database Choice ` +* :ref:`Trusted Domains ` +* :ref:`Setting Strong Permissions ` -.. _label-data-directory-location: +.. _data_directory_location_label: Data Directory Location ----------------------- @@ -50,9 +50,9 @@ server). It is best to configure your data directory location at installation, as it is difficult to move after installation. You may put it anywhere; in this example is it located in ``/var/oc_data``. This directory must already exist, and must be owned by your HTTP user (see -:ref:`strong-perms-label`). +:ref:`strong_perms_label`). -.. _label-database-choice: +.. _database_choice_label: Database Choice --------------- @@ -78,7 +78,7 @@ Click Finish Setup, and start using your new ownCloud server. Now we will look at some important post-installation steps. -.. _label-trusted-domains: +.. _trusted_domains_label: Trusted Domains --------------- @@ -107,7 +107,7 @@ is not whitelisted the following error appears: :alt: screenshot of error message when URL is not whitelisted in trusted_domains -.. _strong-perms-label: +.. _strong_perms_label: Setting Strong Directory Permissions ------------------------------------ diff --git a/admin_manual/installation/source_installation.rst b/admin_manual/installation/source_installation.rst index 26c5ea9d6..56042f251 100644 --- a/admin_manual/installation/source_installation.rst +++ b/admin_manual/installation/source_installation.rst @@ -253,7 +253,7 @@ Setting Strong Directory Permissions We recommend setting the directory permissions in your ownCloud installation as strictly as possible for stronger security. Please refer to -:ref:`strong-perms-label`. +:ref:`strong_perms_label`. SELinux ------- diff --git a/admin_manual/maintenance/upgrade.rst b/admin_manual/maintenance/upgrade.rst index e684b021f..b65b75386 100644 --- a/admin_manual/maintenance/upgrade.rst +++ b/admin_manual/maintenance/upgrade.rst @@ -2,15 +2,16 @@ Upgrading Your ownCloud Server ============================== -For ownCloud 8.2 the Linux package repositories have changed, and **you must -configure your system to use these new repos**. The new repos are at our `Open -Build Service`_. Just follow the instructions for your Linux distribution, and -then install new ownCloud packages in the usual way with your package manager. +Starting with ownCloud 8.2 the Linux package repositories have changed, and +**you must configure your system to use these new repos**. The new repos are at +our `Open Build Service`_. Just follow the instructions for your Linux +distribution, and then install new ownCloud packages in the usual way with your +package manager. It is best to keep your ownCloud server upgraded regularly, and to install all point releases and major releases without skipping any of them, as skipping -releases increases the risk of errors. Major releases are 8.0, 8.1, and -8.2. Point releases are intermediate releases for each major release. For +releases increases the risk of errors. Major releases are 8.0, 8.1, 8.2, and +9.0. Point releases are intermediate releases for each major release. For example, 8.0.9 and 8.1.3 are point releases. There are multiple ways to keep your ownCloud server upgraded: with the @@ -29,7 +30,7 @@ When you are upgrading to a major release, evaluate any third-party apps for compatibility with the upgrade, and then disable them before upgrading. You may re-enable them after the upgrade is completed. -.. note:: **Downgrading** is not supported and risks corrupting your data! If +.. note:: **Downgrading is not supported** and risks corrupting your data! If you want to revert to an older ownCloud version, make a new, fresh installation and then restore your data from backup. Before doing this, file a support ticket (if you have paid support) or ask for help in the @@ -44,12 +45,16 @@ current by using your Linux package manager to install fresh ownCloud packages. After installing upgraded packages you must run a few more steps to complete the upgrade. These are the basic steps to upgrading ownCloud: -* Disable all third-party apps. -* Make a fresh backup (see :doc:`../maintenance/backup`). +* :doc:`Disable <../installation/apps_management_installation>` all third-party + apps. +* Make a :doc:`fresh backup `. * Install new packages from the ownCloud `Open Build Service`_. -* Take your ownCloud server out of maintenance mode. -* Run the upgrade wizard. -* Log in and apply strong permissions to your ownCloud directories. +* Take your ownCloud server out of :doc:`maintenance mode + `. +* Run the :ref:`upgrade wizard ` (optionally disabling + the :ref:`migration test `). +* Log in and :ref:`apply strong permissions ` to your + ownCloud directories. * Re-enable third-party apps. Prerequisites @@ -98,25 +103,43 @@ Your Linux package manager only downloads the current ownCloud packages. Then your ownCloud server is automatically put into maintenance mode. .. figure:: images/upgrade-1.png + :scale: 70% + :alt: ownCloud status screen informing users that it is in maintenance mode. + + *Click to enlarge* Next, take your server out of maintenance mode. You can do this by changing -``'maintenance' => true, to 'maintenance' => false,`` in ``config.php``, or use -the :doc:`../configuration_server/occ_command`, like this example on Ubuntu:: +``'maintenance' => true,`` to ``'maintenance' => false,`` in ``config.php``, or +use the :doc:`occ command <../configuration_server/occ_command>`, like this +example on Ubuntu:: $ sudo -u www-data php occ maintenance:mode --off - + +.. _upgrade_wizard_label: + +Upgrade Wizard +-------------- + The final step is to run the upgrade wizard to perform the final steps of updating your apps and database. You will see a screen with a summary of apps -that will be updated, and a **Start Update** button. If you have shell access it +that are updated, and a **Start Update** button. If you have shell access it is better to **not** click the Start Update button, but rather to use ``occ upgrade``, like this example on CentOS:: $ sudo -u apache php occ upgrade .. figure:: images/upgrade-2.png + :scale: 70% + :alt: ownCloud upgrade status screen + + *Click to enlarge* ``occ upgrade`` is more reliable, especially on installations with large -datasets and large numbers of users because it avoids the risk of PHP timeouts. +datasets and large numbers of users because it avoids the risk of PHP timeouts. + +When the upgrade is completed you will be returned to the login screen. + +.. _migration_test_label: Migration Test ^^^^^^^^^^^^^^ @@ -127,15 +150,13 @@ them, to ensure that the upgrade will complete correctly. This can delay large installations by several hours, so you can omit this step with the ``--skip-migration-test`` option, like this example on CentOS:: - $ sudo -u apache php occ upgrade --skip-migration-test - -When the upgrade is successful you will be returned to the login screen. + $ sudo -u apache php occ upgrade --skip-migration-test Setting Strong Permissions ^^^^^^^^^^^^^^^^^^^^^^^^^^ After upgrading, verify that your ownCloud directory permissions are set -according to :ref:`strong-perms-label`. +according to :ref:`strong_perms_label`. If the upgrade fails, then you must try a manual upgrade. @@ -170,25 +191,6 @@ The other way is by entering your ``config.php`` file and changing ``/var/www/owncloud2/`` 3. Stop your Web server. -Apache 2 is the recommended server for ownCloud (see -:doc:`../installation/system_requirements` for recommended setups and supported -platforms.) - - +-----------------------+-----------------------------------------+ - | Operating System | Command (as root) | - +=======================+=========================================+ - | CentOS/ Red Hat | ``apachectl stop`` | - +-----------------------+-----------------------------------------+ - | Debian | | - | or | ``/etc/init.d/apache2 stop`` | - | Ubuntu | | - +-----------------------+-----------------------------------------+ - | SUSE Enterprise | | - | Linux 11 | ``/usr/sbin/rcapache2 stop`` | - | | | - | openSUSE 12.3 and up | ``systemctl stop apache2`` | - +-----------------------+-----------------------------------------+ - 4. Rename or move your current ownCloud directory (named ``owncloud/`` if installed using defaults) to another location. @@ -213,22 +215,7 @@ platforms.) .. note:: We recommend storing your ``data/`` directory in a location other than your ``owncloud/`` directory. -9. Restart your web server. - - +-----------------------+-----------------------------------------+ - | Operating System | Command (as root) | - +=======================+=========================================+ - | CentOS/ Red Hat | ``apachectl start`` | - +-----------------------+-----------------------------------------+ - | Debian | | - | or | ``/etc/init.d/apache2 start`` | - | Ubuntu | | - +-----------------------+-----------------------------------------+ - | SUSE Enterprise | | - | Linux 11 | ``/usr/sbin/rcapache2 start`` | - | | | - | openSUSE 12.3 and up | ``systemctl start apache2`` | - +-----------------------+-----------------------------------------+ +9. Restart your Web server. 10. Now you should be able to open a Web browser to your ownCloud server and log in as usual. You have a couple more steps to go: You should see a @@ -245,15 +232,15 @@ platforms.) .. note:: The ``occ`` command does not download ownCloud updates. You must first download and install the updated code (steps 1-3), and then ``occ`` performs the final upgrade steps. -11. The upgrade operation takes a few minutes, depending on the size of your - installation. When it is finished you will see a success message, or an - error message that will tell where it went wrong. +11. The upgrade operation takes a few minutes to a few hours, depending on the + size of your installation. When it is finished you will see a success + message, or an error message that will tell where it went wrong. Assuming your upgrade succeeded, take a look at the bottom of your Admin page to verify the version number. Check your other settings to make sure they're correct. Go to the Apps page and review the core apps to make sure the right ones are enabled. Re-enable your third-party apps. Then apply strong -permissions to your ownCloud directories (:ref:`strong-perms-label`). +permissions to your ownCloud directories (:ref:`strong_perms_label`). Reverse Upgrade --------------- @@ -292,13 +279,13 @@ Occasionally, *files do not show up after a upgrade*. A rescan of the files can See `the owncloud.org support page `_ for further resources for both home and enterprise users. -Sometimes, ownCloud can get *stuck in a upgrade*. This is usually due to the process taking too long and encountering a time-out. It is recommended to turn off the upgrade and start over with the manual process from the command line as described above under point 12. - -Stop the upgrade process this way:: +Sometimes, ownCloud can get *stuck in a upgrade*. This is usually due to the +process taking too long and encountering a PHP time-out. Stop the upgrade +process this way:: $ sudo -u www-data php occ maintenance:mode --off -And start the manual process:: +Then start the manual process:: $ sudo -u www-data php occ upgrade @@ -307,4 +294,5 @@ If this does not work properly, try the repair function:: $ sudo -u www-data php occ maintenance:repair .. _Open Build Service: - https://download.owncloud.org/download/repositories/8.2/owncloud/ \ No newline at end of file + https://download.owncloud.org/download/repositories/8.2/owncloud/ + \ No newline at end of file From d1c0c51d35264818b72b6057ffcec52517cbd532 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Fri, 30 Oct 2015 20:09:58 +0100 Subject: [PATCH 52/69] Fixes for app issues page on master --- admin_manual/issues/index.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/admin_manual/issues/index.rst b/admin_manual/issues/index.rst index c50e3213a..768ed9084 100644 --- a/admin_manual/issues/index.rst +++ b/admin_manual/issues/index.rst @@ -50,9 +50,10 @@ General Troubleshooting Disable 3rdparty / non-shipped apps ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -It might be possible that 3rdparty / non-shipped apps are causing various different -issues. Please refer to the :ref:`apps_commands_label` on how to disable an app -from command line. +It might be possible that 3rd party / non-shipped apps are causing various +different issues. Always disable 3rd party apps before upgrades, and for +troubleshooting. Please refer to the :ref:`apps_commands_label` on how +to disable an app from command line. ownCloud Logfiles ^^^^^^^^^^^^^^^^^ From feff67de1e4f9d28e1ca203e1ce9a97154e4b521 Mon Sep 17 00:00:00 2001 From: HLFH Date: Fri, 30 Oct 2015 23:32:43 +0100 Subject: [PATCH 53/69] Server Status removal --- .../configuration_files/files_locking_transactional.rst | 7 ------- 1 file changed, 7 deletions(-) diff --git a/admin_manual/configuration_files/files_locking_transactional.rst b/admin_manual/configuration_files/files_locking_transactional.rst index 41af85d4a..e7211ccdd 100644 --- a/admin_manual/configuration_files/files_locking_transactional.rst +++ b/admin_manual/configuration_files/files_locking_transactional.rst @@ -53,13 +53,6 @@ recommended if Redis is running on the same system as ownCloud) use this example Using ``memcache.locking`` relieves the database load and improves performance. -The **Server status** section on your ownCloud Admin page indicates whether -experimental file locking is enabled or disabled. - -.. figure:: ../images/transactional-locking-1.png - -.. figure:: ../images/transactional-locking-2.png - See ``config.sample.php`` to see configuration examples for Redis, and for all supported memcaches. From de92218af38d0eb43845472b457a226493e7c747 Mon Sep 17 00:00:00 2001 From: RealRancor Date: Fri, 30 Oct 2015 19:31:41 +0100 Subject: [PATCH 54/69] Updated description of MySQL/MariaDB BINLOG requirement. --- .../linux_database_configuration.rst | 31 +++++++++++++++++++ .../installation/linux_installation.rst | 5 ++- admin_manual/maintenance/upgrade.rst | 12 +------ 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/admin_manual/configuration_database/linux_database_configuration.rst b/admin_manual/configuration_database/linux_database_configuration.rst index c1c5bf79c..2ad65c85e 100644 --- a/admin_manual/configuration_database/linux_database_configuration.rst +++ b/admin_manual/configuration_database/linux_database_configuration.rst @@ -17,6 +17,37 @@ Choosing to use MySQL / MariaDB, PostgreSQL, or Oracle as your database requires .. note:: The steps for configuring a third party database are beyond the scope of this document. Please refer to the documentation for your specific database choice for instructions. +.. _db-binlog-label: + +MySQL / MariaDB with Binary Logging Enabled +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ownCloud is currently using a ``TRANSACTION_READ_COMMITTED`` transaction isolation +to avoid data loss under high load scenarios (e.g. by using the sync client with +many clients/users and many parallel operations). This requires a disabled or +correctly configured binary logging when using MySQL or MariaDB. Your system is +affected if you see the following in your log file during the installation or +update of ownCloud: + + An unhandled exception has been thrown: + exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1665 + Cannot execute statement: impossible to write to binary log since + BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited + to row-based logging. InnoDB is limited to row-logging when transaction + isolation level is READ COMMITTED or READ UNCOMMITTED.' + +There are two solutions. One is to disable binary logging. Binary logging +records all changes to your database, and how long each change took. The +purpose of binary logging is to enable replication and to support backup +operations. + +The other is to change the BINLOG_FORMAT = STATEMENT in your database +configuration file, or possibly in your database startup script, to +BINLOG_FORMAT = MIXED. See `Overview of the Binary +Log `_ and `The +Binary Log `_ for +detailed information. + Parameters ---------- For setting up ownCloud to use any database, use the instructions in :doc:`../installation/installation_wizard`. You should not have to edit the respective values in the :file:`config/config.php`. However, in special cases (for example, if you want to connect your ownCloud instance to a database created by a previous installation of ownCloud), some modification might be required. diff --git a/admin_manual/installation/linux_installation.rst b/admin_manual/installation/linux_installation.rst index 87f168cdc..62163c1bd 100644 --- a/admin_manual/installation/linux_installation.rst +++ b/admin_manual/installation/linux_installation.rst @@ -70,4 +70,7 @@ options. **Running ownCloud in a subdir**: If you're running ownCloud in a subdir and want to use CalDAV or CardDAV clients make sure you have configured the correct -:ref:`service-discovery-label` URLs. \ No newline at end of file +:ref:`service-discovery-label` URLs. + +**Note for MySQL/MariaDB environments**: Please refer to :ref:`db-binlog-label` +on how to correctly configure your environment if you have binary logging enabled. \ No newline at end of file diff --git a/admin_manual/maintenance/upgrade.rst b/admin_manual/maintenance/upgrade.rst index b65b75386..9be86d88b 100644 --- a/admin_manual/maintenance/upgrade.rst +++ b/admin_manual/maintenance/upgrade.rst @@ -260,17 +260,7 @@ enabled, your upgrade may fail with these errors in your MySQL/MariaDB log:: to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.' -There are two solutions. One is to disable binary logging. Binary logging -records all changes to your database, and how long each change took. The -purpose of binary logging is to enable replication and to support backup -operations. - -The other is to change the BINLOG_FORMAT = STATEMENT in your database -configuration file, or possibly in your database startup script, to -BINLOG_FORMAT = MIXED. See `Overview of the Binary -Log `_ and `The -Binary Log `_ for -detailed information. +Please refer to :ref:`db-binlog-label` on how to correctly configure your environment. Occasionally, *files do not show up after a upgrade*. A rescan of the files can help:: From c76db99e4f412ad998ce45862c844f0b9f483935 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 30 Oct 2015 16:16:07 -0700 Subject: [PATCH 55/69] corrections to signing android app --- .../enterprise_clients/publishing_android_app.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/admin_manual/enterprise_clients/publishing_android_app.rst b/admin_manual/enterprise_clients/publishing_android_app.rst index 0f76f8a9e..5091211a8 100644 --- a/admin_manual/enterprise_clients/publishing_android_app.rst +++ b/admin_manual/enterprise_clients/publishing_android_app.rst @@ -47,14 +47,18 @@ Mint, and Ubuntu Linux you need to install two packages. The first one supplies $ sudo apt-get install openjdk-7-jre-headless $ sudo apt-get install openjdk-7-jdk +Plus some additional 32-bit packages:: + + $ sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 + zlib1g:i386 + On SUSE systems, install this package:: $ sudo zypper install java-1_7_0-openjdk-devel It is simpler to get these on CentOS and Red Hat Enterprise Linux, as they have -created some nice -wrapper scripts around ``keytool`` and ``jarsigner`` that you can install -standalone:: +created some nice wrapper scripts around ``keytool`` and ``jarsigner`` that you +can install standalone:: $ sudo yum install keytool-maven-plugin.noarch $ sudo yum install maven-jarsigner-plugin.noarch @@ -105,7 +109,7 @@ must both have a password, which can be same for both. Then enter your company information as you are prompted:: $ keytool -genkey -v -keystore acme-release-key.keystore -alias acme_key - -keyalg RSA -keysize 2048 + -keyalg RSA -keysize 2048 -validity 10000 Enter keystore password: Re-enter new password: What is your first and last name? From e06e64f12ee251aabe38ca3aff78a9172b3c2a0e Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 30 Oct 2015 16:31:44 -0700 Subject: [PATCH 56/69] Update enterprise_server_branding.rst --- .../enterprise_server_branding.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/admin_manual/enterprise_server_branding/enterprise_server_branding.rst b/admin_manual/enterprise_server_branding/enterprise_server_branding.rst index f25c28854..4082c6770 100644 --- a/admin_manual/enterprise_server_branding/enterprise_server_branding.rst +++ b/admin_manual/enterprise_server_branding/enterprise_server_branding.rst @@ -32,6 +32,11 @@ them. :alt: ownBrander wizard with instructions, upload buttons for your custom branded images, and example screenshots +.. note:: If you see errors when you upload SVG files, such as "Incorrect + extension.File type image/svg+xml is not correct", "This SVG is invalid", + or "Error uploading file: Incorrect size", try opening the file in + `Inkscape ` and then upload your SVG image again. + The wizard has two sections. The first section contains all the required elements: logos and other artwork, colors, naming, and your enterprise URL. The Suggested section contains optional items such as additional logo placements @@ -56,4 +61,4 @@ the same file structure as the default theme, and you may further customize it by editing the source files. .. Note:: Always edit only your custom theme files. Never edit the default - theme files. \ No newline at end of file + theme files. From 34da2755fa9c8ca0f5f6bc4aa98660bac8e5dfe3 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 30 Oct 2015 16:36:00 -0700 Subject: [PATCH 57/69] Update enterprise_server_branding.rst --- .../enterprise_server_branding/enterprise_server_branding.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin_manual/enterprise_server_branding/enterprise_server_branding.rst b/admin_manual/enterprise_server_branding/enterprise_server_branding.rst index 4082c6770..fd2945a94 100644 --- a/admin_manual/enterprise_server_branding/enterprise_server_branding.rst +++ b/admin_manual/enterprise_server_branding/enterprise_server_branding.rst @@ -35,7 +35,7 @@ them. .. note:: If you see errors when you upload SVG files, such as "Incorrect extension.File type image/svg+xml is not correct", "This SVG is invalid", or "Error uploading file: Incorrect size", try opening the file in - `Inkscape ` and then upload your SVG image again. + `Inkscape `_ and then upload your SVG image again. The wizard has two sections. The first section contains all the required elements: logos and other artwork, colors, naming, and your enterprise URL. The From 05d716fc60965bd0a5f3f200de4dfc4f48f6966a Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Sat, 31 Oct 2015 03:35:15 +0100 Subject: [PATCH 58/69] generate documentation from config.sample.php --- .../configuration_server/config_sample_php_parameters.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 147d11d9e..cb1130842 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -1036,11 +1036,16 @@ Memory caching backend for distributed data 'host' => 'localhost', // can also be a unix domain socket: '/tmp/redis.sock' 'port' => 6379, 'timeout' => 0.0, + 'password' => '', // Optional, if not defined no password will be used. 'dbindex' => 0, // Optional, if undefined SELECT will not run and will use Redis Server's default DB Index. ), Connection details for redis to use for memory caching. +For enhanced security it is recommended to configure Redis +to require a password. See http://redis.io/topics/security +for more information. + :: 'memcached_servers' => array( From 016d9a536e609125cdbfe0be5efa46d67c700d7d Mon Sep 17 00:00:00 2001 From: RealRancor Date: Sat, 31 Oct 2015 19:58:11 +0100 Subject: [PATCH 59/69] Add redis password support to caching and files locking docs. --- .../configuration_files/files_locking_transactional.rst | 4 ++++ admin_manual/configuration_server/caching_configuration.rst | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/admin_manual/configuration_files/files_locking_transactional.rst b/admin_manual/configuration_files/files_locking_transactional.rst index e7211ccdd..f87912d3b 100644 --- a/admin_manual/configuration_files/files_locking_transactional.rst +++ b/admin_manual/configuration_files/files_locking_transactional.rst @@ -33,8 +33,12 @@ file like this example:: 'host' => 'localhost', 'port' => 6379, 'timeout' => 0.0, + 'password' => '', // Optional, if not defined no password will be used. ), +.. note:: For enhanced security it is recommended to configure Redis to require + a password. See http://redis.io/topics/security for more information. + If you want to connect to Redis configured to listen on an unix socket (which is recommended if Redis is running on the same system as ownCloud) use this example ``config.php`` configuration:: diff --git a/admin_manual/configuration_server/caching_configuration.rst b/admin_manual/configuration_server/caching_configuration.rst index 11960106e..af55e4f23 100644 --- a/admin_manual/configuration_server/caching_configuration.rst +++ b/admin_manual/configuration_server/caching_configuration.rst @@ -178,8 +178,12 @@ Redis for the local server cache:: 'host' => 'localhost', 'port' => 6379, 'timeout' => 0.0, + 'password' => '', // Optional, if not defined no password will be used. ), +.. note:: For enhanced security it is recommended to configure Redis to require + a password. See http://redis.io/topics/security for more information. + If you want to connect to Redis configured to listen on an unix socket (which is recommended if Redis is running on the same system as ownCloud) use this example ``config.php`` configuration:: From d9cc9512932397e671ffff6e79af8976b29ba975 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt Date: Mon, 2 Nov 2015 12:16:13 +0100 Subject: [PATCH 60/69] fix favicon not showing for doc.owncloud.org --- _shared_assets/themes/owncloud_org/layout.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_shared_assets/themes/owncloud_org/layout.html b/_shared_assets/themes/owncloud_org/layout.html index 4ed82b9b5..fa1817f10 100644 --- a/_shared_assets/themes/owncloud_org/layout.html +++ b/_shared_assets/themes/owncloud_org/layout.html @@ -111,6 +111,9 @@ + + + {% endblock %} {# Silence the sidebar's, relbar's #} From 48250de82594a3da4557bebb649159211e299a7b Mon Sep 17 00:00:00 2001 From: Jos Poortvliet Date: Mon, 2 Nov 2015 16:46:02 +0100 Subject: [PATCH 61/69] Update l10n.rst super minor fix, hope a direct commit is OK... Yell if not. --- developer_manual/app/l10n.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developer_manual/app/l10n.rst b/developer_manual/app/l10n.rst index 5563c606b..c6d853571 100644 --- a/developer_manual/app/l10n.rst +++ b/developer_manual/app/l10n.rst @@ -4,7 +4,7 @@ Translation .. sectionauthor:: Bernhard Posselt -ownCloud's translation system is powered by `Transifex `_. To start translating sign up and enter a group. If your community app should be added to Transifex contact one of the `core developers `_ to set it up for you. +ownCloud's translation system is powered by `Transifex `_. To start translating sign up and enter a group. If your community app should be added to Transifex contact one of the `core developers `_ to set it up for you. PHP === From 486f19de48a30e0001a9bf96759e88563c78216f Mon Sep 17 00:00:00 2001 From: RealRancor Date: Tue, 3 Nov 2015 07:25:08 +0100 Subject: [PATCH 62/69] Document new setup warning for transactional file locking. --- .../configuration_server/security_setup_warnings.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/admin_manual/configuration_server/security_setup_warnings.rst b/admin_manual/configuration_server/security_setup_warnings.rst index aa8124ae2..e8ab5e574 100644 --- a/admin_manual/configuration_server/security_setup_warnings.rst +++ b/admin_manual/configuration_server/security_setup_warnings.rst @@ -31,6 +31,18 @@ you need to upgrade, or, if you're not using it, remove it. You are not required to use any caches, but caches improve server performance. See :doc:`caching_configuration`. +Transactional file locking +-------------------------- + +"Transactional file locking is disabled, this might lead to issues with race +conditions." + +"Transactional file locking is using the database as locking backend, for best +performance it's advised to configure a memcache for locking." + +Please see :doc:`../configuration_files/files_locking_transactional` on how +to correctly configure your environment for transactional file locking. + You are accessing this site via HTTP ------------------------------------ From 1fda7ad94c331836ffe2f9c359eb1dd1063e070d Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 2 Nov 2015 15:22:21 +0100 Subject: [PATCH 63/69] Add comment about file list only JS scripts --- developer_manual/app/js.rst | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/developer_manual/app/js.rst b/developer_manual/app/js.rst index 1c7d783a8..a968b9e39 100644 --- a/developer_manual/app/js.rst +++ b/developer_manual/app/js.rst @@ -18,7 +18,18 @@ The JavaScript files reside in the **js/** folder and should be included in the // add vendor files (also allows the array syntax) vendor_script('myapp', 'script'); // adds vendor/script.js -The recommended JavaScript framework to use is `AngularJS `_. A nice tutorial screencast collection can be found on `Egghead.io `_ +If the script file is only needed when the file list is displayed, you should +listen to the ``OCA\Files::loadAdditionalScripts`` event: + +.. code-block:: php + + getEventDispatcher(); + $eventDispatcher->addListener('OCA\Files::loadAdditionalScripts', function() { + script('myapp', 'script'); // adds js/script.js + vendor_script('myapp', 'script'); // adds vendor/script.js + }); + Sending the CSRF token ====================== From 9789d0730630d391807313f681a37da4e9ec41f9 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 3 Nov 2015 07:30:40 -0800 Subject: [PATCH 64/69] Update style_guide.rst --- style_guide.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/style_guide.rst b/style_guide.rst index b61e4e508..97483c49d 100644 --- a/style_guide.rst +++ b/style_guide.rst @@ -130,4 +130,5 @@ or add a caption. Captions must follow a blank line and be italicized, like this Images must go into a sub-directory of the directory containing your manual page. Currently the manuals have both a single master images directory, and image directories local to each chapter. A single master images directory is -difficult to maintain and inevitably becomes cluttered with obsolete images. +difficult to maintain and inevitably becomes cluttered with obsolete images. Eventually +the single master directories will be gone. From 75dad7349c5ab3eef9986e49defead55658613f1 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Tue, 3 Nov 2015 13:05:28 -0800 Subject: [PATCH 65/69] Update README.rst --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index e6f776a74..ef165354c 100644 --- a/README.rst +++ b/README.rst @@ -34,6 +34,7 @@ As this grows it may be moved to its own page. * ownCloud Apps Store * synchronize +* Web (Web page, Web site) License ------- From 8a004611d1f25296436002bd3abc4aa26f9cce54 Mon Sep 17 00:00:00 2001 From: "martin.mattel@diemattels.at" Date: Thu, 5 Nov 2015 16:55:43 +0100 Subject: [PATCH 66/69] note_to_add_header_nginx text corrections --- admin_manual/installation/nginx_configuration.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin_manual/installation/nginx_configuration.rst b/admin_manual/installation/nginx_configuration.rst index 9314fbf82..72da6fd9b 100644 --- a/admin_manual/installation/nginx_configuration.rst +++ b/admin_manual/installation/nginx_configuration.rst @@ -11,6 +11,10 @@ Nginx Configuration **ssl_certificate_key** to suit your needs. - Make sure your SSL certificates are readable by the server (see `Nginx HTTP SSL Module documentation `_). +- ``add_header`` statements are only taken from the current level and are not cascaded + from or to a different level. All necessary ``add_header`` statements must be defined + in each level needed. For better readability is is possible to move *common* add + header statements into a separate file and include that file wherever necessary. .. note:: The following example assumes that your ownCloud is installed in your webroot. If you're using a subfolder you need to adjust the configuration From b716e7a672d9a117c8a6345d55aebf1b2c5e2640 Mon Sep 17 00:00:00 2001 From: Jos Poortvliet Date: Fri, 6 Nov 2015 11:07:06 +0100 Subject: [PATCH 67/69] No more appform, git repo it is. --- developer_manual/app/publishing.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/developer_manual/app/publishing.rst b/developer_manual/app/publishing.rst index 2febe6b5b..2ee72bfdf 100644 --- a/developer_manual/app/publishing.rst +++ b/developer_manual/app/publishing.rst @@ -97,7 +97,9 @@ App store: Getting an app approved ----------------------- -If you want your app to be approved, make sure you fulfill all the requirements and enter your details in `this form on the ownCloud website `_. A team of ownCloud contributors will review your application. As part of the process, you will be subscribed to the `ownCloud app review mailing list `_ where you can answer the questions and comments about your app. You are encouraged to help review other contributors' apps as well! +If you want your app to be approved, make sure you fulfill all the requirements and then create an issue in the `app approval github repository `_ using `this template `_. A team of ownCloud contributors will review your application. Updates to an app require re-review but, of course, an initial review takes more effort and time than the checking of an update. + +You are encouraged to help review other contributors' apps as well! Every app requires at least two independent reviews so your review of at least 2 (more is better!) other apps will ensure the process continues smoothly. Thank you for participating in this process and being a great ownCloud Community member! Losing a rating ^^^^^^^^^^^^^^^ From 808573e43c4054b51923a0fe3d412ad464b1c484 Mon Sep 17 00:00:00 2001 From: Carla Schroder Date: Fri, 6 Nov 2015 17:51:20 -0800 Subject: [PATCH 68/69] add warning that db + data dir are required for restore --- admin_manual/maintenance/restore.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/admin_manual/maintenance/restore.rst b/admin_manual/maintenance/restore.rst index f50a13fd6..c70bd461f 100644 --- a/admin_manual/maintenance/restore.rst +++ b/admin_manual/maintenance/restore.rst @@ -5,10 +5,13 @@ Restoring ownCloud To restore an ownCloud installation there are three main things you need to restore: -#. The config folder -#. The data folder +#. The configuration directory +#. The data directory #. The database +.. note:: You must have both the database and data directory. You cannot + complete restoration unless you have both of these. + When you have completed your restoration, see the ``Setting Strong Directory Permissions`` section of :doc:`../installation/installation_wizard`. @@ -16,9 +19,10 @@ Restore Folders --------------- .. note:: This guide assumes that your previous backup is called - owncloud-dirbkp" + "owncloud-dirbkp" -Simply copy your config and data folder (or even your whole ownCloud install and +Simply copy your configuration and data folder (or even your whole ownCloud +install and data folder) to your ownCloud environment. You could use this command:: rsync -Aax owncloud-dirbkp/ owncloud/ From 1d901d74f34d761d0567f94df114c2f81a9a033c Mon Sep 17 00:00:00 2001 From: Daniel Hansson Date: Sat, 7 Nov 2015 22:31:58 +0100 Subject: [PATCH 69/69] Add info about a guide to set up Redis Link to a complete guide. --- admin_manual/configuration_server/caching_configuration.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/admin_manual/configuration_server/caching_configuration.rst b/admin_manual/configuration_server/caching_configuration.rst index af55e4f23..fb23b505c 100644 --- a/admin_manual/configuration_server/caching_configuration.rst +++ b/admin_manual/configuration_server/caching_configuration.rst @@ -196,7 +196,10 @@ recommended if Redis is running on the same system as ownCloud) use this example ), Redis is very configurable; consult `the Redis documentation -`_ to learn more. +`_ to learn more. + +If you are on Ubuntu you can follow `this guide +`_ for a complete installation from scratch. Cache Directory Location ------------------------

;fE<&~WJRuI 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 literal 0 HcmV?d00001 diff --git a/admin_manual/installation/installation_wizard.rst b/admin_manual/installation/installation_wizard.rst index e748faebf..2e2e83e94 100644 --- a/admin_manual/installation/installation_wizard.rst +++ b/admin_manual/installation/installation_wizard.rst @@ -20,18 +20,16 @@ This is just three steps: You're finished and can start using your new ownCloud server. -Of course, there is much more that you can do to set up your ownCloud server -for -best performance and security. In the following sections we will cover -important +Of course, there is much more that you can do to set up your ownCloud server for +best performance and security. In the following sections we will cover important installation and post-installation steps. Note that you must follow the -instructions in :ref:`Setting Strong Permissions ` -in order to use the :doc:`occ Command <../configuration_server/occ_command>`. +instructions in :ref:`Setting Strong Permissions ` in order +to use the :doc:`occ Command <../configuration_server/occ_command>`. * :ref:`Data Directory Location ` * :ref:`Database Choice ` * :ref:`Trusted Domains ` -* :ref:`Setting Strong Permissions ` +* :ref:`Setting Strong Permissions ` .. _label-data-directory-location: @@ -51,7 +49,8 @@ ownCloud data in a different location for other reasons (e.g. on a storage server). It is best to configure your data directory location at installation, as it is difficult to move after installation. You may put it anywhere; in this example is it located in ``/var/oc_data``. This directory must already exist, -and must be owned by your HTTP user (see :ref:`label-setting-strong-perms`). +and must be owned by your HTTP user (see +:ref:`strong-perms-label`). .. _label-database-choice: @@ -108,10 +107,8 @@ is not whitelisted the following error appears: :alt: screenshot of error message when URL is not whitelisted in trusted_domains -.. _label-setting-strong-perms: - -.. _strong_perms: - +.. _strong-perms-label: + Setting Strong Directory Permissions ------------------------------------ diff --git a/admin_manual/installation/source_installation.rst b/admin_manual/installation/source_installation.rst index 82d786f87..26c5ea9d6 100644 --- a/admin_manual/installation/source_installation.rst +++ b/admin_manual/installation/source_installation.rst @@ -252,7 +252,8 @@ Setting Strong Directory Permissions ------------------------------------ We recommend setting the directory permissions in your ownCloud installation as -strictly as possible for stronger security. Please refer to :ref:`strong_perms`. +strictly as possible for stronger security. Please refer to +:ref:`strong-perms-label`. SELinux ------- diff --git a/admin_manual/maintenance/images/upgrade-1.png b/admin_manual/maintenance/images/upgrade-1.png new file mode 100644 index 0000000000000000000000000000000000000000..80d2e6b3d36fa594c01813fcddbff5ef6f458e44 GIT binary patch literal 26477 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%0D>HsJ@y!w?QS@2_oI&CR%>gMgNH`?tn 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 Nw1k3q8PG7`-vCqgDCqzI literal 0 HcmV?d00001 diff --git a/admin_manual/maintenance/images/upgrade-2.png b/admin_manual/maintenance/images/upgrade-2.png new file mode 100644 index 0000000000000000000000000000000000000000..17cab4d87fadef96ae16ead4affb54492cdc97de GIT binary patch literal 47237 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