Merge branch 'master' into requirements

This commit is contained in:
Jos Poortvliet 2018-03-15 15:49:18 +01:00 committed by GitHub
commit 23f017ae50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
79 changed files with 1510 additions and 1357 deletions

View File

@ -40,7 +40,7 @@ developer-manual-pdf:
@echo "Developer manual build finished; PDF is updated"
api-docs: clean-api-docs
cd build && sh get-server-sources.sh master
cd build && sh get-server-sources.sh stable13
mkdir -p developer_manual/api/
cd build && composer install && composer update
cd build && php generateApiDoc.php

47
_ext/edit_on_github.py Normal file
View File

@ -0,0 +1,47 @@
"""
Sphinx extension to add ReadTheDocs-style "Edit on GitHub" links to the
sidebar.
Loosely based on https://github.com/astropy/astropy/pull/347
"""
import os
import warnings
from pprint import pprint
__licence__ = 'BSD (3 clause)'
def get_github_url(app, view, path):
return 'https://github.com/{project}/{view}/{branch}/{path}'.format(
project=app.config.edit_on_github_project,
view=view,
branch=app.config.edit_on_github_branch,
path=path)
def html_page_context(app, pagename, templatename, context, doctree):
if templatename != 'page.html':
return
if not app.config.edit_on_github_project:
warnings.warn("edit_on_github_project not specified")
return
if not app.config.current_docs:
warnings.warn("current_docs not specified")
return
path = app.config.current_docs + '/' + os.path.relpath(doctree.get('source'), app.builder.srcdir)
show_url = get_github_url(app, 'blob', path)
edit_url = get_github_url(app, 'edit', path)
context['show_on_github_url'] = show_url
context['edit_on_github_url'] = edit_url
def setup(app):
app.add_config_value('edit_on_github_project', '', True)
app.add_config_value('current_docs', '', True)
app.add_config_value('edit_on_github_branch', 'master', True)
app.connect('html-page-context', html_page_context)

View File

@ -12,18 +12,18 @@
{% if theme_bootswatch_theme %}
{# BS2 needs "bootstrap-responsive.css". BS3 doesn't. #}
{% if theme_bootstrap_version == "3" %}
{% set theme_css_files = theme_css_files + [
'_static/bootswatch-' + bootstrap_version + '/' + theme_bootswatch_theme + '/bootstrap.min.css',
'_static/bootstrap-sphinx.css'
]
%}
{% set theme_css_files = theme_css_files + [
'_static/bootswatch-' + bootstrap_version + '/' + theme_bootswatch_theme + '/bootstrap.min.css',
'_static/bootstrap-sphinx.css'
]
%}
{% else %}
{% set theme_css_files = theme_css_files + [
'_static/bootswatch-' + bootstrap_version + '/' + theme_bootswatch_theme + '/bootstrap.min.css',
'_static/bootstrap-' + bootstrap_version + '/css/bootstrap-' + bootstrap_additional_css + '.min.css',
'_static/bootstrap-sphinx.css'
]
%}
{% set theme_css_files = theme_css_files + [
'_static/bootswatch-' + bootstrap_version + '/' + theme_bootswatch_theme + '/bootstrap.min.css',
'_static/bootstrap-' + bootstrap_version + '/css/bootstrap-' + bootstrap_additional_css + '.min.css',
'_static/bootstrap-sphinx.css'
]
%}
{% endif %}
{% else %}
{% set theme_css_files = theme_css_files + ['_static/main.min.css', '_static/styles.css']
@ -36,10 +36,10 @@
{% set css_files = css_files + theme_css_files + bootswatch_css_custom %}
{% set script_files = script_files + [
'_static/js/jquery-1.11.0.min.js',
'_static/js/jquery-fix.js',
'_static/bootstrap-' + bootstrap_version + '/js/bootstrap.min.js',
'_static/bootstrap-sphinx.js'
'_static/js/jquery-1.11.0.min.js',
'_static/js/jquery-fix.js',
'_static/bootstrap-' + bootstrap_version + '/js/bootstrap.min.js',
'_static/bootstrap-sphinx.js'
]
%}
@ -53,57 +53,56 @@
{# Sidebar: Rework into our Bootstrap nav section. #}
{% macro navBar() %}
<header class="banner navbar navbar-default navbar-static-top" role="banner">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="http://nextcloud.com/" rel="home" title="Nextcloud.com"><img class="logo" src="{{ pathto('_static/img/logo.svg', 1) }}" itemprop="logo"></a>
</div>
<nav class="nav headroom--pinned" id="nav">
<!-- To finish -->
<div class="mobile-bg-container">
<div class="mobile-bg"></div>
</div>
<nav class="collapse navbar-collapse" role="navigation">
<ul id="menu-header" class="nav navbar-nav">
<li><a target="_blank" href="https://demo.nextcloud.com">Demo</a></li>
<li><a href="https://nextcloud.com/news/">News</a></li>
<li><a href="https://nextcloud.com/features/">Features</a></li>
<li><a href="https://nextcloud.com/about/">About us</a></li>
<li><a href="https://nextcloud.com/contribute/">Get involved</a></li>
<li><a href="https://nextcloud.com/support/">Support</a></li>
<li><a href="https://nextcloud.com/enterprise/">Enterprise</a></li>
<li class="menu-install"><a href="https://nextcloud.com/install/">Download</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<div class="brand">
<a href="https://nextcloud.com/homepage"><div class="logo stopedAnimation"></div></a>
</div>
<div class="nav__sections-wrapper">
<ul class="nav__sections">
<li class="nav__section"><a href="https://nextcloud.com/files" class="nav__label">Features</a></li>
<li class="nav__section"><a href="https://help.nextcloud.com/" class="nav__label">Support</a></li>
<li class="nav__section"><a href="https://nextcloud.com/contribute" class="nav__label">Community</a></li>
<li class="nav__section"><a href="https://nextcloud.com/about" class="nav__label">About</a></li>
</ul>
<ul class="right-buttons">
<li class="ghost-btn"><a href="https://demo.nextcloud.com/" class="nav__label">Demo</a></li>
<li class="ghost-btn"><a href="https://nextcloud.com/install" class="nav__label">Download</a></li>
<li class="ghost-btn"><a href="https://nextcloud.com/enterprise/buy" class="nav__label">Buy</a></li>
</ul>
</div>
</div>
</nav>
{% endmacro %}
{% if theme_bootstrap_version == "3" %}
{%- macro bsidebar() %}
{%- if render_sidebar %}
<div class="{{ bs_span_prefix }}3">
<div id="sidebar" class="bs-sidenav" role="complementary">
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
</div>
</div>
{%- endif %}
{%- if render_sidebar %}
<div class="{{ bs_span_prefix }}3">
<div id="sidebar" class="bs-sidenav" role="complementary">
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
</div>
</div>
{%- endif %}
{%- endmacro %}
{% else %}
{%- macro bsidebar() %}
{%- if render_sidebar %}
<div class="{{ bs_span_prefix }}3">
<div id="sidebar" class="bs-sidenav well" data-spy="affix">
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
</div>
</div>
{%- endif %}
{%- if render_sidebar %}
<div class="{{ bs_span_prefix }}3">
<div id="sidebar" class="bs-sidenav well" data-spy="affix">
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
</div>
</div>
{%- endif %}
{%- endmacro %}
{% endif %}
@ -117,16 +116,16 @@
<link rel="apple-touch-icon-precomposed" href="https://nextcloud.com/wp-content/themes/next/assets/img/common/favicon.png" />
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//stats.nextcloud.com/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 3]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//stats.nextcloud.com/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 3]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="//stats.nextcloud.com/piwik.php?idsite=3" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
@ -143,51 +142,51 @@
<div class="wrap container not-front">
<div class="content row">
<main class="main">
<div class="row page-content-header">
<div class="col-md-8">
<h1><a href="{{ pathto(master_doc) }}">{{ project|e }}</a></h1>
<div class="doc-version-switch">
Versions:
{%- for v in doc_versions %}
<a href="https://docs.nextcloud.com/server/{{ v }}/{{current_doc}}/{{pagename}}.html" {% if version == v %} class="current-doc"{% endif %}>{{v}}</a>
{%- endfor %}
</div>
</div>
<div class="col-md-4">
{% if theme_show_search %}
<form class="headersearch" style="margin: 16px 0;" action="{{ pathto('search') }}" method="get">
<input type="text" value="" name="q" id="q" class="form-control" />
<button class="btn btn-default" type="submit" id="searchsubmit">Search</button>
</form>
{% endif %}
</div>
</div>
{% block sidebartoc %}
<div class="row page-content-header">
<div class="col-md-8">
<h1><a href="{{ pathto(master_doc) }}">{{ project|e }}</a></h1>
<div class="doc-version-switch">
Versions:
{%- for v in doc_versions %}
<a href="https://docs.nextcloud.com/server/{{ v }}/{{current_doc}}/{{pagename}}.html" {% if version == v %} class="current-doc"{% endif %}>{{v}}</a>
{%- endfor %}
</div>
</div>
<div class="col-md-4">
{% if theme_show_search %}
<form class="headersearch" style="margin: 16px 0;" action="{{ pathto('search') }}" method="get">
<input type="text" value="" name="q" id="q" class="form-control" />
<button class="btn btn-default" type="submit" id="searchsubmit">Search</button>
</form>
{% endif %}
</div>
</div>
{% block sidebartoc %}
<div class="row">
<div class="col-md-3">
<div class="sidebar">
<div class="menu-support-container">
<ul id="menu-support" class="menu">
<ul>
<li><a href="{{ pathto(master_doc) }}">Table of Contents</a></li>
</ul>
{{ toctree(maxdepth=3) }}
{{ toctree(maxdepth=3) }}
</ul>
</div>
</div>
</div>
{% endblock %}
{% endblock %}
<div class="col-md-9">
<div class="page-content">
{% include "relations.html" %}
{% include "relations.html" %}
{% block body %}{% endblock %}
{% include "relations.html" %}
{% include "relations.html" %}
</div>
</div>
</div>
</main>
</main>
</div>
</div>
{%- endblock %}
@ -195,64 +194,86 @@
{%- block footer %}
<div class="container">
<div class="row">
<div class="col-lg-12 footer-social-icons">
<p class="text-center"><a target="_blank" href="https://plus.google.com/104036748063781940910/about"><img width=50 src="{{ pathto('_static/img/social/googleplus.svg', 1) }}" title="Follow us on Google Plus!" alt="Follow us on Google Plus!"></img></a>
<a target="_blank" href="https://www.facebook.com/Nextclouders"><img width=50 src="{{ pathto('_static/img/social/facebook.svg', 1) }}" title="Like our Facebook page!" alt="Like our Facebook page!"></img></a>
<a target="_blank" href="https://twitter.com/Nextclouders"><img width=50 src="{{ pathto('_static/img/social/twitter.svg', 1) }}" title="Subscribe to our Twitter channel!" alt="Subscribe to our Twitter channel!"></img></a>
<a target="_blank" href="https://nextcloud.com/blogfeed"><img class="img-circle" width=50 src="{{ pathto('_static/img/social/rss.svg', 1) }}" title="Subscribe to our news feed!" alt="Subscribe to our news feed!"></img></a>
<a target="_blank" href="https://newsletter.nextcloud.com/"><img class="img-circle" width=50 src="{{ pathto('_static/img/social/mail.svg', 1) }}" title="Subscribe to our newsletter!" alt="Subscribe to our newsletter!"></img></a></p>
</div>
<div class="text-center">
<p>All documentation licensed under the <a href="https://creativecommons.org/licenses/by/3.0/us/">Creative Commons Attribution 3.0 Unported license</a>.</p>
<p><a href="https://github.com/nextcloud/documentation/graphs/contributors">See who contributed to our documentation/credits</a>.</p>
</div>
<div class="col-lg-12 footer-social-icons">
<p class="text-center"><a target="_blank" href="https://plus.google.com/104036748063781940910/about"><img width=50 src="{{ pathto('_static/img/social/googleplus.svg', 1) }}" title="Follow us on Google Plus!" alt="Follow us on Google Plus!"></img></a>
<a target="_blank" href="https://www.facebook.com/Nextclouders"><img width=50 src="{{ pathto('_static/img/social/facebook.svg', 1) }}" title="Like our Facebook page!" alt="Like our Facebook page!"></img></a>
<a target="_blank" href="https://twitter.com/Nextclouders"><img width=50 src="{{ pathto('_static/img/social/twitter.svg', 1) }}" title="Subscribe to our Twitter channel!" alt="Subscribe to our Twitter channel!"></img></a>
<a target="_blank" href="https://nextcloud.com/blogfeed"><img class="img-circle" width=50 src="{{ pathto('_static/img/social/rss.svg', 1) }}" title="Subscribe to our news feed!" alt="Subscribe to our news feed!"></img></a>
<a target="_blank" href="https://newsletter.nextcloud.com/"><img class="img-circle" width=50 src="{{ pathto('_static/img/social/mail.svg', 1) }}" title="Subscribe to our newsletter!" alt="Subscribe to our newsletter!"></img></a></p>
</div>
<div class="text-center">
<p>All documentation licensed under the <a href="https://creativecommons.org/licenses/by/3.0/us/">Creative Commons Attribution 3.0 Unported license</a>.</p>
<p><a href="https://github.com/nextcloud/documentation/graphs/contributors">See who contributed to our documentation/credits</a>.</p>
{%- if show_source and has_source and sourcename and edit_on_github_url %}
<p>Do you want to help us to improve this document?
<a href="{{ edit_on_github_url }}" rel="nofollow">{{ _('Edit this page on GitHub') }} <span class="glyphicon glyphicon-pencil"></span></a>
</p>
{%- endif %}
</div>
</div>
</div>
<footer class="content-info" role="contentinfo">
<div class="container">
<div class="row">
<div class="col-sm-2 col-sm-offset-1">
<div class="footer-nav">
<h4>About Nextcloud</h4>
<ul id="menu-about" class="menu">
<li><a href="https://nextcloud.com/about/">About us</a></li>
<li><a href="https://nextcloud.com/contact/">Contact us</a></li>
<li><a href="https://nextcloud.com/press/">Press</a></li>
<li><a href="https://nextcloud.com/privacy/">Privacy policy</a></li>
</ul>
</div>
</div>
<div class="col-sm-2 col-sm-offset-2">
</div>
<div class="col-sm-2 col-sm-offset-2">
<div class="footer-nav">
<h4>Interact</h4>
<ul id="menu-interact" class="menu">
<li class="menu-irc-channel"><a href="https://webchat.freenode.net/?channels=nextcloud">IRC Channel</a></li>
<li class="menu-forums"><a href="https://help.nextcloud.com/">Forums</a></li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12 footer-text">
<p>
{%- if show_copyright %}
{%- if hasdoc('copyright') %}
{% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}<br/>
{%- else %}
{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %} <small><a href="https://nextcloud.com/impressum">Legal Notice</a></small><br/>
{%- endif %}
{%- endif %}
{%- if last_updated %}
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}<br/>
{%- endif %}
{%- if show_sphinx %}
{% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}<br/>
{%- endif %}
</p>
</div>
</div>
</div>
<footer class="page-footer">
<div class="container">
<div class="col-sm-3">
<h1>About Nextcloud</h1>
<ul>
<li><a href="https://nextcloud.com/about">About us</a></li>
<li><a href="https://nextcloud.com/contributors">Community</a></li>
<li><a href="https://nextcloud.com/events">Events</a></li>
<li><a href="https://nextcloud.com/jobs">Jobs</a></li>
<li><a href="https://nextcloud.com/community/code-of-conduct/">Code of Conduct</a></li>
<li><a href="https://nextcloud.com/privacy">Privacy</a></li>
<li><a href="https://nextcloud.com/impressum">Legal notice</a></li>
</ul>
</div>
<div class="col-sm-3">
<h1>Resources</h1>
<ul>
<li><a href="https://nextcloud.com/install">Download</a></li>
<li><a href="https://apps.nextcloud.com">App Store</a></li>
<li><a href="https://docs.nextcloud.com/server/{{ version }}/admin_manual/">Admin manual</a></li>
<li><a href="https://docs.nextcloud.com/server/{{ version }}/user_manual/">User manual</a></li>
<li><a href="https://docs.nextcloud.com/server/{{ version }}/developer_manual/">Developer manual</a></li>
<li><a href="https://nextcloud.com/security">Security</a></li>
<li><a href="https://github.com/nextcloud">Code on GitHub</a></li>
</ul>
</div>
<div class="col-sm-3">
<h1>Interact</h1>
<ul>
<li><a href="https://nextcloud.com/support">Support</a></li>
<li><a href="https://webchat.freenode.net/?channels=nextcloud">IRC Channel</a></li>
<li><a href="https://help.nextcloud.com/categories">Forums</a></li>
<li><a href="https://demo.nextcloud.com">Demo</a></li>
<li><a href="https://nextcloud.com/contact">Contact us</a></li>
<li><a href="https://nextcloud.com/press">Press center</a></li>
<li><a href="https://docs.nextcloud.com/server/{{ version }}/developer_manual/bugtracker/">Bug Tracker</a></li>
</ul>
</div>
<div class="col-sm-3">
<h1>Follow us</h1>
<ul>
<li><a href="https://plus.google.com/b/104036748063781940910/104036748063781940910/about">Google+</a></li>
<li><a href="https://www.facebook.com/Nextcloud-1032807203462807/">Facebook</a></li>
<li><a href="https://www.linkedin.com/company/10827569/">LinkedIn</a></li>
<li><a href="https://instagram.com/nextclouders">Instagram</a></li>
<li><a href="https://twitter.com/nextclouders">Twitter</a></li>
<li><a href="https://youtube.com/nextcloud">YouTube</a></li>
<li><a href="https://nextcloud.com/blogfeed">RSS Feed</a></li>
</ul>
</div>
<div class="row">
<div class="col-sm-12 text-center copyright">
<p>
{%- if show_copyright %}
&copy; {{ copyright }}
{%- endif %}
{%- if last_updated %}
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}<br/>
{%- endif %}
</p>
</div>
</div>
</div>
</footer>
{%- endblock %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -35,6 +35,13 @@
src: local('Open Sans Light'), local('OpenSans-Light'), url(fonts/OpenSans-Light.woff) format('woff'), url(fonts/OpenSans-Light.ttf) format('ttf');
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('bootstrap-3.1.0/fonts/glyphicons-halflings-regular.eot');
src: url('bootstrap-3.1.0/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('bootstrap-3.1.0/fonts/glyphicons-halflings-regular.woff') format('woff'), url('bootstrap-3.1.0/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('bootstrap-3.1.0/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
span.avoidwrap {
display:inline-block;
}
@ -55,7 +62,6 @@ body {
h1, h2, h3 {
font-weight: 300;
margin-top: 40px !important;
}
h1 {
font-size: 45px;
@ -69,6 +75,12 @@ h3 {
margin: 12px 0;
}
.content h1,
.content h2,
.content h3 {
margin-top: 40px !important;
}
img {
max-width: 100%;
}
@ -108,33 +120,523 @@ button a:hover {text-decoration: none; }
/* Remove line under page headers (defined in main.min.css) */
.navbar {
background-color: #23305D;
background-attachment: scroll;
/* background-image: url(../img/home/720p.jpg); */
background-image: url(img/home/background3.jpg);
background-position: center;
background-repeat: none;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
border: 0px;
min-height: 100px !important;
/* min-height: 800px !important; */
z-index: 0 !important;
}
/* HEADER
https://raw.githubusercontent.com/nextcloud/nextcloud.com/master/assets/css/modules/header.css */
@-moz-document url-prefix() {
.brand {
-webkit-transform: scale(0.5);
top: -26px !important; } }
nav a {
text-decoration: none; }
.mobile-bg-container {
position: fixed;
-webkit-transform: translateZ(0);
transform: translateZ(0);
opacity: 0; }
@media (min-width: 991px) {
.mobile-bg-container {
display: none; } }
.mobile-bg-container.visible {
display: block; }
@media (min-width: 991px) {
.mobile-bg-container.visible {
display: none; } }
.mobile-bg-container.is-animatable {
opacity: 1;
width: 100%;
min-height: 100%; }
.mobile-bg-container .mobile-bg {
position: absolute;
background: #0082c9;
z-index: 2;
border-radius: 50%;
transition: all 0.3s ease-out; }
.mobile-bg-container .mobile-bg:not(.active) {
top: 0 !important;
right: calc(15px + 5%) !important;
width: 49px !important;
height: 49px !important; }
}
.nav {
z-index: 10;
padding-top: 20px;
position: absolute;
left: 0;
right: 0;
background: #0082c9;
position: relative;
opacity: 0; }
.nav.headroom {
transition: transform 500ms ease; }
.nav.headroom--not-top {
position: fixed !important; }
.nav.headroom--pinned {
transform: translate3d(0px, 0px, 0px);
opacity: 1; }
.nav.headroom--unpinned {
transform: translate3d(0px, -100px, 0px);
opacity: 0; }
.nav .container {
position: relative;
/* Fix ul and li settings in common */ }
@media (max-width: 992px) {
.nav .container {
width: 90%; } }
.nav .container .nav__bg-wrapper {
-webkit-transition: 0.3s;
transition: 0.3s;
position: absolute;
left: 0;
top: 100%;
visibility: hidden;
transition: 0.3s;
will-change: opacity;
z-index: -2;
top: 50px; }
.nav .container .nav__bg-wrapper.is-visible {
visibility: visible;
opacity: 1; }
.nav .container .nav__bg-wrapper .nav__bg {
width: 300px;
height: 200px;
background: white;
box-shadow: 0 4px 6px 0 rgba(0, 0, 0, 0.11);
border: solid 1px #f1f1f1;
border-radius: 4px;
-webkit-transform-origin: left top;
transform-origin: left top;
will-change: transform;
visibility: hidden;
position: absolute;
z-index: 5;
top: 100%; }
.nav .container .nav__bg-wrapper .nav__bg:before {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
right: auto;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
height: 0;
width: 0;
border: 8px solid transparent;
border-bottom-color: #f1f1f1; }
.nav .container .nav__bg-wrapper .nav__bg:after {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
right: auto;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
height: 0;
width: 0;
border: 6px solid transparent;
border-bottom-color: white; }
.nav .container .nav__bg-wrapper .nav__bg.is-animatable {
-webkit-transition: 0.3s;
transition: 0.3s;
visibility: visible;
display: block; }
.nav .container .navbar-toggle {
display: none; }
.nav .container .brand {
z-index: 8;
position: absolute;
top: 0;
left: 0; }
.nav .container .brand .logo:not(.scrolled):not(.menu-open) {
background: url(img/logo_white_sprite.png) 0 0 no-repeat;
height: 100px;
width: 140px;
display: inline-block;
zoom: 0.5; }
.nav .container .brand .logo:not(.scrolled):not(.menu-open).hoverPlay {
background-position-x: 0;
-webkit-animation: play 2s steps(33) forwards;
-moz-animation: play 2s steps(33) forwards;
-ms-animation: play 2s steps(33) forwards;
-o-animation: play 2s steps(33) forwards;
animation: play 2s steps(33) forwards; }
.nav .container .brand .logo:not(.scrolled):not(.menu-open).stopedAnimation {
background-position-x: -4620px; }
.nav .container ul {
margin-top: 0px; }
.nav .container ul li {
margin-top: 0px; }
.nav .container .nav__sections {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
list-style-type: none;
position: absolute;
z-index: -1;
left: 20%;
top: 0%; }
@media (max-width: 1200px) {
.nav .container .nav__sections {
left: 10%; } }
.nav .container .nav__sections .nav__section {
padding: 15px 0 15px 0;
position: relative; }
.nav .container .nav__sections .nav__section:hover .nav__label {
opacity: 0.6;
cursor: default;
text-decoration: none; }
.nav .container .nav__sections .nav__section:hover .nav__links {
visibility: visible;
opacity: 1;
position: absolute;
left: 50%;
transform: translateX(-50%) translateZ(1px); }
.nav .container .nav__sections .nav__section .nav__label {
display: inline-block;
padding-left: 30px;
padding-bottom: 5px;
color: white;
-webkit-transition: 0.3s;
transition: 0.3s;
font-size: 16px;
cursor: pointer !important;}
.nav .container .nav__sections .nav__section .nav__links {
position: absolute;
padding: 20px 20px 20px 35px;
visibility: hidden;
opacity: 0;
list-style-type: none;
transition: opacity 0.3s ease;
transition-delay: 0.1s; }
.nav .container .nav__sections .nav__section .nav__links .nav__item {
color: #666;
white-space: nowrap; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a {
display: block;
padding: 5px 10px 0 0px;
font-size: 16px;
color: #555; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a .nav__logo {
width: 45px;
min-height: 15px;
float: left;
vertical-align: middle; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a .nav__logo img {
margin-top: 5px;
padding: 10px 8px 0 0;
height: 40px;
width: 40px; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a .nav__text {
line-height: 1;
padding: 10px 30px 10px 0; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a .nav__text strong {
line-height: 1.2;
font-weight: normal;
font-size: 18px; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a .nav__text small {
opacity: 0.8; }
.nav .container .nav__sections .nav__section .nav__links .nav__item a:hover {
opacity: 0.6;
text-decoration: none; }
.nav .container .nav__sections .nav__section .nav__links .nav__item:not(:last-of-type) a {
padding-bottom: 5px; }
.nav .container .right-buttons {
position: absolute;
top: 0;
right: 0;
margin-top: 15px; }
.nav .container .right-buttons .ghost-btn {
text-align: center;
position: relative;
display: inline-block; }
.nav .container .right-buttons .ghost-btn a {
-webkit-transition: 0.3s;
transition: 0.3s;
position: relative; }
.nav .container .right-buttons .ghost-btn a:before {
content: "";
position: absolute;
width: 100%;
height: 2px;
bottom: 0;
left: 0;
background-color: white;
visibility: hidden;
-webkit-transform: scaleX(0);
transform: scaleX(0);
-webkit-transition: all 0.2s ease-in-out 0s;
transition: all 0.2s ease-in-out 0s; }
.nav .container .right-buttons .ghost-btn:hover a {
text-decoration: none; }
.nav .container .right-buttons .ghost-btn:hover a:before {
visibility: visible;
-webkit-transform: scaleX(1);
transform: scaleX(1); }
.nav .container .right-buttons li {
display: inline-block;
padding-left: 30px;
padding-bottom: 5px;
font-size: 16px;
margin-top: 0px; }
.nav .container .right-buttons li a {
color: white; }
div.page-header {
border-bottom: 0px solid #EEE;
}
/* Remove border from navbar (defined in main.min.css) */
.navbar {
border: 1px solid transparent;
}
@media (max-width: 992px) {
.nav .container .brand {
padding-left: 15px; }
.nav .container .brand .logo {
height: 53px;
width: 71px; }
.nav .container .brand .logo.menu-open {
background: url(../img/logo/logo_white_sprite.png) 0 0 no-repeat;
height: 100px;
width: 140px;
display: inline-block;
zoom: 0.5; }
.nav .container .brand .logo.menu-open.hoverPlay {
background-position-x: 0;
-webkit-animation: play 2s steps(33) forwards;
-moz-animation: play 2s steps(33) forwards;
-ms-animation: play 2s steps(33) forwards;
-o-animation: play 2s steps(33) forwards;
animation: play 2s steps(33) forwards; }
.nav .container .brand .logo.menu-open.stopedAnimation {
background-position-x: -4620px; }
.nav .container .mobile-bg {
position: fixed;
background: #0082c9;
padding-top: 25px;
z-index: 7;
top: 0;
right: 0;
width: 0;
height: 0;
visibility: hidden;
overflow: hidden;
border-bottom-left-radius: 100%;
transition: all 0.6s ease; }
.nav .container .active {
opacity: 1;
visibility: visible;
width: 150%;
height: 150%; }
.nav .container .navbar-toggle {
color: white;
background-color: white;
border-radius: 50px;
width: 50px;
height: 50px;
margin-top: 0;
z-index: 8;
display: block;
margin-right: 0;
border: none;
float: right; }
.nav .container .navbar-toggle:hover {
transform: scale(1.1);
transition: transform 0.3s cubic-bezier(0.56, 1, 0.86, 1.39);
transition-property: transform;
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.56, 1, 0.86, 1.39);
transition-delay: initial; }
.nav .container .nav__sections-wrapper {
margin: 0 auto;
display: inline-block;
position: absolute;
top: 90px;
z-index: 2;
padding: 0; }
.nav .container .nav__sections-wrapper .nav__sections {
display: none;
position: relative;
left: 0;
padding: 0;
visibility: hidden; }
.nav .container .nav__sections-wrapper .nav__sections .nav__section {
display: block;
opacity: 1;
margin: 0;
opacity: 0;
color: white;
padding: 0;
visibility: hidden; }
.nav .container .nav__sections-wrapper .nav__sections .nav__section:last-child {
font-weight: 500; }
.nav .container .nav__sections-wrapper .nav__sections .nav__section a {
color: white;
text-decoration: none; }
.nav .container .nav__sections-wrapper .nav__sections.active {
display: block;
color: white;
margin: 0;
visibility: visible; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section {
animation: fadeInRight .5s ease forwards;
animation-delay: .35s;
visibility: visible; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section .nav__label {
font-size: 20px;
line-height: 20px;
padding-left: 0;
font-weight: 400; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(2) {
animation-delay: .4s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(3) {
animation-delay: .45s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(4) {
animation-delay: .50s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(5) {
animation-delay: .55s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(6) {
animation-delay: .60s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(7) {
animation-delay: .65s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section:nth-of-type(8) {
animation-delay: .70s; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section .nav__links {
display: none;
position: relative;
padding: 0;
width: 100%;
padding: 0 10px 0 20px; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section .nav__links .nav__item {
margin-left: 0; }
.nav .container .nav__sections-wrapper .nav__sections.active .nav__section .nav__links .nav__item a {
font-size: 18px;
line-height: 18px;
color: white;
margin-left: 0;
font-weight: 300; }
.nav .container .nav__sections-wrapper .right-buttons {
position: relative;
padding: 0;
margin: 0;
opacity: 0;
transition: all 0.3s; }
.nav .container .nav__sections-wrapper .right-buttons.active {
opacity: 1;
transition-delay: .65s; }
.nav .container .nav__sections-wrapper .right-buttons.active .nav__label {
color: white; }
.nav .container .nav__sections-wrapper .right-buttons.active .ghost-btn a {
pointer-events: all; }
.nav .container .nav__sections-wrapper .right-buttons .ghost-btn {
font-size: 20px;
line-height: 20px;
padding-left: 0;
font-weight: 400;
display: block;
text-align: left;
padding-left: 0;
animation: fadeInRight .5s ease forwards;
pointer-events: none; } }
@keyframes fadeInRight {
0% {
opacity: 0;
left: 20%; }
100% {
opacity: 1;
left: 0; } }
/**
* Scrolled navbar style
*/
.nav {
padding-bottom: 70px;
transition: all .2s ease-in; }
@media (max-width: 992px) {
.nav {
padding-bottom: 20px; } }
.nav.no-shadow {
box-shadow: none !important; }
.nav.scrolled {
position: fixed;
background: white;
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.09); }
.nav.scrolled .navbar-toggle:not(.active) {
background-color: #0082c9; }
.nav.scrolled .navbar-toggle:not(.active) svg {
filter: invert(100%); }
.nav.scrolled .logo:not(.menu-open) {
background: url(img/logo_blue_sprite.png) 0 0 no-repeat;
height: 100px;
width: 140px;
display: inline-block;
zoom: 0.5; }
.nav.scrolled .logo:not(.menu-open).hoverPlay {
background-position-x: 0;
-webkit-animation: play 2s steps(33) forwards;
-moz-animation: play 2s steps(33) forwards;
-ms-animation: play 2s steps(33) forwards;
-o-animation: play 2s steps(33) forwards;
animation: play 2s steps(33) forwards; }
.nav.scrolled .logo:not(.menu-open).stopedAnimation {
background-position-x: -4620px; }
.nav.scrolled .nav__sections-wrapper .nav__sections .nav__section .nav__label, .nav.scrolled .nav__sections-wrapper .nav__sections .ghost-btn .nav__label, .nav.scrolled .nav__sections-wrapper .nav__sections .ghost-btn .nav__label, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .nav__section .nav__label, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .ghost-btn .nav__label, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .ghost-btn .nav__label {
color: #555; }
.nav.scrolled .nav__sections-wrapper .nav__sections .nav__section .nav__label:before, .nav.scrolled .nav__sections-wrapper .nav__sections .ghost-btn .nav__label:before, .nav.scrolled .nav__sections-wrapper .nav__sections .ghost-btn .nav__label:before, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .nav__section .nav__label:before, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .ghost-btn .nav__label:before, .nav.scrolled .nav__sections-wrapper .right-buttons:not(.active) .ghost-btn .nav__label:before {
background-color: #555; }
.nav.mobile .nav__sections-wrapper .nav__sections .nav__section .nav__label, .nav.mobile .nav__sections-wrapper .ghost-btn .nav__section .nav__label {
color: white; }
/**
*Changed default media querys for navigation in bootstrap
*/
@media (max-width: 1200px) {
.navbar-header {
float: none; }
.navbar-left, .navbar-right {
float: none !important; }
.navbar-toggle {
display: block; }
.navbar-collapse {
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); }
.navbar-fixed-top {
top: 0;
border-width: 0 0 1px; }
.navbar-collapse.collapse {
display: none !important; }
.navbar-nav {
float: none !important;
margin-top: 7.5px; }
.navbar-nav > li {
float: none; }
.navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px; }
.collapse.in {
display: block !important; }
.navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
-webkit-box-shadow: none;
box-shadow: none; } }
@keyframes play {
from {
background-position-x: 0px; }
to {
background-position-x: -4620px; } }
.banner img {
padding: 15px 0;
@ -249,34 +751,95 @@ i[class*='icon-'] {
}
/* the footer */
footer {
background-color: white;
/* https://raw.githubusercontent.com/nextcloud/nextcloud.com/master/assets/css/modules/footer.css */
.copyright {
/* footer fix */
clear: both;
}
/*Colors*/
/*Shadows*/
/*Breakpoints*/
footer.page-footer {
background-color: #2a2a36; }
footer.page-footer h1 {
margin-top: 70px;
font-size: 19px;
font-weight: bold;
line-height: 1.8;
letter-spacing: -0.9px;
color: #8e8e8e; }
footer.page-footer ul {
list-style-type: none;
padding-left: 0; }
footer.page-footer li {
font-size: 15px;
line-height: 1.8;
color: #ffffff;
width: 140px;
margin-top: 0; }
footer.page-footer li a {
color: #ffffff;
position: relative; }
footer.page-footer li a:before {
content: "";
position: absolute;
width: 100%;
height: 2px;
bottom: 0;
left: 0;
background-color: white;
visibility: hidden;
-webkit-transform: scaleX(0);
transform: scaleX(0);
-webkit-transition: all 0.2s ease-in-out 0s;
transition: all 0.2s ease-in-out 0s; }
footer.page-footer li a:hover {
color: #ffffff;
text-decoration: none; }
footer.page-footer li a:hover:before {
visibility: visible;
-webkit-transform: scaleX(1);
transform: scaleX(1); }
footer.page-footer p {
padding-top: 50px;
padding-bottom: 30px;
font-size: 15px;
line-height: 1.8;
color: #ffffff; }
@media (max-width: 768px) {
footer.page-footer p {
float: left;
padding-left: 15px; } }
footer.page-footer p a {
color: #ffffff; }
footer.page-footer p a:hover {
color: #ffffff; }
@media (min-width: 768px) and (max-width: 1600px) {
footer.page-footer .container {
width: 90%;
max-width: 900px; } }
div.footer-text {
color: #555;
text-align: center;
margin-bottom: 40px;
}
div.footer-social-icons > div {
text-align: center;
margin: 50px 17px -20px -14px;
}
div.footer-social-icons> div > a:hover {
opacity: 0.8;
}
div.footer-social-icons img {
margin: 0 30px 30px 0;
}
footer div.footer-nav>h4 {
font-size: 1.125em;
color: #949494;
}
@media (max-width: 768px) {
footer.page-footer {
height: 100%;
padding-top: 40px;
padding-bottom: 40px; }
footer.page-footer h1 {
margin-top: 30px;
font-size: 19px;
font-weight: bold;
line-height: 1.8;
letter-spacing: -0.9px;
color: #8e8e8e; }
footer.page-footer ul {
list-style-type: none;
padding-left: 0; }
footer.page-footer li {
font-size: 15px;
line-height: 1.8;
color: #ffffff;
width: 140px;
margin-top: 0; } }
div.thumbnail > img {
margin-bottom: 0;

View File

@ -29,7 +29,7 @@ from conf import *
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinxcontrib.phpdomain', 'sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
extensions += ['sphinxcontrib.phpdomain', 'sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['../_shared_assets/templates']
@ -292,3 +292,5 @@ intersphinx_mapping = {
'user_manual': ('https://docs.nextcloud.com/server/%s/user_manual/' % (version), '../user_manual/_build/html/com/objects.inv'),
'developer_manual': ('https://docs.nextcloud.com/server/%s/developer_manual/' % (version), '../developer_manual/_build/html/com/objects.inv'),
}
current_docs = 'admin_manual'

View File

@ -6,7 +6,7 @@ Since Nextcloud 13 big integers are used to store identifiers and auto-increment
Because changing columns on huge tables can take quite a while (up to hours or days), the update from
Nextcloud 12 or earlier did not perform this migration on the filecache and activity table.
To make it easy to force the update on that tables too, we added a console command, which can be used
To make it easy to force the update on those tables too, we've added a console command, which can be used
to migrate the remaining columns to bigints.
The command can safely be executed. It will show a success message when there is nothing to do::

View File

@ -20,11 +20,11 @@ installation needs to be tweaked a bit.
5. Set the ``mysql.utf8mb4`` config to true in your config.php::
$ sudo -u www-data occ config:system:set mysql.utf8mb4 --type boolean --value="true"
$ sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
6. Convert all existing tables to the new collation by running the repair step::
$ sudo -u www-data occ maintenance:repair
$ sudo -u www-data php occ maintenance:repair
Now you should be able to use Emojis in your file names, calendar events, comments and many more.

View File

@ -29,6 +29,9 @@ the DNS infrastructure cannot be controlled. Ordinarily, requests will be
made with ``http://bucket.hostname.domain/``, but with path style enabled,
requests are made with ``http://hostname.domain/bucket`` instead.
**Legacy authentication** is only required for S3 servers that only implement version 2 authentication,
on default version 4 authentication will be used.
See :doc:`../external_storage_configuration_gui` for additional mount
options and information.

View File

@ -2,6 +2,8 @@
Dropbox
=======
.. warning:: An app for Dropbox support is still in development for NC 13: https://github.com/icewind1991/files_external_dropbox
While Dropbox supports the newer OAuth 2.0, Nextcloud uses OAuth 1.0, so you can
safely ignore any references to OAuth 2.0 in the Dropbox configuration.

View File

@ -2,6 +2,8 @@
Google Drive
============
.. warning:: An app for Google Drive support is still in development for NC 13: https://github.com/owncloud/files_external_gdrive
Nextcloud uses OAuth 2.0 to connect to Google Drive. This requires configuration
through Google to get an app ID and app secret, as Nextcloud registers itself
as an app.

View File

@ -72,6 +72,16 @@ passing the ``-v`` option to the command.
SMB authentication
^^^^^^^^^^^^^^^^^^
In some cases (such as when using login credentials) it's not possible to read the
smb credentials from the storage configuration, in those cases you can provide
the username and password using the ``--username`` and ``--password`` arguments.
Update notifications are not supported when using 'Login credentials, save in session' authentication.
Using login credentials is only supported with 'Login credentials, save in database'.
Even when using 'Login credentials, save in database' or 'User entered, stored in database' authentication the notify process
can not use the credentials saved to attach to the smb shares because the notify process does not run in the context of a specific user
in those cases you can provide the username and password using the ``--username`` and ``--password`` arguments.
Decrease sync delay
^^^^^^^^^^^^^^^^^^^
Any updates detected by the notify command will only be synced to the client after the Nextcloud cron job has been executed
(usually every 15 minutes). If this interval is to high for your use case, you can decrease it by running ``occ files:scan --unscanned --all``
at the desired interval. Note that this might increase the server load and you'll need to ensure that there is no overlap between runs.

View File

@ -103,15 +103,16 @@ Available storage backends
--------------------------
The following backends are provided by the external storages app. Other apps
may provide their own backends, which are not listed here.
may provide their own backends, which are not listed here. Google Drive and Dropbox
were moved to external apps which are still in development (Github-Repos for `Google Drive
<https://github.com/owncloud/files_external_gdrive>`_ and `Dropbox
<https://github.com/icewind1991/files_external_dropbox>`_).
.. toctree::
:maxdepth: 1
external_storage/amazons3
external_storage/dropbox
external_storage/ftp
external_storage/google
external_storage/local
external_storage/nextcloud
external_storage/openstack

View File

@ -16,9 +16,6 @@ Nextcloud users. You have control of a number of user permissions on file shares
* Allow email notifications of new public shares
* Exclude groups from creating shares
.. note:: Nextcloud includes a Share Link Password Policy app; see
:ref:`password_policy_label`.
Configure your sharing policy on your Admin page in the Sharing section.
.. figure:: images/sharing-files-1.png
@ -93,17 +90,3 @@ appropriate permissions on it, and then no matter which users come and go, the
file shares will remain. Because all files added to the share, or edited in it,
automatically become owned by the owner of the share regardless of who adds or
edits them.
.. _password_policy_label:
Share link password policy
--------------------------
Nextcloud users have the option of enabling the Share Link Password
Policy app. This allows you to enforce password length, required characters,
define special characters, and expiration dates on share links.
.. figure:: images/sharing-files-2.png
Note that you cannot use Emojis as special characters with MySQL, as it
supports UTF8 characters only of 1-3 bytes, and emojis require 4 bytes.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -5,15 +5,14 @@ File sharing and management
.. toctree::
:maxdepth: 2
file_sharing_configuration
federated_cloud_sharing_configuration
big_file_upload_configuration
default_files_configuration
default_files_configuration
external_storage_configuration_gui
external_storage_configuration
external_storage/auth_mechanisms
primary_storage
encryption_configuration
files_locking_transactional
previews_configuration

View File

@ -1,127 +0,0 @@
===============
Primary Storage
===============
It's possible to use an object store as primary storage, this replaces the default
way of storing files in :code:`nextcloud/data` (note that the data directory might still be used
for other reasons)
Implications
------------
When using an object store as primary storage, Nextcloud assumes exclusive access
over the bucket being used.
Contrary to using an object store as external storage, when an object store is used
as primary storage, no metadata (names, directory structures, etc) is stored in the
object store. The metadata is only stored in the database and the object store only
holds the file content by unique identifier.
Because of this primary object stores usually perform better than when using the same
object store as external storage but it restricts being able to access the files from
outside of Nextcloud.
Configuring
-----------
Primary object stores need to be configured in :code:`config.php` by specifying the objectstore
backend and any backend specific configuration.
.. note:: Configuring a primary object store on an existing Nextcloud instance will
make all existing files on the instance inaccessible.
The configuration has the following structure.
::
'objectstore' => array(
'class' => 'Object\\Storage\\Backend\\Class',
'arguments' => array(
...
),
),
Openstack Swift
^^^^^^^^^^^^^^^
The Swift backend mounts a container on an OpenStack Object Storage server into the virtual filesystem. The class to be used is :code:`\\OC\\Files\\ObjectStore\\Swift`
::
'objectstore' => array(
'class' => 'OC\\Files\\ObjectStore\\Swift',
'arguments' => array(
'username' => 'username',
'password' => 'Secr3tPaSSWoRdt7',
// the container to store the data in
'bucket' => 'nextcloud',
'autocreate' => true,
'region' => 'RegionOne',
// The Identity / Keystone endpoint
'url' => 'http://example.com/v2.0',
// optional on some swift implementations
'tenantName' => 'username',
'serviceName' => 'swift',
// The Interface / url Type, optional
'urlType' => 'internal'
),
),
Amazon S3
---------
The S3 backend mounts a bucket on an Amazon S3 Storage or compatible server into the virtual filesystem. The class to be used is :code:`\\OC\\Files\\ObjectStore\\S3`
::
'objectstore' => array(
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' => array(
'bucket' => 'nextcloud',
'autocreate' => true,
'key' => 'EJ39ITYZEUH5BGWDRUFY',
'secret' => 'M5MrXTRjkyMaxXPe2FRXMTfTfbKEnZCu+7uRTVSj',
'hostname' => 'example.com',
'port' => 1234,
'use_ssl' => true,
'region' => 'optional',
// required for some non amazon s3 implementations
'use_path_style'=>true
),
),
Not all configuration options are required for all S3 servers.
Overriding the hostname, port and region of your S3 server is only
required for non-Amazon servers such as Ceph Object Gateway, which in turn
usually don't require the region to be set.
:code:`use_path_style` is usually not required (and is, in fact, incompatible with newer Amazon datacenters),
but can be used with non-Amazon servers where the DNS infrastructure cannot be controlled. Ordinarily,
requests will be made with http://bucket.hostname.domain/, but with path style enabled,
requests are made with http://hostname.domain/bucket instead.
Multibucket Object Store
---------------------------
It's possible to configure Nextcloud to distribute it's data over multiple buckets for scalability purpose.
To setup multiple buckets, :code:`config.php` needs to be configured using :code:`'objectstore_multibucket'`
::
'objectstore_multibucket' => array(
'class' => 'Object\\Storage\\Backend\\Class',
'arguments' => array(
// optional, defaults to 64
'num_buckets' => 64,
// will be prefixed by an integer in the range from 0 to (num_nuckets-1)
'bucket' => 'nextcloud_',
...
),
),
Nextcloud will map every user to a range of buckets and save all files for that user in it's respective bucket.
.. note:: Changing the number of buckets for an existing Nextcloud instance is supported but the
mapping from users to buckets is persistent so only newly created users will be mapped to the
updated range of buckets.

View File

@ -30,7 +30,7 @@ Furthermore it is recommended to configure the background job ``Webcron`` or
There is also a configuration option ``activity_expire_days`` available in your
``config.php`` (See :doc:`config_sample_php_parameters`) which allows
you to clean-up older activies from the database.
you to clean-up older activities from the database.
Better scheduling of activity emails
------------------------------------

View File

@ -83,7 +83,7 @@ You can verify if the cron job has been added and scheduled by executing::
.. note:: Please refer to the crontab man page for the exact command syntax.
.. _easyCron: http://www.easycron.com/
.. _easyCron: https://www.easycron.com/
systemd
^^^^^^^

View File

@ -1,27 +0,0 @@
===================================
Custom client download repositories
===================================
You may configure the URLs to your own download repositories for your Nextcloud
desktop clients and mobile apps in :file:`config/config.php`. This example shows
the default download locations:
::
<?php
"customclient_desktop" => "https://nextcloud.com/install/",
"customclient_android" => "https://play.google.com/store/apps/details?id=com.nextcloud.client",
"customclient_ios" => "https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8",
Simply replace the URLs with the links to your own preferred download repos.
You may test alternate URLs without editing :file:`config/config.php` by setting a test URL as an environment variable::
export OCC_UPDATE_URL=https://test.example.com
When you're finished testing you can disable the environment variable::
unset OCC_UPDATE_URL

View File

@ -8,18 +8,15 @@ Server configuration
security_setup_warnings
occ_command
activity_configuration
sso_configuration
caching_configuration
background_jobs_configuration
background_jobs_configuration
config_sample_php_parameters
email_configuration
external_sites
custom_client_repos
knowledgebase_configuration
language_configuration
logging_configuration
harden_server
reverse_proxy_configuration
reverse_proxy_configuration
thirdparty_php_configuration
automatic_configuration
server_tuning

View File

@ -1,20 +0,0 @@
============================
Knowledge base configuration
============================
The usage of Nextcloud is more or less self explaining but nevertheless a user
might run into a problem where he needs to consult the documentation or knowledge base. To ease access to the Nextcloud
documentation and knowledge base, a help menu item is shown in the settings menu by default.
Parameters
----------
If you want to disable the Nextcloud help menu item you can use the **knowledgebaseenabled** parameter inside the
:file:`config/config.php`.
::
<?php
"knowledgebaseenabled" => true,
.. note:: Disabling the help menu item might increase the number of support requests you have to answer in the future

View File

@ -186,6 +186,7 @@ Apps commands
The ``app`` commands list, enable, and disable apps::
app
app:install install selected app
app:check-code check code to be compliant
app:disable disable an app
app:enable enable an app
@ -880,6 +881,7 @@ backups and other tasks that require locking users out until you are finished::
maintenance:mimetype:update-js Update mimetypelist.js
maintenance:mode set maintenance mode
maintenance:repair repair this installation
maintenance:theme:update Apply custom theme changes
maintenance:update:htaccess Updates the .htaccess file
``maintenance:mode`` locks the sessions of all logged-in users, including
@ -907,6 +909,8 @@ command after modifying ``config/mimetypemapping.json``. If you change a
mimetype, run ``maintenance:mimetype:update-db --repair-filecache`` to apply the
change to existing files.
Run the ``maintenance:theme:update`` command if the icons of your custom theme are not updated correctly. This updates the mimetypelist.js and cleares the image cache.
.. _security_commands_label:
Security

View File

@ -65,11 +65,11 @@ you can set the following parameters inside the :file:`config/config.php`.
<?php
$CONFIG = array (
"trusted_proxies" => ['10.0.0.1'],
"overwritehost" => "ssl-proxy.tld",
"overwriteprotocol" => "https",
"overwritewebroot" => "/domain.tld/nextcloud",
"overwritecondaddr" => "^10\.0\.0\.1$",
'trusted_proxies' => ['10.0.0.1'],
'overwritehost' => 'ssl-proxy.tld',
'overwriteprotocol' => 'https',
'overwritewebroot' => '/domain.tld/nextcloud',
'overwritecondaddr' => '^10\.0\.0\.1$',
);
.. note:: If you want to use the SSL proxy during installation you have to

View File

@ -1,69 +0,0 @@
==========================
Configuring single-sign-on
==========================
Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On
solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g.
when sharing)
The following providers are supported and tested at the moment:
- SAML 2.0
- OneLogin
- Shibboleth
- Active Directory Federation Services (ADFS)
- Authentication via Environment Variable
- Kerberos (mod_auth_kerb)
- Any other provider that authenticates using the environment variable
While theoretically any other authentication provider implementing either one of those standards is compatible, we like
to note that they are not part of any internal test matrix.
Enabling the SSO & SAML app
---------------------------
.. warning:: Make sure to configure an administrative user that can access the instance via SSO. Logging-in with your
regular Nextcloud account won't be possible anymore.
The "SSO & SAML" App is shipped and disabled by default. To enable the app enabled simply go to your Nextcloud Apps page
to enable it. It can then be found in the "SSO & SAML authentication" section of your Nextcloud.
Configuring SAML 2.0
--------------------
To configure using SAML choose the "SAML authentication" in the setup wizard of the application. Then configure the application
as required by your Service Provider.
.. figure:: ./images/saml_app_overview.png
Configuring environment based authentication
--------------------------------------------
It is possible to authenticate against Nextcloud using an environment variable. This is for example relevant in case you
use an service provider incompatible with SAML such as Kerberos or don't want to configure SAML in the software yourself.
To enable that choose the "Environment variable" authentication provider in the application and then specify the environment
variable. (e.g. `REMOTE_USER` for Kerberos)
Once done you also need to protect the login route properly. On an Apache server with mod_auth_kerb the following configuration
would protect the login route:
.. code-block:: apache
<Location "/index.php/login">
AuthType Kerberos
AuthName "Kerberos Login"
KrbServiceName HTTP
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbSaveCredentials Off
KrbVerifyKDC On
KrbAuthRealms NEXTCLOUD-AD.LOCAL
Krb5KeyTab /etc/apache2/webpage.HTTP.keytab
Require valid-user
</Location>
.. warning:: If this authentication approach is used clients do require an application specific password for authentication.
A better integration into our desktop and mobile clients is considered for the future though.

View File

@ -20,6 +20,10 @@ Status codes:
* 101 - invalid input data
* 102 - username already exists
* 103 - unknown error occurred whilst adding the user
* 104 - group does not exist
* 105 - insufficient privileges for group
* 106 - no group specified (required for subadmins)
* 107 - all errors that contain a hint - for example "Password is among the 1,000,000 most common ones. Please make it unique." (this code was added in 12.0.6 & 13.0.1)
Example
^^^^^^^
@ -27,6 +31,8 @@ Example
* POST ``http://admin:secret@example.com/ocs/v1.php/cloud/users -d
userid="Frank" -d password="frankspassword"``
* Creates the user ``Frank`` with password ``frankspassword``
* optionally groups can be specified by one or more ``groups[]`` query parameters:
``URL -d groups[]="admin" -D groups[]="Team1"``
XML output
^^^^^^^^^^

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -30,7 +30,6 @@ Below is the list of apps supported for Nextcloud |version|. Supported here mean
* Gallery
* Logreader
* Lookup Server Connector
* Nextant
* Nextcloud Announcements
* Notifications
* Object Storage (Swift)
@ -46,7 +45,7 @@ Below is the list of apps supported for Nextcloud |version|. Supported here mean
* User External
* User LDAP
* User Shibboleth/SAML
* Video Calls (former Spreed)
* Talk
* WebDAV Endpoint (handles old and new webdav endpoints)
* Workflow Engine (cannot be disabled)

View File

@ -2,582 +2,4 @@
Deployment recommendations
==========================
What is the best way to install and maintain Nextcloud? The answer to that is
*"it depends"* because every Nextcloud customer has their own
particular needs and IT infrastructure. Nextcloud and the LAMP stack are
highly-configurable, so we will present three typical scenarios and make
best-practice recommendations for both software and hardware.
General recommendations
-----------------------
.. note:: Whatever the size of your organization, always keep one thing in mind:
the amount of data stored in Nextcloud will only grow. Plan ahead.
Consider setting up a scale-out deployment, or using Federated Cloud Sharing to
keep individual Nextcloud instances to a manageable size.
.. comment: Federating instances seems the best way to grow organically in
an enterprise. A lookup server to tie all the instances together under a
single domain is being worked on.
* Operating system: Linux (Ubuntu 16.04 or Red Hat Enterprise Linux 7 is recommended).
* Web server: Apache 2.4.
* Database: MySQL/MariaDB.
* PHP 5.6+. PHP 5.6 is the minimum supported version. We recommend to deploy
on PHP 7 if possible. This version is known to offer significant performance
advantages. ``mod_php`` is the recommended Apache module due to
vendor support and ease of configuration. ``php-fpm`` with Apache Event
MPM (or nginx) is an alternative with potentially better scalability in
high load and limited RAM environments. For the best results we recommend
working with the Nextcloud GmbH enterprise support team for large deployments.
.. comment: mod_php is easier to set up, php-fpm with apache event MPM seems to
scale better under load and limited RAM restrictions:
http://blog.bitnami.com/2014/06/performance-enhacements-for-apache-and.html
Small workgroups or departments
-------------------------------
* Number of users
Up to 150 users.
* Storage size
100 GB to 10TB.
* High availability level
Zero-downtime backups via Btrfs snapshots, component failure leads to
interruption of service. Alternate backup scheme on other filesystems:
nightly backups with service interruption.
Recommended system requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
One machine running the application server, Web server, database server and
local storage.
Authentication via an existing LDAP or Active Directory server.
.. figure:: images/deprecs-1.png
:alt: Network diagram for small enterprises.
.. comment:
https://yuml.me
[web server|DB; local storage]->[LDAP]
* Components
One server with at least 2 CPU cores, 16GB RAM, local storage as needed.
* Operating system
Enterprise grade Linux distribution with full support from OS vendor. Red
Hat Enterprise Linux or Ubuntu 16.04 are recommended.
* SSL Configuration
The SSL termination is done in Apache. A standard SSL certificate is
needed, installed according to the Apache documentation.
* Load Balancer
None.
* Database
MySQL, MariaDB or PostgreSQL. We currently recommend MySQL / MariaDB, as our
customers have had good experiences when moving to a Galera cluster to
scale the DB.
* Backup
Install Nextcloud, Nextcloud data directory and database on Btrfs filesystem.
Make regular snapshots at desired intervals for zero downtime backups.
Mount DB partitions with the "nodatacow" option to prevent fragmentation.
Alternatively, make nightly backups with service interruption:
* Shut down Apache.
* Create database dump.
* Push data directory to backup.
* Push database dump to backup.
* Start Apache.
Then optionally rsync to a backup storage or tape backup. (See the
`Maintenance`_ section of the Administration manual for tips on backups
and restores.)
* Authentication
User authentication via one or several LDAP or Active Directory servers. (See
`User Authentication with LDAP`_ for information on configuring Nextcloud to
use LDAP and AD.)
* Session Management
Local session management on the application server. PHP sessions are stored
in a tmpfs mounted at the operating system-specific session storage
location. You can find out where that is by running ``grep -R
'session.save_path' /etc/php5`` and then add it to the ``/etc/fstab`` file,
for example:
``echo "tmpfs /var/lib/php5/pool-www tmpfs defaults,noatime,mode=1777 0 0"
>> /etc/fstab``.
* Memory Caching
A memcache speeds up server performance, and Nextcloud supports four
memcaches; refer to `Configuring Memory Caching`_ for information on
selecting and configuring a memcache.
* Storage
Local storage.
Mid-sized enterprises
---------------------
* Number of users
150 to 1,000 users.
* Storage size
Up to 200TB.
* High availability level
Every component is fully redundant and can fail without service interruption.
Backups without service interruption
Recommended system requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 to 4 application servers.
A cluster of two database servers.
Storage on an NFS server.
Authentication via an existing LDAP or Active Directory server.
.. figure:: images/deprecs-2.png
:alt: Network diagram for mid-sized enterprise.
.. comment:
https://yuml.me
[load balancer]->[web server 1]
[load balancer]->[web server 2]
[web server 1]->[NFS]
[web server 2]->[NFS]
[web server 1]->[LDAP]
[web server 2]->[LDAP]
[web server 1]->[Redis]
[web server 2]->[Redis]
[web server 1]->[DB master]
[web server 2]->[DB master]
[web server 1]->[DB slave]
[web server 2]->[DB slave]
[DB master]->[DB slave]
* Components
* 2 to 4 application servers with 4 sockets and 32GB RAM.
* 2 DB servers with 4 sockets and 64GB RAM.
* 1 HAproxy load balancer with 2 sockets and 16GB RAM.
* NFS storage server as needed.
* Operating system
Enterprise grade Linux distribution with full support from OS vendor. Red
Hat Enterprise Linux or Ubuntu 16.04 are recommended.
* SSL Configuration
The SSL termination is done in the HAProxy load balancer. A standard SSL
certificate is needed, installed according to the `HAProxy documentation`_.
* Load Balancer
HAProxy running on a dedicated server in front of the application servers.
Sticky session needs to be used because of local session management on the
application servers.
.. comment: (please add configuration details here)
.. comment: why sticky sessions? the nice thing about haproxy is that it can
send requests to the application server with the least load. redis or
memcached seem more appropriate. this is mid size already. the software
stack should be the same as for L`_
Frank: Yes. But this only works if haproxy can read the http stream which
means that we have to terminate SSL in the haproxy instead of the Web server.
Totally possible. Whatever you prefer :-)
Jörn: AFAIK you need to do SSL offloading to do sticky sessions, because the
load balancer has to look into the http stream or rely on the client IP to
determine the Web server for the session. Not doing SSL offloading instead
requires you to use a shared session (via memcached or redis) because the
requests are distributed via round robin or least load. It allows you to
scale out the ssl load by adding more applicaton servers. So ... I think it
is exactly the other way round.
* Database
MySQL/MariaDB Galera cluster with master-slave replication. The slave is
only used as failover in case the master is down. This could be extended
with a load balancer infront to distribute writes to the master and reads
to the slave as well. (see "Database load balancer" below)
* Backup
Minimum daily backup without downtime. All MySQL/MariaDB statements should
be replicated to a backup MySQL/MariaDB slave instance.
* Create a snapshot on the NFS storage server.
* At the same time stop the MySQL replication.
* Create a MySQL dump of the backup slave.
* Push the NFS snapshot to the backup.
* Push the MySQL dump to the backup.
* Delete the NFS snapshot.
* Restart MySQL replication.
* Authentication
User authentication via one or several LDAP or Active Directory servers.
(See `User Authentication with LDAP`_ for information on configuring
Nextcloud to use LDAP and AD.)
* LDAP
Read-only slaves should be deployed on every application server for
optimal scalability
* Session Management
Session management on the application server. PHP sessions are stored
in a tmpfs mounted at the operating system-specific session storage
location. You can find out where that is by running ``grep -R
'session.save_path' /etc/php5`` and then add it to the ``/etc/fstab`` file,
for example:
``echo "tmpfs /var/lib/php5/pool-www tmpfs defaults,noatime,mode=1777 0 0"
>> /etc/fstab``.
* Memory Caching
A memcache speeds up server performance, and Nextcloud supports four
memcaches; refer to `Configuring Memory Caching`_ for information on
selecting and configuring a memcache.
* Storage
Use an off-the-shelf NFS solution, such as IBM Elastic Storage or RedHat
Ceph.
Large enterprises and service providers
---------------------------------------
* Number of users
5,000 to >100,000 users.
* Storage size
Up to 1 petabyte.
* High availabily level
Every component is fully redundant and can fail without service interruption.
Backups without service interruption
Recommended system requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 to 20 application/Web servers.
A cluster of two or more database servers which are behind a load balancer to
send all writes to the master and reads to the slaves. (see "Database load balancer"
below)
Storage is an NFS server, or an object store that is S3 compatible.
Cloud federation for a distributed setup over several data centers.
Authentication via an existing LDAP or Active Directory server, or SAML.
.. figure:: images/deprecs-3.png
:alt: Network diagram for large enterprise.
.. comment:
https://yuml.me
[load balancer 1]->[web server 1|local LDAP slave]
[load balancer 1]->[web server 2|local LDAP slave]
[load balancer 1]->[web server 3|local LDAP slave]
[load balancer 1]->[web server 4|local LDAP slave]
[load balancer 2]->[web server 1]
[load balancer 2]->[web server 2]
[load balancer 2]->[web server 3]
[load balancer 2]->[web server 4]
[web server 1]->[NFS]
[web server 2]->[NFS]
[web server 3]->[NFS]
[web server 4]->[NFS]
[web server 1]->[LDAP]
[web server 2]->[LDAP]
[web server 3]->[LDAP]
[web server 4]->[LDAP]
[web server 1]->[Redis 1]
[web server 2]->[Redis 1]
[web server 3]->[Redis 1]
[web server 4]->[Redis 1]
[web server 1]->[Redis 2]
[web server 2]->[Redis 2]
[web server 3]->[Redis 2]
[web server 4]->[Redis 2]
[Redis 1]->[Redis 2]
[Redis 2]->[Redis 1]
[web server 1]->[DB load balancer]
[web server 2]->[DB load balancer]
[web server 3]->[DB load balancer]
[web server 4]->[DB load balancer]
[DB load balancer]->[DB master]
[DB load balancer]->[DB slave 1]
[DB load balancer]->[DB slave 2]
[DB load balancer]->[DB slave 3]
[DB master]->[DB slave 1]
[DB master]->[DB slave 2]
[DB master]->[DB slave 3]
* Components
* 4 to 20 application servers with 4 sockets and 64GB RAM.
* 4 DB servers with 4 sockets and 128GB RAM plus a DB load balancer
(see "Database load balancer" below)
* 2 load balancer - either HAProxy with keepalived (heartbeat) and a shared
virutal IP address as a software solution or a hardware load balancer. For
the HAProxy we recommend at least 2 sockets and 16GB RAM each.
* NFS storage server as needed.
* Operating system
Enterprise grade Linux distribution with full support from OS vendor. Red
Hat Enterprise Linux or Ubuntu 16.04 are recommended.
* SSL Configuration
The SSL termination is done in the load balancer. A standard SSL certificate
is needed, installed according to the load balancer documentation.
* Load Balancer
A redundant load-balancer with heartbeat, for example `HAProxy`_.
This runs two load balancers in front of the application servers.
* Database
MySQL/MariaDB Galera Cluster with master - slave replication (master & 3 slaves).
The load balancer infront distributes writes to the master and reads to the
slaves. (see "Database load balancer" below)
* Backup
Minimum daily backup without downtime. All MySQL/MariaDB statements should
be replicated to a backup MySQL/MariaDB slave instance.
* Create a snapshot on the NFS storage server.
* At the same time stop the MySQL replication.
* Create a MySQL dump of the backup slave.
* Push the NFS snapshot to the backup.
* Push the MySQL dump to the backup.
* Delete the NFS snapshot.
* Restart MySQL replication.
* Authentication
User authentication via one or several LDAP or Active Directory
servers, or SAML/Shibboleth. (See `User Authentication with LDAP`_.)
* LDAP
Read-only slaves should be deployed on every application server for
optimal scalability.
* Session Management
Redis should be used for the session management storage.
* Caching
Redis for distributed in-memory caching (see `Configuring Memory
Caching`_).
* Storage
An off-the-shelf NFS solution should be used. Examples are IBM Elastic
Storage or RedHAT Ceph. Optionally, an S3 compatible object store can also
be used.
Hardware considerations
-----------------------
* Solid-state drives (SSDs) for I/O.
* Separate hard disks for storage and database, SSDs for databases.
* Multiple network interfaces to distribute server synchronisation and backend
traffic across multiple subnets.
Single machine / scale-up deployment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The single-machine deployment is widely used in the community.
Pros:
* Easy setup: no session storage daemon, use tmpfs and memory caching to
enhance performance, local storage.
* No network latency to consider.
* To scale buy a bigger CPU, more memory, larger hard drive, or additional hard
drives.
Cons:
* Fewer high availability options.
* The amount of data in Nextcloud tends to continually grow. Eventually a
single machine will not scale; I/O performance decreases and becomes a
bottleneck with multiple up- and downloads, even with solid-state drives.
Scale-Out deployment
^^^^^^^^^^^^^^^^^^^^
Provider setup:
* DNS round robin to HAProxy servers (2-n, SSL offloading, cache static
resources)
* Least load to Apache servers (2-n)
* Memcached/Redis for shared session storage (2-n)
* Database cluster with single Master, multiple slaves and proxy to split
requests accordingly (2-n) - `MaxScale`_ is a possible proxy
solutions to load balance the writes to the master and reads to the slaves
(see "Database load balancer" below)
* GPFS or Ceph via phprados (2-n, 3 to be safe, Ceph 10+ nodes to see speed
benefits under load)
Pros:
* Components can be scaled as needed.
* High availability.
* Test migrations easier.
Cons:
* More complicated to setup.
* Network becomes the bottleneck (10GB Ethernet recommended).
* Currently DB filecache table will grow rapidly, making migrations painful in
case the table is altered.
What about Nginx / PHP-FPM?
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Could be used instead of HAproxy as the load balancer.
But on uploads stores the whole file on disk before handing it over to PHP-FPM.
A single master DB is single point of failure, does not scale
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When master fails another slave can become master.
A multi-master setup with Galera cluster is not supported, because we require
``READ-COMMITTED`` as transaction isolation level. `Galera doesn't support this
with a master-master replication`_ which will lead to deadlocks during uploads
of multiple files into one directory for example.
Database load balancer
^^^^^^^^^^^^^^^^^^^^^^
When Galera cluster is used as DB cluster solution, we recommend to use
`MaxScale`_ as load balancer infront of the cluster to distribute writes to
the master node and reads to the slaves.
Software considerations
-----------------------
Operating system
^^^^^^^^^^^^^^^^
We are dependent on distributions that offer an easy way to install the various
components in up-to-date versions. We recommend Red Hat Enterprise Linux 7 or
Ubuntu 16.04 - for both commercial support can be purchased. Debian
and Ubuntu are free of cost, and include newer software packages. CentOS is the
community-supported free-of-cost Red Hat Enterprise Linux clone.
Web server
^^^^^^^^^^
Taking Apache and Nginx as the contenders, Apache with mod_php is currently the
best option, as Nginx does not support all features necessary for enterprise
deployments. Mod_php is recommended instead of PHP_FPM, because in scale-out
deployments separate PHP pools are simply not necessary.
Relational database
^^^^^^^^^^^^^^^^^^^
More often than not the customer already has an opinion on what database to
use. In general, the recommendation is to use what their database administrator
is most familiar with. Taking into account what we are seeing at customer
deployments, we recommend MySQL/MariaDB in a master - slave deployment with a
MySQL proxy in front of them to send updates to master, and selects to the
slave(s). (see "Database load balancer" above)
.. comment: MySQL locks tables for schema updates and might even have to copy
the whole table. That is pretty much a non-starter for migrations unless you
are using a scale out deployment where you can apply the schema changes to
each slave individually. Even then each migration might take several hours.
Make sure you have enough disk space. You have been warned.
.. comment: By default Nextcloud uses the utf8 character set with utf8_bin
collation on MySQL installations. As a result 4 byte UTF characters like
emojis cannot be used. See the config.php option ``'mysql.utf8mb4'`` to
switch to 4 byte UTF characters on MySQL.
The second best option is PostgreSQL (alter table does not lock table, which
makes migration less painful) although we have yet to find a customer who uses a
master-slave setup.
.. comment: PostgreSQL may produce excessive amounts of dead tuples due to
Nextcloud transactions preventing the execution of the autovacum process.
What about the other DBMS?
* SQLite is adequate for simple testing, and for low-load single-user
deployments. It is not adequate for production systems.
* Microsoft SQL Server is not a supported option.
* For Oracle DB support please `contact the Nextcloud team`_ to get more
information on this.
File Storage
------------
While many customers are starting with NFS, sooner or later that requires scale-out storage. Currently the options are GPFS or GlusterFS, or an object store protocol like S3 or Swift. S3 also allows access to Ceph Storage.
.. comment: A proof of concept implementation based on
[phprados](https://github.com/ceph/phprados) that talks directly to a
[ceph](http://ceph.com/) cluster without having to use temp files is [in
development](https://github.com/owncloud/objectstore/pull/26).
.. comment: NFS can be used but needs to be micro-managed to distribute users
on multiple storages. If you want to go that route configure ldap to provide
a custom home folder location. That allows you to move each users data
folder to different nfs mounts.
Session Storage
---------------
* Redis: provides persistence, nice graphical inspection tools available,
supports Nextcloud high-level file locking.
* If Shibboleth is a requirement you must use Memcached, and it can also be
used to scale-out shibd session storage (see `Memcache StorageService`_).
.. comment: High Availability / Failover deployment
Use Case: site replication -> different problem
References
----------
`Database High Availability`_
`Performance enhancements for Apache and PHP`_
`How to Set Up a Redis Server as a Session Handler for PHP on Ubuntu 14.04`_
.. TODO ON RELEASE: Update version number below on release
.. _Maintenance:
https://docs.nextcloud.org/server/12/admin_manual/maintenance/index.html
.. _User Authentication with LDAP:
https://docs.nextcloud.org/server/12/admin_manual/configuration_user/user_auth_ldap.html
.. _Configuring Memory Caching:
https://docs.nextcloud.org/server/12/admin_manual/configuration_server/caching_configuration.html
.. _Nextcloud Server or Enterprise Edition:
https://nextcloud.com/enterprise/
.. _Memcache StorageService:
https://wiki.shibboleth.net/confluence/display/SHIB2/
NativeSPStorageService#NativeSPStorageService-MemcacheStorageService
.. _Database High Availability:
http://www.severalnines.com/blog/become-mysql-dba-blog-series-database-high-
availability
.. _Performance enhancements for Apache and PHP:
http://blog.bitnami.com/2014/06/performance-enhacements-for-apache-and.html
.. _How to Set Up a Redis Server as a Session Handler for PHP on Ubuntu 14.04:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-redis-server
-as -a-session-handler-for-php-on-ubuntu-14-04
.. _HAProxy documentation:
http://www.haproxy.org/#docs
.. _Galera doesn't support this with a master-master replication:
http://galeracluster.com/documentation-webpages/isolationlevels.html#understanding-isolation-levels
.. _contact the Nextcloud team:
https://nextcloud.com/contact/
.. _MaxScale:
https://mariadb.com/products/mariadb-maxscale
.. _HAProxy:
http://www.haproxy.org/
Find up-to-date deployment recommendations for enterprises in our `customer portal. <https://portal.nextcloud.com/article/nextcloud-deployment-recommendations-7.html>`

View File

@ -423,14 +423,15 @@ variables in the appropropriate ``php-fpm`` ini/config file.
Here are some example root paths for these ini/config files:
+--------------------+-----------------------+
| Ubuntu/Mint | CentOS/Red Hat/Fedora |
+--------------------+-----------------------+
| ``/etc/php5/fpm/`` | ``/etc/php-fpm.d/`` |
+--------------------+-----------------------+
+-----------------------+-----------------------+
| Ubuntu/Mint | CentOS/Red Hat/Fedora |
+-----------------------+-----------------------+
| ``/etc/php5/fpm/`` or | ``/etc/php-fpm.d/`` |
| ``/etc/php/7.0/fpm/`` | |
+-----------------------+-----------------------+
In both examples, the ini/config file is called ``www.conf``, and depending on
the distro version or customizations you have made, it may be in a subdirectory.
the distro version or customizations you have made, it may be in a subdirectory such as ``pool.d``.
Usually, you will find some or all of the environment variables
already in the file, but commented out like this::

View File

@ -35,6 +35,7 @@ Working platforms
* Mobile apps: iOS 9+ (10+ for Talk), Android 4.x+ (5.0+ for Talk)
* Web browser: Recent version of IE11+, Microsoft Edge, Firefox, Chrome, Safari or browers based on those. Talk requires Firefox 31+ and Chrome38+
See :doc:`source_installation` for minimum software versions for installing
Nextcloud. If you encounter problems, visit the `home user forums <https://help.nextcloud.com>`
or `enterprise support portal <https://portal.nextcloud.com.>`
@ -44,9 +45,9 @@ Database requirements for MySQL / MariaDB
The following is currently required if you're running Nextcloud together with a MySQL / MariaDB database:
* Disabled or BINLOG_FORMAT = MIXED configured Binary Logging
* InnoDB storage engine (MyISAM is not supported)
* "READ COMMITED" transaction isolation level (See: :ref:`db-transaction-label`)
* Disabled or BINLOG_FORMAT = ROW configured Binary Logging (See: https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html)
Emoji (UTF8 4-byte) support with MySQL / MariaDB
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -9,7 +9,6 @@ refer to our community support channels:
The Nextcloud forums have a `FAQ page`_ where each topic corresponds
to typical mistakes or frequently occurring issues
* `The Nextcloud forums`_
* The Nextcloud IRC chat channel ``irc://#nextcloud@freenode.net`` on
freenode.net, also accessible via `webchat`_

View File

@ -39,7 +39,7 @@ Update notifications
--------------------
Nextcloud has an update notification app, that informs the administrator about
the availablilty of an update. Then you decide which update method to use.
the availability of an update. Then you decide which update method to use.
.. figure:: images/2-updates.png
:alt: Both update notifications displayed on Admin page.
@ -91,3 +91,22 @@ Change ``"maintenance" => false`` to ``"maintenance" => true``:
"maintenance" => true,
Then change it back to ``false`` when you are finished.
Manual steps during upgrade
---------------------------
Some operation can be quite time consuming. Therefore we decided not to add them
the the normal upgrade process. We recommend to run them manually after the upgrade
was completed. Below you find a list of this commands.
Upgrading to Nextcloud 13
^^^^^^^^^^^^^^^^^^^^^^^^^
With Nextcloud 13 we added a new index to the share table which should result in
significant performance improvements::
$ sudo -u www-data php occ db:add-missing-indice
With Nextcloud 13 we switched to bigint for the file ID's in the file cache table::
$ sudo -u www-data php occ db:convert-filecache-bigint

View File

@ -1,92 +0,0 @@
============================
Considerations on monitoring
============================
.. toctree::
:maxdepth: 2
:hidden:
Large scale Nextcloud deployments are typically installed as load balanced
n-tier web applications. Successfully managing such an installation requires
active monitoring of the application and supporting infrastructure components.
The purpose of this section is to outline the components of Nextcloud that need
to be monitored, and provide guidance on what to look for in Nextcloud in an
enterprise installation.
Nextcloud deployment architecture
---------------------------------
Before discussing how to monitor Nextcloud, it is important to understand the architecture of a
typical Nextcloud deployment. These monitoring best practices are developed based on the use of load
balanced Web servers, a clustered database running a distributed database storage engine, such as
MySQL NDB, and a clustered filesystem, such as Red Hat Storage.
It is assumed that specific enterprise tools (monitoring, log management, etc) to monitor
operations are available, and that Nextcloud is simply a new target for these tools.
The important components of Nextcloud
-------------------------------------
Nextcloud is a PHP application that depends on a filesystem for file storage, and a database for storing
user and file meta data, as well as some application specific information.
While the loss of an app server or a node in the database or storage clusters should not bring the
system down, knowing that this happened and resolving it is essential to keeping the service running
efficiently. Therefore it is important to monitor the Nextcloud servers, the Load Balancer, the Storage
Cluster and the Database. This documentation starts with the Nextcloud application and works out from
there through the layers of infrastructure.
Status.php
^^^^^^^^^^
Nextcloud provides a very simple mechanism for determining if an application server is up and functioning
call the status.php file on each Nextcloud server. This file can be found in the root Nextcloud directory on
the server, which by default is /status.php. If the server is functioning normally, the response
looks something like this:
::
{"installed":"true","version":"6.0.0.16","versionstring":"6.0.1","edition":""}
We recommend monitoring this file on each Nextcloud application server to provide a basic check that the
server is operating properly.
Nextcloud.log
^^^^^^^^^^^^^
Nextcloud also provides a built in logging function. If the Nextcloud logging application
is enabled, this file will track user logins and shared file activity. If these logging applications are
not enabled, this log file still tracks basic Nextcloud health. Given the potential for this file to get
quite large, the log file should be rotated on a daily basis, and given the importance of the error information
in the log file, this should be integrated with an enterprise log manager.
Logfile entries that start with the keyword “Error” should be logged and reported to Nextcloud support.
**Apache**
The apache error and access log should also be monitored. Significant spontaneous changes of the number
of requests per second should also be monitored and looked into.
**Database server**
The load and general health of the database server or cluster has to be monitored also.
All mysql vendors provide tools to monitor this.
Clustered filesystem
^^^^^^^^^^^^^^^^^^^^
The available space of the filesystem should be monitored to prevent a full Nextcloud. This functionality is
provided by the operating-system and/or the cluster filesystem vendor.
Load balancer
^^^^^^^^^^^^^
The load balancer is monitoring the health of the application servers and is distributing the traffic in
the optimal way. The application-servers should also be monitored to detect long lasting OS or
hardware problems. Monitoring solutions like Nagios provide built in functionality to do this.

View File

@ -1,13 +0,0 @@
==========
Operations
==========
Advanced operation including monitoring, scaling across multiple machines, and
creating a custom theme for your Nextcloud server.
.. toctree::
:maxdepth: 2
considerations_on_monitoring
scaling_multiple_machines.rst

View File

@ -1,141 +0,0 @@
================================
Scaling across multiple machines
================================
.. toctree::
:maxdepth: 2
:hidden:
This document will cover the reference architecture for the Nextcloud Scale Out
model for a single datacenter implementation. The document will focus on the
three main elements of an Nextcloud deployment:
* Application layer
* Database Layer
* Storage Layer
At each layer the goal is to provide the ability to scale, and providing a high
availability while maintaining the needed level of performance.
Application layer
-----------------
For the application layer of this reference architecture we used Oracle
Enterprise Linux as the front end servers to host the Nextcloud code. In this
instance we made ``httpd`` a permissive domain, allowing it to operate within the
SELinux environment. In this example we also used the standard directory
structure placing the Nextcloud code in the Apache root directory. The
following components were installed on each application server:
* Apache
* PHP 5.6.x
* PHP-GD
* PHP-XML
* PHP-MYSQL
* PHP-CURL
Also required is the PHP smbclient module or smbclient (see
:doc:`../configuration_files/external_storage/smb`).
It is also worth mentioning that the appropriate exceptions where made in the
firewall to allow the Nextcloud traffic (for the purpose of testing we
enable both encrypted SSL via port 443 and unencrypted via port 80).
The next step was to generate and import the needed SSL certificates following
the standard process in the OEL documentation.
The next step is to create a scalable environment at the application layer,
which introduces the load balancer. Because the application servers here are
stateless, simply taking the configuration above and replicating (once
configured with storage and database connections) and placing behind a load
balancer will provide a scalable and highly available environment.
For this purpose we chose HAProxy and configured it for HTTPS traffic following
the documentation found here `http://haproxy.1wt.eu/#doc1.5
<http://haproxy.1wt.eu/#doc1.5>`_
It is worth noting that this particular load balancer is not required, and the use of
any commercial load balancer (i.e. F5) will work here. It is also worth noting
that the HAProxy servers were setup with a heartbeat and IP Shift to failover
the IP address should one fail.
.. image:: ../images/scaling-1.png
:width: 3.4937in
:height: 4.5134in
.. Session Management (this section is a WIP pending testing based on customer feedback).
.. The load balancer is to be configured to spread the workload across the various
.. Nextcloud application servers, with details to be filled in around session
.. management upon further testing.
Database layer
--------------
For the purposes of this example, we have chosen a MySQL cluster using the NDB
Storage engine. The cluster was configured based on the documentation found
here `http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html
<http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html>`_ with a sample
looking like this:
.. image:: ../images/scaling-2.png
:width: 6in
:height: 3.0673in
Taking a closer look at the database architecture, we have created redundant
MySQL NDB Management nodes for redundancy and we have configured 3 NDB
SQL/Storage nodes across which we are able to spread the database traffic. All
of the clients (Nextcloud Application Servers) will connect to the database via
the My SQL Proxy. It is worth noting that MySQL proxy is still in beta and that using
another load balancing method like HAProxy or F5 is supported, in that you will
be distributing traffic among the various SQL/Storage nodes. Here, we simply
swap out the MySQL Proxy for a properly configured HAProxy giving us the
following:
.. image:: ../images/scaling-3.png
:width: 6in
:height: 0.7311in
In this example we have also added a second HAProxy server with Heartbeat to prevent any single point of failure.
We have also implemented NIC bonding to load balance the traffic across multiple physical NICs.
Storage layer
-------------
Storage was deployed using the Red Hat Storage server with the GlusterFS
(pre-configured as part of the Red Hat Storage Server offering).
The Red Hat Storage Servers where configured based on documentation found here
`https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/Admin_Guide_Part_1.html
<https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/Admin_Guide_Part_1.html>`_
For the purposes of scale and high availability we configured a distributed
replicated volume with IP Failover. The storage was configured on a separate
subnet with bonded NICs at the application server level. We have chosen to
address the storage using NFS, and for high availability we have chosen to
implement IP Failover of the storage as documented here
`https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/ch09s04.html
<https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/ch09s04.html>`_
.. image:: ../images/scaling-4.png
:width: 3.8693in
:height: 3.6272in
We chose to deploy the storage in this fashion to address both HA and
extensibility of the storage, along with managing performance by simply adding
additional bricks to the storage volume, back-ended by additional physical
disk.
It is worth noting that several options are available for storage configuration
(such as striped replicated volumes). A discussion around the type of IO
performance required and the needed HA configuration needs to take place to
understand the best possible option here.
If we add up the parts, we have the following:
* An application layer that supports dynamic expansion through the addition of additional servers and provides HA behind a load balancer
* A database layer that can also be scaled through the addition of additional SQL/Storage nodes and will provide HA behind a load balancer
* A storage layer that can dynamically expand to meet storage needs, will scale based on backend hardware, and provides HA via IP Failover
.. image:: ../images/scaling-5.png
:width: 4.4937in
:height: 5.2134in

View File

@ -1,6 +1,13 @@
{
"minimum-stability": "dev",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/juliushaertl/reflection.git"
}
],
"require": {
"juliushaertl/phpdoc-to-rst": "dev-master"
"juliushaertl/phpdoc-to-rst": "dev-php7.0",
"phpdocumentor/reflection": "dev-php7.0"
}
}

View File

@ -39,6 +39,6 @@ $apiDocBuilder = new ApiDocBuilder($nextcloudSource, $destinationDirectory);
$apiDocBuilder->setVerboseOutput(true);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors::class);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\NoPrivateExtension::class);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::class, [__DIR__ . '/server/', 'https://github.com/nextcloud/server', 'master']);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::class, [__DIR__ . '/server/', 'https://github.com/nextcloud/server', 'stable13']);
$apiDocBuilder->build();

14
conf.py
View File

@ -1,9 +1,15 @@
# global configuration for every documentation added at the end
import os
import os, sys, datetime
dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.abspath(dir_path + '/_ext'))
now = datetime.datetime.now()
extensions = ['edit_on_github']
# General information about the project.
copyright = u'2012-2017, The Nextcloud developers'
copyright = str(now.year) + ' Nextcloud GmbH'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@ -14,7 +20,6 @@ version = '13'
# The full version, including alpha/beta/rc tags.
release = '13'
# substitutions go here
rst_epilog = '.. |version| replace:: %s' % version
@ -22,3 +27,6 @@ html_context = {
'doc_versions': ['11', '12', '13'],
'current_doc': os.path.basename(os.getcwd()),
}
edit_on_github_project = 'nextcloud/documentation'
edit_on_github_branch = 'master'

View File

@ -10,13 +10,19 @@ The CSS files reside in the **css/** folder and should be included in the templa
<?php
// include one file
style('myapp', 'style'); // adds css/style.css
style('myapp', 'style'); // adds css/style.(s)css
// include multiple files for the same app
style('myapp', array('style', 'navigation')); // adds css/style.css, css/navigation.css
style('myapp', array('style', 'navigation')); // adds css/style.(s)css, css/navigation.(s)css
// include vendor file (also allows array syntax)
vendor_style('myapp', 'style'); // adds vendor/style.css
vendor_style('myapp', 'style'); // adds vendor/style.(s)css
.. note:: Since the version 12 of Nextcloud, we support ``SCSS`` natively.
You can migrate your files by simply renaming your ``.css`` files to ``.scss``.
The server will automatically compile, cache and and serve it.
The priority goes to the scss file. So having two file with the same name and a ``scss`` & ``css`` extension
will ensure a retro compatibility with <12 versions as scss files will be ignored by the server.
Web Components go into the **component/** folder and can be imported like this:

View File

@ -832,7 +832,10 @@ To do that create a new file called **ownnotes/tests/Integration/NoteIntegration
use OCA\OwnNotes\Db\Note;
class NoteIntregrationTest extends TestCase {
/**
* @group DB
*/
class NoteIntegrationTest extends TestCase {
private $controller;
private $mapper;

View File

@ -0,0 +1,56 @@
.. _loginflowindex:
==========
Login Flow
==========
This document provides a quick overview of the new login flow that should be used by clients to obtain
login credentials. This will assure that each client gets it own set of credentials. This has several advantages:
1. The client never stores the password of the user
2. The user can revoke on a per client basis from the web
Opening the webview
-------------------
The client should open a webview to :code:`<server>/index.php/login/flow`. Be sure to set the :code:`OCS-APIREQUEST`
header to :code:`true`.
The client will register an URL handler to catch urls of the :code:`nc` protocol. This is required to obtain the
credentials in the final stage.
This should be a one time webview. Which means:
* There should be no cookies set when creating the webview
* Passwords should not be stored
* No state should be preserved after the webview has terminated
To have a good user experince please consider the following things:
* set a proper :code:`ACCEPT_LANGUAGE` header
* set a proper :code:`USER_AGENT` header
Login in the user
-----------------
The user will now see a webpage telling them they will grant access to :code:`USER_AGENT`. When they follow the steps
they will be asked to login. If they have two factor authentication enabled they will require this to login. But since
this is all in the webview itself the client does not need to care about this.
Obtaining the login credentials
-------------------------------
On the final login the server will do a redirect to a url of the following format:
.. code::
nc://login/server:<server>&user:<username>&password:<password>
* server: The address of the server to connect to. The server may specify a protocol (http or https). If no protocol is specified the client will assume https.
* username: The username that the client must use to login
* password: The password that the client must use to login and store securely
This information will be used by the client to create a new account.
After this the webview is destroyed including all the state the webview holds.
.. note:: On Nextcloud 12 the returned server is just the server address without any possible subfolder. This is corrected in Nextcloud 13.

View File

@ -91,7 +91,7 @@ The following properties are supported:
- :code:`{http://owncloud.org/ns}owner-display-name` The display name of the owner of a shared file
- :code:`{http://owncloud.org/ns}share-types`
- :code:`{http://owncloud.org/ns}checksums`
- :code:`{http://owncloud.org/ns}has-preview`
- :code:`{http://nextcloud.org/ns}has-preview`
- :code:`{http://owncloud.org/ns}size` Unlike :code:`getcontentlength`, this property also works for folders reporting the size of everything in the folder.
Getting properties for just the folder

View File

@ -0,0 +1,215 @@
.. _webdavsearch:
==================
WebDAV Search
==================
Nextcloud implements rfc5323_ WebDAV search to allow clients to search for files on the server.
WebDAV search allows for fairly complex search queries with filtering and sorting on multiple properties.
This document describes how to use WebDAV search with a Nextcloud server and provides some example queries,
full details of the api can be found at rfc5323_.
Making search requests
----------------------
Search requests can be made by sending a :code:`SEARCH` http request to :code:`cloud.example.com/remote.php/dav`
with a content type of :code:`text/xml` and the query as xml in the request body.
For example, to search for text files for the user 'test':
.. code-block:: bash
curl -u username:password 'https://cloud.example.com/remote.php/dav/files/username/folder' -X SEARCH -u test:test -H "content-Type: text/xml" --data '<?xml version="1.0" encoding="UTF-8"?>
<d:searchrequest xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:basicsearch>
<d:select>
<d:prop>
<oc:fileid/>
<d:displayname/>
<d:getcontenttype/>
<d:getetag/>
<oc:size/>
</d:prop>
</d:select>
<d:from>
<d:scope>
<d:href>/files/test</d:href>
<d:depth>infinity</d:depth>
</d:scope>
</d:from>
<d:where>
<d:like>
<d:prop>
<d:getcontenttype/>
</d:prop>
<d:literal>text/%</d:literal>
</d:like>
</d:where>
<d:orderby/>
</d:basicsearch>
</d:searchrequest>'
Supported DAV properties
------------------------
The following DAV properties are supported for use in either :code:`select`, :code:`where` and :code:`orderby`,
not all properties can be used for each operation.
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| Property name | Description | Selectable | Searchable | Sortable | Type |
+==============================================+=================================+============+============+==========+==========+
| {DAV:}displayname | File name | ✓ | ✓ | ✓ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {DAV:}getcontenttype | Mime type | ✓ | ✓ | ✓ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {DAV:}getlastmodified | Modified date | ✓ | ✓ | ✓ | Datetime |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}size | File size or folder size | ✓ | ✓ | ✓ | Integer |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}favorite | Favorite status | ✓ | ✓ | ✓ | Boolean |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}fileid | Nextcloud file id | ✓ | ✓ |❌ | Integer |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {DAV:}resourcetype | File or folder | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {DAV:}getcontentlength | File size, not for folders | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}checksums | Stored checksums for the file | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}permissions | File permissions | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {DAV:}getetag | File etag | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}owner-id | File owner | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}owner-display-name | File owner display name | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://owncloud.org/ns}data-fingerprint | Fingerprint for recovery status | ✓ |❌ |❌ | String |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
| {http://nextcloud.org/ns}has-preview | Preview status | ✓ |❌ |❌ | Boolean |
+----------------------------------------------+---------------------------------+------------+------------+----------+----------+
Search scope
------------
All search queries are scoped to a single folder relative to the dav root.
At the moment only search queries for files are supported meaning the the scope should always start with :code:`files/$username`.
Inside the user's files, any existing folder can be used as search scope.
Examples search bodies
----------------------
Search for all plain text files in the folder :code:`Documents`, sorted by size.
.. code-block:: xml
<?xml version="1.0" encoding="UTF-8"?>
<d:searchrequest xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:basicsearch>
<d:select>
<d:prop>
<d:displayname/>
</d:prop>
</d:select>
<d:from>
<d:scope>
<d:href>/files/test/Documents</d:href>
<d:depth>infinity</d:depth>
</d:scope>
</d:from>
<d:where>
<d:like>
<d:prop>
<d:getcontenttype/>
</d:prop>
<d:literal>text/%</d:literal>
</d:like>
</d:where>
<d:orderby>
<d:prop>
<oc:size/>
</d:prop>
<d:ascending/>
</d:orderby>
</d:basicsearch>
</d:searchrequest>
Get a file by id.
.. code-block:: xml
<?xml version="1.0" encoding="UTF-8"?>
<d:searchrequest xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:basicsearch>
<d:select>
<d:prop>
<d:displayname/>
</d:prop>
</d:select>
<d:from>
<d:scope>
<d:href>/files/test</d:href>
<d:depth>infinity</d:depth>
</d:scope>
</d:from>
<d:where>
<d:like>
<d:prop>
<d:fileid/>
</d:prop>
<d:literal>12345</d:literal>
</d:like>
</d:where>
<d:orderby/>
</d:basicsearch>
</d:searchrequest>
Get all png and jpg files over 10MB.
.. code-block:: xml
<?xml version="1.0" encoding="UTF-8"?>
<d:searchrequest xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">
<d:basicsearch>
<d:select>
<d:prop>
<d:displayname/>
</d:prop>
</d:select>
<d:from>
<d:scope>
<d:href>/files/test</d:href>
<d:depth>infinity</d:depth>
</d:scope>
</d:from>
<d:where>
<d:and>
<d:or>
<d:eq>
<d:prop>
<d:getcontenttype/>
</d:prop>
<d:literal>image/png</d:literal>
</d:eq>
<d:eq>
<d:prop>
<d:getcontenttype/>
</d:prop>
<d:literal>image/jpg</d:literal>
</d:eq>
</d:or>
<d:gt>
<d:prop>
<oc:size/>
</d:prop>
<d:literal>10000000</d:literal>
</d:gt>
</d:and>
</d:where>
<d:orderby/>
</d:basicsearch>
</d:searchrequest>
.. _rfc5323: _https://tools.ietf.org/html/rfc5323

View File

@ -10,7 +10,8 @@ WebDAV
------
WebDAV is the main api for file related operations, it supports listing directories, downloading an uploading files, manipulating tags and favorites and more.
An overview of how to use the various WebDAV api's can be found at :doc:`WebDAV/index`
An overview of how to use the various WebDAV api's can be found at :doc:`WebDAV/index`, additionally Nextcloud implements rfc5323_ to allow searching the filesystem
more information about how to use WebDAV search can be found at :doc:`WebDAV/search`.
OCS
@ -23,11 +24,20 @@ Other OCS API documentations:
* `Notifications API <https://github.com/nextcloud/notifications/blob/master/docs/ocs-endpoint-v2.md>`_
* `Notifications API - Register a device for push notifications <https://github.com/nextcloud/notifications/blob/5a2d3607952bad675e4057620a9c7de8a7f84f0b/docs/push-v3.md>`_
.. _rfc5323: _https://tools.ietf.org/html/rfc5323
Login Flow
----------
Clients can obtain an apptoken via the login flow. See :doc:`LoginFlow/index`
.. toctree::
:maxdepth: 2
:hidden:
WebDAV/index
WebDAV/search
OCS/index
LoginFlow/index

View File

@ -29,7 +29,7 @@ from conf import *
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinxcontrib.phpdomain', 'sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
extensions += ['sphinxcontrib.phpdomain', 'sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['../_shared_assets/templates']
@ -303,6 +303,8 @@ intersphinx_mapping = {
'user_manual': ('https://docs.nextcloud.com/server/%s/user_manual/' % (version), '../user_manual/_build/html/com/objects.inv'),
}
current_docs = 'developer_manual'
from sphinx.builders.html import StandaloneHTMLBuilder
StandaloneHTMLBuilder.supported_image_types = [
'image/svg+xml',

View File

@ -53,6 +53,10 @@ The output defaults to XML. If you want to get JSON append this to the URL::
?format=json
Or set the proper Accept header::
Accept: application/json
Output from the application is wrapped inside a **data** element:
**XML**:

View File

@ -109,6 +109,8 @@ Just insert the new created picture by using the unchanged name of the old pictu
The app icons can also be overwritten in a theme. To change for example the app icon of the activity app you need to overwrite it by saving the new image to …/nextcloud/themes/default/apps/activity/img/activity.svg.
After overwriting the icons, it may be necessary to update the image cache. This is done by executing ``sudo -u www-data php occ maintenance:theme:update``
Changing favicon
^^^^^^^^^^^^^^^^

2
go.php
View File

@ -28,13 +28,13 @@ $mapping = array(
'admin-code-integrity' => '/admin_manual/issues/code_signing.html',
'admin-setup-well-known-URL' => '/admin_manual/issues/general_troubleshooting.html#service-discovery',
'admin-backup' => '/admin_manual/maintenance/backup.html',
'admin-monitoring' => '/admin_manual/operations/considerations_on_monitoring.html',
'admin-sso' => '/admin_manual/configuration_server/sso_configuration.html',
'admin-php-opcache' => '/admin_manual/configuration_server/server_tuning.html#enable-php-opcache',
'admin-mysql-utf8mb4' => '/admin_manual/configuration_database/mysql_4byte_support.html',
'admin-update' => '/admin_manual/maintenance/update.html',
'admin-theming-icons' => '/admin_manual/configuration_server/theming.html#theming-of-icons',
'developer-manual' => '/developer_manual',
'developer-code-integrity'=> '/developer_manual/app/code_signing.html',
'developer-theming' => '/developer_manual/core/theming.html',

246
index.html Normal file
View File

@ -0,0 +1,246 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Nextcloud Documentation</title>
<link rel="stylesheet" href="https://docs.nextcloud.org/server/9/user_manual/_static/main.min.css" type="text/css" />
<link rel="stylesheet" href="https://docs.nextcloud.org/server/9/user_manual/_static/styles.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '9',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/jquery.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/underscore.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/doctools.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/js/jquery-fix.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/bootstrap-3.1.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://docs.nextcloud.org/server/9/user_manual/_static/bootstrap-sphinx.js"></script>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#1d2d44">
<link rel="shortcut icon" href="https://nextcloud.com/wp-content/themes/next/assets/img/common/favicon.png" />
<link rel="apple-touch-icon-precomposed" href="https://nextcloud.com/wp-content/themes/next/assets/img/common/favicon.png" />
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//stats.nextcloud.com/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', 3]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="//stats.nextcloud.com/piwik.php?idsite=3" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
</head>
<body role="document">
<header class="banner navbar navbar-default navbar-static-top" role="banner">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="http://nextcloud.com/" rel="home" title="Nextcloud.com"><img class="logo" src="https://docs.nextcloud.org/server/9/user_manual/_static/img/logo.svg" itemprop="logo"></a>
</div>
<nav class="collapse navbar-collapse" role="navigation">
<ul id="menu-header" class="nav navbar-nav">
<li><a href="https://demo.nextcloud.com/">Demo</a></li>
<li><a href="https://nextcloud.com/news/">News</a></li>
<li><a href="https://nextcloud.com/features/">Features</a></li>
<li><a href="https://nextcloud.com/about/">About us</a></li>
<li><a href="https://nextcloud.com/contribute/">Get involved</a></li>
<li><a href="https://nextcloud.com/support/">Support</a></li>
<li><a href="https://nextcloud.com/enterprise/">Enterprise</a></li>
<li class="menu-install"><a href="https://nextcloud.com/install/">Download</a></li>
</ul>
</nav>
</div>
</header>
<div class="wrap container not-front">
<div class="content row">
<main class="main">
<div class="col-md-12">
<div class="page-content">
<div class="section" id="nextcloud-documentation-overview">
<h1>Nextcloud Documentation Overview<a class="headerlink" href="#nextcloud-documentation-overview" title="Permalink to this headline"></a></h1>
<div class="section" id="server">
<h1>Nextcloud Server<a class="headerlink" href="#server" title="Permalink to this headline"></a></h1>
<div class="section" id="getting-Nextcloud">
<p>You can download and install Nextcloud on your own Linux server, use the Web
Installer to install it on shared Web hosting, try some prefab cloud or virtual
machine images, or sign up for hosted Nextcloud services. See the
<a class="reference external" href="https://nextcloud.com/install/">Get Started</a>
page for more information.</p>
</div>
<div class="section" id="nextcloud-13">
<h2>Nextcloud 13<a class="headerlink" href="#nextcloud-13" title="Permalink to this headline"></a></h2>
<p>This documents the <em>latest production</em> version of Nextcloud.</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/server/13/user_manual/">User Manual</a>
<li><a class="reference external" href="https://docs.nextcloud.org/server/13/admin_manual/">Administration Manual</a>
<li><a class="reference external" href="https://docs.nextcloud.org/server/13/developer_manual/">Developer Manual</a>
</ul>
</div>
<div class="section" id="nextcloud-12">
<h2>Nextcloud 12<a class="headerlink" href="#nextcloud-12" title="Permalink to this headline"></a></h2>
<p>This documents the <em>previous production</em> version of Nextcloud.</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/server/12/user_manual/">User Manual</a>
<li><a class="reference external" href="https://docs.nextcloud.org/server/12/admin_manual/">Administration Manual</a>
<li><a class="reference external" href="https://docs.nextcloud.org/server/12/developer_manual/">Developer Manual</a>
</ul>
</div>
<div class="section" id="desktop">
<h1>Nextcloud Desktop Client<a class="headerlink" href="#desktop" title="Permalink to this headline"></a></h1>
<p>Once you have a Nextcloud Server running, you can connect to it with various <a class="reference external" href="https://nextcloud.com/install/#install-clients">clients like our mobile and desktop client.</a>
Find documentation for the desktop client below.</p>
<div class="section" id="desktop-23">
<h2>Desktop 2.3<a class="headerlink" href="#desktop-23" title="Permalink to this headline"></a></h2>
<p>This documents the <em>latest production</em> version of the Nextcloud desktop client.</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/desktop/2.3">Manual</a>
</ul>
</div>
<div class="section" id="desktop-22">
<h2>Desktop 2.2<a class="headerlink" href="#desktop-22" title="Permalink to this headline"></a></h2>
<p>This documents the <em>previous</em> version of the Nextcloud desktop client.
This version is no longer supported and users are encouraged to upgrade!</p>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/desktop/2.2">Manual</a>
</ul>
</div>
</div><!-- client -->
<div class="section" id="nextcloud-older">
<h1>Older Nextcloud server releases<a class="headerlink" href="#nextcloud-older" title="Permalink to this headline"></a></h1>
<p>This documents the <em>older</em> versions of Nextcloud. These releases are no longer
publicly maintained and users are strongly encouraged to upgrade to a maintained
release or get access to long term security and stability updates through a
<a href="https://nextcloud.com/enterprise">Nextcloud Subscription.</a></p>
<div class="section" id="nextcloud-11">
<h2>Nextcloud 11<a class="headerlink" href="#nextcloud-11" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/server/11/user_manual/">User Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/11/Nextcloud_User_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/11/admin_manual/">Administration Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/11/Nextcloud_Server_Administration_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/11/developer_manual/">Developer Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/11/NextcloudDeveloperManual.pdf">Download PDF</a>)</li>
</ul>
</div>
<div class="section" id="nextcloud-10">
<h2>Nextcloud 10<a class="headerlink" href="#nextcloud-10" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/server/10/user_manual/">User Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/10/Nextcloud_User_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/10/admin_manual/">Administration Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/10/Nextcloud_Server_Administration_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/10/developer_manual/">Developer Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/10/NextcloudDeveloperManual.pdf">Download PDF</a>)</li>
</ul>
</div>
<div class="section" id="nextcloud-9">
<h2>Nextcloud 9<a class="headerlink" href="#nextcloud-9" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference external" href="https://docs.nextcloud.org/server/9/user_manual/">User Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/9/Nextcloud_User_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/9/admin_manual/">Administration Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/9/Nextcloud_Server_Administration_Manual.pdf">Download PDF</a>)</li>
<li><a class="reference external" href="https://docs.nextcloud.org/server/9/developer_manual/">Developer Manual</a>
(<a class="reference external" href="https://docs.nextcloud.org/server/9/NextcloudDeveloperManual.pdf">Download PDF</a>)</li>
</ul>
</div>
</div>
</div><!-- server -->
<div class="section" id="reporting-documentation-bugs-how-to-contribute">
<h2>Reporting Documentation Bugs &amp; How to Contribute<a class="headerlink" href="#reporting-documentation-bugs-how-to-contribute" title="Permalink to this headline"></a></h2>
<p>If you find an error or omission in any of the manuals, we welcome your bug
reports and contributions. Contribution to the documentation is very easy as
the code is entirely <a href="https://github.com/nextcloud/documentation">in
github and can be edited there online.</a></p>
</div>
</div><!-- nextcloud-documentation-overview -->
</div><!-- page-content -->
</div><!-- col-md-12 -->
</main>
</div><!-- content -->
</div><!-- container -->
<div class="container">
<div class="row">
<div class="col-lg-12 footer-social-icons">
<p class="text-center"><a target="_blank" href="https://plus.google.com/104036748063781940910/about"><img width=50 src="https://docs.nextcloud.org/server/9/user_manual/_static/img/social/googleplus.svg" title="Follow us on Google Plus!" alt="Follow us on Google Plus!"></img></a>
<a target="_blank" style="margin: 0 7px 0 14px;" href="https://www.facebook.com/Nextclouders"><img width=50 src="https://docs.nextcloud.org/server/9/user_manual/_static/img/social/facebook.svg" title="Like our facebook page!" alt="Like our facebook page!"></img></a>
<a target="_blank" style="margin: 0 14px 0 7px;" href="https://twitter.com/Nextclouders"><img width=50 src="https://docs.nextcloud.org/server/9/user_manual/_static/img/social/twitter.svg" title="Subscribe to our twitter channel!" alt="Subscribe to our twitter channel!"></img></a>
<a target="_blank" href="https://nextcloud.com/blogfeed"><img class="img-circle" width=50 src="https://docs.nextcloud.org/server/9/user_manual/_static/img/social/rss.svg" title="Subscribe to our news feed!" alt="Subscribe to our news feed!"></img></a>
<a target="_blank" href="https://newsletter.nextcloud.com/"><img class="img-circle" width=50 src="https://docs.nextcloud.org/server/9/user_manual/_static/img/social/mail.svg" title="Subscribe to our newsletter!" alt="Subscribe to our newsletter!"></img></a></p>
</div>
<div class="text-center">
All documentation licensed under the <a href="https://creativecommons.org/licenses/by/3.0/us/">Creative Commons Attribution 3.0 Unported license</a>.
</div>
</div>
</div>
<footer class="content-info" role="contentinfo">
<div class="container">
<div class="row">
<div class="col-sm-2 col-sm-offset-1">
<div class="footer-nav">
<h4>About Nextcloud</h4>
<ul id="menu-about" class="menu">
<li><a href="https://nextcloud.com/about/">About us</a></li>
<li><a href="https://nextcloud.com/contact/">Contact us</a></li>
<li><a href="https://nextcloud.com/press/">Press</a></li>
<li><a href="https://nextcloud.com/privacy/">Privacy policy</a></li>
</ul>
</div>
</div>
<div class="col-sm-2 col-sm-offset-2">
</div>
<div class="col-sm-2 col-sm-offset-2">
<div class="footer-nav">
<h4>Interact</h4>
<ul id="menu-interact" class="menu">
<li class="menu-irc-channel"><a href="https://webchat.freenode.net/?channels=nextcloud">IRC Channel</a></li>
<li class="menu-forums"><a href="https://help.nextcloud.com/">Forums</a></li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12 footer-text">
<p>
&copy; Copyright 2017, The Nextcloud developers. <small><a href="https://nextcloud.com/impressum">Legal Notice</a></small><br/>
</p>
</div>
</div>
</div>
</footer>
</body>
</html>

View File

@ -29,7 +29,7 @@ from conf import *
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
extensions += ['sphinx.ext.todo', 'rst2pdf.pdfbuilder', 'sphinx.ext.intersphinx']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['../_shared_assets/templates']
@ -304,3 +304,4 @@ intersphinx_mapping = {
'developer_manual': ('https://docs.nextcloud.com/server/%s/developer_manual/' % (version), '../developer_manual/_build/html/com/objects.inv'),
}
current_docs = 'user_manual'

View File

@ -47,7 +47,7 @@ oldest files (files with the oldest timestamps from when they were deleted)
until it meets the memory usage limit again.
Nextcloud checks the age of deleted files every time new files are added to the
deleted files. By default, deleted files stay in the trash bin for 180 days. The
deleted files. By default, deleted files stay in the trash bin for 30 days. The
Nextcloud server administrator can adjust this value in the ``config.php`` file
by setting the ``trashbin_retention_obligation`` value. Files older than the
``trashbin_retention_obligation`` value will be deleted permanently.

View File

@ -14,11 +14,10 @@ computer, it will flow across the others using these desktop sync clients.
You will always
have your latest files with you wherever you are.
Its usage is documented separately in the `Nextcloud/ownCloud Desktop Client Manual`_.
Its usage is documented separately in the `Nextcloud Desktop Client Manual`_.
.. _`Nextcloud/ownCloud Desktop Client Manual`: https://doc.owncloud.org/desktop/2.2/
.. _Nextcloud Desktop Client Manual: https://docs.nextcloud.org/
.. _Nextcloud Sync Client: https://nextcloud.com/install/#install-clients
.. _`Nextcloud Desktop Client Manual`: https://docs.nextcloud.com/desktop/
.. _`Nextcloud Sync Client`: https://nextcloud.com/install/#install-clients
Mobile clients
--------------
@ -27,5 +26,5 @@ Visit your Personal page in your Nextcloud Web interface to find download links
for Android and iOS mobile sync clients. Or, visit the `Nextcloud download page
<https://nextcloud.com/install/>`_.
Visit the `Nextcloud documentation page <https://docs.nextcloud.org/>`_ to read
Visit the `Nextcloud documentation page <https://docs.nextcloud.com/>`_ to read
the user manuals.

View File

@ -1,9 +1,10 @@
===============================
Encrypting your Nextcloud files
===============================
=============================================
Encrypting your Nextcloud files on the server
=============================================
Nextcloud includes an Encryption app, and when it is enabled by your Nextcloud
administrator all of your Nextcloud data files are automatically encrypted.
Nextcloud includes a server side Encryption app, and when it is enabled by
your Nextcloud administrator all of your Nextcloud data files are automatically
encrypted on the server.
Encryption is server-wide, so when it is enabled you cannot choose to keep your
files unencrypted. You don't have to do anything special, as it uses your
Nextcloud login as the password for your unique private encryption key. Just log
@ -23,8 +24,7 @@ it is better to use some other form of encryption such as file-level or whole
disk encryption. Because the keys are kept on your Nextcloud server, it is
possible for your Nextcloud admin to snoop in your files, and if the server is
compromised the intruder may get access to your files. (Read
`How Nextcloud uses encryption to protect your data
<https://owncloud.org/blog/how-owncloud-uses-encryption-to-protect-your-data/>`_
`Encryption in Nextcloud <https://nextcloud.com/blog/encryption-in-nextcloud/>`_
to learn more.)
Encryption FAQ
@ -34,7 +34,7 @@ How can encryption be disabled?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The only way to disable encryption is to run the `"decrypt all"
<https://docs.nextcloud.org/server/12/admin_manual/configuration_server/occ_command.html#encryption-label>`_.
<https://docs.nextcloud.org/server/13/admin_manual/configuration_server/occ_command.html#encryption-label>`_.
.. TODO ON RELEASE: Update version number above on release
@ -44,8 +44,8 @@ Is it possible to disable encryption with the recovery key?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Yes, *if* every user uses the `file recovery key
<https://docs.nextcloud.com/server/12/admin_manual/configuration_files/encryption_configuration.html#enabling-users-file-recovery-keys>`_, `"decrypt all"
<https://docs.nextcloud.org/server/12/admin_manual/configuration_server/occ_command.html#encryption-label>`_ will use it to decrypt all files.
<https://docs.nextcloud.com/server/13/admin_manual/configuration_files/encryption_configuration.html#enabling-users-file-recovery-keys>`_, `"decrypt all"
<https://docs.nextcloud.org/server/13/admin_manual/configuration_server/occ_command.html#encryption-label>`_ will use it to decrypt all files.
.. TODO ON RELEASE: Update version number above on release
@ -53,7 +53,7 @@ Can encryption be disabled without the user's password?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you don't have the users password or `file recovery key
<https://docs.nextcloud.com/server/12/admin_manual/configuration_files/encryption_configuration.html#enabling-users-file-recovery-keys>`_.
<https://docs.nextcloud.com/server/13/admin_manual/configuration_files/encryption_configuration.html#enabling-users-file-recovery-keys>`_.
.. TODO ON RELEASE: Update version number above on release

View File

@ -29,7 +29,7 @@ from conf import *
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.todo', 'rst2pdf.pdfbuilder']
extensions += ['sphinx.ext.todo', 'rst2pdf.pdfbuilder']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['../_shared_assets/templates']
@ -294,4 +294,6 @@ epub_copyright = u'2012-2017, Die Nextcloud Entwickler'
#epub_tocdup = True
# Include todos?
todo_include_todos = True
todo_include_todos = True
current_docs = 'user_manual_de'