跳转至内容

Nextcloud

来自 ArchWiki
(重定向自 OwnCloud)

Nextcloud 是一个客户端-服务器软件套件,它(通过所谓的 应用程序)支持各种共享、协作和通信功能,例如:

Nextcloud 是开源的,并基于开放标准。数据主权是一个巨大的优势,即通过您自己的 Nextcloud 实例,您可以摆脱专有(且可能不可信)的服务,如 Dropbox、Office 365 或 Google Drive。

根据您的需求,Nextcloud 可以从单板计算机(例如 Raspberry Pi)一直部署到为数百万用户提供服务的全规模数据中心。通过精心设计的授权方案和联合(连接独立实例)选项,Nextcloud 非常适合在企业环境中使用。

Nextcloud 是 ownCloud 的一个分支。有关 历史,请参阅 Wikipedia。

设置概览

完整的 Nextcloud 安装至少包含以下组件:

一个 **Web 服务器**,搭配一个 **应用程序服务器**,并在其上运行 **Nextcloud**(即 PHP 代码),使用一个 **数据库**。

本文将涵盖 MariaDB/MySQL 和 PostgreSQL 作为数据库,以及以下 Web 服务器和应用程序服务器的组合:

  • nginx → uWSGI (加上 uwsgi-plugin-php)
  • nginx → FPM,
  • Apache HTTP 服务器(使用 mod_proxy_uwsgi)→ uWSGI(加上 uwsgi-plugin-php)
  • Apache HTTP 服务器(使用 mod_proxy_fcgi)→ FPM

Nextcloud 软件包符合 Web 应用程序包指南。除其他外,这规定 Web 应用程序必须由专用用户运行——在这种情况下是 `nextcloud`。这也是应用程序服务器在此发挥作用的原因之一。出于同样的原因,通过 php-apache 在 Apache 进程中直接执行 Nextcloud 的 PHP 代码已不再可能。

安装

安装 `nextcloud` 软件包。这将引入相当多的依赖包。大多数 必需的 PHP 扩展 将通过此方式处理。

建议同时安装以下软件包:

(最好作为 依赖包)。其他可选依赖项将在稍后根据您的具体设置(例如您选择的数据库)进行介绍。

请注意,某些模块(特别是 _bcmath_、_exif_、_gmp_、_intl_ 和 _sysvsem_)包含在 php-legacy 中。因此,无需为这些模块进行显式安装。

配置

PHP

本指南不修改 PHP 的中央配置文件 `/etc/php-legacy/php.ini`,而是将 Nextcloud 特定的 PHP 配置放在不会潜在干扰其他基于 PHP 的应用程序设置的地方。这些地方是:

  • `/etc/webapps/nextcloud` 目录下的 `php.ini` 的专用副本(用于 `occ` 命令行工具和后台作业)。这实际上是 php-legacy 软件包提供的原始 `php.ini` 的副本,并包含一些 Nextcloud 特定的添加/修改。
  • 应用程序服务器配置中相应的设置。这些将在应用程序服务器部分进行介绍。

将 `/etc/php-legacy/php.ini` 复制到 `/etc/webapps/nextcloud`(或者更好的是,从 `/var/cache/pacman/pkg` 下的 _php-legacy_ 软件包 tarball 中提取 `php.ini`)。虽然不是必需的,但请更改副本的所有权。

# cp /etc/php-legacy/php.ini /etc/webapps/nextcloud
# chown nextcloud:nextcloud /etc/webapps/nextcloud/php.ini

根据 Nextcloud 的文档 列出的所需 PHP 模块,大部分已在刚刚复制的裸 PHP 安装配置文件中启用。另外,请启用以下扩展:

/etc/webapps/nextcloud/php.ini
extension=exif
extension=gd
extension=iconv
extension=intl
extension=sysvsem
; bcmath and gmp for passwordless login
extension=bcmath
extension=gmp
; sodium for the argon2 hashing algorithm
extension=sodium
; in case you installed php-legacy-imagick (as recommended)
extension=imagick

根据您将使用的数据库,启用相应的 `pdo_xxxx` 模块。请参阅下面的 数据库

将 `date.timezone` 设置为您偏好的时区,例如:

/etc/webapps/nextcloud/php.ini
date.timezone = Europe/Berlin

将 PHP 的内存限制提高到至少 512MiB。

/etc/webapps/nextcloud/php.ini
memory_limit = 512M

可选:为了额外的安全性,请配置 `open_basedir`。这将限制 Nextcloud 的 PHP 代码可以读取和写入文件的位置。已验证的设置是:

/etc/webapps/nextcloud/php.ini
open_basedir=/var/lib/nextcloud:/tmp:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom:/usr/lib/php-legacy/modules:/var/log/nextcloud:/proc/meminfo:/proc/cpuinfo

根据您配置的其他扩展,您可能需要扩展此列表,例如,如果您选择 Valkey,则需要添加 `/run/valkey`。

在此处配置 `opcache` 是不必要的,因为此 `php.ini` 只供 `occ` 命令行工具和后台作业使用,即短时间运行的 PHP 进程。

Nextcloud

将以下条目添加到 Nextcloud 的配置文件中:

/etc/webapps/nextcloud/config/config.php
'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'cloud.mysite.com',
  ),    
'overwrite.cli.url' => 'https://cloud.mysite.com/',
'htaccess.RewriteBase' => '/',

修改给出的示例主机名 `cloud.mysite.com`。如果您的 Nextcloud 安装将通过子文件夹(例如 `https://www.mysite.com/nextcloud`)访问,则必须相应地修改 `overwrite.cli.url` 和 `htaccess.RewriteBase`。

系统与环境

为了确保 `occ` 工具使用 Nextcloud 特定的 `php.ini`,请设置环境变量 `NEXTCLOUD_PHP_CONFIG`:

$ export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini

还将此行添加到您的 `.bashrc`(或 `.bash_profile`)中,以使此设置永久生效。对于 fish shell 用户:

$ set -Ux NEXTCLOUD_PHP_CONFIG /etc/webapps/nextcloud/php.ini

但请不要将其添加到您的 `fish.conf`。

作为隐私和安全预防措施,请创建专用的会话数据目录:

# install --owner=nextcloud --group=nextcloud --mode=700 -d /var/lib/nextcloud/sessions

数据库

MariaDB/MySQL 是 Nextcloud 的标准选择。

MySQL 或 MariaDB 数据库是推荐的数据库引擎。[1]

大多数关于 Nextcloud 数据库的信息都涉及 MariaDB/MySQL。Nextcloud 开发者承认他们在其他数据库方面 专业知识较少

PostgreSQL 据称性能更好,并且总体上比 MariaDB/MySQL 的问题少。SQLite 主要支持测试/开发安装,不推荐用于生产环境。 支持的数据库列表 还包括 Oracle 数据库。本文不涵盖该产品。

MariaDB / MySQL

自 2013 年以来,MariaDB 一直是 Arch Linux 的默认 MySQL 实现[2],因此本文仅提及 MariaDB。

如果您想在与 Nextcloud 相同的宿主服务器上运行数据库,请 配置启动 `mariadb-lts`(如果您尚未这样做)。有关详细信息,请参阅相应的 文章。不要忘记使用 `mariadb-install-db` 初始化 MariaDB。为提高安全性,建议将 MariaDB 配置为 仅通过本地 Unix 套接字监听

/etc/my.cnf.d/server.cnf
[mysqld]
skip_networking

Nextcloud 自己的文档 建议 将事务隔离级别设置为 READ-COMMITTED。当您预计高负载和大量并发事务时,这一点尤其重要。

/etc/my.cnf.d/server.cnf
[mysqld]
transaction_isolation=READ-COMMITTED

将 `binlog_format=ROW` 设置的另一个建议已过时。在最近的 MariaDB 版本中,默认的 `MIXED` 至少与建议的 `ROW` 一样好。在任何情况下,该设置仅在应用复制时才相关。

使用数据库用户 root 启动 CLI 工具 `mysql`。(默认密码为空,但希望您尽快更改它。)

$ mysql -u root -p

使用以下命令为 Nextcloud 创建用户和数据库:

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'db-password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'localhost';
FLUSH privileges;

(`db-password` 是您必须选择的 DB 用户 `nextcloud` 的实际密码的占位符。)使用 `\q` 退出工具。

注意 MariaDB 对 UTF8 的理解存在缺陷,导致无法存储任何码点为 0x10000 及以上的字符(例如表情符号)。他们通过引入名为 _utf8mb4_ 的新编码在 5.5 版本中“修复”了此问题。总之:永远不要使用 MariaDB 的 _utf8_,始终使用 _utf8mb4_。如果您需要迁移,请参阅 [3]

因此,如果您决定使用 MariaDB 作为 Nextcloud 安装的数据库,您必须启用相应的 PHP 扩展:

/etc/webapps/nextcloud/php.ini
extension=pdo_mysql

不需要进一步的配置(与 MariaDB 相关)(与 Nextcloud 的 管理手册 中的信息相反)。

现在使用以下命令设置 Nextcloud 的数据库模式:

$ occ maintenance:install \
    --database=mysql \
    --database-name=nextcloud \
    --database-host=localhost:/run/mysqld/mysqld.sock \
    --database-user=nextcloud \
    --database-pass=db-password \
    --admin-pass=admin-password \
    --admin-email=admin-email \
    --data-dir=/var/lib/nextcloud/data

注意占位符(例如 `db-password`)并用适当的值替换它们。此命令假定您在与 Nextcloud 相同的宿主服务器上运行数据库。输入 `occ help maintenance:install` 并参阅 Nextcloud 的 文档 以了解其他选项。有关此工具的 Arch 特定详细信息,请参阅 使用 "occ" 命令行工具

PostgreSQL

有关 PostgreSQL 的详细信息,请参阅相应的 文章。如果您想在与 Nextcloud 相同的宿主服务器上运行数据库,请 配置启动 `postgresql`(如果您尚未这样做)。为了提高此场景下的安全性,建议将 PostgreSQL 配置为 仅通过本地 UNIX 套接字监听

/var/lib/postgres/data/postgresql.conf
listen_addresses = ''

尤其不要忘记使用 `initdb` 初始化数据库。初始化后,启动 PostgreSQL 的 CLI 工具 _psql_ 并创建 `nextcloud` 用户和同名的数据库:

[postgres]$ psql
CREATE USER nextcloud WITH PASSWORD 'db-password';
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextcloud OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
\q

(`db-password` 是您必须选择的数据库用户 `nextcloud` 的密码的占位符。)

安装额外的软件包 php-legacy-pgsql(最好作为 依赖包),并在 `/etc/webapps/nextcloud/php.ini` 中启用相应的 PHP 扩展:

/etc/webapps/nextcloud/php.ini
extension=pdo_pgsql

现在使用以下命令设置 Nextcloud 的数据库模式:

$ occ maintenance:install \
    --database=pgsql \
    --database-name=nextcloud \
    --database-host=/run/postgresql \
    --database-user=nextcloud \
    --database-pass=db-password \
    --admin-pass=admin-password \
    --admin-email=admin-email \
    --data-dir=/var/lib/nextcloud/data

注意占位符(例如 `db-password`)并用适当的值替换它们。此命令假定您在与 Nextcloud 相同的宿主服务器上运行数据库。输入 `occ help maintenance:install` 并参阅 Nextcloud 的 文档 以了解其他选项。有关此工具的 Arch 特定详细信息,请参阅 使用 "occ" 命令行工具

应用服务器

可以用来处理 PHP 代码的应用程序服务器主要有两种:uWSGIFPM。_FPM_ 专门用于 PHP。Web 服务器和 _FPM_ 之间使用的协议是 _fastcgi_。该工具的 文档 仍有改进空间。另一方面,_uWSGI_ 可以通过特定语言的插件支持用 多种语言 编写的代码。使用的协议是 _uwsgi_(小写)。该工具有 广泛的文档 - 尽管文档数量庞大可能令人困惑且难以驾驭。

uWSGI

uWSGI 有其自己的 文章。您可以在那里找到很多有用的信息。安装 `uwsgi` 和插件 `uwsgi-plugin-php-legacy`(最好作为 依赖包)。要使用 uWSGI 运行(或在其中运行)Nextcloud 的代码,您需要配置一个 uWSGI 特定的配置文件(`nextcloud.ini`)并定义一个 systemd 服务。

警告 必须指出,uWSGI 的维护,尤其是其 PHP 插件的维护,最近一直稀疏[4]。这已经导致了 问题,这些问题只能通过修补 uWSGI 代码来解决,即由 Arch Linux 包的维护者来解决,而不是上游。

nextcloud.ini

`nextcloud` 软件包已在正确的位置 `/etc/uwsgi/nextcloud.ini` 包含了一个示例配置文件。在几乎所有情况下,您都需要根据您的需求和设置来调整此文件。请找到一个 版本,其中包含大量注释掉的更改(与软件包的版本相比)。它假定是一个简化的 Nextcloud 安装,用于私人使用(即负载适中)。

一般来说,请保持启用的扩展、扩展特定的设置和 `open_basedir` 与 `/etc/webapps/nextcloud/php.ini` 同步(opcache 除外)。

提示 对 `/etc/uwsgi/nextcloud.ini` 的更改可能很多。在软件包更新期间,如果软件包 nextcloud 提供的原始文件有更改,则会创建一个名为 `nextcloud.ini.pacnew` 的文件。为了更好地跟踪后者文件中的更改并将其应用于 `/etc/uwsgi/nextcloud.ini`,可以采用以下方法:
  • 将软件包提供的文件复制一份(例如,通过从软件包中提取),并将其存储为 `nextcloud.ini.package`。
  • 如果软件包 `nextcloud` 的更新生成了 `nextcloud.ini.pacnew`,您可以使用 `diff nextcloud.ini.package nextcloud.ini.pacnew` 来识别更改。
  • 根据更改是否有意义,选择性地将更改应用于您的 `nextcloud.ini`。
  • 将 `nextcloud.ini.pacnew` 移到 `nextcloud.ini.package` 上。

uWSGI 服务

`uwsgi` 软件包提供了一个模板单元文件 (`uwsgi@.service`)。实例 ID(此处为 _nextcloud_)用于获取正确的配置文件。 启用启动 `uwsgi@nextcloud.service`。

如果您启动了不止几个(例如 2 个)此类服务,并认为这是对资源的浪费,您可以考虑使用皇帝模式 (emperor mode)

FPM

如果您选择使用 _FPM_ 作为应用程序服务器,请安装 `php-legacy-fpm`(最好作为 依赖包)。

配置包括一个适用于 _FPM_ 服务的所有应用程序的 `php.ini` 副本,以及一个针对应用程序(此处为 Nextcloud)的所谓池文件。最后,您必须调整 systemd 服务文件。

php-fpm.ini

如前所述,本指南避免修改 PHP 的中央配置文件 `/etc/php-legacy/php.ini`。而是创建一个 _FPM_ 特定的副本。

# cp /etc/php-legacy/php.ini /etc/php-legacy/php-fpm.ini

确保其所有权仅为 root,并且只有 root 可写(`-rw-r--r-- 1 root root ... php-fpm.ini`)。启用 op-cache,即取消注释以下行:

/etc/php-legacy/php-fpm.ini
zend_extension=opcache

并将以下参数放在现有行 `[opcache]` 下面:

/etc/php-legacy/php-fpm.ini
opcache.enable = 1
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
警告 不要尝试通过 `php_value[...]` 和 `php_flag[...]` 将这些设置放入池文件中。您的 _FPM_ 进程将在第一个请求时持续崩溃。

nextcloud.conf

接下来,您需要为 _FPM_ 创建一个所谓的池文件。它负责为 Nextcloud 应用程序生成专用的 _FPM_ 进程。创建一个文件 `/etc/php-legacy/php-fpm.d/nextcloud.conf` - 您可以使用这个 功能版本 作为起点。

同样,请确保此池文件的所有权仅为 root,并且只有 root 可写(即 ` -rw-r--r-- 1 root root ... nextcloud.conf`)。根据是否配置了访问日志(在上面的示例 `nextcloud.conf` 中已配置),您可能需要创建相应的目录(此处为 `/var/log/php-fpm-legacy/access`)。根据需要调整或添加设置(特别是 `pm...`、`php_value[...]` 和 `php_flag[...]`)。`php_value[...]` 和 `php_flag[..]` 的设置必须与 `/etc/webapps/nextcloud/php.ini` 中的相应设置一致(但与 `/etc/php-legacy/php-fpm.ini` 不一致)。

通过 `php_value[...]` 和 `php_flag[...]` 所做的设置也可以在 `php-fpm.ini` 中指定。但请注意,`php-fpm.ini` 中的设置适用于 _FPM_ 服务的所有应用程序。

提示 `php-legacy-fpm` 软件包附带自己的池文件 `www.conf`,这个文件用处不大。一个很好的方法是将它重命名为 `www.conf.package`,然后创建一个只包含注释行(以分号开头的行)的 `www.conf` 文件。这样,`www.conf` 就变成了空操作。它也不会在安装新版本的 `php-legacy-fpm` 时被覆盖。相反,会创建一个 `www.conf.pacnew` 文件。您可以将其与 `www.conf.package` 进行比较,以查看池文件中是否有任何重要更改,您可能需要在 `nextcloud.conf` 中重现这些更改。在此过程结束时,不要忘记将 `www.conf.pacnew` 重命名为 `www.conf.package`。

systemd 服务

_FPM_ 作为 systemd 服务运行。您必须修改服务配置才能运行 Nextcloud。这最好通过 drop-in 文件 来实现:

/etc/systemd/system/php-fpm-legacy.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-fpm-legacy --nodaemonize --fpm-config /etc/php-legacy/php-fpm.conf --php-ini /etc/php-legacy/php-fpm.ini
ReadWritePaths=/var/lib/nextcloud
ReadWritePaths=/etc/webapps/nextcloud/config
  • 它将 ExecStart 行替换为使用上一节中介绍的 php-fpm.ini 的启动命令。
  • 目录 `/var/lib/nextcloud` 和 `/etc/webapps/nextcloud/config`(及其下的所有内容)被设置为可写。原始服务定义中的 `ProtectSystem=full` 会导致 _FPM_ 进程挂载 `/usr`、`/boot` 和 `/etc` 为只读。
  • 如果您想使用 硬件转码(例如在 memories 应用中),您需要显式允许访问您的图形设备,因为 `PrivateDevices=true` 会隐藏 _FPM_ 进程中的所有设备。例如,将 `BindPaths=/dev/dri/renderD128` 和 `DeviceAllow=/dev/dri/renderD128 rw` 添加到 drop-in 文件中,可以允许使用正确配置的 Intel iGPU。

不要忘记 启用启动 `php-fpm-legacy` 服务。

保持 /etc 目录整洁

Nextcloud 软件包无条件创建 uWSGI 配置文件 `/etc/uwsgi/nextcloud.ini`。当然,如果您运行的是 _FPM_ 而不是 _uWSGI_,它就没用了(并且不会造成任何损害)。如果您仍然想摆脱它,只需在 `/etc/pacman.conf` 中添加以下 NoExtract 行:

/etc/pacman.conf
# uWSGI configuration that comes with Nextcloud is not needed
NoExtract = etc/uwsgi/nextcloud.ini

Web 服务器

有大量的 Web 服务器可供选择。无论您最终选择哪种选项,都必须记住 Nextcloud 应用程序需要以其自己的系统用户 _nextcloud_ 运行。因此,您需要将请求转发到一个或多个上述应用程序服务器。

nginx

`nginx` 的配置超出了本文的范围。有关更多信息,请参阅相关的 文章。同时,请参阅 Nextcloud 的文档 以获取详细配置。如何将此代码片段包含在您的 nginx 配置中取决于您。一种常见的方法是使用 `/etc/nginx/sites-available` 和 `/etc/nginx/sites-enabled` 目录来分隔各种服务器(即虚拟主机)的配置。有关详细信息,请参阅 Nginx#Managing server entries

如果使用上面链接的 Nextcloud 文档中的示例 _nginx_ 配置,则根目录应更改为:

cloud.mysite.com.conf
  root /usr/share/webapps/nextcloud;

使用 `upstream php-handler { ... }` 块是不必要的。只需在处理将 PHP URI 请求转发到应用程序服务器的 `location` 块中指定 `fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;`。如果使用 _uWSGI_ 而不是 _FPM_,请将此 `location` 块替换为:

cloud.mysite.com.conf
location ~ \.php(?:$|/) {
    include uwsgi_params;
    uwsgi_modifier1 14;
    # Avoid duplicate headers confusing OC checks
    uwsgi_hide_header X-Frame-Options;
    uwsgi_hide_header X-XSS-Protection;
    uwsgi_hide_header X-Content-Type-Options;
    uwsgi_hide_header X-Robots-Tag;
    uwsgi_hide_header X-Download-Options;
    uwsgi_hide_header X-Permitted-Cross-Domain-Policies;
    uwsgi_pass unix:/run/uwsgi/nextcloud.sock;
}

您可能需要调整的事项(不详尽)

  • 您的服务器名称(`server_name` 子句 2x),即您的 Nextcloud 安装可访问的 URL 的服务器部分。
  • 您用于 SSL / TLS 的证书和密钥的名称。
  • 是否以及在哪里写入访问日志。
  • Certbot(或任何其他 ACME 客户端)将放置域名验证挑战的位置。使用 `alias` 而不是 `try_files` 在这里可能更合适。
  • 到达您的 Nextcloud 安装所使用的路径。(URL 中的服务器名称和端口部分后面的部分。)
  • 您正在使用的应用程序服务器(uWSGI 或 FPM),即 nginx 如何以及在哪里将需要触发某些 PHP 代码的请求传递。
  • 配置 OCSP stapling。(请注意,Let's Encrypt 不再支持 OCSP,因此如果您使用 Let's Encrypt 证书,则无需此项。)

由于 nginx 原生支持 FastCGI 和 uwsgi 协议,因此无需安装任何额外的模块。

Apache HTTP 服务器

在关于 Apache HTTP Server 的文章中可以找到大量有用的信息。Nextcloud 的文档中有一些 示例配置,也可以在 `/usr/share/doc/nextcloud/apache.example.conf` 中找到。两者都隐式依赖于 _mod_php_,而 _mod_php_ 已不再可用。需要应用 _mod_proxy_fcgi_ 或 _mod_proxy_uwsgi_。

有关如何 将 Apache 与 FPM 集成 的信息可以在本 wiki 中找到。uWSGI 的文档包含有关如何 通过 uWSGI 和 mod_proxy_uwsgi 将 Apache 与 PHP 集成 的信息。请注意,Apache 软件包同时包含 _mod_proxy_fcgi_ 和 _mod_proxy_uwsgi_ 模块。它们需要根据需要加载。

运行 Nextcloud 所需的以下 Apache 模块:

/etc/httpd/conf/httpd.conf
# these are already loaded in a standard Apache installation
LoadModule headers_module modules/mod_headers.so
LoadModule env_module modules/mod_env.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so

# these need to be uncommented explicitly
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule proxy_module modules/mod_proxy.so

# either this one in case you use FPM
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
# or this one in case you opt for uWSGI
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so

另外,取消注释以下指令以引入 TLS 配置参数:

/etc/httpd/conf/httpd.conf
Include conf/extra/httpd-ssl.conf

有关如何优化 TLS 配置的详细信息,请参阅 Mozilla 的 SSL 配置器

根据您希望如何访问 Nextcloud 安装,请参考以下两个示例配置文件:

  • 如果您的 Nextcloud 安装是通过专用主机名(例如 `https://cloud.mysite.com/`)访问的,请将 片段放入 `/etc/httpd/conf/extra/httpd-vhosts.conf`。
  • 如果您的 Nextcloud 安装位于您网站的子文件夹中(例如 `https://www.mysite.com/nextcloud/`),请将 片段放入您的 `/etc/httpd/conf/httpd.conf`。

当然,您必须根据您的具体设置调整这些示例配置文件。当您使用 _uWSGI_ 时,请将 `SetHandler` 指令替换为 `SetHandler "proxy:unix:/run/uwsgi/nextcloud.sock|uwsgi://nextcloud/"`。

Nextcloud 软件包附带一个 `.htaccess` 文件,该文件已经处理了大量的重写和头部设置。运行 `occ maintenance:update:htaccess` 来调整此文件。`/etc/webapps/nextcloud/config/config.php` 中的参数 `htaccess.RewriteBase` 对此至关重要。

如果用户文件存储在 `/home` 分区中,根据 apache 2.4.65 的设置,访问默认受到保护:

ProtectHome=on 

/etc/systemd/system/httpd.service.d/hardening.conf

后台作业

Nextcloud 需要按计划运行某些任务。有关详细信息,请参阅 Nextcloud 的 文档。设置这些后台作业最简单(也是最可靠)的方法是使用已由 `nextcloud` 软件包安装的 systemd 服务和计时器单元。服务单元需要一些调整,以便作业使用正确的 PHP ini 文件(而不是全局 `php.ini`)。创建一个 drop-in 文件 并添加:

/etc/systemd/system/nextcloud-cron.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php

之后, 启用启动 `nextcloud-cron.timer`(而不是服务)。

根据 文档 的建议,将参数:

/etc/webapps/nextcloud/config/config.php
....
'maintenance_window_start' => 0,
....

添加到 Nextcloud 的配置文件中。该值是以 UTC 为单位的当天的小时,定义了一个 4 小时窗口的开始。需要每天只运行一次的耗时作业将在此时段内安排,即在工作时间之外。

警告 请勿尝试安装和使用 `nextcloud-systemd-timers`AUR。它已过时且未维护。

内存缓存

Nextcloud 的 文档 建议应用某种形式的内存对象缓存以显著提高性能。

APCu

安装 `php-legacy-apcu`(最好作为 依赖包)。在相关的配置文件中启用扩展。这些文件是:

  • `/etc/webapps/nextcloud/php.ini`,供 `occ` 命令和后台作业使用;以及
  • 根据您使用的应用程序服务器,可以是:
    • `/etc/uwsgi/nextcloud.ini`(如果是 _uWSGI_)或
    • `/etc/php-legacy/php-fpm.d/nextcloud.conf`(如果是 _FPM_)。

在 `/etc/webapps/nextcloud/php.ini` 中添加以下行:

/etc/webapps/nextcloud/php.ini
extension=apcu
apc.ttl=7200
apc.enable_cli = 1

(最好在 `Module Settings` 下方某处)。

对于其他两个文件,激活 _APCu_ 的设置已经就位,只需取消注释即可。另外两个与 _APCu_ 相关的配置参数也已存在。无需修改 `/etc/php-legacy/php.ini` 或 `/etc/php-legacy/conf.d/apcu.ini`。

重启您的应用程序服务器(而不是 Nextcloud 文档所声称的 Web 服务器)。将以下行添加到您的 Nextcloud 配置文件中:

/etc/webapps/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\APCu',

Valkey (Redis)

  • Valkey 仅在多服务器设置(如集群具有共享缓存)中是必需的。单机或个人安装不需要它,可以省略。
  • `Push notify`(Nextcloud 服务,通过服务器的通知取代客户端轮询,从而大大减少同步延迟)依赖于 _Valkey_。
  • 使用 _Valkey_ 并不排除使用 _APCu_ 作为本地缓存。事实上,Nextcloud 的文档建议同时使用 _Redis_(此处为 _Valkey_)和 _APCu_。

Valkey 于 2024 年 3 月因许可问题而从 Redis 7.2.4 版本中分叉出来。Nextcloud 的文档仍然只提及 Redis。但是,一年后,Valkey 仍然可以被视为 Redis 的直接替代品。(未来将表明这种情况能持续多久。)

_Valkey_ 可以在本地运行(即与 _Nextcloud_ 在同一台宿主服务器上),或在不同的机器上运行。(更多信息请参阅 Nextcloud 的文档。)无论如何,请安装 `php-legacy-igbinary` 和 `php-legacy-redis`(最好作为 依赖包)。

/etc/webapps/nextcloud/php.ini 文件中启用这些扩展,并根据你使用的应用程序服务器,在 /etc/uwsgi/nextcloud.ini/etc/php-legacy/php-fpm.d/nextcloud.conf 文件中启用。可以通过找到已启用其他扩展的现有部分,并添加对应于 igbinaryredis 的两行来实现。

或者,你可以通过取消注释 extension= 行,在 /etc/php-legacy/conf.d/ 中的相应初始化文件中启用所需的扩展 igbinaryredis

注意 重要的是先加载 extension=igbinary,然后再加载 extension=redis。否则 occ 会报告错误 (/usr/lib/php-legacy/modules/redis.so: undefined symbol: igbinary_serialize)。

如果你在上述配置文件中指定了 open_basedir 选项,并且在本地使用 Unix 套接字本地运行 Valkey,则必须扩展 PHP 允许读取和写入文件的目录列表。在上述文件中找到相关行,并添加包含 Valkey 创建的本地 Unix 套接字信息的目录,例如 /run/valkey

注意 示例配置文件 nextcloud.ininextcloud.conf#应用程序服务器 部分已提到并启用了 open_basedir。因此,如果你使用的是这些文件的副本,则需要对其进行调整。

按如下方式扩展你的 Nextcloud 配置

/etc/webapps/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host'     => '/run/valkey/valkey.sock',
     'port'     => 0,
     'dbindex'  => 0,
     'password' => '',
     'timeout'  => 1.5,
],

再次,根据需要调整 /run/valkey/valkey.sockdbindex, passwordtimeout 是可选的。

如果 Valkey 在另一台机器上运行

/etc/webapps/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'valkey-host.mysite.com',
     'port' => 6379,
],

valkey-host.mysite.com 只是一个占位符。请根据你的实际设置进行调整。

安全加固

请参阅 Nextcloud 文档安全。Nextcloud 还提供了一个 安全扫描器

同步

提示 建议不要使用你的个人密码,而是为所有自动向你的 Nextcloud 服务器进行身份验证的软件使用所谓的应用程序令牌。这样,万一你怀疑某个程序的凭据可能已泄露,只需撤销受影响的那个应用程序令牌即可,而无需更改你的个人密码并将此更改传播到所有存储该密码的地方。你可以在 Nextcloud 的 Web GUI 的 设置 > 安全 部分的 设备和会话 下生成一个新的应用程序令牌。

桌面

可以使用 nextcloud-client 包安装官方客户端。其他版本可在 AUR 中找到: nextcloud-client-gitAUR。请注意,使用 owncloud-client 连接 Nextcloud 是不受支持的。

桌面客户端基本上是将你桌面计算机的一个或多个目录与 Nextcloud 文件服务中的相应文件夹同步。它能很好地与你的桌面文件管理器(KDE Plasma 中的 Dolphin,Gnome 中的 Nautilus)集成,显示代表同步和共享状态的覆盖图标。每个文件的右键菜单会增加一个 Nextcloud 条目,用于管理该文件的共享以及获取公共或内部共享链接。Nextcloud 文档中有专门介绍桌面客户端的

如果集成未按描述工作,请查阅 nextcloud-client 包的 可选依赖项。例如,Nautilus 需要 nautilus-python。请 按依赖包 安装。

注意 桌面客户端提供一个系统托盘图标,显示同步状态[5],但 GNOME 默认不提供系统托盘图标 API[6]。如果这是一个期望的功能,一个可能的解决方案是安装并启用 gnome-shell-extension-appindicator。有关更多信息,请参阅 GNOME#扩展

默认情况下,nextcloud 提供一个 dbus 激活的服务,它可能由许多看似随机的事件触发,例如打开文件对话框。在安装客户端之前,你可以将以下内容添加到你的 pacman 配置中以禁用它。

/etc/pacman.conf
NoExtract = usr/share/dbus-1/services/com.nextcloudgmbh.Nextcloud.service

Thunderbird

从版本 102 开始,Thunderbird 完全支持 CalDAV 和 CardDAV,甚至支持自动检测(即,你无需提供长 URL 即可访问你的日历和地址簿)。有关详细信息,请参阅 Nextcloud 的 文档

使用 davfs2 挂载文件

如果你想使用 WebDAV 挂载你的 Nextcloud,请安装 davfs2(如 davfs2 中所述)。

要挂载你的 Nextcloud,请使用

# mount -t davfs https://cloud.mysite.com/remote.php/dav/files/username/ /path/to/mount

你也可以在 /etc/fstab 中为此创建一个条目

/etc/fstab
https://cloud.mysite.com/remote.php/dav/files/username/ /path/to/mount davfs rw,user,noauto 0 0
提示 为了允许自动挂载,你也可以将你的用户名(以及密码,如果你愿意)存储在一个文件中,如 davfs2#存储凭据 中所述。
注意 如果创建/复制文件不起作用,而对目录的相同操作却可以,请参阅 davfs2#创建/复制文件不可行和/或冻结

在 GNOME Files (Nautilus) 中挂载文件

你可以通过 WebDAV 协议直接在 Nautilus(“+ 其他位置”)中访问文件。使用你的 Nextcloud 安装 Web GUI 中显示的链接(例如 https://cloud.mysite.com/remote.php/webdav/),但将协议名称 https 替换为 davs。Nautilus 在尝试连接时会询问用户名和密码。

注意 确保已安装 gvfs-dnssd,否则可能会收到“无法挂载位置”的错误。

Android

Google PlayF-Droid 下载官方 Nextcloud 应用。

启用联系人和日历同步(Android 4+)

  1. 下载 DAVx5Play StoreF-Droid)。
  2. 账户 设置中创建一个新的 DAVdroid 账户,并指定你的服务器 URL(例如 https://cloud.mysite.com)以及登录/密码对。
注意 如果你的 Web 服务器已通过适当的重定向进行配置,如上面 Web 服务器 部分所示,则无需 /remote.php/{carddav,webdav} 部分。DAVdroid 会自行找到正确的 URL。

iOS

App Store 下载官方 Nextcloud 应用。

技巧与提示

使用“occ”命令行工具

对于服务器管理,一个有用的工具是 occ。有关详细信息,请参阅 Nextcloud 的 文档。你可以使用 occ 执行许多常见的服务器操作,例如管理用户和配置应用程序。

/usr/bin/occ 提供了一个原始 /usr/share/webapps/nextcloud/occ 的便利包装器,它会自动以默认用户(nextcloud)身份运行,使用默认的 PHP 可执行文件和 PHP 配置文件。环境变量 NEXTCLOUD_USERNEXTCLOUD_PHPNEXTCLOUD_PHP_CONFIG 可用于指定非默认用户、PHP 可执行文件和 PHP 配置文件(分别)。尤其是后者(使用 NEXTCLOUD_PHP_CONFIG)在使用 Nextcloud 按 配置应用程序服务器 部分所述方式设置时是必需的,即使用特定于 Nextcloud 的 PHP 配置。在这种情况下,请将 export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini 放入你的 .bashrc

当使用 php 包而不是推荐的 php-legacy 包时,你还必须设置 NEXTCLOUD_PHP,即 export NEXTCLOUD_PHP=/usr/bin/php

警告 使用 php-legacy-apcu 进行缓存时,请确保在 /etc/webapps/nextcloud/php.ini 中设置 apc.enable_cli=1。否则 occ 命令将抱怨 APCu 未正确配置。

Pacman 挂钩

nextcloud 包附带一个 pacman hook,该 hook 负责在包更新后自动升级 Nextcloud 数据库。请查看 /usr/share/doc/nextcloud/nextcloud.hook

不幸的是,此 hook 在运行 occ upgrade 时无条件使用全局 php.ini,即它不考虑上述 使用 "occ" 命令行工具 部分中提到的环境变量 NEXTCLOUD_PHP_CONFIG 的值。

作为一种可能的变通方法,请将提供的 hook 文件复制到相应位置

# mkdir -vp /etc/pacman.d/hooks
# cp -a /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/10-nextcloud.hook

并将以 Exec 开头的行更改为

/etc/pacman.d/hooks/10-nextcloud.hook
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade

在子目录中运行 Nextcloud

Web 服务器 部分的说明将导致你的 Nextcloud 安装可以通过专用服务器名称访问,例如 cloud.mysite.com。如果你希望 Nextcloud 位于子目录中,例如 www.mysite.com/nextcloud,那么

  • 对于 nginx,请参阅 Nextcloud 文档中专门涵盖此 主题 的部分。
  • 对于 apache,请编辑你包含的 /etc/httpd/conf/extra/nextcloud.conf,并注释掉包含文件中的 <VirtualHost *:80> ... </VirtualHost> 部分。
注意 不要忘记为服务发现配置 .well-known URL。有关更多信息,请参阅 Nextcloud 文档中的 服务发现

Docker

有关在 Docker 中运行 Nextcloud 的信息,请参阅 Docker Hub 上的 Nextcloud 存储库。

Office 集成

目前有三种不同的 office 集成解决方案

这三者共同点是需要一个专用服务器,并且需要修改你的 Web 服务器以将某些请求转发到 office 服务。然后,通过特定于上述产品之一的 Nextcloud 应用程序来完成与 Nextcloud 的实际集成。

请注意,这三个产品都面向企业,即你需要为 office 服务付费。只有 Collabora 提供免费的开发者计划(CODE)。ONLYOFFICE 提供价格合理的 家庭服务器 计划。

有关安装、设置说明以及与 Nextcloud 的集成,请参阅

禁用应用程序推荐

默认情况下,Nextcloud 会向新客户端推荐应用程序,这可能会导致大量通知。要禁用此功能,请使用 occ app:disable recommendations 禁用推荐应用程序。

使用 calcardbackup 备份日历和地址簿

可以安装并配置 calcardbackupAUR 包,以提供日历和/或地址簿数据库的定期备份。根据需要编辑 /etc/calcardbackup/calcardbackup.conf,然后 启动启用 calcardbackup.timer

数据和应用程序在不同的驱动器上

数据目录包含用户文件,并且可能会快速增长,而某些冗余可能很有用。这可以通过将数据移动到另一个冗余的(虚拟)基于 btrfs[链接损坏: 未找到软件包]bcachefs[链接损坏: 未找到软件包] 的设备来实现。为此,可以考虑多种方法。如果冗余驱动器已挂载到 /crate

  • /crate 挂载为 /var。这样,所有 nextcloud 数据、wapps(可写应用程序)和会话默认都在冗余驱动器上。对于 mariadb 也是如此,因为它默认也位于 /var注意: bcachefs 在启动时挂载 目前并不可靠,并且在挂载错误时系统在重启后可能无法使用,因为 /var 将不可用。
  • /crate/nextcloud/{data,apps} 链接到 /usr/share/webapps/nextcloud{data,wapps}。注意: wapps 链接在包升级时可能会重置为默认值,导致更新 hook(以及 wapps 目录访问)失败。创建一个不同名称的链接,例如 writable_apps,而不是链接到 /crate/nextcloud/apps,并相应地配置 config.php
  • /crate/nextcloud/{data,apps,sessions} 链接到 /var/lib/nextcloud{data,apps,sessions}。这似乎是稳定的,因为包升级不会触及后者。

故障排除

读取日志

默认情况下,Web 应用程序的日志可在 /var/log/nextcloud/nextcloud.log 中找到。条目(行)是 JSON 格式的,并且可能非常长。使用 jq 可以大大提高可读性

# jq . </var/log/nextcloud/nextcloud.log | less

解决“is_file(): open_basedir 限制生效”问题

在 Nextcloud v28.0.4 中引入了一个回归,表现为日志文件中出现类似以下内容的错误消息

is_file(): open_basedir restriction in effect

在日志文件 /var/log/nextcloud/nextcloud.log 中。此消息后面的文件路径在一个位置缺少一个斜杠,而在另一个位置则多了一个,例如

File (/usr/share/webapps/nextcloudapps//dav/l10n/de.js)

这是一个已知的 bug,它已被 修复回溯到 v28.0.5。对于 v28.0.4,你可以应用以下变通方法

  • 添加一个指向 /usr/share/webapps/nextcloud/apps 的符号链接 /usr/share/webapps/nextcloudapps
# cd /usr/share/webapps
# ln -sf nextcloud/apps nextcloudapps
  • 将此符号链接的路径添加到与你的 Nextcloud 安装相关的 open_basedir 设置中。这些是
/etc/webapps/nextcloud/php.ini
open_basedir=...:/usr/share/webapps/nextcloudapps:...

以及根据你使用的应用程序服务器,以下之一(FPM)

/etc/php-legacy/php-fpm.d/nextcloud.conf
php_value[open_basedir] = ...:/usr/share/webapps/nextcloudapps:...

或(uWSGI)

/etc/uwsgi/nextcloud.ini
php-set = open_basedir=...:/usr/share/webapps/nextcloudapps:...

使用 v28.0.5 时,你应该能够再次回滚此变通方法。

某个或多个应用程序的奇怪行为

Nextcloud 应用程序的文件文件夹可以在两个位置找到

  • /usr/share/webapps/nextcloud/apps(又名只读应用程序目录)。这就是 nextcloud 包和应用程序包(例如 nextcloud-app-contacts)存放 Nextcloud 应用程序文件文件夹的位置。
  • /var/lib/nextcloud/apps(又名可写应用程序目录)。这就是你找到通过 GUI 或通过 occ app:install 命令安装的应用程序文件文件夹的位置。

当一个应用程序的文件同时存在于这两个目录中(尤其是在不同版本下)时,可能会发生各种奇怪的事情。在一个具体的 案例 中,contacts 应用程序同时存在于只读应用程序目录和可写应用程序目录中。结果是 GUI 中的联系人页面没有显示,而是空白一片。浏览器的 JavaScript 控制台显示了错误消息

Uncaught Error: Could not find initial state contactsinteraction of contacts

检查应用程序是否同时存在于两个位置。要确定是应该删除只读目录中的应用程序文件夹还是可写目录中的应用程序文件夹,请确定该应用程序是否是某个包的一部分。运行

# cd /usr/share/webapps/nextcloud/apps
# pacman -Qo * >/dev/null

所有报告为

error: No package owns ....

(并且也可以在可写应用程序目录中找到)的文件夹都可以安全地从 /usr/share/webapps/nextcloud/apps 中删除。其他双重安装的应用程序(即属于某个包的应用程序)应从 /var/lib/nextcloud/apps 中删除。

InnoDB 拒绝使用 ROW_FORMAT=COMPRESSED 写入表

MariaDB 版本 >= 10.6 且 < 10.6.6 与 Nextcloud 不兼容,因为数据库强制对 压缩的 InnoDB 表进行只读访问,而 Nextcloud 过去(现在仍然)使用这类表。

从 MariaDB 10.6.0 到 MariaDB 10.6.5,COMPRESSED 行格式的表默认是只读的。这被认为是移除写支持和弃用该功能的第一个步骤。
这个计划已被搁置,从 MariaDB 10.6.6 开始,COMPRESSED 表不再默认只读。

此外,Nextcloud 已经 解决了 这个问题。从 Nextcloud v24 开始,新安装的 Nextcloud 不再使用 COMPRESSED 行格式。需要注意的是,现有的(v24 之前的)安装不会自动迁移出 COMPRESSED 行格式。

总而言之:你可能不受影响,因为 Arch Linux 自 2022-02-10 起一直在提供 MariaDB v10.6.6 或更高版本。

在极少数情况下,如果你受到此问题的影响,有几种可能的补救措施

  • 调整你的 MariaDB 配置
/etc/my.cnf.d/server.cnf
[mariadb-10.6]
  innodb_read_only_compressed=OFF
  • 将你的 MariaDB 表从 COMPRESSED 行格式迁移到 DYNAMIC,如 一些 评论 中针对相应的 Nextcloud 问题 所建议的。请注意,只要你停留在 Nextcloud < v24,新表将再次使用 COMPRESSED 行格式,因此需要以同样的方式进行迁移。
  • 用 PostgreSQL 替换 MariaDB,并使用 occ db:convert-type 迁移你的 Nextcloud 实例的数据。有关详细信息,请参阅 Nextcloud 的 文档

登录循环,在 access.log、error.log 或 nextcloud.log 中没有任何线索

论坛帖子 中所述,此问题可以通过设置正确的 sessions 目录权限来解决。(有关详细信息,请参阅 Nextcloud 的文档。)也有可能 sessions 目录完全丢失。此目录的创建已在 系统和环境 中进行了记录。

/var/lib/nextcloud 应该如下所示

drwxr-xr-x  6 nextcloud nextcloud 4096 17. Apr 00:56 ./
drwxr-xr-x 21 root      root      4096 17. Apr 00:53 ../
drwxr-xr-x  2 nextcloud nextcloud 4096 16. Feb 00:21 apps/
drwxrwx--- 10 nextcloud nextcloud 4096 16. Apr 13:46 data/
drwx------  2 nextcloud nextcloud 4096 17. Apr 01:04 sessions/

此外,这可能是由于 此 bug 导致 nextcloud.log 的大小过大而导致系统分区已满。在这种情况下,截断日志文件并禁用预览生成器或将日志级别设置为 4(在 config.php 中)并重启 Nextcloud 有所帮助。

环境变量不可用

根据你使用的应用程序服务器,可以向 Nextcloud 的 PHP 代码提供自定义环境变量。

FPM

根据 Nextcloud 的文档,在 /etc/php-legacy/php-fpm.d/nextcloud.conf 中添加一行或多行,例如

/etc/php-legacy/php-fpm.d/nextcloud.conf
env[PATH] = /usr/local/bin:/usr/bin:/bin

uWSGI

/etc/uwsgi/nextcloud.ini 中添加一行或多行,例如

/etc/uwsgi/nextcloud.ini
env = PATH=/usr/local/bin:/usr/bin:/bin

请注意,第二个 = 周围不能有空格。

你通过安全连接访问你的实例,但是你的实例正在生成不安全 URL

如果你的管理设置中出现以下消息

你通过安全连接访问你的实例,但是你的实例正在生成不安全 URL。这最有可能意味着你位于反向代理之后,并且覆盖配置变量未正确设置。请阅读有关此问题的文档页面。

在你的配置文件中添加以下内容: [7]

/etc/webapps/nextcloud/config/config.php
'trusted_proxies' => ['192.168.1.0'],
'overwriteprotocol' => 'https',

192.168.1.0 替换为你的公共 IP。

Nextcloud 报告索引损坏(MariaDB)

如果 Nextcloud 报告索引损坏(例如在 occ db: 命令期间或在 管理 > 日志 中),你可以通过执行以下命令来修复你的数据库

$ mysqlcheck --check --auto-repair nextcloud -u nextcloud -p

如果命令失败,它仍然会指出包含损坏索引的表 TABLE。通过登录 mariadb 来修复它

$ mysql -u nextcloud -p
mysql> use nextcloud;
mysql> check table TABLE;
mysql> optimize table TABLE;
mysql> exit;

TABLE 替换为你找到的匹配项。

无法获取 Collabora 功能端点

如果你收到以下响应

无法获取 Collabora 功能端点:客户端错误:`GET https:///wapps/richdocumentscode/proxy.php?req=/hosting/capabilities` 导致 `404 Not Found` 响应

请仔细检查你的 config.php,确保 overwrite.cli.url 条目已如 配置/Nextcloud 部分所述进行设置。

登录尝试后重置

要解锁因多次登录失败而被阻止的 IP 地址,请运行

occ security:bruteforce:reset <IP address>

登录页面循环

如果登录方法失败,尽管提供了正确的凭据(并最终触发了暴力破解保护),请确保

  • data 目录可被用户 nextcloud 访问并可写。检查 /usr/share/webapps/nextcloud/data 的目标和模式。
  • session 目录可被用户 nextcloud 访问并可写。检查 /usr/share/webapps/nextcloud/sessions/var/lib/nextcloud/sessions
注意 要遵循链接并查看用户 nextcloud 看到的内容,请使用
sudo -u nextcloud ls -lahH <path/to/dir>

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.