migrate therinaldos.com data
Build & Deploy to DigitalOcean Space / build (push) Failing after 2m38s

This commit is contained in:
2024-05-05 15:50:45 -04:00
commit ef1ff240d4
23182 changed files with 3801898 additions and 0 deletions
@@ -0,0 +1,376 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Uploading big files &gt; 512MB &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Providing default files" href="default_files_configuration.html" />
<link rel="prev" title="Configuring Federation Sharing" href="federated_cloud_sharing_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Uploading big files &gt; 512MB</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#system-configuration">System configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configuring-your-web-server">Configuring your Web server</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#apache">Apache</a></li>
<li class="toctree-l4"><a class="reference internal" href="#apache-with-mod-fcgid">Apache with mod_fcgid</a></li>
<li class="toctree-l4"><a class="reference internal" href="#apache-with-mod-proxy-fcgi">Apache with mod_proxy_fcgi</a></li>
<li class="toctree-l4"><a class="reference internal" href="#nginx">nginx</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#configuring-php">Configuring PHP</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configuring-nextcloud">Configuring Nextcloud</a></li>
<li class="toctree-l3"><a class="reference internal" href="#adjust-chunk-size-on-nextcloud-side">Adjust chunk size on Nextcloud side</a></li>
<li class="toctree-l3"><a class="reference internal" href="#large-file-upload-on-object-storage">Large file upload on object storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="#federated-cloud-sharing">Federated Cloud Sharing</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Uploading big files &gt; 512MB</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/big_file_upload_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="uploading-big-files-512mb">
<h1>Uploading big files &gt; 512MB<a class="headerlink" href="#uploading-big-files-512mb" title="Link to this heading"></a></h1>
<p>The default maximum file size for uploads is 512MB. You can increase this
limit up to what your filesystem and operating system allows. There are certain
hard limits that cannot be exceeded:</p>
<ul class="simple">
<li><p>&lt; 2GB on 32Bit OS-architecture</p></li>
<li><p>&lt; 2GB with IE6 - IE8</p></li>
<li><p>&lt; 4GB with IE9 - IE11</p></li>
</ul>
<p>64-bit filesystems have much higher limits; consult the documentation for your
filesystem.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The Nextcloud sync client is not affected by these upload limits
as it is uploading files in smaller chunks. See <a class="reference external" href="https://docs.nextcloud.com/desktop/latest/advancedusage.html">Client documentation</a>
for more information on configuration options.</p>
</div>
<section id="system-configuration">
<h2>System configuration<a class="headerlink" href="#system-configuration" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p>Make sure that the latest version of PHP is installed</p></li>
<li><p>Disable user quotas, which makes them unlimited</p></li>
<li><p>Your temp file or partition has to be big enough to hold multiple
parallel uploads from multiple users; e.g. if the max upload size is 10GB and
the average number of users uploading at the same time is 100: temp space has
to hold at least 10x100 GB</p></li>
</ul>
</section>
<section id="configuring-your-web-server">
<h2>Configuring your Web server<a class="headerlink" href="#configuring-your-web-server" title="Link to this heading"></a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Nextcloud comes with its own <code class="docutils literal notranslate"><span class="pre">nextcloud/.htaccess</span></code> file. Because <code class="docutils literal notranslate"><span class="pre">php-fpm</span></code>
can’t read PHP settings in <code class="docutils literal notranslate"><span class="pre">.htaccess</span></code> these settings must be set in the
<code class="docutils literal notranslate"><span class="pre">nextcloud/.user.ini</span></code> file.</p>
</div>
<p>Set the following two parameters inside the corresponding php.ini file (see the
<strong>Loaded Configuration File</strong> section of <a class="reference internal" href="../issues/general_troubleshooting.html#label-phpinfo"><span class="std std-ref">PHP version and information</span></a> to find your
relevant php.ini files)</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">php_value</span> <span class="n">upload_max_filesize</span> <span class="mi">16</span><span class="n">G</span>
<span class="n">php_value</span> <span class="n">post_max_size</span> <span class="mi">16</span><span class="n">G</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">upload_max_filesize</span></code> and <code class="docutils literal notranslate"><span class="pre">post_max_size</span></code> settings may not apply to file uploads
through WebDAV single file PUT requests or <a class="reference external" href="https://docs.nextcloud.com/server/latest/developer_manual/client_apis/WebDAV/chunking.html">Chunked file uploads</a>
For those, PHP and webserver timeouts are the limiting factor on the upload size.</p>
<p>Adjust these values for your needs. If you see PHP timeouts in your logfiles,
increase the timeout values, which are in seconds:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">php_value</span> <span class="n">max_input_time</span> <span class="mi">3600</span>
<span class="n">php_value</span> <span class="n">max_execution_time</span> <span class="mi">3600</span>
</pre></div>
</div>
<p>The <a class="reference external" href="https://httpd.apache.org/docs/current/mod/mod_reqtimeout.html">mod_reqtimeout</a>
Apache module could also stop large uploads from completing. If you’re using this
module and getting failed uploads of large files either disable it in your Apache
config or raise the configured <code class="docutils literal notranslate"><span class="pre">RequestReadTimeout</span></code> timeouts.</p>
<p>There are also several other configuration options in your Web server config which
could prevent the upload of larger files. Please see the manual of your Web server
for how to configure those values correctly:</p>
<section id="apache">
<h3>Apache<a class="headerlink" href="#apache" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><a class="reference external" href="https://httpd.apache.org/docs/current/en/mod/core.html#limitrequestbody">LimitRequestBody</a> (In Apache HTTP Server &lt;=2.4.53 this defaulted to unlimited, but now defaults to 1 GiB. The new default limits uploads from non-chunking clients to 1 GiB. If this is a concern in your environment, override the new default by either manually setting it to <code class="docutils literal notranslate"><span class="pre">0</span></code> or to a value similar to that used for your local environment’s PHP <code class="docutils literal notranslate"><span class="pre">upload_max_filesize</span> <span class="pre">/</span> <span class="pre">post_max_size</span> <span class="pre">/</span> <span class="pre">memory_limit</span></code> parameters.)</p></li>
<li><p><a class="reference external" href="https://httpd.apache.org/docs/current/mod/mod_ssl.html#sslrenegbuffersize">SSLRenegBufferSize</a></p></li>
<li><p><a class="reference external" href="https://httpd.apache.org/docs/current/mod/core.html#timeout">Timeout</a></p></li>
</ul>
</section>
<section id="apache-with-mod-fcgid">
<h3>Apache with mod_fcgid<a class="headerlink" href="#apache-with-mod-fcgid" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><a class="reference external" href="https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestinmem">FcgidMaxRequestInMem</a></p></li>
<li><p><a class="reference external" href="https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestlen">FcgidMaxRequestLen</a></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you are using Apache/2.4 with mod_fcgid, as of February/March 2016,
<code class="docutils literal notranslate"><span class="pre">FcgidMaxRequestInMem</span></code> still needs to be significantly increased from its default value
to avoid the occurrence of segmentation faults when uploading big files. This is not a regular
setting but serves as a workaround for <a class="reference external" href="https://bz.apache.org/bugzilla/show_bug.cgi?id=51747">Apache with mod_fcgid bug #51747</a>.</p>
<p>Setting <code class="docutils literal notranslate"><span class="pre">FcgidMaxRequestInMem</span></code> significantly higher than normal may no longer be
necessary, once bug #51747 is fixed.</p>
</div>
</section>
<section id="apache-with-mod-proxy-fcgi">
<h3>Apache with mod_proxy_fcgi<a class="headerlink" href="#apache-with-mod-proxy-fcgi" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><a class="reference external" href="https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxytimeout">ProxyTimeout</a></p></li>
</ul>
</section>
<section id="nginx">
<h3>nginx<a class="headerlink" href="#nginx" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size">client_max_body_size</a></p></li>
<li><p><a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_read_timeout">fastcgi_read_timeout</a></p></li>
<li><p><a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path">client_body_temp_path</a></p></li>
</ul>
<p>Since nginx 1.7.11 a new config option <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_request_buffering">fastcgi_request_buffering</a>
is available. Setting this option to <code class="docutils literal notranslate"><span class="pre">fastcgi_request_buffering</span> <span class="pre">off;</span></code> in your nginx config
might help with timeouts during the upload. Furthermore it helps if you’re running out of
disc space on the tmp partition of your system.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Make sure that <code class="docutils literal notranslate"><span class="pre">client_body_temp_path</span></code> points to a partition with
adequate space for your upload file size, and on the same partition as
the <code class="docutils literal notranslate"><span class="pre">upload_tmp_dir</span></code> or <code class="docutils literal notranslate"><span class="pre">tempdirectory</span></code> (see below). For optimal
performance, place these on a separate hard drive that is dedicated to
swap and temp storage.</p>
</div>
<p>If your site is behind a nginx frontend (for example a loadbalancer):</p>
<p>By default, downloads will be limited to 1GB due to <code class="docutils literal notranslate"><span class="pre">proxy_buffering</span></code> and <code class="docutils literal notranslate"><span class="pre">proxy_max_temp_file_size</span></code> on the frontend.</p>
<ul class="simple">
<li><p>If you can access the frontend’s configuration, disable <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering">proxy_buffering</a> or increase <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size">proxy_max_temp_file_size</a> from the default 1GB.</p></li>
<li><p>If you do not have access to the frontend, set the <a class="reference external" href="https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering">X-Accel-Buffering</a> header to <code class="docutils literal notranslate"><span class="pre">add_header</span> <span class="pre">X-Accel-Buffering</span> <span class="pre">no;</span></code> on your backend server.</p></li>
</ul>
</section>
</section>
<section id="configuring-php">
<h2>Configuring PHP<a class="headerlink" href="#configuring-php" title="Link to this heading"></a></h2>
<p>If you don’t want to use the Nextcloud <code class="docutils literal notranslate"><span class="pre">.htaccess</span></code> or <code class="docutils literal notranslate"><span class="pre">.user.ini</span></code> file, you may
configure PHP instead. Make sure to comment out any lines <code class="docutils literal notranslate"><span class="pre">.htaccess</span></code>
pertaining to upload size, if you entered any.</p>
<p>If you are running Nextcloud on a 32-bit system, any <code class="docutils literal notranslate"><span class="pre">open_basedir</span></code> directive
in your <code class="docutils literal notranslate"><span class="pre">php.ini</span></code> file needs to be commented out.</p>
<p>Set the following two parameters inside <code class="docutils literal notranslate"><span class="pre">php.ini</span></code>, using your own desired
file size values:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">upload_max_filesize</span> <span class="o">=</span> <span class="mi">16</span><span class="n">G</span>
<span class="n">post_max_size</span> <span class="o">=</span> <span class="mi">16</span><span class="n">G</span>
</pre></div>
</div>
<p>Tell PHP which temp directory you want it to use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">upload_tmp_dir</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">big_temp_file</span><span class="o">/</span>
</pre></div>
</div>
<p><strong>Output Buffering</strong> must be turned off in <code class="docutils literal notranslate"><span class="pre">.htaccess</span></code> or <code class="docutils literal notranslate"><span class="pre">.user.ini</span></code> or <code class="docutils literal notranslate"><span class="pre">php.ini</span></code>, or PHP
will return memory-related errors:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">output_buffering</span> <span class="pre">=</span> <span class="pre">0</span></code></p></li>
</ul>
</section>
<section id="configuring-nextcloud">
<h2>Configuring Nextcloud<a class="headerlink" href="#configuring-nextcloud" title="Link to this heading"></a></h2>
<p>As an alternative to the <code class="docutils literal notranslate"><span class="pre">upload_tmp_dir</span></code> of PHP (e.g. if you don’t have access to your
<code class="docutils literal notranslate"><span class="pre">php.ini</span></code>) you can also configure a temporary location for uploaded files by using the
<code class="docutils literal notranslate"><span class="pre">tempdirectory</span></code> setting in your <code class="docutils literal notranslate"><span class="pre">config.php</span></code> (See <a class="reference internal" href="../configuration_server/config_sample_php_parameters.html"><span class="doc">Configuration Parameters</span></a>).</p>
<p>If you have configured the <code class="docutils literal notranslate"><span class="pre">session_lifetime</span></code> setting in your <code class="docutils literal notranslate"><span class="pre">config.php</span></code>
(See <a class="reference internal" href="../configuration_server/config_sample_php_parameters.html"><span class="doc">Configuration Parameters</span></a>) file then
make sure it is not too
low. This setting needs to be configured to at least the time (in seconds) that
the longest upload will take. If unsure remove this completely from your
configuration to reset it to the default shown in the <code class="docutils literal notranslate"><span class="pre">config.sample.php</span></code>.</p>
</section>
<section id="adjust-chunk-size-on-nextcloud-side">
<h2>Adjust chunk size on Nextcloud side<a class="headerlink" href="#adjust-chunk-size-on-nextcloud-side" title="Link to this heading"></a></h2>
<p>For upload performance improvements in environments with high upload bandwidth, the server’s upload chunk size may be adjusted:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">files</span> <span class="n">max_chunk_size</span> <span class="o">--</span><span class="n">value</span> <span class="mi">20971520</span>
</pre></div>
</div>
<p>Put in a value in bytes (in this example, 20MB). Set <code class="docutils literal notranslate"><span class="pre">--value</span> <span class="pre">0</span></code> for no chunking at all.</p>
<p>Default is 10485760 (10 MiB).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Changing <code class="docutils literal notranslate"><span class="pre">max_chunk_size</span></code> will not have any performance impact on files uploaded through File Drop shares as unauthenticated file uploads are not chunked.</p>
</div>
</section>
<section id="large-file-upload-on-object-storage">
<h2>Large file upload on object storage<a class="headerlink" href="#large-file-upload-on-object-storage" title="Link to this heading"></a></h2>
<p><a class="reference external" href="https://docs.nextcloud.com/server/latest/developer_manual/client_apis/WebDAV/chunking.html">Chunked file uploads</a>
do have a larger space consumption on the temporary folder when processing those uploads
on object storage as the individual chunks get downloaded from the storage and will be assembled
to the actual file on the Nextcloud servers temporary directory. It is recommended to increase
the size of your temp directory accordingly and also ensure that request timeouts are high
enough for PHP, webservers or any load balancers involved.</p>
</section>
<section id="federated-cloud-sharing">
<h2>Federated Cloud Sharing<a class="headerlink" href="#federated-cloud-sharing" title="Link to this heading"></a></h2>
<p>If you are using <a class="reference external" href="https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/federated_cloud_sharing_configuration.html">Federated Cloud Sharing</a> and want to share large files, you can increase the timeout values for requests to the federated servers.
Therefore, you can set <code class="docutils literal notranslate"><span class="pre">davstorage.request_timeout</span></code> in your <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. The default value is 30 seconds.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="federated_cloud_sharing_configuration.html" class="btn btn-neutral float-left" title="Configuring Federation Sharing" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="default_files_configuration.html" class="btn btn-neutral float-right" title="Providing default files" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,218 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Providing default files &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Configuring Object Storage as Primary Storage" href="primary_storage.html" />
<link rel="prev" title="Uploading big files &gt; 512MB" href="big_file_upload_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Providing default files</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#default-file-templates">Default file templates</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Providing default files</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/default_files_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="providing-default-files">
<h1>Providing default files<a class="headerlink" href="#providing-default-files" title="Link to this heading"></a></h1>
<p>You may distribute a set of default files and folders to all users by placing
them in directory that is readable by the webserver user. This allows you to
overwrite the files that are shipped by default with Nextcloud in
<code class="docutils literal notranslate"><span class="pre">core/skeleton</span></code>. That custom directory should then be configured in the
<code class="docutils literal notranslate"><span class="pre">config.php</span></code> via the configuration option <code class="docutils literal notranslate"><span class="pre">skeletondirectory</span></code> (see
<a class="reference internal" href="../configuration_server/config_sample_php_parameters.html"><span class="doc">Configuration Parameters</span></a>). Leave
empty to not copy any skeleton files.</p>
<p>These files will be copied only to new users after their initial login, and
existing users will not see files that are added to this directory after their
first login. The files in the <code class="docutils literal notranslate"><span class="pre">skeleton</span></code> directory are copied into the
users data directories, so they may change and delete the files without
affecting the originals.</p>
<p>This screenshot shows a set of photos in the <code class="docutils literal notranslate"><span class="pre">skeleton</span></code> directory.</p>
<img alt="../_images/skeleton-files.png" src="../_images/skeleton-files.png" />
<p>They appear on the user’s Nextcloud Files page just like any other files.</p>
<img alt="../_images/skeleton-files1.png" src="../_images/skeleton-files1.png" />
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Overwriting the files in <code class="docutils literal notranslate"><span class="pre">core/skeleton</span></code> is not recommended,
because those changes will be overwritten on the next update of the Nextcloud
server.</p>
</div>
<section id="default-file-templates">
<h2>Default file templates<a class="headerlink" href="#default-file-templates" title="Link to this heading"></a></h2>
<p>The default path for user templates is at <code class="docutils literal notranslate"><span class="pre">/Templates</span></code> (translated in the user’s language).
If you need to override this path for all users, you can set</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">core</span> <span class="n">defaultTemplateDirectory</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="s2">&quot;CustomPath&quot;</span>
</pre></div>
</div>
<p>This will only apply to new users.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="big_file_upload_configuration.html" class="btn btn-neutral float-left" title="Uploading big files &gt; 512MB" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="primary_storage.html" class="btn btn-neutral float-right" title="Configuring Object Storage as Primary Storage" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,507 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Encryption configuration &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Encryption details" href="encryption_details.html" />
<link rel="prev" title="External Storage authentication mechanisms" href="external_storage/auth_mechanisms.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Encryption configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#before-enabling-encryption">Before enabling encryption</a></li>
<li class="toctree-l3"><a class="reference internal" href="#enabling-encryption">Enabling encryption</a></li>
<li class="toctree-l3"><a class="reference internal" href="#sharing-encrypted-files">Sharing encrypted files</a></li>
<li class="toctree-l3"><a class="reference internal" href="#encrypting-external-mountpoints">Encrypting external mountpoints</a></li>
<li class="toctree-l3"><a class="reference internal" href="#enabling-users-file-recovery-keys">Enabling users file recovery keys</a></li>
<li class="toctree-l3"><a class="reference internal" href="#occ-encryption-commands">occ encryption commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="#disabling-encryption">Disabling encryption</a></li>
<li class="toctree-l3"><a class="reference internal" href="#files-not-encrypted">Files not encrypted</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ldap-and-other-external-user-back-ends">LDAP and other external user back-ends</a></li>
<li class="toctree-l3"><a class="reference internal" href="#troubleshooting">Troubleshooting</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#invalid-private-key-for-encryption-app">Invalid private key for encryption app</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Encryption configuration</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/encryption_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="encryption-configuration">
<h1>Encryption configuration<a class="headerlink" href="#encryption-configuration" title="Link to this heading"></a></h1>
<p>The primary purpose of the Nextcloud 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 Nextcloud.</p>
<p>Server-side encryption separates encryption of local and remote storage.
This allows you to encrypt remote storage, such as Dropbox and
Google, without having to also encrypt your home storage on your Nextcloud
server (en- or disable the checkbox “enabling encryption on your home
storage” in the <strong>Server-side encryption</strong> section of your Admin page.)</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Nextcloud supports Authenticated Encryption for all
newly encrypted files. See <a class="reference external" href="https://hackerone.com/reports/108082">https://hackerone.com/reports/108082</a> for more
technical information about the impact.</p>
<p>For maximum security make sure to configure external storage with “Check for
changes: Never”. This will let Nextcloud ignore new files not added via Nextcloud,
so a malicious external storage administrator could not add new files to the
storage without your knowledge. Of course, this is not wise if your external
storage is subject to legitimate external changes.</p>
</div>
<p>Nextcloud server-side encryption encrypts files stored on the Nextcloud server,
and files on remote storage that is connected to your Nextcloud server.
Encryption and decryption are performed on the Nextcloud server. All files sent
to remote storage will be encrypted by the Nextcloud server, and upon retrieval,
decrypted before serving them to you and anyone you have shared them with.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Encrypting files increases their size by roughly 35%, so you must
take this into account when you are provisioning storage and setting
storage quotas. User’s quotas are based on the unencrypted file size, and
not the encrypted file size.</p>
</div>
<p>When files on external storage are encrypted in Nextcloud, you cannot share them
directly from the external storage services, but only through Nextcloud sharing
because the key to decrypt the data never leaves the Nextcloud server.</p>
<p>Nextcloud’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
of files, and not filenames and directory structures.</p>
<p>You should regularly backup all encryption keys to prevent permanent data loss.
The encryption keys are stored in the following directories:</p>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">data/&lt;user&gt;/files_encryption</span></code></dt><dd><p>Users’ private keys and all other keys necessary to decrypt the users’ files</p>
</dd>
<dt><code class="docutils literal notranslate"><span class="pre">data/files_encryption</span></code></dt><dd><p>private keys and all other keys necessary to decrypt the files stored on a
system wide external storage</p>
</dd>
</dl>
<p>When encryption is enabled, all files are encrypted and decrypted by the
Nextcloud application, and stored encrypted on your remote storage.
This protects your data on externally hosted storage. The Nextcloud
admin and the storage admin will see only encrypted files when browsing backend
storage.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Encryption keys are stored only on the Nextcloud server, eliminating
exposure of your data to third-party storage providers. The encryption app
does <strong>not</strong> protect your data if your Nextcloud server is compromised, and it
does not prevent Nextcloud administrators from reading user’s files. This
would require client-side encryption, which this app does not provide. If
your Nextcloud server is not connected to any external storage services then
it is better to use other encryption tools, such as file-level or
whole-disk encryption.</p>
<p>Note also that SSL terminates at or before Apache on the Nextcloud server, and
all files will exist in an unencrypted state between the SSL connection
termination and the Nextcloud code that encrypts and decrypts files. This is
also potentially exploitable by anyone with administrator access to your
server. Read <a class="reference external" href="https://nextcloud.com/blog/encryption-in-nextcloud/">How Nextcloud uses encryption to protect your data</a> for more information.</p>
</div>
<section id="before-enabling-encryption">
<h2>Before enabling encryption<a class="headerlink" href="#before-enabling-encryption" title="Link to this heading"></a></h2>
<p>Plan very carefully before enabling encryption because it is not reversible via
the Nextcloud 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.</p>
<p>You have more options via the <code class="docutils literal notranslate"><span class="pre">occ</span></code> command (see <a class="reference internal" href="#occ-encryption-label"><span class="std std-ref">occ encryption commands</span></a>)</p>
</section>
<section id="enabling-encryption">
<span id="enable-encryption-label"></span><h2>Enabling encryption<a class="headerlink" href="#enabling-encryption" title="Link to this heading"></a></h2>
<p>Nextcloud 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 Nextcloud Default Encryption Module.</p>
<p>First go to the <strong>Server-side encryption</strong> section of your Admin page and check
<strong>Enable server-side encryption</strong>. You have one last chance to change your mind.</p>
<figure class="align-default">
<img alt="../_images/encryption3.png" src="../_images/encryption3.png" />
</figure>
<p>After clicking the <strong>Enable Encryption</strong> button you see the message “No
encryption module loaded, please load a encryption module in the app menu”, so
go to your Apps page to enable the Nextcloud Default Encryption Module.</p>
<figure class="align-default">
<img alt="../_images/encryption1.png" src="../_images/encryption1.png" />
</figure>
<p>Return to your Admin page to see the Nextcloud Default Encryption
Module added to the module selector, and automatically selected. Now you must
log out and then log back in to initialize your encryption keys.</p>
<figure class="align-default">
<img alt="../_images/encryption14.png" src="../_images/encryption14.png" />
</figure>
<p>When you log back in, there is a checkbox for enabling encryption on your home
storage. This is checked by default. Un-check to avoid encrypting your home
storage.</p>
<figure class="align-default">
<img alt="../_images/encryption15.png" src="../_images/encryption15.png" />
</figure>
</section>
<section id="sharing-encrypted-files">
<h2>Sharing encrypted files<a class="headerlink" href="#sharing-encrypted-files" title="Link to this heading"></a></h2>
<p>After encryption is enabled your users must also log out and log back in to
generate their personal encryption keys. They will see a yellow warning banner
that says “Encryption App is enabled but your keys are not initialized, please
log-out and log-in again.”</p>
<p>Share owners may need to re-share files after encryption is enabled; users
trying to access the share will see a message advising them to ask the share
owner to re-share the file with them. For individual shares, un-share and
re-share the file. For group shares, share with any individuals who can’t access
the share. This updates the encryption, and then the share owner can remove the
individual shares.</p>
<figure class="align-default">
<img alt="../_images/encryption9.png" src="../_images/encryption9.png" />
</figure>
</section>
<section id="encrypting-external-mountpoints">
<h2>Encrypting external mountpoints<a class="headerlink" href="#encrypting-external-mountpoints" title="Link to this heading"></a></h2>
<p>You and your users can encrypt individual external mountpoints. You must have
external storage enabled on your Admin page, and enabled for your users.</p>
<p>Encryption settings can be configured in the mount options for an external
storage mount, see <a class="reference internal" href="external_storage_configuration_gui.html#external-storage-mount-options-label"><span class="std std-ref">Mount options</span></a>
(<a class="reference internal" href="external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a>)</p>
</section>
<section id="enabling-users-file-recovery-keys">
<span id="enable-file-recovery-key"></span><h2>Enabling users file recovery keys<a class="headerlink" href="#enabling-users-file-recovery-keys" title="Link to this heading"></a></h2>
<p>If you lose your Nextcloud password, then you lose access to your encrypted
files. If one of your users loses their Nextcloud password their files are
unrecoverable. You cannot reset their password in the normal way; you’ll see a
yellow banner warning “Please provide an admin recovery password, otherwise all
user data will be lost”.</p>
<p>To avoid all this, create a Recovery Key. Go to the Encryption section of your
Admin page and set a recovery key password.</p>
<figure class="align-default">
<img alt="../_images/encryption10.png" src="../_images/encryption10.png" />
</figure>
<p>Then your users have the option of enabling password recovery on their Personal
pages. If they do not do this, then the Recovery Key won’t work for them.</p>
<figure class="align-default">
<img alt="../_images/encryption7.png" src="../_images/encryption7.png" />
</figure>
<p>For users who have enabled password recovery, give them a new password and
recover access to their encrypted files by supplying the Recovery Key on the
Users page.</p>
<figure class="align-default">
<img alt="../_images/encryption8.png" src="../_images/encryption8.png" />
</figure>
<p>You may change your Recovery Key password.</p>
<figure class="align-default">
<img alt="../_images/encryption12.png" src="../_images/encryption12.png" />
</figure>
</section>
<section id="occ-encryption-commands">
<span id="occ-encryption-label"></span><h2>occ encryption commands<a class="headerlink" href="#occ-encryption-commands" title="Link to this heading"></a></h2>
<p>If you have shell access you may use the <code class="docutils literal notranslate"><span class="pre">occ</span></code> command to perform encryption
operations, and you have additional options such as decryption and creating a
single master encryption key. See <a class="reference internal" href="../configuration_server/occ_command.html#encryption-label"><span class="std std-ref">Encryption</span></a> for detailed
instructions on using <code class="docutils literal notranslate"><span class="pre">occ</span></code>.</p>
<p>Get the current status of encryption and the loaded encryption module:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">status</span>
<span class="o">-</span> <span class="n">enabled</span><span class="p">:</span> <span class="n">false</span>
<span class="o">-</span> <span class="n">defaultModule</span><span class="p">:</span> <span class="n">OC_DEFAULT_MODULE</span>
</pre></div>
</div>
<p>This is equivalent to checking <strong>Enable server-side encryption</strong> on your Admin
page:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">enable</span>
<span class="n">Encryption</span> <span class="n">enabled</span>
<span class="n">Default</span> <span class="n">module</span><span class="p">:</span> <span class="n">OC_DEFAULT_MODULE</span>
</pre></div>
</div>
<p>List the available encryption modules:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="nb">list</span><span class="o">-</span><span class="n">modules</span>
<span class="o">-</span> <span class="n">OC_DEFAULT_MODULE</span><span class="p">:</span> <span class="n">Default</span> <span class="n">encryption</span> <span class="n">module</span> <span class="p">[</span><span class="n">default</span><span class="o">*</span><span class="p">]</span>
</pre></div>
</div>
<p>Select a different default Encryption module (currently the only available
module is OC_DEFAULT_MODULE):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="nb">set</span><span class="o">-</span><span class="n">default</span><span class="o">-</span><span class="n">module</span> <span class="p">[</span><span class="n">Module</span> <span class="n">ID</span><span class="p">]</span><span class="o">.</span>
</pre></div>
</div>
<p>The [module ID] is taken from the <code class="docutils literal notranslate"><span class="pre">encryption:list-modules</span></code> command.</p>
<p>Encrypt all data files for all users. For performance reasons, when you enable
encryption on a Nextcloud server only new and changed files are encrypted. This
command gives you the option to encrypt all files.</p>
<p>Run <code class="docutils literal notranslate"><span class="pre">occ</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>occ encryption:encrypt-all
You are about to start to encrypt all files stored in your Nextcloud.
It will depend on the encryption module you use which files get encrypted.
Depending on the number and size of your files this can take some time.
Please make sure that no users access their files during this process!
Do you really want to continue? (y/n)
</pre></div>
</div>
<p>When you type <code class="docutils literal notranslate"><span class="pre">y</span></code> it creates a key pair for each of your users, and then
encrypts their files, displaying progress until all user files are encrypted.</p>
<p>Decrypt all user data files, or optionally a single user:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">decrypt</span><span class="o">-</span><span class="nb">all</span> <span class="p">[</span><span class="n">username</span><span class="p">]</span>
</pre></div>
</div>
<p>View current location of keys:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">show</span><span class="o">-</span><span class="n">key</span><span class="o">-</span><span class="n">storage</span><span class="o">-</span><span class="n">root</span>
<span class="n">Current</span> <span class="n">key</span> <span class="n">storage</span> <span class="n">root</span><span class="p">:</span> <span class="n">default</span> <span class="n">storage</span> <span class="n">location</span> <span class="p">(</span><span class="n">data</span><span class="o">/</span><span class="p">)</span>
</pre></div>
</div>
<p>Move keys to a different folder, either locally or on a different server.
The folder must already exist, be owned by root and your HTTP group, and be
restricted to root and your HTTP group. Further the folder needs to be located
somewhere in your Nextcloud data folder, either physically, or as a mount.
This example is for Ubuntu Linux. Note that the new folder is relative to your <code class="docutils literal notranslate"><span class="pre">occ</span></code> directory:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">your</span><span class="o">/</span><span class="n">nextcloud</span><span class="o">/</span><span class="n">data</span>
<span class="n">mkdir</span> <span class="n">keys</span>
<span class="n">chown</span> <span class="o">-</span><span class="n">R</span> <span class="n">root</span><span class="p">:</span><span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">keys</span>
<span class="n">chmod</span> <span class="o">-</span><span class="n">R</span> <span class="mi">0770</span> <span class="n">keys</span>
<span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">change</span><span class="o">-</span><span class="n">key</span><span class="o">-</span><span class="n">storage</span><span class="o">-</span><span class="n">root</span> <span class="n">keys</span>
<span class="n">Start</span> <span class="n">to</span> <span class="n">move</span> <span class="n">keys</span><span class="p">:</span>
<span class="mi">4</span> <span class="p">[</span><span class="o">============================</span><span class="p">]</span>
<span class="n">Key</span> <span class="n">storage</span> <span class="n">root</span> <span class="n">successfully</span> <span class="n">changed</span> <span class="n">to</span> <span class="n">keys</span>
</pre></div>
</div>
<p>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:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">enable</span><span class="o">-</span><span class="n">master</span><span class="o">-</span><span class="n">key</span>
</pre></div>
</div>
<p>Fix Bad signature errors:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">fix</span><span class="o">-</span><span class="n">encrypted</span><span class="o">-</span><span class="n">version</span> <span class="o">--</span><span class="nb">all</span>
<span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">fix</span><span class="o">-</span><span class="n">encrypted</span><span class="o">-</span><span class="n">version</span> <span class="o">&lt;</span><span class="n">userid</span><span class="o">&gt;</span>
<span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">fix</span><span class="o">-</span><span class="n">encrypted</span><span class="o">-</span><span class="n">version</span> <span class="o">&lt;</span><span class="n">userid</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">p</span> <span class="o">&lt;</span><span class="n">path</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>Fix key not found errors:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">fix</span><span class="o">-</span><span class="n">key</span><span class="o">-</span><span class="n">location</span> <span class="o">&lt;</span><span class="n">userid</span><span class="o">&gt;</span>
</pre></div>
</div>
</section>
<section id="disabling-encryption">
<span id="occ-disable-encryption-label"></span><h2>Disabling encryption<a class="headerlink" href="#disabling-encryption" title="Link to this heading"></a></h2>
<p>You may disable encryption only with <code class="docutils literal notranslate"><span class="pre">occ</span></code>. Make sure you have backups of all
encryption keys, including users’.
Disable your encryption module with this command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">encryption</span><span class="p">:</span><span class="n">decrypt</span><span class="o">-</span><span class="nb">all</span>
</pre></div>
</div>
<p>It will put your server into maintenance mode and back.
It also takes care of disabling encryption when all files have been decrypted.
If the command is aborted some files have been decrypted and others are still encrypted.
In this case the command will keep the encryption turned on
and Nextcloud can handle this situation fine.
You can proceed decrypting the remaining files by calling the command again
once the problems that caused the abortion have been resolved.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Disabling encryption without decrypting all the files will lead to decryption errors in the future as this state causes unpredictable behaviors.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">encryption:decrypt-all</span></code> can take a lot of time. You can run one user at a time like so: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">encryption:decrypt-all</span> <span class="pre">&lt;user-id&gt;</span></code>.</p>
</div>
</section>
<section id="files-not-encrypted">
<h2>Files not encrypted<a class="headerlink" href="#files-not-encrypted" title="Link to this heading"></a></h2>
<p>Only the data in the files in <code class="docutils literal notranslate"><span class="pre">data/user/files</span></code> are encrypted, and not the
filenames or folder structures. These files are never encrypted:</p>
<ul class="simple">
<li><p>Existing files in the trash bin &amp; Versions. Only new and changed files after
encryption is enabled are encrypted.</p></li>
<li><p>Existing files in Versions</p></li>
<li><p>Image thumbnails from the Gallery app</p></li>
<li><p>Previews from the Files app</p></li>
<li><p>The search index from the full text search app</p></li>
<li><p>Third-party app data</p></li>
</ul>
<p>There may be other files that are not encrypted; only files that are exposed to
third-party storage providers are guaranteed to be encrypted.</p>
</section>
<section id="ldap-and-other-external-user-back-ends">
<h2>LDAP and other external user back-ends<a class="headerlink" href="#ldap-and-other-external-user-back-ends" title="Link to this heading"></a></h2>
<p>If you use an external user back-end, such as an LDAP or Samba server, and you
change a user’s password on the back-end, the user will be prompted to change
their Nextcloud login to match on their next Nextcloud login. The user will need
both their old and new passwords to do this. If you have enabled the Recovery
Key then you can change a user’s password in the Nextcloud Users panel to match
their back-end password, and then, of course, notify the user and give them
their new password.</p>
</section>
<section id="troubleshooting">
<h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Link to this heading"></a></h2>
<section id="invalid-private-key-for-encryption-app">
<h3>Invalid private key for encryption app<a class="headerlink" href="#invalid-private-key-for-encryption-app" title="Link to this heading"></a></h3>
<p>This <a class="reference external" href="https://github.com/nextcloud/server/issues/8546">issue</a> is being worked
on. In the meantime there is a
<a class="reference external" href="https://github.com/nextcloud/server/issues/8546#issuecomment-514139714">workaround</a>
which unfortunately is only suitable for administrators comfortable with the
command line.</p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="external_storage/auth_mechanisms.html" class="btn btn-neutral float-left" title="External Storage authentication mechanisms" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="encryption_details.html" class="btn btn-neutral float-right" title="Encryption details" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,570 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Encryption details &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Encryption migration" href="encryption_migration.html" />
<link rel="prev" title="Encryption configuration" href="encryption_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Encryption details</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#key-type-master-key">Key type: master key</a></li>
<li class="toctree-l3"><a class="reference internal" href="#key-type-public-sharing-key">Key type: public sharing key</a></li>
<li class="toctree-l3"><a class="reference internal" href="#key-type-recovery-key">Key type: recovery key</a></li>
<li class="toctree-l3"><a class="reference internal" href="#key-type-user-key">Key type: user key</a></li>
<li class="toctree-l3"><a class="reference internal" href="#file-type-public-key-file">File type: public key file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#file-format">File format</a></li>
<li class="toctree-l4"><a class="reference internal" href="#file-locations">File locations</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#file-type-private-key-file">File type: private key file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id1">File format</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id2">File locations</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#file-type-share-key-file">File type: share key file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id3">File format</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id4">File locations</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#file-type-file-key-file">File type: file key file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id5">File format</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id6">File locations</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#file-type-file">File type: file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id7">File format</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id8">File locations</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#key-generation-generate-the-key-pair">Key generation: generate the key pair</a></li>
<li class="toctree-l3"><a class="reference internal" href="#key-generation-store-the-public-key">Key generation: store the public key</a></li>
<li class="toctree-l3"><a class="reference internal" href="#key-generation-store-the-private-key">Key generation: store the private key</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#derive-the-encryption-key">Derive the encryption key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#encrypt-the-private-key">Encrypt the private key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#sign-the-private-key">Sign the private key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#store-the-private-key">Store the private key</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#encryption-generate-the-file-key">Encryption: generate the file key</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#generate-the-file-key">Generate the file key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#read-the-public-key">Read the public key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#encrypt-seal-the-file-key">Encrypt/seal the file key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#store-the-file-key">Store the file key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#store-the-envelope-keys">Store the envelope keys</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#encryption-encrypt-the-file">Encryption: encrypt the file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#split-the-file">Split the file</a></li>
<li class="toctree-l4"><a class="reference internal" href="#encrypt-the-blocks">Encrypt the blocks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#sign-the-blocks">Sign the blocks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#store-the-file">Store the file</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#decryption-read-the-private-key">Decryption: read the private key</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#read-the-private-key-file">Read the private key file</a></li>
<li class="toctree-l4"><a class="reference internal" href="#derive-the-decryption-key">Derive the decryption key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#check-the-signature">Check the signature</a></li>
<li class="toctree-l4"><a class="reference internal" href="#decrypt-the-private-key">Decrypt the private key</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#decryption-read-the-file-key">Decryption: read the file key</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#read-the-file-key">Read the file key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#read-the-envelope-key">Read the envelope key</a></li>
<li class="toctree-l4"><a class="reference internal" href="#decrypt-unseal-the-file-key">Decrypt/unseal the file key</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#decryption-decrypt-the-file">Decryption: decrypt the file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id9">Split the file</a></li>
<li class="toctree-l4"><a class="reference internal" href="#check-the-block-signatures">Check the block signatures</a></li>
<li class="toctree-l4"><a class="reference internal" href="#decrypt-the-blocks">Decrypt the blocks</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#sources">Sources</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Encryption details</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/encryption_details.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="encryption-details">
<h1>Encryption details<a class="headerlink" href="#encryption-details" title="Link to this heading"></a></h1>
<p>This document - provided by <a class="reference external" href="https://syseleven.de">SysEleven</a> - describes the server-side encryption scheme implemented by Nextcloud’s default encryption module. This includes:</p>
<ul class="simple">
<li><p>the encryption and signature of files with a master key.</p></li>
<li><p>the encryption and signature of files with a public sharing key.</p></li>
<li><p>the encryption and signature of files with a recovery key.</p></li>
<li><p>the encryption and signature of files with a user key.</p></li>
</ul>
<p>These conventions apply throughout this document:</p>
<ul class="simple">
<li><p>Given file paths in this document are relative to the Nextcloud data directory that can be retrieved as <code class="docutils literal notranslate"><span class="pre">datadirectory</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code>.</p></li>
<li><p>Placeholders are denoted as <code class="docutils literal notranslate"><span class="pre">$variable</span></code>. The variable has to be replaced with the appropriate information.</p></li>
<li><p>Static strings are denoted as <code class="docutils literal notranslate"><span class="pre">&quot;some</span> <span class="pre">string&quot;</span></code>.</p></li>
<li><p>The concatenation of strings is denoted as <code class="docutils literal notranslate"><span class="pre">$variable.&quot;some</span> <span class="pre">string&quot;</span></code>.</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>However, files that have been encrypted in Nextcloud versions 15 and lower may have slightly different structures.</p>
</div>
<section id="key-type-master-key">
<h2>Key type: master key<a class="headerlink" href="#key-type-master-key" title="Link to this heading"></a></h2>
<p>This is the default encryption mode in Nextcloud. With master key encryption enabled there is one central key that is used to secure the files handled by Nextcloud. The master key is protected by a password that can be generated by the server administrator. The advantage of the master key encryption is that the encryption is transparent to the users but has the disadvantage that the server administrator is able to decrypt user files without knowing any user password.</p>
</section>
<section id="key-type-public-sharing-key">
<h2>Key type: public sharing key<a class="headerlink" href="#key-type-public-sharing-key" title="Link to this heading"></a></h2>
<p>The public sharing key is used to secure files that have been publicly shared. The public sharing key is protected by a password that can be generated by the server administrator. The advantage of the public sharing key is that it is independent of the selected encryption mode so that Nextcloud is able to provide publicly shared files to outside parties.</p>
</section>
<section id="key-type-recovery-key">
<h2>Key type: recovery key<a class="headerlink" href="#key-type-recovery-key" title="Link to this heading"></a></h2>
<p>The recovery key is used to provide a restore mechanism in cases where the user key encryption is enabled, where the administrator has enabled the recovery key feature and the user has opted into using the recovery key feature. The recovery key can then be used to restore files when users have lost their passwords. The recovery key is protected by a recovery password that the server administrator should store securely. The advantage of the recovery key is that files can be recovered but has the disadvantage that the server administrator is able to decrypt user files without knowing any user password.</p>
</section>
<section id="key-type-user-key">
<h2>Key type: user key<a class="headerlink" href="#key-type-user-key" title="Link to this heading"></a></h2>
<p>User key encryption needs to be explicitly activated by calling <code class="docutils literal notranslate"><span class="pre">./occ</span> <span class="pre">encryption:disable-master-key</span></code>. In older versions of Nextcloud this had been enabled by default.
With user key encryption enabled all users have their own user keys that are used to secure the files handled by Nextcloud. The user keys are protected by the user passwords. The advantage is that the server administrator is not able to decrypt user files without knowing any user password - unless the file is publicly shared or a recovery key is defined - but has the disadvantage that files are permanently lost if the users forget their user passwords - unless the files are (publicly) shared or a recovery key is defined.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This method cannot be used with SAML authentication, because Nextcloud does not get a hold of any credentials whatsoever and therefore cannot use any users’ passwords for encryption.</p>
</div>
</section>
<section id="file-type-public-key-file">
<span id="file-type-public-key-file-label"></span><h2>File type: public key file<a class="headerlink" href="#file-type-public-key-file" title="Link to this heading"></a></h2>
<p>Public key files contain RSA public keys that are used to encrypt/seal the share key files.</p>
<section id="file-format">
<h3>File format<a class="headerlink" href="#file-format" title="Link to this heading"></a></h3>
<p>Public key files are stored in PEM format.</p>
</section>
<section id="file-locations">
<h3>File locations<a class="headerlink" href="#file-locations" title="Link to this heading"></a></h3>
<p>The locations of public key files depend on their key type:</p>
<ul class="simple">
<li><p>master public key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/master_&quot;.$random.&quot;.publicKey&quot;</span></code></p></li>
<li><p>public sharing public key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/pubShare_&quot;.$random.&quot;.publicKey&quot;</span></code></p></li>
<li><p>recovery public key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/recoveryKey_&quot;.$random.&quot;.publicKey&quot;</span></code></p></li>
<li><p>user public key: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/OC_DEFAULT_MODULE/&quot;.$username.&quot;.publicKey&quot;</span></code></p></li>
</ul>
</section>
</section>
<section id="file-type-private-key-file">
<span id="file-type-private-key-file-label"></span><h2>File type: private key file<a class="headerlink" href="#file-type-private-key-file" title="Link to this heading"></a></h2>
<p>Private key files contain RSA private keys that are used to decrypt/unseal the share key files. The RSA private key is encrypted and signed with a password and stored in a format that is specific to the Nextcloud encryption module.</p>
<section id="id1">
<h3>File format<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
<p>The RSA private key that is represented in PEM format is encrypted and Base64 encoded (denoted as <code class="docutils literal notranslate"><span class="pre">$encryption</span></code>). For the encryption an initialization vector of 16 bytes is selected (denoted as <code class="docutils literal notranslate"><span class="pre">$iv</span></code>). Furthermore a hexadecimally encoded message authentication code of 64 bytes is calculated (denoted as <code class="docutils literal notranslate"><span class="pre">$signature</span></code>). The resulting file contains:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&quot;HBEGIN:cipher:AES-256-CTR:keyFormat:hash:HEND&quot;.
$encrypted.&quot;00iv00&quot;.$iv.&quot;00sig00&quot;.$signature.&quot;xxx&quot;
</pre></div>
</div>
</section>
<section id="id2">
<h3>File locations<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
<p>The locations of private key files depend on their key type:</p>
<ul class="simple">
<li><p>master private key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/master_&quot;.$random.&quot;.privateKey&quot;</span></code></p></li>
<li><p>public sharing private key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/pubShare_&quot;.$random.&quot;.privateKey&quot;</span></code></p></li>
<li><p>recovery private key: <code class="docutils literal notranslate"><span class="pre">&quot;files_encryption/OC_DEFAULT_MODULE/recoveryKey_&quot;.$random.&quot;.privateKey&quot;</span></code></p></li>
<li><p>user private key: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/OC_DEFAULT_MODULE/&quot;.$username.&quot;.privateKey&quot;</span></code></p></li>
</ul>
</section>
</section>
<section id="file-type-share-key-file">
<span id="file-type-share-key-file-label"></span><h2>File type: share key file<a class="headerlink" href="#file-type-share-key-file" title="Link to this heading"></a></h2>
<p>Share key files contain so-called envelope keys that are needed to decrypt the file key files. The envelope keys are created by <code class="docutils literal notranslate"><span class="pre">openssl_seal()</span></code> during the encryption and are needed for <code class="docutils literal notranslate"><span class="pre">openssl_open()</span></code> during the decryption. The envelope keys are encrypted with the public keys of the recipients that are allowed to read the actual files.</p>
<section id="id3">
<h3>File format<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
<p>The envelope keys are stored in binary format.</p>
</section>
<section id="id4">
<h3>File locations<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
<p>The locations of share key files depend on the type of the encrypted file:</p>
<ul class="simple">
<li><p>regular file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/keys/files/&quot;.$filename.&quot;/OC_DEFAULT_MODULE/&quot;.$recipient.&quot;.shareKey&quot;</span></code></p></li>
<li><p>version file: <em>version files use the same location for the share key file as their regular file</em></p></li>
<li><p>trashed file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/keys/files_trashbin/files/&quot;.$filename.&quot;.d&quot;.$timestamp.&quot;/OC_DEFAULT_MODULE/&quot;.$recipient.&quot;.shareKey&quot;</span></code></p></li>
<li><p>trashed version file: <em>trashed version files use the same location for the share key file as their trashed file</em></p></li>
</ul>
</section>
</section>
<section id="file-type-file-key-file">
<span id="file-type-file-key-file-label"></span><h2>File type: file key file<a class="headerlink" href="#file-type-file-key-file" title="Link to this heading"></a></h2>
<p>File key files contain symmetric keys used to encrypt the actual files. The file keys consist of 32 random bytes and are encrypted/sealed with the envelope keys stored in the share key files.</p>
<section id="id5">
<h3>File format<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
<p>The file keys are stored in binary format.</p>
</section>
<section id="id6">
<h3>File locations<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
<p>The locations of the file key files depend on the type of the encrypted file:</p>
<ul class="simple">
<li><p>regular file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/keys/files/&quot;.$filename.&quot;/OC_DEFAULT_MODULE/fileKey&quot;</span></code></p></li>
<li><p>version file: <em>version files use the same location for the file key file as their regular file</em></p></li>
<li><p>trashed file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_encryption/keys/files_trashbin/files/&quot;.$filename.&quot;.d&quot;.$delete_timestamp.&quot;/OC_DEFAULT_MODULE/fileKey&quot;</span></code></p></li>
<li><p>trashed version file: <em>trashed version files use the same location for the file key file as their trashed file</em></p></li>
</ul>
</section>
</section>
<section id="file-type-file">
<span id="file-type-file-label"></span><h2>File type: file<a class="headerlink" href="#file-type-file" title="Link to this heading"></a></h2>
<p>Files contain the actual file content. The file content is encrypted and signed with a password and stored in a format that is specific to the Nextcloud encryption module.</p>
<section id="id7">
<h3>File format<a class="headerlink" href="#id7" title="Link to this heading"></a></h3>
<p>The file content is split into blocks of 6072 bytes. Each block is encrypted and Base64 encoded (denoted as <code class="docutils literal notranslate"><span class="pre">$encryption[0..$n]</span></code>). For the encryption an initialization vector of 16 bytes is selected for each block (denoted as <code class="docutils literal notranslate"><span class="pre">$iv[0..$n]</span></code>). Furthermore a hexadecimally encoded message authentication code of 64 bytes is calculated of each block (denoted as <code class="docutils literal notranslate"><span class="pre">$signature[0..$n]</span></code>). An encrypted block has a total size of 8192 bytes (8096 bytes for <code class="docutils literal notranslate"><span class="pre">$encrypted[]</span></code>, 6 bytes for <code class="docutils literal notranslate"><span class="pre">&quot;00iv00&quot;</span></code>, 16 bytes for <code class="docutils literal notranslate"><span class="pre">$iv[]</span></code>, 7 bytes for <code class="docutils literal notranslate"><span class="pre">&quot;00sig00&quot;</span></code>, 64 bytes for <code class="docutils literal notranslate"><span class="pre">$signature[]</span></code> and 3 bytes for <code class="docutils literal notranslate"><span class="pre">&quot;xxx&quot;</span></code>). Only the last encrypted block may be shorter. The header of the encrypted file is padded with 8147 bytes of <code class="docutils literal notranslate"><span class="pre">&quot;-&quot;</span></code> (denoted as <code class="docutils literal notranslate"><span class="pre">$padding</span></code>) to a total of 8192 bytes. The resulting file contains:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&quot;HBEGIN:cipher:AES-256-CTR:keyFormat:hash:HEND&quot;.$padding.
$encrypted[0].&quot;00iv00&quot;.$iv[0].&quot;00sig00&quot;.$signature[0].&quot;xxx&quot;.
$encrypted[1].&quot;00iv00&quot;.$iv[1].&quot;00sig00&quot;.$signature[1].&quot;xxx&quot;.
$encrypted[2].&quot;00iv00&quot;.$iv[2].&quot;00sig00&quot;.$signature[2].&quot;xxx&quot;.
[...]
$encrypted[$n].&quot;00iv00&quot;.$iv[$n].&quot;00sig00&quot;.$signature[$n].&quot;xxx&quot;
</pre></div>
</div>
</section>
<section id="id8">
<h3>File locations<a class="headerlink" href="#id8" title="Link to this heading"></a></h3>
<p>The locations of the files depend on the type of the encrypted file:</p>
<ul class="simple">
<li><p>regular file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files/&quot;.$filename</span></code></p></li>
<li><p>version file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_versions/&quot;.$filename.&quot;.v&quot;.$version_timestamp</span></code></p></li>
<li><p>trashed file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_trashbin/files/&quot;.$filename.&quot;.d&quot;.$delete_timestamp</span></code></p></li>
<li><p>trashed version file: <code class="docutils literal notranslate"><span class="pre">$username.&quot;/files_trashbin/versions/&quot;.$filename.&quot;.v&quot;.$version_timestamp.&quot;.d&quot;.$delete_timestamp</span></code></p></li>
</ul>
</section>
</section>
<section id="key-generation-generate-the-key-pair">
<h2>Key generation: generate the key pair<a class="headerlink" href="#key-generation-generate-the-key-pair" title="Link to this heading"></a></h2>
<p>The key pair has to be generated with the <code class="docutils literal notranslate"><span class="pre">openssl_pkey_new()</span></code> function. Then the private key and public key are extracted from the the key resource with the <code class="docutils literal notranslate"><span class="pre">openssl_pkey_export()</span></code> function.</p>
</section>
<section id="key-generation-store-the-public-key">
<h2>Key generation: store the public key<a class="headerlink" href="#key-generation-store-the-public-key" title="Link to this heading"></a></h2>
<p>The public key is written to the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.publicKey&quot;</span></code> file as documented in <a class="reference internal" href="#file-type-public-key-file-label"><span class="std std-ref">File type: public key file</span></a>.</p>
</section>
<section id="key-generation-store-the-private-key">
<h2>Key generation: store the private key<a class="headerlink" href="#key-generation-store-the-private-key" title="Link to this heading"></a></h2>
<section id="derive-the-encryption-key">
<h3>Derive the encryption key<a class="headerlink" href="#derive-the-encryption-key" title="Link to this heading"></a></h3>
<p>The salt for the encryption key is derived by creating a raw SHA256 hash of <code class="docutils literal notranslate"><span class="pre">$uid.$instanceId.$instanceSecret</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function. <code class="docutils literal notranslate"><span class="pre">$instanceId</span></code> can be retrieved as <code class="docutils literal notranslate"><span class="pre">instanceid</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. <code class="docutils literal notranslate"><span class="pre">$instanceSecret</span></code> can be retrieved as <code class="docutils literal notranslate"><span class="pre">secret</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code>.</p>
<p>The encryption key is then derived by creating a raw SHA256-PBKDF2 hash of the password with the salt, 100.000 rounds and (by default) with a target size of 32 bytes (as required for AES-256-CTR) with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$passphrase</span></code>).</p>
<p>The used password depends on the key type:</p>
<ul class="simple">
<li><p>master private key: use <code class="docutils literal notranslate"><span class="pre">secret</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code></p></li>
<li><p>public sharing private key: use an empty password</p></li>
<li><p>recovery private key: use the recovery password</p></li>
<li><p>user private key: use the user password</p></li>
</ul>
</section>
<section id="encrypt-the-private-key">
<h3>Encrypt the private key<a class="headerlink" href="#encrypt-the-private-key" title="Link to this heading"></a></h3>
<p>The initialization vector is generated as a random string of 16 bytes with the <code class="docutils literal notranslate"><span class="pre">random_bytes()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$iv</span></code>). The private key is (by default) AES-256-CTR encrypted with the <code class="docutils literal notranslate"><span class="pre">$iv</span></code> and the <code class="docutils literal notranslate"><span class="pre">$passphrase</span></code> with the <code class="docutils literal notranslate"><span class="pre">openssl_encrypt()</span></code> function and returned as Base64 encoded without zero-padding (denoted as <code class="docutils literal notranslate"><span class="pre">$encrypted</span></code>).</p>
</section>
<section id="sign-the-private-key">
<h3>Sign the private key<a class="headerlink" href="#sign-the-private-key" title="Link to this heading"></a></h3>
<p>The message authentication key is derived by creating a raw SHA512 hash of <code class="docutils literal notranslate"><span class="pre">$passphrase.$version.$position.&quot;a&quot;</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">$version</span></code> is always <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$position</span></code> is always <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code>.</p></li>
</ul>
<p>The signature is then derived by creating a hexadecimally encoded SHA256-HMAC of <code class="docutils literal notranslate"><span class="pre">$encrypted</span></code> and the message authentication key with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$signature</span></code>).</p>
</section>
<section id="store-the-private-key">
<h3>Store the private key<a class="headerlink" href="#store-the-private-key" title="Link to this heading"></a></h3>
<p>The private key is written to the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.privateKey&quot;</span></code> file with the derived <code class="docutils literal notranslate"><span class="pre">$encrypted</span></code>, <code class="docutils literal notranslate"><span class="pre">$iv</span></code> and <code class="docutils literal notranslate"><span class="pre">$signature</span></code> as documented in <a class="reference internal" href="#file-type-private-key-file-label"><span class="std std-ref">File type: private key file</span></a>.</p>
</section>
</section>
<section id="encryption-generate-the-file-key">
<h2>Encryption: generate the file key<a class="headerlink" href="#encryption-generate-the-file-key" title="Link to this heading"></a></h2>
<section id="generate-the-file-key">
<h3>Generate the file key<a class="headerlink" href="#generate-the-file-key" title="Link to this heading"></a></h3>
<p>The file key is generated as a random string of 32 bytes with the <code class="docutils literal notranslate"><span class="pre">random_bytes()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$filekey</span></code>).</p>
</section>
<section id="read-the-public-key">
<h3>Read the public key<a class="headerlink" href="#read-the-public-key" title="Link to this heading"></a></h3>
<p>The public keys of the recipients are read from the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.publicKey&quot;</span></code> files as documented in <a class="reference internal" href="#file-type-public-key-file-label"><span class="std std-ref">File type: public key file</span></a>.</p>
</section>
<section id="encrypt-seal-the-file-key">
<h3>Encrypt/seal the file key<a class="headerlink" href="#encrypt-seal-the-file-key" title="Link to this heading"></a></h3>
<p>The file key is encrypted/sealed with the <code class="docutils literal notranslate"><span class="pre">openssl_seal()</span></code> function with the public keys. This returns the encrypted file key and the encrypted envelope keys for the recipients.</p>
</section>
<section id="store-the-file-key">
<h3>Store the file key<a class="headerlink" href="#store-the-file-key" title="Link to this heading"></a></h3>
<p>The encrypted file key is stored in the <code class="docutils literal notranslate"><span class="pre">&quot;fileKey&quot;</span></code> file as documented in <a class="reference internal" href="#file-type-file-key-file-label"><span class="std std-ref">File type: file key file</span></a>.</p>
</section>
<section id="store-the-envelope-keys">
<h3>Store the envelope keys<a class="headerlink" href="#store-the-envelope-keys" title="Link to this heading"></a></h3>
<p>The encrypted envelope keys for the recipients are stored in the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.shareKey&quot;</span></code> files as documented in <a class="reference internal" href="#file-type-share-key-file-label"><span class="std std-ref">File type: share key file</span></a>.</p>
</section>
</section>
<section id="encryption-encrypt-the-file">
<h2>Encryption: encrypt the file<a class="headerlink" href="#encryption-encrypt-the-file" title="Link to this heading"></a></h2>
<section id="split-the-file">
<h3>Split the file<a class="headerlink" href="#split-the-file" title="Link to this heading"></a></h3>
<p>The file is split into 6072 bytes sized blocks. Only the last encrypted block may be shorter. Each block is referenced by its zero-based index within the file (denoted as <code class="docutils literal notranslate"><span class="pre">$position</span></code>).</p>
</section>
<section id="encrypt-the-blocks">
<h3>Encrypt the blocks<a class="headerlink" href="#encrypt-the-blocks" title="Link to this heading"></a></h3>
<p>For each block the initialization vector is generated as a random string of 16 bytes with the <code class="docutils literal notranslate"><span class="pre">random_bytes()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$iv[$position]</span></code>). The block is (by default) AES-256-CTR encrypted with the <code class="docutils literal notranslate"><span class="pre">$iv[$position]</span></code> and the <code class="docutils literal notranslate"><span class="pre">$filekey</span></code> with the <code class="docutils literal notranslate"><span class="pre">openssl_encrypt()</span></code> function and returned as Base64 encoded without zero-padding (denoted as <code class="docutils literal notranslate"><span class="pre">$encrypted[$position]</span></code>).</p>
</section>
<section id="sign-the-blocks">
<h3>Sign the blocks<a class="headerlink" href="#sign-the-blocks" title="Link to this heading"></a></h3>
<p>The message authentication key is derived by creating a raw SHA512 hash of <code class="docutils literal notranslate"><span class="pre">$filekey.$version.$position.&quot;a&quot;</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">$version</span></code> is the <code class="docutils literal notranslate"><span class="pre">encrypted</span></code> value that can be retrieved from the <code class="docutils literal notranslate"><span class="pre">oc_filecache</span></code> table in the database and must not be zero. Take into account that a file in the <code class="docutils literal notranslate"><span class="pre">oc_filecache</span></code> table is identified by its <code class="docutils literal notranslate"><span class="pre">path</span></code> value as well as its <code class="docutils literal notranslate"><span class="pre">storage</span></code> value which references the <code class="docutils literal notranslate"><span class="pre">numeric_id</span></code> field in the <code class="docutils literal notranslate"><span class="pre">oc_storages</span></code> table. Including <code class="docutils literal notranslate"><span class="pre">$version</span></code> into the message authentication key prevents blocks from being swapped between different versions of the same file.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$position</span></code> is the index of the current block starting at <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code> and is appended with <code class="docutils literal notranslate"><span class="pre">&quot;end&quot;</span></code> for the last block of the file. Including <code class="docutils literal notranslate"><span class="pre">$position</span></code> into the message authentication key prevents blocks from being swapped within the same file. Furthermore, adding <code class="docutils literal notranslate"><span class="pre">&quot;end&quot;</span></code> to the message authentication key of the last block prevents file truncation attacks.</p></li>
</ul>
<p>The signature is then derived by creating a hexadecimally encoded SHA256-HMAC of <code class="docutils literal notranslate"><span class="pre">$encrypted[$position]</span></code> and the message authentication key with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$signature[$position]</span></code>).</p>
</section>
<section id="store-the-file">
<h3>Store the file<a class="headerlink" href="#store-the-file" title="Link to this heading"></a></h3>
<p>The encrypted file is written to the file with the derived <code class="docutils literal notranslate"><span class="pre">$encrypted[0..$n]</span></code>, <code class="docutils literal notranslate"><span class="pre">$iv[0..$n]</span></code> and <code class="docutils literal notranslate"><span class="pre">$signature[0..$n]</span></code> as documented in <a class="reference internal" href="#file-type-file-label"><span class="std std-ref">File type: file</span></a>.</p>
</section>
</section>
<section id="decryption-read-the-private-key">
<h2>Decryption: read the private key<a class="headerlink" href="#decryption-read-the-private-key" title="Link to this heading"></a></h2>
<section id="read-the-private-key-file">
<h3>Read the private key file<a class="headerlink" href="#read-the-private-key-file" title="Link to this heading"></a></h3>
<p>The private key is read from the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.privateKey&quot;</span></code> file and the values <code class="docutils literal notranslate"><span class="pre">$encrypted</span></code>, <code class="docutils literal notranslate"><span class="pre">$iv</span></code> and <code class="docutils literal notranslate"><span class="pre">$signature</span></code> are parsed as documented in <a class="reference internal" href="#file-type-private-key-file-label"><span class="std std-ref">File type: private key file</span></a>.</p>
</section>
<section id="derive-the-decryption-key">
<h3>Derive the decryption key<a class="headerlink" href="#derive-the-decryption-key" title="Link to this heading"></a></h3>
<p>The salt for the decryption key is derived by creating a raw SHA256 hash of <code class="docutils literal notranslate"><span class="pre">$uid.$instanceId.$instanceSecret</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function. <code class="docutils literal notranslate"><span class="pre">$instanceId</span></code> can be retrieved as <code class="docutils literal notranslate"><span class="pre">instanceid</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. <code class="docutils literal notranslate"><span class="pre">$instanceSecret</span></code> can be retrieved as <code class="docutils literal notranslate"><span class="pre">secret</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code>.</p>
<p>The decryption key is then derived by creating a raw SHA256-PBKDF2 hash of the password with the salt, 100.000 rounds and (by default) with a target size of 32 bytes (as required for AES-256-CTR) with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function (denoted as <code class="docutils literal notranslate"><span class="pre">$passphrase</span></code>).</p>
<p>The used password depends on the key type:</p>
<ul class="simple">
<li><p>master private key: use <code class="docutils literal notranslate"><span class="pre">secret</span></code> from the <code class="docutils literal notranslate"><span class="pre">config.php</span></code></p></li>
<li><p>public sharing private key: use an empty password</p></li>
<li><p>recovery private key: use the recovery password</p></li>
<li><p>user private key: use the user password</p></li>
</ul>
</section>
<section id="check-the-signature">
<h3>Check the signature<a class="headerlink" href="#check-the-signature" title="Link to this heading"></a></h3>
<p>The message authentication key is derived by creating a raw SHA512 hash of <code class="docutils literal notranslate"><span class="pre">$passphrase.$version.$position.&quot;a&quot;</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">$version</span></code> is always <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$position</span></code> is always <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code>.</p></li>
</ul>
<p>The signature is then derived by creating a hexadecimally encoded SHA256-HMAC of <code class="docutils literal notranslate"><span class="pre">$encrypted</span></code> and the message authentication key with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function. Only proceed when the derived signature is equal to <cite>$signature</cite> which is checked with the <code class="docutils literal notranslate"><span class="pre">hash_equals()</span></code> function.</p>
</section>
<section id="decrypt-the-private-key">
<h3>Decrypt the private key<a class="headerlink" href="#decrypt-the-private-key" title="Link to this heading"></a></h3>
<p>The private key is (by default) AES-256-CTR decrypted with the <code class="docutils literal notranslate"><span class="pre">$iv</span></code> and the <code class="docutils literal notranslate"><span class="pre">$passphrase</span></code> with the <code class="docutils literal notranslate"><span class="pre">openssl_decrypt()</span></code> function.</p>
</section>
</section>
<section id="decryption-read-the-file-key">
<h2>Decryption: read the file key<a class="headerlink" href="#decryption-read-the-file-key" title="Link to this heading"></a></h2>
<section id="read-the-file-key">
<h3>Read the file key<a class="headerlink" href="#read-the-file-key" title="Link to this heading"></a></h3>
<p>The encrypted file key is read from the <code class="docutils literal notranslate"><span class="pre">&quot;fileKey&quot;</span></code> file as documented in <a class="reference internal" href="#file-type-file-key-file-label"><span class="std std-ref">File type: file key file</span></a>.</p>
</section>
<section id="read-the-envelope-key">
<h3>Read the envelope key<a class="headerlink" href="#read-the-envelope-key" title="Link to this heading"></a></h3>
<p>The encrypted envelope key for the recipient is read from the <code class="docutils literal notranslate"><span class="pre">$username.&quot;.shareKey&quot;</span></code> file as documented in <a class="reference internal" href="#file-type-share-key-file-label"><span class="std std-ref">File type: share key file</span></a>.</p>
</section>
<section id="decrypt-unseal-the-file-key">
<h3>Decrypt/unseal the file key<a class="headerlink" href="#decrypt-unseal-the-file-key" title="Link to this heading"></a></h3>
<p>The encrypted file key is decrypted/unsealed with the <code class="docutils literal notranslate"><span class="pre">openssl_open()</span></code> function with the private key and encrypted envelope key for the recipient (denoted as <code class="docutils literal notranslate"><span class="pre">$filekey</span></code>).</p>
</section>
</section>
<section id="decryption-decrypt-the-file">
<h2>Decryption: decrypt the file<a class="headerlink" href="#decryption-decrypt-the-file" title="Link to this heading"></a></h2>
<section id="id9">
<h3>Split the file<a class="headerlink" href="#id9" title="Link to this heading"></a></h3>
<p>The encrypted file is split into a 8192 bytes sized header and one or more 8192 bytes sized blocks. Only the last encrypted block may be shorter. Each block is referenced by its zero-based index within the file (denoted as <code class="docutils literal notranslate"><span class="pre">$position</span></code>). The values <code class="docutils literal notranslate"><span class="pre">$encrypted[0..$n]</span></code>, <code class="docutils literal notranslate"><span class="pre">$iv[0..$n]</span></code> and <code class="docutils literal notranslate"><span class="pre">$signature[0..$n]</span></code> are parsed as documented in <a class="reference internal" href="#file-type-file-label"><span class="std std-ref">File type: file</span></a>.</p>
</section>
<section id="check-the-block-signatures">
<h3>Check the block signatures<a class="headerlink" href="#check-the-block-signatures" title="Link to this heading"></a></h3>
<p>The message authentication key is derived by creating a raw SHA512 hash of <code class="docutils literal notranslate"><span class="pre">$filekey.$version.$position.&quot;a&quot;</span></code> with the <code class="docutils literal notranslate"><span class="pre">hash()</span></code> function.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">$version</span></code> is the <code class="docutils literal notranslate"><span class="pre">encrypted</span></code> value that can be retrieved from the <code class="docutils literal notranslate"><span class="pre">oc_filecache</span></code> table in the database and must not be zero. Take into account that a file in the <code class="docutils literal notranslate"><span class="pre">oc_filecache</span></code> table is identified by its <code class="docutils literal notranslate"><span class="pre">path</span></code> value as well as its <code class="docutils literal notranslate"><span class="pre">storage</span></code> value which references the <code class="docutils literal notranslate"><span class="pre">numeric_id</span></code> field in the <code class="docutils literal notranslate"><span class="pre">oc_storages</span></code> table. Including <code class="docutils literal notranslate"><span class="pre">$version</span></code> into the message authentication key prevents blocks from being swapped between different versions of the same file.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">$position</span></code> is the index of the current block starting at <code class="docutils literal notranslate"><span class="pre">&quot;0&quot;</span></code> and is appended with <code class="docutils literal notranslate"><span class="pre">&quot;end&quot;</span></code> for the last block of the file. Including <code class="docutils literal notranslate"><span class="pre">$position</span></code> into the message authentication key prevents blocks from being swapped within the same file. Furthermore, adding <code class="docutils literal notranslate"><span class="pre">&quot;end&quot;</span></code> to the message authentication key of the last block prevents file truncation attacks.</p></li>
</ul>
<p>The signature is then derived by creating a hexadecimally encoded SHA256-HMAC of <code class="docutils literal notranslate"><span class="pre">$encrypted[$position]</span></code> and the message authentication key with the <code class="docutils literal notranslate"><span class="pre">hash_hmac()</span></code> function. Only proceed when the derived signature is equal to <code class="docutils literal notranslate"><span class="pre">$signature[$position]</span></code> which is checked with the <code class="docutils literal notranslate"><span class="pre">hash_equals()</span></code> function.</p>
</section>
<section id="decrypt-the-blocks">
<h3>Decrypt the blocks<a class="headerlink" href="#decrypt-the-blocks" title="Link to this heading"></a></h3>
<p>Each block is (by default) AES-256-CTR decrypted with the <code class="docutils literal notranslate"><span class="pre">$iv[$position]</span></code> and the <code class="docutils literal notranslate"><span class="pre">$filekey</span></code> with the <code class="docutils literal notranslate"><span class="pre">openssl_decrypt()</span></code> function.</p>
</section>
</section>
<section id="sources">
<h2>Sources<a class="headerlink" href="#sources" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://github.com/syseleven/nextcloud-tools">nextcloud-tools repository on GitHub</a></p></li>
<li><p><a class="reference external" href="https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html">Nextcloud Encryption Configuration documentation</a></p></li>
<li><p><a class="reference external" href="https://help.nextcloud.com/t/allow-file-decryption-with-only-the-files-keys-and-passwords/436/12">Nextcloud Help response concering the usage of version information</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L504">Sourcecode: Creation of the Message Authentication Code</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L346">Sourcecode: Derivation of the Encryption Key</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L234">Sourcecode: Encryption of the File</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L686">Sourcecode: Encryption/Sealing of the File Key</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L124">Sourcecode: Extraction of the Private and Public Key</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L645">Sourcecode: Generation of the File Key</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L634">Sourcecode: Generation of the Initialization Vector</a></p></li>
<li><p><a class="reference external" href="https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L153">Sourcecode: Generation of a Key Pair</a></p></li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="encryption_configuration.html" class="btn btn-neutral float-left" title="Encryption configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="encryption_migration.html" class="btn btn-neutral float-right" title="Encryption migration" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,205 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Encryption migration &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Transactional file locking" href="files_locking_transactional.html" />
<link rel="prev" title="Encryption details" href="encryption_details.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Encryption migration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#encryption-format">Encryption format</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#checking-for-old-files">Checking for old files</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Encryption migration</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/encryption_migration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="encryption-migration">
<h1>Encryption migration<a class="headerlink" href="#encryption-migration" title="Link to this heading"></a></h1>
<section id="encryption-format">
<h2>Encryption format<a class="headerlink" href="#encryption-format" title="Link to this heading"></a></h2>
<p>Nextcloud still supports the legacy encryption scheme used for server side encryption where the encrypted files did not contain header information. This may still be used for installations that still have encrypted files from &lt;= ownCloud 6. Files will be updated to the new encryption format once they are written again. However it is recommended to check if you have to still support this scheme.</p>
<p>Starting with version 20 for new installations the legacy encryption will be off by default.
However if you are upgrading there is a migration path to check if you can disable legacy encryption.</p>
<section id="checking-for-old-files">
<h3>Checking for old files<a class="headerlink" href="#checking-for-old-files" title="Link to this heading"></a></h3>
<p>On the command line run:</p>
<blockquote>
<div><p>occ encryption:scan:legacy-format</p>
</div></blockquote>
<p>The command will tell you if you can remove the legacy encryption mode.
If so set the <cite>encryption.legacy_format_support</cite> in your config.php to ‘false’.</p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="encryption_details.html" class="btn btn-neutral float-left" title="Encryption details" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="files_locking_transactional.html" class="btn btn-neutral float-right" title="Transactional file locking" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,242 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Amazon S3 &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="FTP/FTPS" href="ftp.html" />
<link rel="prev" title="Configuring External Storage (GUI)" href="../external_storage_configuration_gui.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4 current"><a class="current reference internal" href="#">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">Amazon S3</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/amazons3.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="amazon-s3">
<h1>Amazon S3<a class="headerlink" href="#amazon-s3" title="Link to this heading"></a></h1>
<p>To connect an Amazon S3 (or compatible) bucket to Nextcloud you will need to know your:</p>
<ul class="simple">
<li><p>S3 bucket name</p></li>
<li><p>S3 access key ID</p></li>
<li><p>S3 secret access key</p></li>
<li><p>S3 region (if Amazon hosted) or S3 hostname (if non-Amazon hosted) [Note: If specifying a hostname, use the generic S3 endpoint hostname, <strong>not</strong> the hostname that contains your bucket name]</p></li>
</ul>
<p>In the <strong>Folder name</strong> field enter a folder name to use as the local mountpoint for this
external storage. If this does not exist it will be created.</p>
<p>In the <strong>External storage</strong> field select <strong>Amazon S3</strong>.</p>
<p>In the <strong>Authentication</strong> field select <strong>Access key</strong>.</p>
<p>In the <strong>Bucket</strong> field enter your <em>S3 bucket name</em>. [Note: Even if non-Amazon hosted, bucket names must meet AWS S3 naming requirements regardless of what your S3 provider/platform considers acceptable - i.e. no underscores]</p>
<p>In the <strong>Access key</strong> field enter your <em>S3 access key ID</em>.</p>
<p>In the <strong>Secret key</strong> field enter your <em>S3 access key</em>.</p>
<p><strong>If you are using Amazon S3:</strong> the <code class="code docutils literal notranslate"><span class="pre">Region</span></code> parameter is required unless you’re happy with
the default of <code class="code docutils literal notranslate"><span class="pre">eu-west-1</span></code> (which will be used if you don’t specify anything). There is no
need to override the <code class="code docutils literal notranslate"><span class="pre">Hostname</span></code> or <code class="code docutils literal notranslate"><span class="pre">Port</span></code>. And <code class="code docutils literal notranslate"><span class="pre">Storage</span> <span class="pre">Class</span></code> only needs to be
modified if you’re using a different configuration at AWS. Lastly, <code class="code docutils literal notranslate"><span class="pre">Enable</span> <span class="pre">Path</span> <span class="pre">Style</span></code> is
rarely required with Amazon, but some legacy Amazon datacenters may require it. Leave
<code class="code docutils literal notranslate"><span class="pre">Legacy</span> <span class="pre">(v2)</span> <span class="pre">authentication</span></code> unselected.</p>
<p><strong>If you using a non-Amazon hosted S3 store:</strong> you will need to set the <code class="code docutils literal notranslate"><span class="pre">Hostname</span></code>
parameter (and can ignore the <code class="code docutils literal notranslate"><span class="pre">Region</span></code> parameter). You may need to enable <code class="code docutils literal notranslate"><span class="pre">Enable</span> <span class="pre">Path</span> <span class="pre">Style</span></code>
if your non-Amazon S3 store does <em>not</em> support requests like <code class="code docutils literal notranslate"><span class="pre">https://bucket.hostname.domain/</span></code>.
Setting <code class="code docutils literal notranslate"><span class="pre">Enable</span> <span class="pre">Path</span> <span class="pre">Style</span></code> to true configures the S3 client to make requests like
<code class="code docutils literal notranslate"><span class="pre">https://hostname.domain/bucket</span></code> instead. It’s rare to need <code class="code docutils literal notranslate"><span class="pre">Legacy</span> <span class="pre">(v2)</span> <span class="pre">authentication</span></code>, but
enable it if your in-house object store or service provider requires it over the default (v4) authentication.</p>
<p>In the <strong>Available for</strong> field enter the users or groups who you want to give
access your S3 mount.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">Enable</span> <span class="pre">SSL</span></code> checkbox enables HTTPS connections and generally preferred. It is the default unless
you disable it here.</p>
<figure class="align-default">
<img alt="" src="../../_images/amazons3.png" />
</figure>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../external_storage_configuration_gui.html" class="btn btn-neutral float-left" title="Configuring External Storage (GUI)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="ftp.html" class="btn btn-neutral float-right" title="FTP/FTPS" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,262 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>External Storage authentication mechanisms &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Encryption configuration" href="../encryption_configuration.html" />
<link rel="prev" title="WebDAV" href="webdav.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">External Storage authentication mechanisms</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#special-mechanisms">Special mechanisms</a></li>
<li class="toctree-l3"><a class="reference internal" href="#password-based-mechanisms">Password-based mechanisms</a></li>
<li class="toctree-l3"><a class="reference internal" href="#public-key-mechanisms">Public-key mechanisms</a></li>
<li class="toctree-l3"><a class="reference internal" href="#considerations-for-shared-storage">Considerations for shared storage</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">External Storage authentication mechanisms</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/auth_mechanisms.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="external-storage-authentication-mechanisms">
<h1>External Storage authentication mechanisms<a class="headerlink" href="#external-storage-authentication-mechanisms" title="Link to this heading"></a></h1>
<p>Nextcloud storage backends accept one or more authentication schemes such as
passwords, OAuth, or token-based, to name a few examples. Each authentication
scheme may be implemented by combining multiple authentication mechanisms. Different
mechanisms require different configuration parameters, depending on their
behavior.</p>
<figure class="align-default">
<img alt="Authentication types" src="../../_images/authentication-types.png" />
</figure>
<section id="special-mechanisms">
<h2>Special mechanisms<a class="headerlink" href="#special-mechanisms" title="Link to this heading"></a></h2>
<p>The <strong>None</strong> authentication mechanism requires no configuration parameters, and
is used when a backend requires no authentication.</p>
<p>The <strong>Built-in</strong> authentication mechanism itself requires no configuration
parameters, but is used as a placeholder for legacy storages that have not been
migrated to the new system and do not take advantage of generic authentication
mechanisms. The authentication parameters are provided directly by the backend.</p>
</section>
<section id="password-based-mechanisms">
<h2>Password-based mechanisms<a class="headerlink" href="#password-based-mechanisms" title="Link to this heading"></a></h2>
<p>The <strong>Username and password</strong> mechanism requires a manually-defined username and
password. These get passed directly to the backend and are specified during the
setup of the mount point.</p>
<p>The <strong>Log-in credentials, save in session</strong> mechanism uses the Nextcloud login
credentials of the user to connect to the storage. These are not stored anywhere
on the server, but rather in the user session, giving increased security.
This method has some important drawbacks, since Nextcloud has no access to the storage
credentials and therefore cannot perform any background tasks on the storage:</p>
<ul class="simple">
<li><p>Sharing is disabled</p></li>
<li><p>Background file scanning does not work</p></li>
<li><p>Background versions expiration does not work</p></li>
<li><p>Desktop and mobile clients that use tokens to authenticate can not access those shares</p></li>
<li><p>Other services that might request the file through a different request like Collabora Online or OnlyOffice will not be able to open files from that storage</p></li>
<li><p>The method cannot be used with SAML/SSO authentication, because Nextcloud does not get a hold of any credentials whatsoever</p></li>
</ul>
<p>The <strong>Log-in credentials, save in database</strong> mechanism uses the Nextcloud login
credentials of the user to connect to the storage. These are stored in the
database encrypted with the shared secret. This allows to share files from
within this mount point.</p>
<ul class="simple">
<li><p>The method cannot be used with SAML/SSO authentication, because Nextcloud does not get a hold of any credentials whatsoever</p></li>
</ul>
<p>The <strong>User entered, store in database</strong> mechanism work in the same way as the
“Username and password” mechanism but the credentials need to be specified by
each user individually. Before the first access to that mount point the user
will be prompted to enter the credentials.</p>
<p>The <strong>Global credentials</strong> mechanism uses the general input field for “Global
credentials” in the external storage settings section as source for the
credentials instead of individual credentials for a mount point.</p>
<p><a class="reference internal" href="#considerations-for-shared-storage-label"><span class="std std-ref">Considerations for shared storage</span></a></p>
</section>
<section id="public-key-mechanisms">
<h2>Public-key mechanisms<a class="headerlink" href="#public-key-mechanisms" title="Link to this heading"></a></h2>
<p>Currently only the RSA mechanism is implemented, where a public/private
keypair is generated by Nextcloud and the public half shown in the GUI. The keys
are generated in the SSH format, and are currently 1024 bits in length. Keys
can be regenerated with a button in the GUI.</p>
<p>After generating your keys, you need to copy your new public key to the
destination server to <code class="docutils literal notranslate"><span class="pre">.ssh/authorized_keys</span></code>.</p>
<p>See <a class="reference internal" href="sftp.html"><span class="doc">SFTP</span></a> for additional information on how to set up certificate based authentication on SFTP.</p>
<figure class="align-default">
<img alt="Form on admin page for generating RSA keys." src="../../_images/auth_rsa.png" />
</figure>
</section>
<section id="considerations-for-shared-storage">
<span id="considerations-for-shared-storage-label"></span><h2>Considerations for shared storage<a class="headerlink" href="#considerations-for-shared-storage" title="Link to this heading"></a></h2>
<p>Every external storage, which is using user specific authentication, is connected individually.
Even if several users connect to the same folder, the files are regarded as separate files per user.
Nextcloud can not recognize if two users access the very same file if they follow individual connections.</p>
<p>This has an influence on e.g. file locking as a locked individual file is not shown as locked to other users or users cannot collaboratively edit documents.</p>
<p>If collaborative working on external storage is required, the authentication “Global credentials” has to be used.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="webdav.html" class="btn btn-neutral float-left" title="WebDAV" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../encryption_configuration.html" class="btn btn-neutral float-right" title="Encryption configuration" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,236 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FTP/FTPS &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Local" href="local.html" />
<link rel="prev" title="Amazon S3" href="amazons3.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">FTP/FTPS</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/ftp.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ftp-ftps">
<h1>FTP/FTPS<a class="headerlink" href="#ftp-ftps" title="Link to this heading"></a></h1>
<p>To connect to an FTP server, you will need:</p>
<ul class="simple">
<li><p>A folder name for your local mountpoint; the folder will be created if it
does not exist</p></li>
<li><p>The URL of the FTP server</p></li>
<li><p>Port number (default: 21)</p></li>
<li><p>FTP server username and password</p></li>
<li><p>Remote Subfolder, the FTP directory to mount in Nextcloud. Nextcloud defaults
to the root directory. If you specify a subfolder you must leave
off the leading slash. For example, <code class="docutils literal notranslate"><span class="pre">public_html/images</span></code></p></li>
</ul>
<p>Your new mountpoint is available to all users by default, and you may restrict
access by entering specific users or groups in the <strong>Available for</strong> field.</p>
<p>Optionally, Nextcloud can use FTPS (FTP over SSL) by checking <strong>Secure ftps://</strong>.
This requires additional configuration with your root certificate if the FTP
server uses a self-signed certificate.</p>
<figure class="align-default">
<img alt="Nextcloud GUI FTP configuration." src="../../_images/ftp.png" />
</figure>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The external storage <code class="docutils literal notranslate"><span class="pre">FTP/FTPS</span></code> needs the <code class="docutils literal notranslate"><span class="pre">allow_url_fopen</span></code> PHP
setting to be set to <code class="docutils literal notranslate"><span class="pre">1</span></code>. When having connection problems make sure that it
is not set to <code class="docutils literal notranslate"><span class="pre">0</span></code> in your <code class="docutils literal notranslate"><span class="pre">php.ini</span></code>. See <a class="reference internal" href="../../issues/general_troubleshooting.html#label-phpinfo"><span class="std std-ref">PHP version and information</span></a> to learn
how to find the right <code class="docutils literal notranslate"><span class="pre">php.ini</span></code> file to edit.</p>
</div>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>FTP uses the password authentication scheme; see <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for
more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="amazons3.html" class="btn btn-neutral float-left" title="Amazon S3" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="local.html" class="btn btn-neutral float-right" title="Local" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,236 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Local &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Nextcloud" href="nextcloud.html" />
<link rel="prev" title="FTP/FTPS" href="ftp.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">Local</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/local.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="local">
<h1>Local<a class="headerlink" href="#local" title="Link to this heading"></a></h1>
<p>Local storages provide access to any directory on the Nextcloud server. Since
this is a significant security risk, Local storage can only be configured in
the Nextcloud admin settings. Non-admin users cannot create Local storage
mounts.</p>
<p>Use this to mount any directory on your Nextcloud server that is outside
of your Nextcloud <code class="docutils literal notranslate"><span class="pre">data/</span></code> directory. This directory must be readable and
writable by your HTTP server user. These ownership and permission examples
are on Ubuntu Linux:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">chown</span> <span class="o">-</span><span class="n">R</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span><span class="p">:</span><span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">localdir</span>
<span class="n">sudo</span> <span class="n">chmod</span> <span class="o">-</span><span class="n">R</span> <span class="mi">0750</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">localdir</span>
</pre></div>
</div>
<p>Important: If you use consecutive commands, make sure, you are user <code class="docutils literal notranslate"><span class="pre">www-data</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">bash</span>
<span class="n">cd</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">localdir</span>
<span class="n">mkdir</span> <span class="n">data</span>
</pre></div>
</div>
<p>In the <strong>Folder name</strong> field enter the folder name that you want to appear on
your Nextcloud Files page.</p>
<p>In the <strong>Configuration</strong> field enter the full filepath of the directory you
want to mount.</p>
<p>In the <strong>Available for</strong> field enter the users or groups who have permission to
access the mount. By default all users have access.</p>
<figure class="align-default">
<img alt="../../_images/local.png" src="../../_images/local.png" />
</figure>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="ftp.html" class="btn btn-neutral float-left" title="FTP/FTPS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="nextcloud.html" class="btn btn-neutral float-right" title="Nextcloud" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,216 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Nextcloud &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="OpenStack Object Storage" href="openstack.html" />
<link rel="prev" title="Local" href="local.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">Nextcloud</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/nextcloud.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="nextcloud">
<h1>Nextcloud<a class="headerlink" href="#nextcloud" title="Link to this heading"></a></h1>
<p>A Nextcloud storage is a specialized <a class="reference internal" href="webdav.html"><span class="doc">WebDAV</span></a> storage, with optimizations
for Nextcloud-Nextcloud communication. See the <a class="reference internal" href="webdav.html"><span class="doc">WebDAV</span></a> documentation to
learn how to configure a Nextcloud external storage.</p>
<p>When filling in the <strong>URL</strong> field, use the path to the root of the Nextcloud
installation, rather than the path to the WebDAV endpoint. So, for a server at
<code class="docutils literal notranslate"><span class="pre">https://example.com/nextcloud</span></code>, use <code class="docutils literal notranslate"><span class="pre">https://example.com/nextcloud</span></code> and not
<code class="docutils literal notranslate"><span class="pre">https://example.com/nextcloud/remote.php/dav</span></code>.</p>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="local.html" class="btn btn-neutral float-left" title="Local" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="openstack.html" class="btn btn-neutral float-right" title="OpenStack Object Storage" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,241 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpenStack Object Storage &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="SFTP" href="sftp.html" />
<link rel="prev" title="Nextcloud" href="nextcloud.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">OpenStack Object Storage</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/openstack.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="openstack-object-storage">
<h1>OpenStack Object Storage<a class="headerlink" href="#openstack-object-storage" title="Link to this heading"></a></h1>
<p>OpenStack Object Storage is used to connect to an OpenStack Swift server, or to
Rackspace. Two authentication mechanisms are available: one is the generic
OpenStack mechanism, and the other is used exclusively for Rackspace, a provider
of object storage that uses the OpenStack Swift protocol.</p>
<p>The OpenStack authentication mechanism uses the OpenStack Keystone v2
protocol. Your Nextcloud configuration needs:</p>
<ul class="simple">
<li><p><strong>Bucket</strong>. This is user-defined; think of it as a subdirectory of your total
storage. The bucket will be created if it does not exist.</p></li>
<li><p><strong>Username</strong> of your account.</p></li>
<li><p><strong>Password</strong> of your account.</p></li>
<li><p><strong>Tenant name</strong> of your account. (A tenant is similar to a user group.)</p></li>
<li><p><strong>Identity Endpoint URL</strong>, the URL to log in to your OpenStack account.</p></li>
</ul>
<figure class="align-default">
<img alt="Openstack configuration." src="../../_images/openstack.png" />
</figure>
<p>The Rackspace authentication mechanism requires:</p>
<ul class="simple">
<li><p><strong>Bucket</strong></p></li>
<li><p><strong>Username</strong></p></li>
<li><p><strong>API key</strong>.</p></li>
</ul>
<p>You must also enter the term <strong>cloudFiles</strong> in the <strong>Service name</strong> field.</p>
<figure class="align-default">
<img alt="Openstack configuration." src="../../_images/rackspace.png" />
</figure>
<p>It may be necessary to specify a <strong>Region</strong>. Your region should be named in
your account information, and you can read about Rackspace regions at
<a class="reference external" href="https://support.rackspace.com/how-to/about-regions/">About Regions</a>.</p>
<p>The timeout of HTTP requests is set in the <strong>Request timeout</strong> field, in
seconds.</p>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="nextcloud.html" class="btn btn-neutral float-left" title="Nextcloud" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="sftp.html" class="btn btn-neutral float-right" title="SFTP" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,224 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SFTP &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="SMB/CIFS" href="smb.html" />
<link rel="prev" title="OpenStack Object Storage" href="openstack.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">SFTP</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/sftp.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="sftp">
<h1>SFTP<a class="headerlink" href="#sftp" title="Link to this heading"></a></h1>
<p>Nextcloud’s SFTP (SSH File Transfer Protocol) backend supports both password and
public key authentication.</p>
<p>The <strong>Host</strong> field is required; a port can be specified as part of the <strong>Host</strong>
field in the following format: <code class="docutils literal notranslate"><span class="pre">hostname.domain:port</span></code>. The default port is 22
(SSH).</p>
<p>For public key authentication, you can generate a public/private key pair from
your <strong>SFTP with secret key login</strong> configuration.</p>
<figure class="align-default">
<img alt="Generating an RSA key pair in the SFTP configuration." src="../../_images/auth_mechanism.png" />
</figure>
<p>After generating your keys, you need to copy your new public key to the
destination server to <code class="docutils literal notranslate"><span class="pre">.ssh/authorized_keys</span></code>. Nextcloud will then use its
private key to authenticate to the SFTP server.</p>
<p>The default <strong>Remote Subfolder</strong> is the root directory (<code class="docutils literal notranslate"><span class="pre">/</span></code>) of the remote
SFTP server, and you may enter any directory you wish.</p>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="openstack.html" class="btn btn-neutral float-left" title="OpenStack Object Storage" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="smb.html" class="btn btn-neutral float-right" title="SMB/CIFS" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,291 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SMB/CIFS &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="WebDAV" href="webdav.html" />
<link rel="prev" title="SFTP" href="sftp.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">SMB/CIFS</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/smb.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="smb-cifs">
<h1>SMB/CIFS<a class="headerlink" href="#smb-cifs" title="Link to this heading"></a></h1>
<p>Nextcloud can connect to Windows file servers or other SMB-compatible servers
with the SMB/CIFS backend.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The SMB/CIFS backend requires <code class="docutils literal notranslate"><span class="pre">smbclient</span></code> or
the PHP smbclient module to be installed on the Nextcloud server. The PHP
smbclient module is preferred, but either will work. These
should be included in any Linux distribution. (See <a class="reference external" href="https://pecl.php.net/package/smbclient">PECL smbclient</a> if your distro does not include
them.)</p>
</div>
<p>You need the following information:</p>
<ul class="simple">
<li><p>Folder name for your local mountpoint.</p></li>
<li><p>Host: The URL of the Samba server.</p></li>
<li><p>Username: The username or <code class="docutils literal notranslate"><span class="pre">domain\username</span></code> (see below) used to login to the Samba
server.</p></li>
<li><p>Password: the password to login to the Samba server.</p></li>
<li><p>Share: The share on the Samba server to mount.</p></li>
<li><p>Remote Subfolder: The remote subfolder inside the Samba share to mount
(optional, defaults to /). To assign the Nextcloud logon username
automatically to the subfolder, use <code class="docutils literal notranslate"><span class="pre">$user</span></code> instead of a particular
subfolder name.</p></li>
<li><p>And finally, the Nextcloud users and groups who get access to the share.</p></li>
</ul>
<p>Optionally, you can specify a <code class="docutils literal notranslate"><span class="pre">Domain</span></code>. This is useful in
cases where the
SMB server requires a domain and a username, and an advanced authentication
mechanism like session credentials is used so that the username cannot be
modified. This is concatenated with the username, so the backend gets
<code class="docutils literal notranslate"><span class="pre">domain\username</span></code></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>For improved reliability and performance, we recommended installing
<code class="docutils literal notranslate"><span class="pre">libsmbclient-php</span></code>, a native PHP module for connecting to
SMB servers.</p>
</div>
<figure class="align-default">
<a class="reference internal image-reference" href="../../_images/smb.png"><img alt="Samba external storage configuration." src="../../_images/smb.png" style="width: 683.25px; height: 123.0px;" /></a>
</figure>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
<section id="smb-update-notifications">
<h2>SMB update notifications<a class="headerlink" href="#smb-update-notifications" title="Link to this heading"></a></h2>
<p>Nextcloud can use smb update notifications to
listen for changes made to a configured SMB/CIFS storage and detect external
changes made to the storage in near real-time.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Due to limitations of linux based SMB servers, this feature only works
reliably on Windows SMB servers.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Using update notifications requires <code class="docutils literal notranslate"><span class="pre">smbclient</span></code> 4.x or newer.
Due to limitations with the smbclient PHP module, the <code class="docutils literal notranslate"><span class="pre">smbclient</span></code> binary
is required even when using the PHP module.</p>
</div>
<p>To start listening to update notifications, start the <code class="docutils literal notranslate"><span class="pre">occ</span></code> command like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">files_external</span><span class="p">:</span><span class="n">notify</span> <span class="o">&lt;</span><span class="n">mount_id</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>You can find the mount id for a specific storage using <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">files_external:list</span></code></p>
<p>On default this command shows no output, can you see the list of detected changes by
passing the <code class="docutils literal notranslate"><span class="pre">-v</span></code> option to the command.</p>
<section id="smb-authentication">
<h3>SMB authentication<a class="headerlink" href="#smb-authentication" title="Link to this heading"></a></h3>
<p>Update notifications are not supported when using ‘Login credentials, save in session’ authentication.
Using update notifications is only supported with ‘Login credentials, save in database’.</p>
<p>Even when using ‘Login credentials, save in database’ or ‘User entered, stored in database’ authentication the notify process
can not use the credentials saved to attach to the smb shares because the notify process does not run in the context of a specific user
in those cases you can provide the username and password using the <code class="docutils literal notranslate"><span class="pre">--username</span></code> and <code class="docutils literal notranslate"><span class="pre">--password</span></code> arguments.</p>
</section>
<section id="decrease-sync-delay">
<h3>Decrease sync delay<a class="headerlink" href="#decrease-sync-delay" title="Link to this heading"></a></h3>
<p>Any updates detected by the notify command will only be synced to the client after the Nextcloud cron job has been executed
(usually every 15 minutes). If this interval is too high for your use case, you can decrease it by running <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">files:scan</span> <span class="pre">--unscanned</span> <span class="pre">--all</span></code>
at the desired interval. Note that this might increase the server load and you’ll need to ensure that there is no overlap between runs.</p>
</section>
<section id="hidden-files-upload-failure-or-not-shown">
<h3>Hidden files upload failure or not shown<a class="headerlink" href="#hidden-files-upload-failure-or-not-shown" title="Link to this heading"></a></h3>
<p>If you have the configuration <code class="docutils literal notranslate"><span class="pre">hide</span> <span class="pre">dot</span> <span class="pre">files</span> <span class="pre">=</span> <span class="pre">Yes</span></code>, you will not be able to upload a hidden file (dot file) nor will you be able to show hidden files on your filelist (even if the ‘show hidden file’ option is checked on the nextcloud settings.
Make sure you have the following option in your configuration: <code class="docutils literal notranslate"><span class="pre">hide</span> <span class="pre">dot</span> <span class="pre">files</span> <span class="pre">=</span> <span class="pre">No</span></code></p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="sftp.html" class="btn btn-neutral float-left" title="SFTP" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="webdav.html" class="btn btn-neutral float-right" title="WebDAV" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>WebDAV &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js?v=5d32c60e"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="External Storage authentication mechanisms" href="auth_mechanisms.html" />
<link rel="prev" title="SMB/CIFS" href="smb.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../contents.html">
<img src="../../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="../big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="../default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="smb.html">SMB/CIFS</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="../external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="../encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="../previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">File sharing and management</a></li>
<li class="breadcrumb-item"><a href="../external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="breadcrumb-item active">WebDAV</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage/webdav.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="webdav">
<h1>WebDAV<a class="headerlink" href="#webdav" title="Link to this heading"></a></h1>
<p>Use this backend to mount a directory from any WebDAV server, or another
Nextcloud server.</p>
<p>You need the following information:</p>
<ul class="simple">
<li><p>Folder name: The name of your local mountpoint.</p></li>
<li><p>The URL of the WebDAV or Nextcloud server.</p></li>
<li><p>Username and password for the remote server</p></li>
<li><p>Secure <a class="reference external" href="https://">https://</a>: We always recommend <a class="reference external" href="https://">https://</a> for security, though you can
leave this unchecked for <a class="reference external" href="http://">http://</a>.</p></li>
</ul>
<p>Optionally, a <code class="docutils literal notranslate"><span class="pre">Remote</span> <span class="pre">Subfolder</span></code> can be specified to change the destination
directory. The default is to use the whole root.</p>
<figure class="align-default">
<img alt="Webdav configuration form." src="../../_images/webdav.png" />
</figure>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>CPanel users should install <a class="reference external" href="https://documentation.cpanel.net/display/ALD/Web+Disk">Web Disk</a> to enable WebDAV
functionality.</p>
</div>
<p>See <a class="reference internal" href="../external_storage_configuration_gui.html"><span class="doc">Configuring External Storage (GUI)</span></a> for additional mount
options and information.</p>
<p>See <a class="reference internal" href="auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more information on authentication schemes.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="smb.html" class="btn btn-neutral float-left" title="SMB/CIFS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="auth_mechanisms.html" class="btn btn-neutral float-right" title="External Storage authentication mechanisms" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,343 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Configuring External Storage (GUI) &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Amazon S3" href="external_storage/amazons3.html" />
<link rel="prev" title="Configuring Object Storage as Primary Storage" href="primary_storage.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring External Storage (GUI)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="#storage-configuration">Storage configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l3"><a class="reference internal" href="#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#mount-options">Mount options</a></li>
<li class="toctree-l3"><a class="reference internal" href="#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l3"><a class="reference internal" href="#available-storage-backends">Available storage backends</a><ul>
<li class="toctree-l4"><a class="reference internal" href="external_storage/amazons3.html">Amazon S3</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/ftp.html">FTP/FTPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/local.html">Local</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/nextcloud.html">Nextcloud</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/sftp.html">SFTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/smb.html">SMB/CIFS</a></li>
<li class="toctree-l4"><a class="reference internal" href="external_storage/webdav.html">WebDAV</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l3"><a class="reference internal" href="#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Configuring External Storage (GUI)</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/external_storage_configuration_gui.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="configuring-external-storage-gui">
<h1>Configuring External Storage (GUI)<a class="headerlink" href="#configuring-external-storage-gui" title="Link to this heading"></a></h1>
<p>The External Storage Support application enables you to mount external storage
services and devices as secondary Nextcloud storage devices. You may also allow
users to mount their own external storage services.</p>
<p>For configuration of external storages via occ command, see <a class="reference internal" href="../configuration_server/occ_command.html#files-external-label"><span class="std std-ref">occ documentation</span></a>.</p>
<section id="enabling-external-storage-support">
<h2>Enabling External Storage Support<a class="headerlink" href="#enabling-external-storage-support" title="Link to this heading"></a></h2>
<p>The External storage support application is enabled on your Apps page.</p>
<figure class="align-default">
<img alt="Enable external storage on your Apps page." src="../_images/enable-app.png" />
</figure>
</section>
<section id="storage-configuration">
<h2>Storage configuration<a class="headerlink" href="#storage-configuration" title="Link to this heading"></a></h2>
<p>To access the settings for configuring external storage mounts, click on your Profile icon
in the top right and select settings from the dropdown. On the left side under Administration
select External Storage.</p>
<p>To create a new external storage mount, select an available backend from the
dropdown <strong>Add storage</strong>. Each backend has different required options, which
are configured in the configuration fields.</p>
<figure class="align-default">
<img alt="../_images/add_storage.png" src="../_images/add_storage.png" />
</figure>
<p>Each backend may also accept multiple authentication methods. These are selected
with the dropdown under <strong>Authentication</strong>. Different backends support different
authentication mechanisms; some specific to the backend, others are more
generic. See <a class="reference internal" href="external_storage/auth_mechanisms.html"><span class="doc">External Storage authentication mechanisms</span></a> for more detailed
information.</p>
<p>When you select an authentication mechanism, the configuration fields change as
appropriate for the mechanism. The SFTP backend, for one example, supports
<strong>username and password</strong>, <strong>Log-in credentials, save in session</strong>, and <strong>RSA
public key</strong>.</p>
<figure class="align-default">
<img alt="An SFTP configuration example." src="../_images/auth_mechanism.png" />
</figure>
<p>Required fields are marked with a red border. When all required fields are
filled, the storage is automatically saved. A green dot next to the storage row
indicates the storage is ready for use. A red or yellow icon indicates
that Nextcloud could not connect to the external storage, so you need to
re-check your configuration and network availability.</p>
<p>If there is an error on the storage, it will be marked as unavailable for ten
minutes. To re-check it, click the colored icon or reload your Admin page.</p>
</section>
<section id="usage-of-variables-for-mount-paths">
<h2>Usage of variables for mount paths<a class="headerlink" href="#usage-of-variables-for-mount-paths" title="Link to this heading"></a></h2>
<p>The external storage mounting mechanism accepts variables in the mount path.</p>
<p>Use <code class="docutils literal notranslate"><span class="pre">$user</span></code> for automatic substitution with the logged in user’s username.</p>
<p>Use <code class="docutils literal notranslate"><span class="pre">$home</span></code> for automatic substitution with a configurable home directory variable
(requires LDAP, see <a class="reference internal" href="../configuration_user/user_auth_ldap.html#ldap-special-attributes"><span class="std std-ref">Special attributes</span></a> in the LDAP configuration documentation for details)</p>
<p>In the following example, the mount point for a logged in user “alice” would substitute
to <code class="docutils literal notranslate"><span class="pre">/opt/userDirectories/alice/myPictures</span></code>.</p>
<figure class="align-default">
<img alt="External storage user variable substitution" src="../_images/externalStorages_variables.png" />
</figure>
</section>
<section id="user-and-group-permissions">
<h2>User and group permissions<a class="headerlink" href="#user-and-group-permissions" title="Link to this heading"></a></h2>
<p>A storage configured in a user’s Personal settings is available only to the user
that created it. A storage configured in the Admin settings is available to
all users by default, and it can be restricted to specific users and groups in
the <strong>Available for</strong> field.</p>
<figure class="align-default">
<img alt="User and groups selector" src="../_images/applicable.png" />
</figure>
</section>
<section id="mount-options">
<span id="external-storage-mount-options-label"></span><h2>Mount options<a class="headerlink" href="#mount-options" title="Link to this heading"></a></h2>
<p>The Overflow menu (three dots) exposes the settings and trashcan. Click the trashcan to delete the
mountpoint. The settings button allows you to configure each storage mount
individually with the following options:</p>
<ul class="simple">
<li><p>Encryption</p></li>
<li><p>Previews</p></li>
<li><p>Enable Sharing</p></li>
<li><p>Filesystem check frequency (Never, Once per direct access)</p></li>
<li><p>Mac NFD Compatability</p></li>
<li><p>Read Only</p></li>
</ul>
<p>The <strong>Encryption</strong> checkbox is visible only when the Encryption app is enabled. Note that server-side
encryption is not available for other Nextcloud servers used as external storage.</p>
<p><strong>Enable Sharing</strong> allows the Nextcloud admin to enable or disable sharing on individual mountpoints.
When sharing is disabled the shares are retained internally, so that you can re-enable sharing
and the previous shares become available again. Sharing is disabled by default.</p>
<figure class="align-default">
<img alt="Additional mount options exposed on mouseover." src="../_images/mount_options.png" />
</figure>
</section>
<section id="using-self-signed-certificates">
<h2>Using self-signed certificates<a class="headerlink" href="#using-self-signed-certificates" title="Link to this heading"></a></h2>
<p>When using self-signed certificates for external storage mounts the certificate
must be imported into the personal settings of the user. Please refer to
<a class="reference external" href="https://ownclouden.blogspot.de/2014/11/owncloud-https-external-mount.html">Nextcloud HTTPS External Mount</a>
for more information.</p>
</section>
<section id="available-storage-backends">
<h2>Available storage backends<a class="headerlink" href="#available-storage-backends" title="Link to this heading"></a></h2>
<p>The following backends are provided by the external storages app.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="external_storage/amazons3.html">Amazon S3</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/ftp.html">FTP/FTPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/local.html">Local</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/nextcloud.html">Nextcloud</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/openstack.html">OpenStack Object Storage</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/sftp.html">SFTP</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/smb.html">SMB/CIFS</a></li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/webdav.html">WebDAV</a></li>
</ul>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>A non-blocking or correctly configured SELinux setup is needed
for these backends to work. Please refer to the <a class="reference internal" href="../installation/selinux_configuration.html#selinux-config-label"><span class="std std-ref">SELinux configuration</span></a>.</p>
</div>
</section>
<section id="allow-users-to-mount-external-storage">
<h2>Allow users to mount external Storage<a class="headerlink" href="#allow-users-to-mount-external-storage" title="Link to this heading"></a></h2>
<p>Check <strong>Enable User External Storage</strong> to allow your users to mount their own
external storage services, and check the backends you want to allow. Beware, as
this allows a user to make potentially arbitrary connections to other services
on your network!</p>
<figure class="align-default">
<img alt="Checkboxes to allow users to mount external storage services." src="../_images/user_mounts.png" />
</figure>
</section>
<section id="adding-files-to-external-storages">
<h2>Adding files to external storages<a class="headerlink" href="#adding-files-to-external-storages" title="Link to this heading"></a></h2>
<p>We recommend configuring the background job <strong>Webcron</strong> or
<strong>Cron</strong> (see <a class="reference internal" href="../configuration_server/background_jobs_configuration.html"><span class="doc">Background jobs</span></a>)
to enable Nextcloud to automatically detect files added to your external
storages.</p>
<p>Nextcloud may not always be able to find out what has been
changed remotely (files changed without going through Nextcloud), especially
when it’s very deep in the folder hierarchy of the external storage.</p>
<p>You might need to setup a cron job that runs <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">-u</span> <span class="pre">www-data</span> <span class="pre">php</span> <span class="pre">occ</span> <span class="pre">files:scan</span> <span class="pre">--all</span></code>
(or replace <code class="docutils literal notranslate"><span class="pre">--all</span></code> with the user name, see also <a class="reference internal" href="../configuration_server/occ_command.html"><span class="doc">Using the occ command</span></a>)
to trigger a rescan of the user’s files periodically (for example every 15 minutes), which includes
the mounted external storage.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="primary_storage.html" class="btn btn-neutral float-left" title="Configuring Object Storage as Primary Storage" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="external_storage/amazons3.html" class="btn btn-neutral float-right" title="Amazon S3" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,303 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Configuring Federation Sharing &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Uploading big files &gt; 512MB" href="big_file_upload_configuration.html" />
<link rel="prev" title="File Sharing" href="file_sharing_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring Federation Sharing</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#creating-a-new-federation-share">Creating a new Federation Share</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configuring-trusted-nextcloud-servers">Configuring trusted Nextcloud servers</a></li>
<li class="toctree-l3"><a class="reference internal" href="#creating-federation-shares-via-public-link-share">Creating Federation Shares via public Link Share</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configuration-tips">Configuration tips</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Configuring Federation Sharing</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/federated_cloud_sharing_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="configuring-federation-sharing">
<h1>Configuring Federation Sharing<a class="headerlink" href="#configuring-federation-sharing" title="Link to this heading"></a></h1>
<p>Federated Cloud Sharing is now managed by the Federation app (9.0+), and is
now called Federation sharing. When you enable the Federation app you can
easily and securely link file shares between Nextcloud servers, in effect
creating a cloud of Nextclouds.</p>
<section id="creating-a-new-federation-share">
<span id="label-direct-share-link"></span><h2>Creating a new Federation Share<a class="headerlink" href="#creating-a-new-federation-share" title="Link to this heading"></a></h2>
<p>Follow these steps to create a new Federation share between two Nextcloud
servers. This requires no action by the user on the remote server; all it takes
is a few steps on the originating server.</p>
<ol class="arabic simple">
<li><p>Enable the Federation app.</p></li>
<li><p>Go to your Nextcloud Admin page and scroll to the Sharing
section. Verify that <strong>Allow users on this server to send shares to other
servers</strong> and <strong>Allow users on this server to receive shares from other
servers</strong> are enabled.</p></li>
<li><p>Now go to the Federation section. The Federation app supports creating a
list of trusted Nextcloud servers, which allows the trusted servers to
exchange user directories and auto-complete the names of external users when
you create shares.</p></li>
</ol>
<figure class="align-default">
<img alt="../_images/federation-0.png" src="../_images/federation-0.png" />
</figure>
<ol class="arabic simple" start="4">
<li><p>Now go to your Files page and select a folder to share. Click the share
icon, and then enter the username and URL of the user on the remote Nextcloud
server. In this example, that is <code class="docutils literal notranslate"><span class="pre">freda&#64;https://example.com/nextcloud</span></code>.
When Nextcloud verifies the link, it displays it with the <strong>(remote)</strong> label.
Click on this label to establish the link.</p></li>
</ol>
<figure class="align-default">
<img alt="../_images/federation-2.png" src="../_images/federation-2.png" />
</figure>
<ol class="arabic simple" start="5">
<li><p>When the link is successfully completed, you have a single share option,
and that is <strong>can edit</strong>.</p></li>
</ol>
<figure class="align-default">
<img alt="../_images/federation-3.png" src="../_images/federation-3.png" />
</figure>
<p>You may disconnect the share at any time by clicking the trash can icon.</p>
</section>
<section id="configuring-trusted-nextcloud-servers">
<h2>Configuring trusted Nextcloud servers<a class="headerlink" href="#configuring-trusted-nextcloud-servers" title="Link to this heading"></a></h2>
<p>You may create a list of trusted Nextcloud servers for Federation sharing. This
allows your linked Nextcloud servers to share user directories, and to auto-fill
user names in share dialogs.</p>
<p>You may also enter Nextcloud server URLs in the <strong>Add Nextcloud Server</strong> field.</p>
<p>A red light means the connection failed. The yellow light indicates a successful
connection, with no user names exchanged. The green light indicates a successful
connection with user names exchanged.</p>
<p>The prerequisiste for a green status is that the trusted servers were maintained
in both interacting Nextcloud servers.
Additionally <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">federation:sync-addressbooks</span></code> must have been executed (part of
cron job list).</p>
<figure class="align-default">
<img alt="../_images/federation-1.png" src="../_images/federation-1.png" />
</figure>
</section>
<section id="creating-federation-shares-via-public-link-share">
<span id="label-public-link-share"></span><h2>Creating Federation Shares via public Link Share<a class="headerlink" href="#creating-federation-shares-via-public-link-share" title="Link to this heading"></a></h2>
<p>Check the <code class="docutils literal notranslate"><span class="pre">Share</span> <span class="pre">link</span></code> entry to expose more sharing options (which are
described more fully in <a class="reference internal" href="file_sharing_configuration.html"><span class="doc">File Sharing</span></a>). You may create a
Federation share by allowing Nextcloud to create a public link for you, and then
email it to the person you want to create the share with.</p>
<figure class="align-default">
<img alt="../_images/create_public_share-6.png" src="../_images/create_public_share-6.png" />
</figure>
<p>You may optionally set a password and expiration date on it. When your recipient
receives your email they must click the link, or copy it to a Web
browser. They will see a page displaying a thumbnail of the file, with a button
to <strong>Add to your Nextcloud</strong>.</p>
<figure class="align-default">
<img alt="../_images/create_public_share-8.png" src="../_images/create_public_share-8.png" />
</figure>
<p>Your recipient should click the <strong>Add to your Nextcloud</strong> button. On the next
screen your recipient needs to enter the URL to their Nextcloud
server, and then press the return key.</p>
<figure class="align-default">
<img alt="../_images/create_public_share-9.png" src="../_images/create_public_share-9.png" />
</figure>
<p>Your recipient has to take one more step, and that is to confirm creating the
federated cloud share link by clicking the <strong>Accept</strong> button.</p>
<figure class="align-default">
<img alt="../_images/create_public_share-10.png" src="../_images/create_public_share-10.png" />
</figure>
<p>Un-check the <code class="docutils literal notranslate"><span class="pre">Share</span> <span class="pre">link</span></code> checkbox to disable any federated cloud share
created this way.</p>
</section>
<section id="configuration-tips">
<h2>Configuration tips<a class="headerlink" href="#configuration-tips" title="Link to this heading"></a></h2>
<p>The Sharing section on your Admin page allows you to control how your users
manage federated cloud shares:</p>
<ul class="simple">
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Enforce</span> <span class="pre">password</span> <span class="pre">protection</span></code> to require passwords on link shares.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Set</span> <span class="pre">default</span> <span class="pre">expiration</span> <span class="pre">date</span></code> to require an expiration date on link
shares.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">public</span> <span class="pre">uploads</span></code> to allow two-way file sharing.</p></li>
<li><p>If you encounter timeouts for downloading or uploading large files, you can use the option <code class="docutils literal notranslate"><span class="pre">davstorage.request_timeout</span></code> in your <code class="docutils literal notranslate"><span class="pre">config.php</span></code> to increase the timeout. The default value is 30 seconds.</p></li>
</ul>
<p>Your Apache Web server must have <code class="docutils literal notranslate"><span class="pre">mod_rewrite</span></code> enabled, and you must have
<code class="docutils literal notranslate"><span class="pre">trusted_domains</span></code> correctly configured in <code class="docutils literal notranslate"><span class="pre">config.php</span></code> to allow external
connections (see <a class="reference internal" href="../installation/installation_wizard.html"><span class="doc">Installation wizard</span></a>). Consider also
enabling SSL to encrypt all traffic between your servers .</p>
<p>Your Nextcloud server creates the share link from the URL that you used to log
into the server, so make sure that you log into your server using a URL that is
accessible to your users. For example, if you log in via its LAN IP address,
such as <code class="docutils literal notranslate"><span class="pre">http://192.168.10.50</span></code>, then your share URL will be something like
<code class="docutils literal notranslate"><span class="pre">http://192.168.10.50/nextcloud/index.php/s/jWfCfTVztGlWTJe</span></code>, which is not
accessible outside of your LAN. This also applies to using the server name; for
access outside of your LAN you need to use a fully-qualified domain name such as
<code class="docutils literal notranslate"><span class="pre">http://myserver.example.com</span></code>, rather than <code class="docutils literal notranslate"><span class="pre">http://myserver</span></code>.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="file_sharing_configuration.html" class="btn btn-neutral float-left" title="File Sharing" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="big_file_upload_configuration.html" class="btn btn-neutral float-right" title="Uploading big files &gt; 512MB" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,358 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>File Sharing &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Configuring Federation Sharing" href="federated_cloud_sharing_configuration.html" />
<link rel="prev" title="File sharing and management" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">File Sharing</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#distinguish-between-max-expiration-date-and-default-expiration-date">Distinguish between max expiration date and default expiration date</a></li>
<li class="toctree-l3"><a class="reference internal" href="#get-a-notification-before-a-share-expires">Get a notification before a share expires</a></li>
<li class="toctree-l3"><a class="reference internal" href="#transferring-files-to-another-user">Transferring files to another user</a></li>
<li class="toctree-l3"><a class="reference internal" href="#creating-persistent-file-shares">Creating persistent file Shares</a></li>
<li class="toctree-l3"><a class="reference internal" href="#using-file-drop-share-links">Using File Drop Share links</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">File Sharing</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/file_sharing_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="file-sharing">
<span id="file-sharing-configuration"></span><h1>File Sharing<a class="headerlink" href="#file-sharing" title="Link to this heading"></a></h1>
<p>Nextcloud users can share files with their Nextcloud groups and other users on
the same Nextcloud server, with Nextcloud users on <a class="reference internal" href="federated_cloud_sharing_configuration.html"><span class="doc">other Nextcloud servers</span></a>, and create public shares for people who are not
Nextcloud users. You have control of a number of user permissions on file shares.</p>
<p>Configure your sharing policy on your Admin page in the Sharing section.</p>
<figure class="align-default">
<img alt="../_images/sharing-files-1.png" src="../_images/sharing-files-1.png" />
</figure>
<ul>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">apps</span> <span class="pre">to</span> <span class="pre">use</span> <span class="pre">the</span> <span class="pre">Share</span> <span class="pre">API</span></code> to enable users to share files. If
this is not checked, no users can create file shares.</p>
<ul>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">resharing</span></code> to enable users to re-share files shared with them.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">sharing</span> <span class="pre">with</span> <span class="pre">groups</span></code> to enable users to share with groups.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Restrict</span> <span class="pre">users</span> <span class="pre">to</span> <span class="pre">only</span> <span class="pre">share</span> <span class="pre">with</span> <span class="pre">users</span> <span class="pre">in</span> <span class="pre">their</span> <span class="pre">groups</span></code> to confine
sharing within group memberships.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This setting does not apply to the Federated Cloud sharing
feature. If <a class="reference internal" href="federated_cloud_sharing_configuration.html"><span class="doc">Federated Cloud Sharing</span></a> is
enabled, users can still share items with any users on any instances
(including the one they are on) via a remote share.</p>
</div>
</li>
</ul>
</li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">users</span> <span class="pre">to</span> <span class="pre">share</span> <span class="pre">via</span> <span class="pre">link</span> <span class="pre">and</span> <span class="pre">email</span></code> to enable creating public shares for
people who are not Nextcloud users via hyperlink.</p>
<ul class="simple">
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">public</span> <span class="pre">uploads</span></code> to allow anyone to upload files to public shares.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Always</span> <span class="pre">ask</span> <span class="pre">for</span> <span class="pre">a</span> <span class="pre">password</span></code> to proactively ask a user to set a password
for a share link.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Enforce</span> <span class="pre">password</span> <span class="pre">protection</span></code> to force users to set a password on all
public share links. This does not apply to local user and group shares.</p></li>
<li><p>Add groups to <code class="docutils literal notranslate"><span class="pre">Exclude</span> <span class="pre">groups</span> <span class="pre">from</span> <span class="pre">creating</span> <span class="pre">link</span> <span class="pre">shares</span></code> to no apply the settings
for that groups.</p></li>
</ul>
</li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Exclude</span> <span class="pre">groups</span> <span class="pre">from</span> <span class="pre">sharing</span></code> to prevent members of specific groups
from creating any file shares in those groups. When you check this, you’ll
get a dropdown list of all your groups to choose from. Type any group name to search for.
Members of excluded groups can still receive shares, but not create any.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Set</span> <span class="pre">default</span> <span class="pre">expiration</span> <span class="pre">date</span> <span class="pre">for</span> <span class="pre">shares</span></code> to set a default expiration date
on local user and group shares.</p>
<ul>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Enforce</span> <span class="pre">expiration</span> <span class="pre">date</span></code> to always enforce the configured expiration date
on local user and group shares.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Users will not be able to set the expiration date further
in the future than the enforced expiration date, although they
will be able to set a more recent date.
Also note that users will be able to update the expiration date again at
a later point. The expiration date is based on the current date and not on the share
creation date. The user will be able to extend the expiration date again whenever a
previous expiration date is close to be reached.</p>
</div>
</li>
</ul>
</li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Set</span> <span class="pre">default</span> <span class="pre">expiration</span> <span class="pre">date</span> <span class="pre">for</span> <span class="pre">shares</span> <span class="pre">via</span> <span class="pre">link</span> <span class="pre">or</span> <span class="pre">email</span></code> to set a default expiration date on
public shares.</p>
<ul>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Enforce</span> <span class="pre">expiration</span> <span class="pre">date</span></code> to always enforce the configured expiration date
on public shares.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Users will not be able to set the expiration date further
in the future than the enforced expiration date, although they
will be able to set a more recent date.
Also note that users will be able to update the expiration date again at
a later point. The expiration date is based on the current date and not on the share
creation date. The user will be able to extend the expiration date again whenever a
previous expiration date is close to be reached.</p>
</div>
</li>
</ul>
</li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">username</span> <span class="pre">autocompletion</span> <span class="pre">in</span> <span class="pre">share</span> <span class="pre">dialog</span> <span class="pre">and</span> <span class="pre">allow</span> <span class="pre">access</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">system</span> <span class="pre">address</span> <span class="pre">book</span></code> to enable
auto-completion of Nextcloud usernames and list the system address book as resource when syncing contacts with CardDAV.</p>
<ul class="simple">
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">username</span> <span class="pre">autocompletion</span> <span class="pre">to</span> <span class="pre">users</span> <span class="pre">within</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">groups</span> <span class="pre">and</span> <span class="pre">limit</span> <span class="pre">system</span> <span class="pre">address</span> <span class="pre">books</span> <span class="pre">to</span> <span class="pre">users</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">groups</span></code> to limit
username autocompletion to users from within the same groups as the share owner.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">username</span> <span class="pre">autocompletion</span> <span class="pre">to</span> <span class="pre">users</span> <span class="pre">based</span> <span class="pre">on</span> <span class="pre">phone</span> <span class="pre">number</span> <span class="pre">integration</span></code> to limit
username autocompletion to users when the share owner has synced their phone address book via the Nextcloud Talk mobile clients and it contained the phone number the user configured in their profile.</p></li>
</ul>
</li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">autocompletion</span> <span class="pre">when</span> <span class="pre">entering</span> <span class="pre">the</span> <span class="pre">full</span> <span class="pre">name</span> <span class="pre">or</span> <span class="pre">email</span> <span class="pre">address</span> <span class="pre">(ignoring</span> <span class="pre">missing</span> <span class="pre">phonebook</span> <span class="pre">match</span> <span class="pre">and</span> <span class="pre">being</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">group)</span></code>
to show despite of the previous restrictions a user suggestion, when the complete display name or user id was typed.</p></li>
<li><p>Check <code class="docutils literal notranslate"><span class="pre">Show</span> <span class="pre">disclaimer</span> <span class="pre">text</span> <span class="pre">on</span> <span class="pre">the</span> <span class="pre">public</span> <span class="pre">link</span> <span class="pre">upload</span> <span class="pre">page</span></code> to set and show
a disclaimer text on public links with hidden file lists. If you enable this feature a text input will be shown to input the disclaimer text.</p></li>
</ul>
<p>With <code class="docutils literal notranslate"><span class="pre">Default</span> <span class="pre">share</span> <span class="pre">permissions</span></code> you are able to set the default permissions
for user-shares (<code class="docutils literal notranslate"><span class="pre">Create</span></code>, <code class="docutils literal notranslate"><span class="pre">Change</span></code>, <code class="docutils literal notranslate"><span class="pre">Delete</span></code> and <code class="docutils literal notranslate"><span class="pre">Reshare</span></code>) without
forcing them.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Nextcloud does not preserve the mtime (modification time) of
directories, though it does update the mtimes on files. See
<a class="reference external" href="https://github.com/owncloud/core/issues/7009">Wrong folder date when syncing</a> for discussion of this.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>There are more sharing options on config.php level available:
<a class="reference external" href="https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#sharing">Configuration Parameters</a></p>
</div>
<section id="distinguish-between-max-expiration-date-and-default-expiration-date">
<span id="transfer-userfiles-label"></span><h2>Distinguish between max expiration date and default expiration date<a class="headerlink" href="#distinguish-between-max-expiration-date-and-default-expiration-date" title="Link to this heading"></a></h2>
<p>The expiration date which can be set and enforced in the settings above are the hard limit and the
default value at the same time. Sometimes admins want to have a moderate default expire date,
for example 7 days but make sure that the user can’t extend it to more than 14 days.</p>
<p>In order to do so, set a enforced expiration date in the settings as described above
and set the default value to something below the maximal possible expiration date with the following
OCC commands:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="o">--</span><span class="n">value</span> <span class="o">&lt;</span><span class="n">DAYS</span><span class="o">&gt;</span> <span class="n">core</span> <span class="n">internal_defaultExpDays</span>
<span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="o">--</span><span class="n">value</span> <span class="o">&lt;</span><span class="n">DAYS</span><span class="o">&gt;</span> <span class="n">core</span> <span class="n">link_defaultExpDays</span>
</pre></div>
</div>
</section>
<section id="get-a-notification-before-a-share-expires">
<h2>Get a notification before a share expires<a class="headerlink" href="#get-a-notification-before-a-share-expires" title="Link to this heading"></a></h2>
<p>Users can get a notification before a share expires. In order to do so a cronjob need to be
configured which calls the following OCC command once a day:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">sharing</span><span class="p">:</span><span class="n">expiration</span><span class="o">-</span><span class="n">notification</span>
</pre></div>
</div>
<p>A notification will be send for all shares which expire within the next 24 hours.</p>
</section>
<section id="transferring-files-to-another-user">
<h2>Transferring files to another user<a class="headerlink" href="#transferring-files-to-another-user" title="Link to this heading"></a></h2>
<p>You may transfer files from one user to another with <code class="docutils literal notranslate"><span class="pre">occ</span></code>. This is useful
when you have to remove a user. Be sure to transfer the files before you delete
the user! This transfers all files from user1 to user2, and the shares and
metadata info associated with those files (shares, tags, comments, etc).
Trashbin contents are not transferred:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">files</span><span class="p">:</span><span class="n">transfer</span><span class="o">-</span><span class="n">ownership</span> <span class="n">user1</span> <span class="n">user2</span>
</pre></div>
</div>
<p>(See <a class="reference internal" href="../configuration_server/occ_command.html"><span class="doc">Using the occ command</span></a> for a complete <code class="docutils literal notranslate"><span class="pre">occ</span></code>
reference.)</p>
<p>Users may also transfer files or folders selectively by themselves.
See <a class="reference external" href="https://docs.nextcloud.com/server/latest/user_manual/en/files/transfer_ownership.html">user documentation</a> for details.</p>
</section>
<section id="creating-persistent-file-shares">
<h2>Creating persistent file Shares<a class="headerlink" href="#creating-persistent-file-shares" title="Link to this heading"></a></h2>
<p>When a user is deleted, their files are also deleted. As you can imagine, this
is a problem if they created file shares that need to be preserved, because
these disappear as well. In Nextcloud files are tied to their owners, so
whatever happens to the file owner also happens to the files.</p>
<p>One solution is to create persistent shares for your users. You can retain
ownership of them, or you could create a special user for the purpose of
establishing permanent file shares. Simply create a shared folder in the usual
way, and share it with the users or groups who need to use it. Set the
appropriate permissions on it, and then no matter which users come and go, the
file shares will remain. Because all files added to the share, or edited in it,
automatically become owned by the owner of the share regardless of who adds or
edits them.</p>
</section>
<section id="using-file-drop-share-links">
<h2>Using File Drop Share links<a class="headerlink" href="#using-file-drop-share-links" title="Link to this heading"></a></h2>
<p>Using a File Drop Share allows users to upload files to Nextcloud through an unauthenticated session.
File Drop Share links will only work when <code class="docutils literal notranslate"><span class="pre">Allow</span> <span class="pre">public</span> <span class="pre">uploads</span></code> is checked in the Sharing section of the Administration Settings page.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>File Drop Shares currently have a limitation in that any files uploaded through an unauthenticated session will not be chunked.
Therefore the maximum file size that can be uploaded through File Drop Shares depends entirely on settings set within your environment.</p>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="File sharing and management" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="federated_cloud_sharing_configuration.html" class="btn btn-neutral float-right" title="Configuring Federation Sharing" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,242 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Controlling file versions and aging &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Deleted Items (trash bin)" href="trashbin_configuration.html" />
<link rel="prev" title="Previews configuration" href="previews_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Controlling file versions and aging</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#background-job">Background job</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Controlling file versions and aging</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/file_versioning.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="controlling-file-versions-and-aging">
<h1>Controlling file versions and aging<a class="headerlink" href="#controlling-file-versions-and-aging" title="Link to this heading"></a></h1>
<p>The Versions app (files_versions) expires old file versions automatically to
ensure that users don’t exceed their storage quotas. This is the default
pattern used to delete old versions:</p>
<ul class="simple">
<li><p>For the first second we keep one version</p></li>
<li><p>For the first 10 seconds Nextcloud keeps one version every 2 seconds</p></li>
<li><p>For the first minute Nextcloud keeps one version every 10 seconds</p></li>
<li><p>For the first hour Nextcloud keeps one version every minute</p></li>
<li><p>For the first 24 hours Nextcloud keeps one version every hour</p></li>
<li><p>For the first 30 days Nextcloud keeps one version every day</p></li>
<li><p>After the first 30 days Nextcloud keeps one version every week</p></li>
</ul>
<p>The versions are adjusted along this pattern every time a new version is
created.</p>
<p>The Versions app never uses more than 50% of the user’s currently available
free space. If the stored versions exceed this limit, Nextcloud deletes the
oldest file versions until it meets the disk space limit again.</p>
<p>You may alter the default pattern in <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. The default setting is
<code class="docutils literal notranslate"><span class="pre">auto</span></code>, which sets the default pattern:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;versions_retention_obligation&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;auto&#39;</span><span class="p">,</span>
</pre></div>
</div>
<p>Additional options are:</p>
<ul class="simple">
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">D,</span> <span class="pre">auto</span></code></dt><dd><p>Keep versions at least for D days, apply expiration rules to all versions
that are older than D days</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">auto,</span> <span class="pre">D</span></code></dt><dd><p>Delete all versions that are older than D days automatically, delete other
versions according to expiration rules</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">D1,</span> <span class="pre">D2</span></code></dt><dd><p>Keep versions for at least D1 days and delete when they exceed D2 days.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">disabled</span></code></dt><dd><p>Disable the Versions app; no old file versions will be deleted.</p>
</dd>
</dl>
</li>
</ul>
<section id="background-job">
<h2>Background job<a class="headerlink" href="#background-job" title="Link to this heading"></a></h2>
<p>To delete expired versions a background jobs runs every 30 minutes.
It’s possible to deactivate the background job and setup a (system) cron to expire the versions via occ.</p>
<p>Deactivate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:set</span> <span class="pre">--value=no</span> <span class="pre">files_versions</span> <span class="pre">background_job_expire_versions</span></code></p>
<p>Activate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:delete</span> <span class="pre">files_versions</span> <span class="pre">background_job_expire_versions</span></code></p>
<p>Expire versions: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">versions:expire</span></code> or <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">versions:expire</span> <span class="pre">--quiet</span></code> (without the progress bar)</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="previews_configuration.html" class="btn btn-neutral float-left" title="Previews configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="trashbin_configuration.html" class="btn btn-neutral float-right" title="Deleted Items (trash bin)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,245 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Transactional file locking &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Previews configuration" href="previews_configuration.html" />
<link rel="prev" title="Encryption migration" href="encryption_migration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Transactional file locking</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/files_locking_transactional.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="transactional-file-locking">
<h1>Transactional file locking<a class="headerlink" href="#transactional-file-locking" title="Link to this heading"></a></h1>
<p>Nextcloud’s Transactional File Locking mechanism locks files to avoid
file corruption during normal operation. It performs these functions:</p>
<ul class="simple">
<li><p>Operates at a higher level than the filesystem, so you don’t need to use a
filesystem that supports locking</p></li>
<li><p>Locks parent directories so they cannot be renamed during any activity on
files inside the directories</p></li>
<li><p>Releases locks after file transactions are interrupted, for
example when a sync client loses the connection during an upload</p></li>
<li><p>Manages locking and releasing locks correctly on shared files during changes
from multiple users</p></li>
<li><p>Manages locks correctly on external storage mounts</p></li>
<li><p>Manages encrypted files correctly</p></li>
</ul>
<p>What Transactional File locking is not for: it will not prevent multiple users
from editing the same document, or give notice that other users are working on
the same document. Multiple users can open and edit a file at the same time and
Transactional File locking does not prevent this. Rather, it prevents
simultaneous file saving.</p>
<p>File locking is enabled by default, using the database locking backend. This
places a significant load on your database. Using <code class="docutils literal notranslate"><span class="pre">memcache.locking</span></code> relieves
the database load and improves performance. Admins of Nextcloud servers with
heavy workloads should install a memcache. (See
<a class="reference internal" href="../configuration_server/caching_configuration.html"><span class="doc">Memory caching</span></a>.)</p>
<p>To use a memcache with Transactional File Locking, you must install the Redis
server and corresponding PHP module. After installing Redis you must enter a
configuration in your <code class="docutils literal notranslate"><span class="pre">config.php</span></code> file like this example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;filelocking.enabled&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;memcache.locking&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;\OC\Memcache\Redis&#39;</span><span class="p">,</span>
<span class="s1">&#39;redis&#39;</span> <span class="o">=&gt;</span> <span class="n">array</span><span class="p">(</span>
<span class="s1">&#39;host&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;localhost&#39;</span><span class="p">,</span>
<span class="s1">&#39;port&#39;</span> <span class="o">=&gt;</span> <span class="mi">6379</span><span class="p">,</span>
<span class="s1">&#39;timeout&#39;</span> <span class="o">=&gt;</span> <span class="mf">0.0</span><span class="p">,</span>
<span class="s1">&#39;password&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="o">//</span> <span class="n">Optional</span><span class="p">,</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">defined</span> <span class="n">no</span> <span class="n">password</span> <span class="n">will</span> <span class="n">be</span> <span class="n">used</span><span class="o">.</span>
<span class="p">),</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>For enhanced security it is recommended to configure Redis to require
a password. See <a class="reference external" href="http://redis.io/topics/security">http://redis.io/topics/security</a> for more information.</p>
</div>
<p>If you want to configure Redis to listen on an Unix socket (which is
recommended if Redis is running on the same system as Nextcloud) use this example
<code class="docutils literal notranslate"><span class="pre">config.php</span></code> configuration:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;filelocking.enabled&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;memcache.locking&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;\OC\Memcache\Redis&#39;</span><span class="p">,</span>
<span class="s1">&#39;redis&#39;</span> <span class="o">=&gt;</span> <span class="n">array</span><span class="p">(</span>
<span class="s1">&#39;host&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/var/run/redis/redis.sock&#39;</span><span class="p">,</span>
<span class="s1">&#39;port&#39;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span>
<span class="s1">&#39;timeout&#39;</span> <span class="o">=&gt;</span> <span class="mf">0.0</span><span class="p">,</span>
<span class="p">),</span>
</pre></div>
</div>
<p>See <code class="docutils literal notranslate"><span class="pre">config.sample.php</span></code> to see configuration examples for Redis, and for all
supported memcaches.</p>
<p>Learn more about Redis at <a class="reference external" href="http://redis.io/">Redis</a>. Memcached, the popular
distributed memory caching system, is not suitable for the new file locking
because it is not designed to store locks, and data can disappear from the cache
at any time. Redis is a key-value store, and it guarantees that cached objects
are available for as long as they are needed.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="encryption_migration.html" class="btn btn-neutral float-left" title="Encryption migration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="previews_configuration.html" class="btn btn-neutral float-right" title="Previews configuration" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,293 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>File sharing and management &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="File Sharing" href="file_sharing_configuration.html" />
<link rel="prev" title="Profile configuration" href="../configuration_user/profile_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">File sharing and management</a><ul>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">File sharing and management</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/index.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="file-sharing-and-management">
<h1>File sharing and management<a class="headerlink" href="#file-sharing-and-management" title="Link to this heading"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html#distinguish-between-max-expiration-date-and-default-expiration-date">Distinguish between max expiration date and default expiration date</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html#get-a-notification-before-a-share-expires">Get a notification before a share expires</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html#transferring-files-to-another-user">Transferring files to another user</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html#creating-persistent-file-shares">Creating persistent file Shares</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html#using-file-drop-share-links">Using File Drop Share links</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html#creating-a-new-federation-share">Creating a new Federation Share</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html#configuring-trusted-nextcloud-servers">Configuring trusted Nextcloud servers</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html#creating-federation-shares-via-public-link-share">Creating Federation Shares via public Link Share</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html#configuration-tips">Configuration tips</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a><ul>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#system-configuration">System configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#configuring-your-web-server">Configuring your Web server</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#configuring-php">Configuring PHP</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#configuring-nextcloud">Configuring Nextcloud</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#adjust-chunk-size-on-nextcloud-side">Adjust chunk size on Nextcloud side</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#large-file-upload-on-object-storage">Large file upload on object storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html#federated-cloud-sharing">Federated Cloud Sharing</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="default_files_configuration.html">Providing default files</a><ul>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html#default-file-templates">Default file templates</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a><ul>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html#differences-from-external-storage">Differences from External Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html#configuration">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html#multibucket-object-store">Multibucket Object Store</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html#s3-sse-c-encryption-support">S3 SSE-C encryption support</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#enabling-external-storage-support">Enabling External Storage Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#storage-configuration">Storage configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#usage-of-variables-for-mount-paths">Usage of variables for mount paths</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#user-and-group-permissions">User and group permissions</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#mount-options">Mount options</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#using-self-signed-certificates">Using self-signed certificates</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#available-storage-backends">Available storage backends</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#allow-users-to-mount-external-storage">Allow users to mount external Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html#adding-files-to-external-storages">Adding files to external storages</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a><ul>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html#special-mechanisms">Special mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html#password-based-mechanisms">Password-based mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html#public-key-mechanisms">Public-key mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html#considerations-for-shared-storage">Considerations for shared storage</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#before-enabling-encryption">Before enabling encryption</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#enabling-encryption">Enabling encryption</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#sharing-encrypted-files">Sharing encrypted files</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#encrypting-external-mountpoints">Encrypting external mountpoints</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#enabling-users-file-recovery-keys">Enabling users file recovery keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#occ-encryption-commands">occ encryption commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#disabling-encryption">Disabling encryption</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#files-not-encrypted">Files not encrypted</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#ldap-and-other-external-user-back-ends">LDAP and other external user back-ends</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="encryption_details.html">Encryption details</a><ul>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-type-master-key">Key type: master key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-type-public-sharing-key">Key type: public sharing key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-type-recovery-key">Key type: recovery key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-type-user-key">Key type: user key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#file-type-public-key-file">File type: public key file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#file-type-private-key-file">File type: private key file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#file-type-share-key-file">File type: share key file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#file-type-file-key-file">File type: file key file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#file-type-file">File type: file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-generation-generate-the-key-pair">Key generation: generate the key pair</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-generation-store-the-public-key">Key generation: store the public key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#key-generation-store-the-private-key">Key generation: store the private key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#encryption-generate-the-file-key">Encryption: generate the file key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#encryption-encrypt-the-file">Encryption: encrypt the file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#decryption-read-the-private-key">Decryption: read the private key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#decryption-read-the-file-key">Decryption: read the file key</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#decryption-decrypt-the-file">Decryption: decrypt the file</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html#sources">Sources</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="encryption_migration.html">Encryption migration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html#encryption-format">Encryption format</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l1"><a class="reference internal" href="previews_configuration.html">Previews configuration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html#parameters">Parameters</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a><ul>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html#background-job">Background job</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a><ul>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html#background-job">Background job</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../configuration_user/profile_configuration.html" class="btn btn-neutral float-left" title="Profile configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="file_sharing_configuration.html" class="btn btn-neutral float-right" title="File Sharing" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,280 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Previews configuration &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Controlling file versions and aging" href="file_versioning.html" />
<link rel="prev" title="Transactional file locking" href="files_locking_transactional.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Previews configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#parameters">Parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#disabling-previews">Disabling previews:</a></li>
<li class="toctree-l4"><a class="reference internal" href="#maximum-preview-size">Maximum preview size:</a></li>
<li class="toctree-l4"><a class="reference internal" href="#maximum-scale-factor">Maximum scale factor:</a></li>
<li class="toctree-l4"><a class="reference internal" href="#jpeg-quality-setting">JPEG quality setting:</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Previews configuration</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/previews_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="previews-configuration">
<h1>Previews configuration<a class="headerlink" href="#previews-configuration" title="Link to this heading"></a></h1>
<p>The Nextcloud thumbnail system generates previews of files for all
Nextcloud apps that display files, such as Files and Gallery.</p>
<p>The following image shows some examples of previews of various file types.</p>
<figure class="align-default">
<img alt="Thumbnails of various image and audio/video files." src="../_images/preview_images.png" />
</figure>
<p>By default, Nextcloud can generate previews for the following filetypes:</p>
<ul class="simple">
<li><p>Images files</p></li>
<li><p>Cover of MP3 files</p></li>
<li><p>Text documents</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Technically Nextcloud can also generate the previews
of other file types such as PDF, SVG or various office documents.
Due to security concerns those providers have been disabled by
default and are considered unsupported.
While those providers are still available, we discourage enabling
them, and they are not documented.</p>
</div>
<section id="parameters">
<h2>Parameters<a class="headerlink" href="#parameters" title="Link to this heading"></a></h2>
<p>Please notice that the Nextcloud preview system comes already with sensible
defaults, and therefore it is usually unnecessary to adjust those configuration
values.</p>
<p>But deemed necessary, following changes have to be made in <code class="docutils literal notranslate"><span class="pre">config/config.php</span></code> file. As a best practice, take a backup of this config file before making a lot of changes.</p>
<section id="disabling-previews">
<h3>Disabling previews:<a class="headerlink" href="#disabling-previews" title="Link to this heading"></a></h3>
<p>Under certain circumstances, for example if the server has limited
resources, you might want to consider disabling the generation of previews.
Note that if you do this all previews in all apps are disabled, including
the Gallery app, and will display generic icons instead of
thumbnails.</p>
<p>Set the configuration option <code class="docutils literal notranslate"><span class="pre">enable_previews</span></code> to <code class="docutils literal notranslate"><span class="pre">false</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;enable_previews&#39; =&gt; false,
</pre></div>
</div>
</section>
<section id="maximum-preview-size">
<h3>Maximum preview size:<a class="headerlink" href="#maximum-preview-size" title="Link to this heading"></a></h3>
<p>There are two configuration options to set the maximum size of a preview.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;preview_max_x&#39; =&gt; null,
&#39;preview_max_y&#39; =&gt; null,
</pre></div>
</div>
<p>By default, both options are set to null. ‘Null’ is equal to no limit.
Numeric values represent the size in pixels. The following code limits previews
to a maximum size of 100×100px:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;preview_max_x&#39; =&gt; 100,
&#39;preview_max_y&#39; =&gt; 100,
</pre></div>
</div>
<p>‘preview_max_x’ represents the x-axis and ‘preview_max_y’ represents the y-axis.</p>
</section>
<section id="maximum-scale-factor">
<h3>Maximum scale factor:<a class="headerlink" href="#maximum-scale-factor" title="Link to this heading"></a></h3>
<p>If a lot of small pictures are stored on the Nextcloud instance and the preview
system generates blurry previews, you might want to consider setting a maximum
scale factor. By default, pictures are upscaled to 10 times the original size:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;preview_max_scale_factor&#39; =&gt; 10,
</pre></div>
</div>
<p>If you want to disable scaling at all, you can set the config value to ‘1’:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;preview_max_scale_factor&#39; =&gt; 1,
</pre></div>
</div>
<p>If you want to disable the maximum scaling factor, you can set the config value
to ‘null’:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&#39;preview_max_scale_factor&#39; =&gt; null,
</pre></div>
</div>
</section>
<section id="jpeg-quality-setting">
<h3>JPEG quality setting:<a class="headerlink" href="#jpeg-quality-setting" title="Link to this heading"></a></h3>
<p>Default JPEG quality setting for preview images is ‘80’. Change this with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">preview</span> <span class="n">jpeg_quality</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="s2">&quot;60&quot;</span>
</pre></div>
</div>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="files_locking_transactional.html" class="btn btn-neutral float-left" title="Transactional file locking" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="file_versioning.html" class="btn btn-neutral float-right" title="Controlling file versions and aging" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,457 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Configuring Object Storage as Primary Storage &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Configuring External Storage (GUI)" href="external_storage_configuration_gui.html" />
<link rel="prev" title="Providing default files" href="default_files_configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Configuring Object Storage as Primary Storage</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#differences-from-external-storage">Differences from External Storage</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#performance-implications">Performance Implications</a></li>
<li class="toctree-l4"><a class="reference internal" href="#data-backup-and-recovery-implications">Data Backup and Recovery Implications</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#openstack-swift">OpenStack Swift</a></li>
<li class="toctree-l4"><a class="reference internal" href="#simple-storage-service-s3">Simple Storage Service (S3)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#microsoft-azure-blob-storage">Microsoft Azure Blob Storage</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#multibucket-object-store">Multibucket Object Store</a></li>
<li class="toctree-l3"><a class="reference internal" href="#s3-sse-c-encryption-support">S3 SSE-C encryption support</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Configuring Object Storage as Primary Storage</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/primary_storage.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="configuring-object-storage-as-primary-storage">
<h1>Configuring Object Storage as Primary Storage<a class="headerlink" href="#configuring-object-storage-as-primary-storage" title="Link to this heading"></a></h1>
<p>Nextcloud allows to configure object storages like OpenStack Swift or
Amazon Simple Storage Service (S3) or any compatible S3-implementation
(e.g. Minio or Ceph Object Gateway) as primary storage replacing the default
storage of files.</p>
<p>By default, files are stored in <code class="code docutils literal notranslate"><span class="pre">nextcloud/data</span></code> or another directory configured
in the <code class="code docutils literal notranslate"><span class="pre">config.php</span></code> of your Nextcloud instance. This data directory might
still be used for compatibility reasons)</p>
<section id="differences-from-external-storage">
<h2>Differences from External Storage<a class="headerlink" href="#differences-from-external-storage" title="Link to this heading"></a></h2>
<p>When an object store is used as Primary Storage, Nextcloud requires exclusive access
over the bucket being used. All metadata (filenames, directory structures, etc)
is stored in Nextcloud and not in the object store. The metadata is only stored in the database and the
object store only holds the file content by unique identifier.</p>
<section id="performance-implications">
<h3>Performance Implications<a class="headerlink" href="#performance-implications" title="Link to this heading"></a></h3>
<p>Because of this, object stores configured as Primary Storage usually perform better than
when using the same object store via the External Storage support application, but the downside
is being unable to access the files from outside of Nextcloud. This makes using an object store
as Primary Storage distinct from using an object store via External Storage.</p>
</section>
<section id="data-backup-and-recovery-implications">
<h3>Data Backup and Recovery Implications<a class="headerlink" href="#data-backup-and-recovery-implications" title="Link to this heading"></a></h3>
<p>One impact of using an object store as Primary Storage is that your data backup strategy
needs to incorporate this. <strong>Your data is longer stored on your Nextcloud server, but your
files are also no longer accessible by simply bypassing your Nextcloud server and accessing
your object store directly.</strong></p>
</section>
</section>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Link to this heading"></a></h2>
<p>Primary object stores need to be configured in <code class="code docutils literal notranslate"><span class="pre">config.php</span></code> by specifying
the objectstore backend and any backend specific configuration.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Configuring a primary object store on an existing Nextcloud instance will
make all existing files on the instance inaccessible.</p>
</div>
<p>The configuration has the following structure:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Object</span><span class="se">\\</span><span class="s1">Storage</span><span class="se">\\</span><span class="s1">Backend</span><span class="se">\\</span><span class="s1">Class&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="o">...</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
<section id="openstack-swift">
<h3>OpenStack Swift<a class="headerlink" href="#openstack-swift" title="Link to this heading"></a></h3>
<p>The OpenStack Swift backend mounts a container on an OpenStack Object Storage
server into the virtual filesystem.</p>
<p>The class to be used is <code class="code docutils literal notranslate"><span class="pre">\OC\Files\ObjectStore\Swift</span></code></p>
<p>Both openstack v2 and v3 authentication are supported,</p>
<p>V2 Authentication:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">Swift&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;username&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;username&#39;</span><span class="p">,</span>
<span class="s1">&#39;password&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Secr3tPaSSWoRdt7&#39;</span><span class="p">,</span>
<span class="o">//</span> <span class="n">the</span> <span class="n">container</span> <span class="n">to</span> <span class="n">store</span> <span class="n">the</span> <span class="n">data</span> <span class="ow">in</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="s1">&#39;autocreate&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;region&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;RegionOne&#39;</span><span class="p">,</span>
<span class="o">//</span> <span class="n">The</span> <span class="n">Identity</span> <span class="o">/</span> <span class="n">Keystone</span> <span class="n">endpoint</span>
<span class="s1">&#39;url&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;http://example.com/v2.0&#39;</span><span class="p">,</span>
<span class="o">//</span> <span class="n">optional</span> <span class="n">on</span> <span class="n">some</span> <span class="n">swift</span> <span class="n">implementations</span>
<span class="s1">&#39;tenantName&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;username&#39;</span><span class="p">,</span>
<span class="s1">&#39;serviceName&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;swift&#39;</span><span class="p">,</span>
<span class="o">//</span> <span class="n">The</span> <span class="n">Interface</span> <span class="o">/</span> <span class="n">url</span> <span class="n">Type</span><span class="p">,</span> <span class="n">optional</span>
<span class="s1">&#39;urlType&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;internal&#39;</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
<p>V3 Authentication:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">Swift&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;autocreate&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;user&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;UserName&#39;</span><span class="p">,</span>
<span class="s1">&#39;password&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Secr3tPaSSWoRdt7&#39;</span><span class="p">,</span>
<span class="s1">&#39;domain&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Default&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">],</span>
<span class="s1">&#39;scope&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;project&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;TenantName&#39;</span><span class="p">,</span>
<span class="s1">&#39;domain&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Default&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">],</span>
<span class="p">],</span>
<span class="s1">&#39;serviceName&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;swift&#39;</span><span class="p">,</span>
<span class="s1">&#39;region&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;regionOne&#39;</span><span class="p">,</span>
<span class="s1">&#39;url&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;http://example.com/v3&#39;</span><span class="p">,</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
</section>
<section id="simple-storage-service-s3">
<h3>Simple Storage Service (S3)<a class="headerlink" href="#simple-storage-service-s3" title="Link to this heading"></a></h3>
<p>The Simple Storage Service (S3) backend mounts a bucket on an Amazon S3 object
storage or compatible implementation (e.g. Minio or Ceph Object Gateway) into the
virtual filesystem.</p>
<p>The class to be used is <code class="code docutils literal notranslate"><span class="pre">\OC\Files\ObjectStore\S3</span></code></p>
<p>Amazon-hosted S3:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">S3&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;my-nextcloud-store&#39;</span><span class="p">,</span>
<span class="s1">&#39;region&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;us-east-1&#39;</span><span class="p">,</span>
<span class="s1">&#39;key&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;EJ39ITYZEUH5BGWDRUFY&#39;</span><span class="p">,</span>
<span class="s1">&#39;secret&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;M5MrXTRjkyMaxXPe2FRXMTfTfbKEnZCu+7uRTVSj&#39;</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
<p>Non-Amazon hosted S3:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">S3&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;my-nextcloud-store&#39;</span><span class="p">,</span>
<span class="s1">&#39;hostname&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;s3.example.com&#39;</span><span class="p">,</span>
<span class="s1">&#39;key&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;EJ39ITYZEUH5BGWDRUFY&#39;</span><span class="p">,</span>
<span class="s1">&#39;secret&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;M5MrXTRjkyMaxXPe2FRXMTfTfbKEnZCu+7uRTVSj&#39;</span><span class="p">,</span>
<span class="s1">&#39;port&#39;</span> <span class="o">=&gt;</span> <span class="mi">8443</span><span class="p">,</span>
<span class="o">//</span> <span class="n">required</span> <span class="k">for</span> <span class="n">some</span> <span class="n">non</span><span class="o">-</span><span class="n">Amazon</span> <span class="n">S3</span> <span class="n">implementations</span>
<span class="s1">&#39;use_path_style&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
<p>Minimum required parameters are:</p>
<ul class="simple">
<li><p><code class="code docutils literal notranslate"><span class="pre">bucket</span></code> [Note: Even if non-Amazon hosted, bucket names must meet AWS S3 naming requirements regardless of what your S3 provider/platform considers acceptable - i.e. no underscores]</p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">key</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">secret</span></code></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You will <em>probably</em> need to specify additional parameters beyond these, unless the default
values (see below) exactly match your situation. In particular, your <code class="code docutils literal notranslate"><span class="pre">region</span></code> (if Amazon
hosted) or <code class="code docutils literal notranslate"><span class="pre">hostname</span></code> (if non-Amazon hosted).</p>
</div>
<p>Optional parameters most commonly needing adjustment (and their defaults values if left
unconfigured):</p>
<ul class="simple">
<li><p><code class="code docutils literal notranslate"><span class="pre">region</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">eu-west-1</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">storageClass</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">STANDARD</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">hostname</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">s3.REGION.amazonaws.com</span></code> [Note: If using this parameter (non-Amazon), specify the generic S3 endpoint hostname, <strong>not</strong> the hostname that contains your bucket name]</p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">use_ssl</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">true</span></code></p></li>
</ul>
<p>Optional parameters sometimes needing adjustment:</p>
<ul class="simple">
<li><p><code class="code docutils literal notranslate"><span class="pre">use_path_style</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">false</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">port</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">443</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">sse_c_key</span></code> has no default</p></li>
</ul>
<p>Optional parameters less commonly needing adjustment:</p>
<ul class="simple">
<li><p><code class="code docutils literal notranslate"><span class="pre">proxy</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">false</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">timeout</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">15</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">uploadPartSize</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">524288000</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">putSizeLimit</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">104857600</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">legacy_auth</span></code> has no default</p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">version</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">latest</span></code></p></li>
<li><p><code class="code docutils literal notranslate"><span class="pre">verify_bucket_exists</span></code> defaults to <code class="code docutils literal notranslate"><span class="pre">true</span></code> [Note: Setting this to <code class="code docutils literal notranslate"><span class="pre">false</span></code> <em>after</em> confirming the bucket has been created may provide a performance benefit, but may not be possible in multibucket scenarios.]</p></li>
</ul>
<p><strong>If you are using Amazon S3:</strong> the <code class="code docutils literal notranslate"><span class="pre">region</span></code> parameter is required unless you’re happy with
the default of <code class="code docutils literal notranslate"><span class="pre">eu-west-1</span></code>. There is no need to override the <code class="code docutils literal notranslate"><span class="pre">hostname</span></code> or <code class="code docutils literal notranslate"><span class="pre">port</span></code>.
And <code class="code docutils literal notranslate"><span class="pre">storageClass</span></code> only needs to be modified if you’re using a different configuration at AWS.
Lastly, <code class="code docutils literal notranslate"><span class="pre">use_path_style</span></code> is rarely required with Amazon, but some legacy Amazon datacenters
may require it.</p>
<p><strong>If you using a non-Amazon hosted S3 store:</strong> you will need to set the <code class="code docutils literal notranslate"><span class="pre">hostname</span></code>
parameter (and can ignore the <code class="code docutils literal notranslate"><span class="pre">region</span></code> parameter). You may need to use <code class="code docutils literal notranslate"><span class="pre">use_path_style</span></code>
if your non-Amazon S3 store does <em>not</em> support requests like <code class="code docutils literal notranslate"><span class="pre">https://bucket.hostname.domain/</span></code>.
Setting <code class="code docutils literal notranslate"><span class="pre">use_path_style</span></code> to true configures the S3 client to make requests like
<code class="code docutils literal notranslate"><span class="pre">https://hostname.domain/bucket</span></code> instead.</p>
</section>
<section id="microsoft-azure-blob-storage">
<h3>Microsoft Azure Blob Storage<a class="headerlink" href="#microsoft-azure-blob-storage" title="Link to this heading"></a></h3>
<p>The Azure Blob Storage backend mounts a container on Microsoft’s Azure Blob Storage into the
virtual filesystem.</p>
<p>The class to be used is <code class="code docutils literal notranslate"><span class="pre">\OC\Files\ObjectStore\Azure</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">Azure&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;container&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="s1">&#39;autocreate&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;account_name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;account_name&#39;</span><span class="p">,</span>
<span class="s1">&#39;account_key&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;xxxxxxxxxx&#39;</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
</section>
</section>
<section id="multibucket-object-store">
<h2>Multibucket Object Store<a class="headerlink" href="#multibucket-object-store" title="Link to this heading"></a></h2>
<p>It’s possible to configure Nextcloud to distribute the data over multiple buckets
for scalability purposes.</p>
<p>To setup multiple buckets, use <code class="code docutils literal notranslate"><span class="pre">'objectstore_multibucket'</span></code> storage backend
in <code class="code docutils literal notranslate"><span class="pre">config.php</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore_multibucket&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Object</span><span class="se">\\</span><span class="s1">Storage</span><span class="se">\\</span><span class="s1">Backend</span><span class="se">\\</span><span class="s1">Class&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="o">//</span> <span class="n">optional</span><span class="p">,</span> <span class="n">defaults</span> <span class="n">to</span> <span class="mi">64</span>
<span class="s1">&#39;num_buckets&#39;</span> <span class="o">=&gt;</span> <span class="mi">64</span><span class="p">,</span>
<span class="o">//</span> <span class="n">will</span> <span class="n">be</span> <span class="n">postfixed</span> <span class="n">by</span> <span class="n">an</span> <span class="n">integer</span> <span class="ow">in</span> <span class="n">the</span> <span class="nb">range</span> <span class="kn">from</span> <span class="mi">0</span> <span class="n">to</span> <span class="p">(</span><span class="n">num_nuckets</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud_&#39;</span><span class="p">,</span>
<span class="o">...</span>
<span class="p">],</span>
<span class="p">],</span>
</pre></div>
</div>
<p>Multibucket object store backend maps every user to a range of buckets and saves
all files for that user in their corresponding bucket.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>While it is possible to change the number of buckets used by an existing Nextcloud
instance, the user-to-buckets mapping is only created once, so only newly created
users will be mapped to the updated range of buckets.</p>
</div>
<p>You can find out more information about upscaling with object storage and Nextcloud in the
<a class="reference external" href="https://portal.nextcloud.com/article/object-store-as-primary-storage-16.html">Nextcloud customer portal</a>.</p>
</section>
<section id="s3-sse-c-encryption-support">
<h2>S3 SSE-C encryption support<a class="headerlink" href="#s3-sse-c-encryption-support" title="Link to this heading"></a></h2>
<p>Nextcloud supports server side encryption, also known as <a class="reference external" href="http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">SSE-C</a>, with compatible S3 bucket provider. The encryption and decryption happens on the S3 bucket side with a key provided by the Nextcloud server.</p>
<p>The key can be specified with the <code class="code docutils literal notranslate"><span class="pre">sse_c_key</span></code> parameter which needs to be provided as a base64 encoded string with a maximum length of 32 bytes. A random key could be generated using the the following command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">rand</span> <span class="mi">32</span> <span class="o">|</span> <span class="n">base64</span>
</pre></div>
</div>
<p>The following example shows how to configure the S3 object store with SSE-C encryption support in the objectstore section of the Nextcloud config.php file:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;objectstore&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
<span class="n">array</span> <span class="p">(</span>
<span class="s1">&#39;class&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;OC</span><span class="se">\\</span><span class="s1">Files</span><span class="se">\\</span><span class="s1">ObjectStore</span><span class="se">\\</span><span class="s1">S3&#39;</span><span class="p">,</span>
<span class="s1">&#39;arguments&#39;</span> <span class="o">=&gt;</span>
<span class="n">array</span> <span class="p">(</span>
<span class="s1">&#39;bucket&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="s1">&#39;key&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="s1">&#39;secret&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;nextcloud&#39;</span><span class="p">,</span>
<span class="s1">&#39;hostname&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;s3&#39;</span><span class="p">,</span>
<span class="s1">&#39;port&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;443&#39;</span><span class="p">,</span>
<span class="s1">&#39;use_ssl&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;use_path_style&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;autocreate&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;verify_bucket_exists&#39;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="s1">&#39;sse_c_key&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;o9d3Q9tHcPMv6TIpH53MSXaUmY91YheZRwuIhwCFRSs=&#39;</span><span class="p">,</span>
<span class="p">),</span>
<span class="p">);</span>
<span class="p">],</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="default_files_configuration.html" class="btn btn-neutral float-left" title="Providing default files" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="external_storage_configuration_gui.html" class="btn btn-neutral float-right" title="Configuring External Storage (GUI)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
@@ -0,0 +1,244 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Deleted Items (trash bin) &mdash; Nextcloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/general.css" type="text/css" />
<link rel="stylesheet" href="../_static/dark_mode_css/dark.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Flow" href="../file_workflows/index.html" />
<link rel="prev" title="Controlling file versions and aging" href="file_versioning.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li>
<li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files &gt; 512MB</a></li>
<li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li>
<li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li>
<li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Encryption configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Encryption details</a></li>
<li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Encryption migration</a></li>
<li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li>
<li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="file_versioning.html">Controlling file versions and aging</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Deleted Items (trash bin)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#background-job">Background job</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">Nextcloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li>
<li class="breadcrumb-item active">Deleted Items (trash bin)</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/trashbin_configuration.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="deleted-items-trash-bin">
<h1>Deleted Items (trash bin)<a class="headerlink" href="#deleted-items-trash-bin" title="Link to this heading"></a></h1>
<p>If the trash bin app is enabled (default), this setting defines the policy
for when files and folders in the trash bin will be permanently deleted.</p>
<p>The app allows for two settings, a minimum time for trash bin retention,
and a maximum time for trash bin retention.
Minimum time is the number of days a file will be kept, after which it
may be deleted. Maximum time is the number of days at which it is guaranteed
to be deleted.
Both minimum and maximum times can be set together to explicitly define
file and folder deletion. For migration purposes, this setting is installed
initially set to “auto”, which is equivalent to the default setting in
Nextcloud.</p>
<p>You may alter the default pattern in <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. The default setting is
<code class="docutils literal notranslate"><span class="pre">auto</span></code>, which sets the default pattern:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;trashbin_retention_obligation&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;auto&#39;</span><span class="p">,</span>
</pre></div>
</div>
<p>Available values:</p>
<ul class="simple">
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">auto</span></code></dt><dd><p>default setting. keeps files and folders in the trash bin for 30 days
and automatically deletes anytime after that if space is needed (note:
files may not be deleted if space is not needed).</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">D,</span> <span class="pre">auto</span></code></dt><dd><p>keeps files and folders in the trash bin for D+ days, delete anytime if
space needed (note: files may not be deleted if space is not needed)</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">auto,</span> <span class="pre">D</span></code></dt><dd><p>delete all files in the trash bin that are older than D days
automatically, delete other files anytime if space needed</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">D1,</span> <span class="pre">D2</span></code></dt><dd><p>keep files and folders in the trash bin for at least D1 days and
delete when exceeds D2 days (note: files will not be deleted automatically if space is needed)</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">disabled</span></code></dt><dd><p>trash bin auto clean disabled, files and folders will be kept forever</p>
</dd>
</dl>
</li>
</ul>
<section id="background-job">
<h2>Background job<a class="headerlink" href="#background-job" title="Link to this heading"></a></h2>
<p>To permanently delete files a background jobs runs every 30 minutes.
It’s possible to deactivate the background job and setup a (system) cron to expire the versions via occ.</p>
<p>Deactivate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:set</span> <span class="pre">--value=no</span> <span class="pre">files_trashbin</span> <span class="pre">background_job_expire_trash</span></code></p>
<p>Activate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:delete</span> <span class="pre">files_trashbin</span> <span class="pre">background_job_expire_trash</span></code></p>
<p>Expire versions: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">trashbin:expire</span></code> or <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">trashbin:expire</span> <span class="pre">--quiet</span></code> (without the progress bar)</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="file_versioning.html" class="btn btn-neutral float-left" title="Controlling file versions and aging" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../file_workflows/index.html" class="btn btn-neutral float-right" title="Flow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2024 Nextcloud GmbH.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Versions</dt>
<dd><a href="https://docs.nextcloud.com/server/25/admin_manual">25</a></dd>
<dd><a href="https://docs.nextcloud.com/server/26/admin_manual">26</a></dd>
<dd><a href="https://docs.nextcloud.com/server/27/admin_manual">27</a></dd>
<dd><a href="https://docs.nextcloud.com/server/stable/admin_manual">stable</a></dd>
<dd><a href="https://docs.nextcloud.com/server/latest/admin_manual">latest</a></dd>
</dl>
<dl>
<dt>Downloads</dt>
</dl>
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="///projects//?fromdocs=">Project Home</a>
</dd>
<dd>
<a href="///builds//?fromdocs=">Builds</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>