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,199 @@
<!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>BigInt (64bit) identifiers &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="Splitting databases" href="splitting.html" />
<link rel="prev" title="Enabling MySQL 4-byte support" href="mysql_4byte_support.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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="reference internal" href="index.html">Database configuration</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html">Converting database type</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html">Splitting databases</a></li>
</ul>
</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">Database configuration</a></li>
<li class="breadcrumb-item active">BigInt (64bit) identifiers</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/bigint_identifiers.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="bigint-64bit-identifiers">
<h1>BigInt (64bit) identifiers<a class="headerlink" href="#bigint-64bit-identifiers" title="Link to this heading"></a></h1>
<p>Nextcloud uses big integers to store identifiers and auto-increment keys in the database.
Because changing columns on huge tables can take quite a while (up to hours or days)
depending on the number of files in the Nextcloud instance, this migration on the filecache
and activity table has to be triggered manually by a console command.</p>
<p>The command can safely be executed. It will show a success message when there is nothing to do:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sudo -u www-data php occ db:convert-filecache-bigint
All tables already up to date!
</pre></div>
</div>
<p>or otherwise ask for confirmation, before performing the heavy actions:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sudo -u www-data php occ db:convert-filecache-bigint
This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n]
</pre></div>
</div>
<p>to suppress the confirmation message append <code class="docutils literal notranslate"><span class="pre">--no-interaction</span></code> to the argument list:</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">db</span><span class="p">:</span><span class="n">convert</span><span class="o">-</span><span class="n">filecache</span><span class="o">-</span><span class="n">bigint</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">interaction</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Similar to a normal update, you should shutdown your Apache or nginx server or enable maintenance
mode before running the command to avoid issues with your sync clients.</p>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="mysql_4byte_support.html" class="btn btn-neutral float-left" title="Enabling MySQL 4-byte support" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="splitting.html" class="btn btn-neutral float-right" title="Splitting databases" 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,239 @@
<!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>Converting database type &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="Database configuration" href="linux_database_configuration.html" />
<link rel="prev" title="Database configuration" 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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="reference internal" href="index.html">Database configuration</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Converting database type</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#run-the-conversion">Run the conversion</a></li>
<li class="toctree-l3"><a class="reference internal" href="#inconvertible-tables">Inconvertible tables</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html">Splitting databases</a></li>
</ul>
</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">Database configuration</a></li>
<li class="breadcrumb-item active">Converting database type</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/db_conversion.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="converting-database-type">
<h1>Converting database type<a class="headerlink" href="#converting-database-type" title="Link to this heading"></a></h1>
<p>You can convert a SQLite database to a better performing MySQL, MariaDB or
PostgreSQL database with the Nextcloud command line tool. SQLite is good for
testing and simple single-user Nextcloud servers, but it does not scale for
multiple-user production servers.</p>
<section id="run-the-conversion">
<h2>Run the conversion<a class="headerlink" href="#run-the-conversion" title="Link to this heading"></a></h2>
<p>First set up the new database, here called “new_db_name”.
In Nextcloud root folder call</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">php</span> <span class="n">occ</span> <span class="n">db</span><span class="p">:</span><span class="n">convert</span><span class="o">-</span><span class="nb">type</span> <span class="p">[</span><span class="n">options</span><span class="p">]</span> <span class="nb">type</span> <span class="n">username</span> <span class="n">hostname</span> <span class="n">database</span>
</pre></div>
</div>
<p>The Options</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">--port=&quot;3306&quot;</span></code> the database port (optional)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--password=&quot;mysql_user_password&quot;</span></code> password for the new database. If omitted the tool will ask you (optional)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--clear-schema</span></code> clear schema (optional)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--all-apps</span></code> by default, tables for enabled apps are converted, use to convert also tables of deactivated apps (optional)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">-n,</span> <span class="pre">--no-interaction</span></code> do not ask any interactive question</p></li>
</ul>
<p><em>Note:</em> The converter searches for apps in your configured app folders and uses
the schema definitions in the apps to create the new table. So tables of removed
apps will not be converted even with option <code class="docutils literal notranslate"><span class="pre">--all-apps</span></code></p>
<p>For example</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">php</span> <span class="n">occ</span> <span class="n">db</span><span class="p">:</span><span class="n">convert</span><span class="o">-</span><span class="nb">type</span> <span class="o">--</span><span class="nb">all</span><span class="o">-</span><span class="n">apps</span> <span class="n">mysql</span> <span class="n">oc_mysql_user</span> <span class="mf">127.0.0.1</span> <span class="n">new_db_name</span>
</pre></div>
</div>
<p>To successfully proceed with the conversion, you must type <code class="docutils literal notranslate"><span class="pre">yes</span></code> when prompted
with the question <code class="docutils literal notranslate"><span class="pre">Continue</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">conversion?</span></code></p>
<p>On success the converter will automatically configure the new database in your
Nextcloud config <code class="docutils literal notranslate"><span class="pre">config.php</span></code>.</p>
</section>
<section id="inconvertible-tables">
<h2>Inconvertible tables<a class="headerlink" href="#inconvertible-tables" title="Link to this heading"></a></h2>
<p>If you updated your Nextcloud instance, there might be remnants of old tables
which are not used any more. The updater will tell you which ones these are.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">following</span> <span class="n">tables</span> <span class="n">will</span> <span class="ow">not</span> <span class="n">be</span> <span class="n">converted</span><span class="p">:</span>
<span class="n">oc_permissions</span>
<span class="o">...</span>
</pre></div>
</div>
<p>You can ignore these tables.
Here is a list of known old tables:</p>
<ul class="simple">
<li><p>oc_calendar_calendars</p></li>
<li><p>oc_calendar_objects</p></li>
<li><p>oc_calendar_share_calendar</p></li>
<li><p>oc_calendar_share_event</p></li>
<li><p>oc_fscache</p></li>
<li><p>oc_log</p></li>
<li><p>oc_media_albums</p></li>
<li><p>oc_media_artists</p></li>
<li><p>oc_media_sessions</p></li>
<li><p>oc_media_songs</p></li>
<li><p>oc_media_users</p></li>
<li><p>oc_permissions</p></li>
<li><p>oc_privatedata - this table was later added again by the app <cite>privatedata</cite> (<a class="reference external" href="https://apps.nextcloud.com/apps/privatedata">https://apps.nextcloud.com/apps/privatedata</a>) and is safe to be removed if that app is not enabled</p></li>
<li><p>oc_queuedtasks</p></li>
<li><p>oc_sharing</p></li>
</ul>
</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="Database configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="linux_database_configuration.html" class="btn btn-neutral float-right" title="Database 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,196 @@
<!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>Database 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="Converting database type" href="db_conversion.html" />
<link rel="prev" title="Artificial Intelligence" href="../ai/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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="current reference internal" href="#">Database configuration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html">Converting database type</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html">Splitting databases</a></li>
</ul>
</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">Database configuration</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/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="database-configuration">
<h1>Database configuration<a class="headerlink" href="#database-configuration" title="Link to this heading"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="db_conversion.html">Converting database type</a><ul>
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html#run-the-conversion">Run the conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html#inconvertible-tables">Inconvertible tables</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html#requirements">Requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html#parameters">Parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l1"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l1"><a class="reference internal" href="splitting.html">Splitting databases</a><ul>
<li class="toctree-l2"><a class="reference internal" href="splitting.html#initial-splitting">Initial splitting</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html#migrations-on-updates">Migrations on updates</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../ai/index.html" class="btn btn-neutral float-left" title="Artificial Intelligence" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="db_conversion.html" class="btn btn-neutral float-right" title="Converting database type" 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,547 @@
<!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>Database 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="Enabling MySQL 4-byte support" href="mysql_4byte_support.html" />
<link rel="prev" title="Converting database type" href="db_conversion.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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="reference internal" href="index.html">Database configuration</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html">Converting database type</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Database configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#requirements">Requirements</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#database-read-committed-transaction-isolation-level">Database “READ COMMITTED” transaction isolation level</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#parameters">Parameters</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#configuring-a-mysql-or-mariadb-database">Configuring a MySQL or MariaDB database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ssl-for-mysql-database">SSL for MySQL Database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#postgresql-database">PostgreSQL database</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#troubleshooting">Troubleshooting</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#how-to-work-around-general-error-2006-mysql-server-has-gone-away">How to work around “general error: 2006 MySQL server has gone away”</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-can-i-find-out-if-my-mysql-postgresql-server-is-reachable">How can I find out if my MySQL/PostgreSQL server is reachable?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-can-i-find-out-if-a-created-user-can-access-a-database">How can I find out if a created user can access a database?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#useful-sql-commands">Useful SQL commands</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html">Splitting databases</a></li>
</ul>
</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">Database configuration</a></li>
<li class="breadcrumb-item active">Database configuration</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/linux_database_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="database-configuration">
<h1>Database configuration<a class="headerlink" href="#database-configuration" title="Link to this heading"></a></h1>
<p>Nextcloud requires a database in which administrative data is stored. The following databases are currently supported:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://www.mysql.com/">MySQL</a> / <a class="reference external" href="https://mariadb.org/">MariaDB</a></p></li>
<li><p><a class="reference external" href="https://www.postgresql.org/">PostgreSQL</a></p></li>
<li><p><a class="reference external" href="http://www.oracle.com/">Oracle</a></p></li>
</ul>
<p>The MySQL or MariaDB databases are the recommended database engines.</p>
<section id="requirements">
<h2>Requirements<a class="headerlink" href="#requirements" title="Link to this heading"></a></h2>
<p>Choosing to use MySQL / MariaDB, PostgreSQL, or Oracle as your database
requires that you install and set up the server software first.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The steps for configuring a third party database are beyond the
scope of this document. Please refer to the documentation for your specific
database choice for instructions.</p>
</div>
<section id="database-read-committed-transaction-isolation-level">
<span id="db-transaction-label"></span><h3>Database “READ COMMITTED” transaction isolation level<a class="headerlink" href="#database-read-committed-transaction-isolation-level" title="Link to this heading"></a></h3>
<p>As discussed above Nextcloud is using the <code class="docutils literal notranslate"><span class="pre">TRANSACTION_READ_COMMITTED</span></code> transaction isolation
level. Some database configurations are enforcing other transaction isolation levels. To avoid
data loss under high load scenarios (e.g. by using the sync client with many clients/users and
many parallel operations) you need to configure the transaction isolation level accordingly.
Please refer to the <a class="reference external" href="https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html">MySQL manual</a>
for detailed information.</p>
</section>
</section>
<section id="parameters">
<h2>Parameters<a class="headerlink" href="#parameters" title="Link to this heading"></a></h2>
<p>For setting up Nextcloud to use any database, use the instructions in <a class="reference internal" href="../installation/installation_wizard.html"><span class="doc">Installation wizard</span></a>. You should not have to edit the respective values in the <code class="file docutils literal notranslate"><span class="pre">config/config.php</span></code>. However, in special cases (for example, if you want to connect your Nextcloud instance to a database created by a previous installation of Nextcloud), some modification might be required.</p>
<section id="configuring-a-mysql-or-mariadb-database">
<h3>Configuring a MySQL or MariaDB database<a class="headerlink" href="#configuring-a-mysql-or-mariadb-database" title="Link to this heading"></a></h3>
<p>If you decide to use a MySQL or MariaDB database, ensure the following:</p>
<ul>
<li><p>The transaction isolation level is set to “READ-COMMITTED” in your MariaDB server configuration <code class="file docutils literal notranslate"><span class="pre">/etc/mysql/my.cnf</span></code> to persist even after a restart of your database server.</p>
<p>Verify the <strong>transaction_isolation</strong> and <strong>binlog_format</strong>:</p>
</li>
</ul>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">mysqld</span><span class="p">]</span>
<span class="o">...</span>
<span class="n">transaction_isolation</span> <span class="o">=</span> <span class="n">READ</span><span class="o">-</span><span class="n">COMMITTED</span>
<span class="n">binlog_format</span> <span class="o">=</span> <span class="n">ROW</span>
<span class="o">...</span>
</pre></div>
</div>
<p>Your <code class="file docutils literal notranslate"><span class="pre">/etc/mysql/my.cnf</span></code> could look like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>[server]
skip_name_resolve = 1
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
[client-server]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
[client]
default-character-set = utf8mb4
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1
</pre></div>
</div>
<p>Please refer to the <a class="reference external" href="https://mariadb.com/kb/en/library/set-transaction/#read-committed">page in the MySQL manual</a>.</p>
<ul class="simple">
<li><p>That you have installed and enabled the pdo_mysql extension in PHP</p></li>
<li><p>That the <strong>mysql.default_socket</strong> points to the correct socket (if the database runs on the same server as Nextcloud).</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>MariaDB is backwards compatible with MySQL. All instructions work for both. You will not need to replace mysql with anything.</p>
</div>
<p>The PHP configuration in <code class="file docutils literal notranslate"><span class="pre">/etc/php7/conf.d/mysql.ini</span></code> could look like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># configuration for PHP MySQL module</span>
<span class="n">extension</span><span class="o">=</span><span class="n">pdo_mysql</span><span class="o">.</span><span class="n">so</span>
<span class="p">[</span><span class="n">mysql</span><span class="p">]</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">allow_local_infile</span><span class="o">=</span><span class="n">On</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">allow_persistent</span><span class="o">=</span><span class="n">On</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">cache_size</span><span class="o">=</span><span class="mi">2000</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">max_persistent</span><span class="o">=-</span><span class="mi">1</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">max_links</span><span class="o">=-</span><span class="mi">1</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">default_port</span><span class="o">=</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">default_socket</span><span class="o">=/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">mysql</span><span class="o">/</span><span class="n">mysql</span><span class="o">.</span><span class="n">sock</span> <span class="c1"># Debian squeeze: /var/run/mysqld/mysqld.sock</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">default_host</span><span class="o">=</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">default_user</span><span class="o">=</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">default_password</span><span class="o">=</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">connect_timeout</span><span class="o">=</span><span class="mi">60</span>
<span class="n">mysql</span><span class="o">.</span><span class="n">trace_mode</span><span class="o">=</span><span class="n">Off</span>
</pre></div>
</div>
<p>Now you need to create a database user and the database itself by using the
MySQL command line interface. The database tables will be created by Nextcloud
when you login for the first time.</p>
<p>To start the MySQL command line mode use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span> <span class="o">-</span><span class="n">uroot</span> <span class="o">-</span><span class="n">p</span>
</pre></div>
</div>
<p>When using MariaDB use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mariadb</span> <span class="o">-</span><span class="n">uroot</span> <span class="o">-</span><span class="n">p</span>
</pre></div>
</div>
<p>Then a <strong>mysql&gt;</strong> or <strong>MariaDB [root]&gt;</strong> prompt will appear. Now enter the following lines and confirm them with the enter key:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">USER</span> <span class="s1">&#39;username&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span> <span class="n">IDENTIFIED</span> <span class="n">BY</span> <span class="s1">&#39;password&#39;</span><span class="p">;</span>
<span class="n">CREATE</span> <span class="n">DATABASE</span> <span class="n">IF</span> <span class="n">NOT</span> <span class="n">EXISTS</span> <span class="n">nextcloud</span> <span class="n">CHARACTER</span> <span class="n">SET</span> <span class="n">utf8mb4</span> <span class="n">COLLATE</span> <span class="n">utf8mb4_general_ci</span><span class="p">;</span>
<span class="n">GRANT</span> <span class="n">ALL</span> <span class="n">PRIVILEGES</span> <span class="n">on</span> <span class="n">nextcloud</span><span class="o">.*</span> <span class="n">to</span> <span class="s1">&#39;username&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span><span class="p">;</span>
</pre></div>
</div>
<p>You can quit the prompt by entering:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">quit</span><span class="p">;</span>
</pre></div>
</div>
<p>A Nextcloud instance configured with MySQL would contain the hostname on which
the database is running, a valid username and password to access it, and the
name of the database. The <code class="file docutils literal notranslate"><span class="pre">config/config.php</span></code> as created by the
<a class="reference internal" href="../installation/installation_wizard.html"><span class="doc">Installation wizard</span></a> would therefore contain entries like
this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&quot;dbtype&quot; =&gt; &quot;mysql&quot;,
&quot;dbname&quot; =&gt; &quot;nextcloud&quot;,
&quot;dbuser&quot; =&gt; &quot;username&quot;,
&quot;dbpassword&quot; =&gt; &quot;password&quot;,
&quot;dbhost&quot; =&gt; &quot;localhost&quot;,
&quot;dbtableprefix&quot; =&gt; &quot;oc_&quot;,
</pre></div>
</div>
<p>In case of UTF8MB4 you will also find:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;mysql.utf8mb4&quot;</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
</pre></div>
</div>
</section>
<section id="ssl-for-mysql-database">
<h3>SSL for MySQL Database<a class="headerlink" href="#ssl-for-mysql-database" title="Link to this heading"></a></h3>
<p>Enabling SSL is only necessary if your database does not reside on the same server as your Nextcloud instance.
If you do not connect over localhost and need to allow remote connections then you should enable SSL.
This just covers the SSL database configuration on the Nextcloud server. First you need to configure your database server accordingly.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;dbdriveroptions&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span>
\<span class="n">PDO</span><span class="p">::</span><span class="n">MYSQL_ATTR_SSL_KEY</span> <span class="o">=&gt;</span> <span class="s1">&#39;/../ssl-key.pem&#39;</span><span class="p">,</span>
\<span class="n">PDO</span><span class="p">::</span><span class="n">MYSQL_ATTR_SSL_CERT</span> <span class="o">=&gt;</span> <span class="s1">&#39;/../ssl-cert.pem&#39;</span><span class="p">,</span>
\<span class="n">PDO</span><span class="p">::</span><span class="n">MYSQL_ATTR_SSL_CA</span> <span class="o">=&gt;</span> <span class="s1">&#39;/../ca-cert.pem&#39;</span><span class="p">,</span>
\<span class="n">PDO</span><span class="p">::</span><span class="n">MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</span> <span class="o">=&gt;</span> <span class="n">true</span><span class="p">,</span>
<span class="p">],</span>
</pre></div>
</div>
<p>Adjust the paths to the pem files for your environment.</p>
</section>
<section id="postgresql-database">
<h3>PostgreSQL database<a class="headerlink" href="#postgresql-database" title="Link to this heading"></a></h3>
<p>In order to run Nextcloud securely on PostgreSQL, it is assumed that only
Nextcloud uses this database and thus only one user accesses the database.
For further services and users, we recommend to create a separate
database or PostgreSQL instance.</p>
<p>If you decide to use a PostgreSQL database make sure that you have installed
and enabled the PostgreSQL extension in PHP. The PHP configuration in <code class="file docutils literal notranslate"><span class="pre">/etc/php7/conf.d/pgsql.ini</span></code> could look
like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># configuration for PHP PostgreSQL module</span>
<span class="n">extension</span><span class="o">=</span><span class="n">pdo_pgsql</span><span class="o">.</span><span class="n">so</span>
<span class="n">extension</span><span class="o">=</span><span class="n">pgsql</span><span class="o">.</span><span class="n">so</span>
<span class="p">[</span><span class="n">PostgresSQL</span><span class="p">]</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">allow_persistent</span> <span class="o">=</span> <span class="n">On</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">auto_reset_persistent</span> <span class="o">=</span> <span class="n">Off</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">max_persistent</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">max_links</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">ignore_notice</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">pgsql</span><span class="o">.</span><span class="n">log_notice</span> <span class="o">=</span> <span class="mi">0</span>
</pre></div>
</div>
<p>The default configuration for PostgreSQL (at least in Ubuntu 14.04) is to use the peer authentication method. Check <code class="file docutils literal notranslate"><span class="pre">/etc/postgresql/9.3/main/pg_hba.conf</span></code> to find out which authentication method is used in your setup.
To start the postgres command line mode use:</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">postgres</span> <span class="n">psql</span> <span class="o">-</span><span class="n">d</span> <span class="n">template1</span>
</pre></div>
</div>
<p>Then a <strong>template1=#</strong> prompt will appear. Now enter the following lines and confirm them with the enter key:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">USER</span> <span class="n">username</span> <span class="n">CREATEDB</span><span class="p">;</span>
<span class="n">CREATE</span> <span class="n">DATABASE</span> <span class="n">nextcloud</span> <span class="n">OWNER</span> <span class="n">username</span> <span class="n">TEMPLATE</span> <span class="n">template0</span> <span class="n">ENCODING</span> <span class="s1">&#39;UTF8&#39;</span><span class="p">;</span>
<span class="n">GRANT</span> <span class="n">CREATE</span> <span class="n">ON</span> <span class="n">SCHEMA</span> <span class="n">public</span> <span class="n">TO</span> <span class="n">username</span><span class="p">;</span>
</pre></div>
</div>
<p>You can quit the prompt by entering:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>\<span class="n">q</span>
</pre></div>
</div>
<p>A Nextcloud instance configured with PostgreSQL would contain the path to the socket on
which the database is running as the hostname, the system username the PHP process is using,
and an empty password to access it, and the name of the database. The <code class="file docutils literal notranslate"><span class="pre">config/config.php</span></code> as
created by the <a class="reference internal" href="../installation/installation_wizard.html"><span class="doc">Installation wizard</span></a> would therefore contain entries like
this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&quot;dbtype&quot; =&gt; &quot;pgsql&quot;,
&quot;dbname&quot; =&gt; &quot;nextcloud&quot;,
&quot;dbuser&quot; =&gt; &quot;username&quot;,
&quot;dbpassword&quot; =&gt; &quot;&quot;,
&quot;dbhost&quot; =&gt; &quot;/var/run/postgresql&quot;,
&quot;dbtableprefix&quot; =&gt; &quot;oc_&quot;,
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The host actually points to the socket that is used to connect to the database. Using localhost here will not work if postgreSQL is configured to use peer authentication. Also note that no password is specified, because this authentication method doesnt use a password.</p>
</div>
<p>If you use another authentication method (not peer), youll need to use the following steps to get the database setup:
Now you need to create a database user and the database itself by using the
PostgreSQL command line interface. The database tables will be created by
Nextcloud when you login for the first time.</p>
<p>To start the postgres command line mode use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">psql</span> <span class="o">-</span><span class="n">hlocalhost</span> <span class="o">-</span><span class="n">Upostgres</span>
</pre></div>
</div>
<p>Then a <strong>postgres=#</strong> prompt will appear. Now enter the following lines and confirm them with the enter key:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">USER</span> <span class="n">username</span> <span class="n">WITH</span> <span class="n">PASSWORD</span> <span class="s1">&#39;password&#39;</span> <span class="n">CREATEDB</span><span class="p">;</span>
<span class="n">CREATE</span> <span class="n">DATABASE</span> <span class="n">nextcloud</span> <span class="n">TEMPLATE</span> <span class="n">template0</span> <span class="n">ENCODING</span> <span class="s1">&#39;UTF8&#39;</span><span class="p">;</span>
<span class="n">ALTER</span> <span class="n">DATABASE</span> <span class="n">nextcloud</span> <span class="n">OWNER</span> <span class="n">TO</span> <span class="n">username</span><span class="p">;</span>
<span class="n">GRANT</span> <span class="n">ALL</span> <span class="n">PRIVILEGES</span> <span class="n">ON</span> <span class="n">DATABASE</span> <span class="n">nextcloud</span> <span class="n">TO</span> <span class="n">username</span><span class="p">;</span>
<span class="n">GRANT</span> <span class="n">ALL</span> <span class="n">PRIVILEGES</span> <span class="n">ON</span> <span class="n">SCHEMA</span> <span class="n">public</span> <span class="n">TO</span> <span class="n">username</span><span class="p">;</span>
</pre></div>
</div>
<p>You can quit the prompt by entering:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>\<span class="n">q</span>
</pre></div>
</div>
<p>A Nextcloud instance configured with PostgreSQL would contain the hostname on
which the database is running, a valid username and password to access it, and
the name of the database. The <code class="file docutils literal notranslate"><span class="pre">config/config.php</span></code> as created by the
<a class="reference internal" href="../installation/installation_wizard.html"><span class="doc">Installation wizard</span></a> would therefore contain entries like
this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&lt;?php
&quot;dbtype&quot; =&gt; &quot;pgsql&quot;,
&quot;dbname&quot; =&gt; &quot;nextcloud&quot;,
&quot;dbuser&quot; =&gt; &quot;username&quot;,
&quot;dbpassword&quot; =&gt; &quot;password&quot;,
&quot;dbhost&quot; =&gt; &quot;localhost&quot;,
&quot;dbtableprefix&quot; =&gt; &quot;oc_&quot;,
</pre></div>
</div>
</section>
</section>
<section id="troubleshooting">
<span id="db-troubleshooting-label"></span><h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Link to this heading"></a></h2>
<section id="how-to-work-around-general-error-2006-mysql-server-has-gone-away">
<h3>How to work around “general error: 2006 MySQL server has gone away”<a class="headerlink" href="#how-to-work-around-general-error-2006-mysql-server-has-gone-away" title="Link to this heading"></a></h3>
<p>The database request takes too long and therefore the MySQL server times out. Its
also possible that the server is dropping a packet that is too large. Please
refer to the manual of your database for how to raise the configuration options
<code class="docutils literal notranslate"><span class="pre">wait_timeout</span></code> and/or <code class="docutils literal notranslate"><span class="pre">max_allowed_packet</span></code>.</p>
<p>Some shared hosters are not allowing the access to these config options. For such
systems Nextcloud is providing a <code class="docutils literal notranslate"><span class="pre">dbdriveroptions</span></code> configuration option within your
<code class="file docutils literal notranslate"><span class="pre">config/config.php</span></code> where you can pass such options to the database driver.
Please refer to <a class="reference internal" href="../configuration_server/config_sample_php_parameters.html"><span class="doc">Configuration Parameters</span></a> for an example.</p>
</section>
<section id="how-can-i-find-out-if-my-mysql-postgresql-server-is-reachable">
<h3>How can I find out if my MySQL/PostgreSQL server is reachable?<a class="headerlink" href="#how-can-i-find-out-if-my-mysql-postgresql-server-is-reachable" title="Link to this heading"></a></h3>
<p>To check the servers network availability, use the ping command on
the servers host name (db.server.com in this example):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ping</span> <span class="n">db</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">com</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">PING</span> <span class="n">db</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">com</span> <span class="p">(</span><span class="n">ip</span><span class="o">-</span><span class="n">address</span><span class="p">)</span> <span class="mi">56</span><span class="p">(</span><span class="mi">84</span><span class="p">)</span> <span class="nb">bytes</span> <span class="n">of</span> <span class="n">data</span><span class="o">.</span>
<span class="mi">64</span> <span class="nb">bytes</span> <span class="kn">from</span> <span class="nn">your</span><span class="o">-</span><span class="n">server</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">lan</span> <span class="p">(</span><span class="mf">192.168.1.10</span><span class="p">):</span> <span class="n">icmp_req</span><span class="o">=</span><span class="mi">1</span> <span class="n">ttl</span><span class="o">=</span><span class="mi">64</span> <span class="n">time</span><span class="o">=</span><span class="mf">3.64</span> <span class="n">ms</span>
<span class="mi">64</span> <span class="nb">bytes</span> <span class="kn">from</span> <span class="nn">your</span><span class="o">-</span><span class="n">server</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">lan</span> <span class="p">(</span><span class="mf">192.168.1.10</span><span class="p">):</span> <span class="n">icmp_req</span><span class="o">=</span><span class="mi">2</span> <span class="n">ttl</span><span class="o">=</span><span class="mi">64</span> <span class="n">time</span><span class="o">=</span><span class="mf">0.055</span> <span class="n">ms</span>
<span class="mi">64</span> <span class="nb">bytes</span> <span class="kn">from</span> <span class="nn">your</span><span class="o">-</span><span class="n">server</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">lan</span> <span class="p">(</span><span class="mf">192.168.1.10</span><span class="p">):</span> <span class="n">icmp_req</span><span class="o">=</span><span class="mi">3</span> <span class="n">ttl</span><span class="o">=</span><span class="mi">64</span> <span class="n">time</span><span class="o">=</span><span class="mf">0.062</span> <span class="n">ms</span>
</pre></div>
</div>
<p>For a more detailed check whether the access to the database server software
itself works correctly, see the next question.</p>
</section>
<section id="how-can-i-find-out-if-a-created-user-can-access-a-database">
<h3>How can I find out if a created user can access a database?<a class="headerlink" href="#how-can-i-find-out-if-a-created-user-can-access-a-database" title="Link to this heading"></a></h3>
<p>The easiest way to test if a database is accessible is by starting the
command line interface:</p>
<p><strong>MySQL</strong>:</p>
<p>Assuming the database server is installed on the same system youre running
the command from, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span> <span class="o">-</span><span class="n">uUSERNAME</span> <span class="o">-</span><span class="n">p</span>
</pre></div>
</div>
<p>To access a MySQL installation on a different machine, add the -h option with
the respective host name:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span> <span class="o">-</span><span class="n">uUSERNAME</span> <span class="o">-</span><span class="n">p</span> <span class="o">-</span><span class="n">h</span> <span class="n">HOSTNAME</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SHOW</span> <span class="n">VARIABLES</span> <span class="n">LIKE</span> <span class="s2">&quot;version&quot;</span><span class="p">;</span>
<span class="o">+---------------+--------+</span>
<span class="o">|</span> <span class="n">Variable_name</span> <span class="o">|</span> <span class="n">Value</span> <span class="o">|</span>
<span class="o">+---------------+--------+</span>
<span class="o">|</span> <span class="n">version</span> <span class="o">|</span> <span class="mf">8.0.22</span> <span class="o">|</span>
<span class="o">+---------------+--------+</span>
<span class="mi">1</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">set</span> <span class="p">(</span><span class="mf">0.00</span> <span class="n">sec</span><span class="p">)</span>
<span class="n">mysql</span><span class="o">&gt;</span> <span class="n">quit</span>
</pre></div>
</div>
<p><strong>PostgreSQL</strong>:</p>
<p>Assuming the database server is installed on the same system youre running
the command from, use:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">psql</span> <span class="o">-</span><span class="n">Uusername</span> <span class="o">-</span><span class="n">dnextcloud</span>
</pre></div>
</div>
<p>To access a PostgreSQL installation on a different machine, add the -h option with
the respective host name:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">psql</span> <span class="o">-</span><span class="n">Uusername</span> <span class="o">-</span><span class="n">dnextcloud</span> <span class="o">-</span><span class="n">h</span> <span class="n">HOSTNAME</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">postgres</span><span class="o">=</span><span class="c1"># SELECT version();</span>
<span class="n">PostgreSQL</span> <span class="mf">8.4.12</span> <span class="n">on</span> <span class="n">i686</span><span class="o">-</span><span class="n">pc</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span><span class="p">,</span> <span class="n">compiled</span> <span class="n">by</span> <span class="n">GCC</span> <span class="n">gcc</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span> <span class="mf">4.1.3</span> <span class="mi">20080704</span> <span class="p">(</span><span class="n">prerelease</span><span class="p">),</span> <span class="mi">32</span><span class="o">-</span><span class="n">bit</span>
<span class="p">(</span><span class="mi">1</span> <span class="n">row</span><span class="p">)</span>
<span class="n">postgres</span><span class="o">=</span><span class="c1"># \q</span>
</pre></div>
</div>
</section>
<section id="useful-sql-commands">
<h3>Useful SQL commands<a class="headerlink" href="#useful-sql-commands" title="Link to this heading"></a></h3>
<p><strong>Show Database Users</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MySQL</span> <span class="p">:</span> <span class="n">SELECT</span> <span class="n">User</span><span class="p">,</span><span class="n">Host</span> <span class="n">FROM</span> <span class="n">mysql</span><span class="o">.</span><span class="n">user</span><span class="p">;</span>
<span class="n">PostgreSQL</span><span class="p">:</span> <span class="n">SELECT</span> <span class="o">*</span> <span class="n">FROM</span> <span class="n">pg_user</span><span class="p">;</span>
</pre></div>
</div>
<p><strong>Show available Databases</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MySQL</span> <span class="p">:</span> <span class="n">SHOW</span> <span class="n">DATABASES</span><span class="p">;</span>
<span class="n">PostgreSQL</span><span class="p">:</span> \<span class="n">l</span>
</pre></div>
</div>
<p><strong>Show Nextcloud Tables in Database</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MySQL</span> <span class="p">:</span> <span class="n">USE</span> <span class="n">nextcloud</span><span class="p">;</span> <span class="n">SHOW</span> <span class="n">TABLES</span><span class="p">;</span>
<span class="n">PostgreSQL</span><span class="p">:</span> \<span class="n">c</span> <span class="n">nextcloud</span><span class="p">;</span> \<span class="n">d</span>
</pre></div>
</div>
<p><strong>Quit Database</strong>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">MySQL</span> <span class="p">:</span> <span class="n">quit</span>
<span class="n">PostgreSQL</span><span class="p">:</span> \<span class="n">q</span>
</pre></div>
</div>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="db_conversion.html" class="btn btn-neutral float-left" title="Converting database type" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="mysql_4byte_support.html" class="btn btn-neutral float-right" title="Enabling MySQL 4-byte support" 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,252 @@
<!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>Enabling MySQL 4-byte support &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="BigInt (64bit) identifiers" href="bigint_identifiers.html" />
<link rel="prev" title="Database configuration" href="linux_database_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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="reference internal" href="index.html">Database configuration</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html">Converting database type</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2"><a class="reference internal" href="splitting.html">Splitting databases</a></li>
</ul>
</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">Database configuration</a></li>
<li class="breadcrumb-item active">Enabling MySQL 4-byte support</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/mysql_4byte_support.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="enabling-mysql-4-byte-support">
<h1>Enabling MySQL 4-byte support<a class="headerlink" href="#enabling-mysql-4-byte-support" title="Link to this heading"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Be sure to backup your database before performing this database upgrade.</p>
</div>
<p>In order to use Emojis (textbased smilies) on your Nextcloud server with a MySQL database, the
installation needs to be tweaked a bit.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This manual only covers MySQL 8 or newer and MariaDB 10.2 or newer.
If you use MariaDB 10.2, please check
<a class="reference external" href="https://docs.nextcloud.com/server/20/admin_manual/configuration_database/mysql_4byte_support.html#mariadb-10-2-or-earlier">this older version</a>
of the documentation. If you use an older version of MySQL or MariaDB, please note that they are no longer supported
by the current Nextcloud version.</p>
</div>
<ol class="arabic">
<li><p>Make sure the following InnoDB settings are set on your MySQL server:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">mysqld</span><span class="p">]</span>
<span class="n">innodb_file_per_table</span><span class="o">=</span><span class="mi">1</span>
</pre></div>
</div>
</li>
<li><p>Restart the MySQL server in case you changed the configuration in step 1.</p></li>
</ol>
<p>You can then verify that the change worked:</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">SHOW</span><span class="w"> </span><span class="n">VARIABLES</span><span class="w"> </span><span class="k">LIKE</span><span class="w"> </span><span class="s1">&#39;innodb_file_per_table&#39;</span><span class="p">;</span>
</pre></div>
</div>
<p>The result should look like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mysql</span><span class="o">&gt;</span> <span class="n">SHOW</span> <span class="n">VARIABLES</span> <span class="n">LIKE</span> <span class="s1">&#39;innodb_file_per_table&#39;</span><span class="p">;</span>
<span class="o">+-----------------------+-------+</span>
<span class="o">|</span> <span class="n">Variable_name</span> <span class="o">|</span> <span class="n">Value</span> <span class="o">|</span>
<span class="o">+-----------------------+-------+</span>
<span class="o">|</span> <span class="n">innodb_file_per_table</span> <span class="o">|</span> <span class="n">ON</span> <span class="o">|</span>
<span class="o">+-----------------------+-------+</span>
<span class="mi">1</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">set</span> <span class="p">(</span><span class="mf">0.00</span> <span class="n">sec</span><span class="p">)</span>
</pre></div>
</div>
<ol class="arabic" start="3">
<li><p>Open a shell, change dir (adjust <code class="docutils literal notranslate"><span class="pre">/var/www/nextcloud</span></code> to your nextcloud location if needed), and put your nextcloud instance in maintenance mode, if it isnt already:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /var/www/nextcloud
$ sudo -u www-data php occ maintenance:mode --on
</pre></div>
</div>
</li>
<li><p>Change your databases character set and collation:</p></li>
</ol>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">DATABASE</span><span class="w"> </span><span class="n">nextcloud</span><span class="w"> </span><span class="nb">CHARACTER</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">utf8mb4</span><span class="w"> </span><span class="k">COLLATE</span><span class="w"> </span><span class="n">utf8mb4_general_ci</span><span class="p">;</span>
</pre></div>
</div>
<ol class="arabic" start="5">
<li><p>Set the <code class="docutils literal notranslate"><span class="pre">mysql.utf8mb4</span></code> config to true in your config.php:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value=&quot;true&quot;
</pre></div>
</div>
</li>
<li><p>Convert all existing tables to the new collation by running the repair step:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo -u www-data php occ maintenance:repair
</pre></div>
</div>
</li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This will also change the <cite>ROW_FORMAT</cite> to <cite>DYNAMIC</cite> for your tables.</p>
</div>
<ol class="arabic" start="7">
<li><p>Disable maintenance mode:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ sudo -u www-data php occ maintenance:mode --off
</pre></div>
</div>
</li>
</ol>
<p>Now you should be able to use Emojis in your file names, calendar events, comments and many more.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Also make sure your backup strategy still work. If you use <code class="docutils literal notranslate"><span class="pre">mysqldump</span></code> make sure to add the <code class="docutils literal notranslate"><span class="pre">--default-character-set=utf8mb4</span></code> option. Otherwise your backups are broken and restoring them will result in <code class="docutils literal notranslate"><span class="pre">?</span></code> instead of the emojis, making files inaccessible.</p>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="linux_database_configuration.html" class="btn btn-neutral float-left" title="Database configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="bigint_identifiers.html" class="btn btn-neutral float-right" title="BigInt (64bit) identifiers" 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,246 @@
<!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>Splitting databases &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="Mimetypes management" href="../configuration_mimetypes/index.html" />
<link rel="prev" title="BigInt (64bit) identifiers" href="bigint_identifiers.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"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></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 current"><a class="reference internal" href="index.html">Database configuration</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="db_conversion.html">Converting database type</a></li>
<li class="toctree-l2"><a class="reference internal" href="linux_database_configuration.html">Database configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="mysql_4byte_support.html">Enabling MySQL 4-byte support</a></li>
<li class="toctree-l2"><a class="reference internal" href="bigint_identifiers.html">BigInt (64bit) identifiers</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Splitting databases</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#initial-splitting">Initial splitting</a></li>
<li class="toctree-l3"><a class="reference internal" href="#migrations-on-updates">Migrations on updates</a></li>
</ul>
</li>
</ul>
</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">Database configuration</a></li>
<li class="breadcrumb-item active">Splitting databases</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_database/splitting.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="splitting-databases">
<h1>Splitting databases<a class="headerlink" href="#splitting-databases" title="Link to this heading"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This is still proof-of-concept level. Use with care.</p>
</div>
<p>In order to scale at some point it might make sense to split out some tables or apps
which allow it as they might be better off with a different replication methods, etc.</p>
<p>A first attempt we do right now with the activity table. In order to make use of this,
the app/table needs to match the following criteria:</p>
<ul class="simple">
<li><p>No other apps are allowed to have queries directly to the table</p></li>
<li><p>No JOINs are performed between this table and any other tables not on this new separate connection</p></li>
<li><p>The app needs to support a connection parameter prefix</p></li>
</ul>
<p>In case of the activity app the prefix is <code class="docutils literal notranslate"><span class="pre">activity_</span></code>. If a database config is not
specified it falls back to the normal database configuration option for this value:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbuser</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbuser</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbpassword</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbpassword</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbname</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbname</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbhost</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbhost</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbport</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbport</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">activity_dbdriveroptions</span></code> falling back to <code class="docutils literal notranslate"><span class="pre">dbdriveroptions</span></code></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>It is not possible to use a different database type (SQLite, MySQL, PostrgreSQL, Oracle)
for a split database. Also in case of MySQL and MariaDB the utf8mb4 option needs to be
the same on both databases.</p>
</div>
<section id="initial-splitting">
<h2>Initial splitting<a class="headerlink" href="#initial-splitting" title="Link to this heading"></a></h2>
<p>For the initial split the affected tables have to be copied over to the new database,
in case of the activity app these are:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">oc_activity</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">oc_activity_mq</span></code></p></li>
</ul>
<ol class="arabic">
<li><p>Enable maintenance mode</p></li>
<li><p>Make sure optional database changes are applied:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">db:convert-mysql-charset</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">db:convert-filecache-bigint</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">db:add-missing-columns</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">db:add-missing-indices</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">db:add-missing-primary-keys</span></code></p></li>
</ol>
</div></blockquote>
</li>
<li><p>Specify the desired configuration values</p></li>
<li><p>Copy the 2 tables to the new database</p></li>
<li><p>Disable maintenance mode</p></li>
</ol>
</section>
<section id="migrations-on-updates">
<h2>Migrations on updates<a class="headerlink" href="#migrations-on-updates" title="Link to this heading"></a></h2>
<p>We will try to avoid migrations on those tables in the future, but it might be necessary at some point.
We hope to have a dedicated plan by the time this happens. For now a potential way would be:</p>
<ol class="arabic simple">
<li><p>Enable maintenance mode</p></li>
<li><p>Update as usual</p></li>
<li><p>Execute manual queries for schema changes provided by the app authors</p></li>
<li><p>Execute manual queries for data changes provided by the app authors</p></li>
<li><p>Disable maintenance mode</p></li>
</ol>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="bigint_identifiers.html" class="btn btn-neutral float-left" title="BigInt (64bit) identifiers" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../configuration_mimetypes/index.html" class="btn btn-neutral float-right" title="Mimetypes management" 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>