码上焚香

Yahocen

Nextcloud 安装记录(Snap版)

2024-11-21

我曾多次尝试安装 Nextcloud,但最终放弃了。我觉得它太复杂且配置繁琐,遇到的问题难以解决,网上的解答也未能帮助我解决实际问题。因此,我一直使用 Cloudreve 作为个人网盘。Cloudreve的功能强大、配置简单、使用方便,但相比 Nextcloud,功能还有所欠缺。为了支持 Cloudreve 的发展,我购买了捐赠版本。由于我的域名即将过期,经济状况有些紧张,因此我打算重新启用 Nextcloud。这次安装得益于我自身技术的提升,我相信我有能力很好地维护 Nextcloud。此外,随着人工智能技术的发展,我相信我将更快地找到解决问题的方法。

不建议完全没有网络知识和对 PHP 项目运作方式不了解的新手小白安装 Nextcloud,因为一旦遇到问题,可能会很难自行解决。

注意时效性,使用的软件版本:

  • Windows 10 专业版 22H2 操作系统内部版本 19045.5131

  • 适用于 Linux 的 Windows 子系统 2.3.26

  • Ubuntu 24.04.1 LTS(wsl2子系统)

  • Nextcloud 的版本为 30.0.2

  • freenginx-1.27.0

Nextcloud 的安装分为客户端安装和服务端安装,本文将重点记录服务端安装过程。

https://nextcloud.com/install/

我的 Windows 作为一台小型家庭服务器,通过 WSL2 安装 Ubuntu 子系统,并在 Ubuntu 内使用 Nextcloud 服务器的打包版本(snap)进行安装。尽管 Nextcloud 有多种安装方式,并且安装界面都提供了详细的介绍,供用户自由选择,但我选择采用 wsl + ubuntu + snap 的方式主要基于以下几点考虑:

  1. 我没有一台独立的 Linux 服务器来部署。

  2. snap 安装方式非常便捷,各个组件之间的配合都经过官方优化。

  3. WSL 可以轻松与 Windows 文件系统交互,便于管理。

  4. nextcloud-snap 支持 Ubuntu,同时 WSL 也支持 Ubuntu。

Install nextcloud on Ubuntu

https://github.com/nextcloud-snap/nextcloud-snaphttps://docs.nextcloud.com/server/30/admin_manual/installation/source_installation.html#installing-via-snap-packages

安装

安装 WSL:略

安装 Ubuntu 子系统:略

安装 nextcloud-snap

参考上文引用的链接,实际非常简单,前提是保证子系统可以通畅连接互联网:

  1. 更新服务器:apt update

  2. 安装 snapd 工具:apt install snapd

  3. 安装 Nextcloud:snap install nextcloud

  4. 安装 net-tools:apt install net-tools,方便查看子系统 IP 和后续维护

执行完以上四步,我们就可以通过 ifconfig 查看子系统 IP,并在浏览器中访问 Nextcloud 的初始化界面了。

配置记录

各种设置实际上都可以在 Nextcloud 文档中找到,但是文档内容实在太多,让人无从下手,只能水来土掩了。

https://docs.nextcloud.com/server/latest/admin_manual/index.html

找到 config.php 文件

我直接使用 find 命令查找,nextcloud 的大部分配置都在这里进行。

find / -name config.php

设置可信地址 trusted_domains

初次安装时只能通过内网IP进行访问。如果需要通过其他IP(如公网IP)或域名进行访问,则需要进行相应设置。需要注意的是,如果访问地址包含端口号,例如 https://nextcloud.abc.com:8888,则需填写 nextcloud.abc.com:8888,并配置URL重写规则。

<?php
$CONFIG = array (
  //.....................................................
  //设置可信地址
  'trusted_domains' => array (
    0 => '172.27.55.39',
    1 => 'nextcloud.abc.com:8888',
  ),
  //URL重写规则
  'overwritehost' => 'nextcloud.abc.com:8888',
  'overwriteprotocol' => 'https',
  'overwritewebroot' => '/',
  'overwrite.cli.url' => 'https://nextcloud.abc.com:8888',
  //.....................................................
);
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#trusted-domains

设置数据储存位置 datadirectory

默认情况下,数据存储位置位于子系统内部,这可能会给在 Windows 中管理和设置备份服务带来一定困难。然而,通过利用 WSL 子系统的特性,Windows 的所有盘符会自动挂载到 /mnt 目录下,因此我将数据存储位置直接定向到了 Windows 硬盘。

Nextcloud 会自动检测数据目录的权限,以防止恶意程序篡改数据。考虑到 WSL 目录的默认权限较高,我采取了禁用 Nextcloud 权限检测的方案。

<?php
$CONFIG = array (
  //.....................................................
  //数据存储目录
  'datadirectory' => '/mnt/e/nextcloud/data',
  //禁用数据目录权限检测
  'check_data_directory_permissions' => false,
  //.....................................................
);
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#datadirectory

安装与设置警告

Nextcloud 管理设置的概览页面可以自动检测出需要调整的设置,我们会尽力满足这些要求,因为这直接关系到我们的数据安全。

反向代理标头设置不正确。这会允许攻击者对 Nextcloud 假冒其IP地址并引发安全问题

https://docs.nextcloud.com/server/30/admin_manual/configuration_server/reverse_proxy_configuration.html

您的实例上的某些标头设置不正确 - 未设置 Strict-Transport-Security HTTP 标头(应至少为 15552000 秒)。为了增强安全性,建议启用 HSTS

我是在外层 Nginx 中设置的

location / {		
      # ....................................
      # 启用 HSTS
	  add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
      # ....................................
}

设置上传大小

比如设置成10G

sudo snap set nextcloud php.memory-limit=1024M
sudo snap set nextcloud php.upload-max-filesize=10G
sudo snap set nextcloud php.post-max-size=10G
sudo nextcloud.occ config:system:set max-filesize --value=10G

您在安装过程中未设置默认的国际区号。缺失国际区号的电话号码时将使用默认的国际区号进行验证。要允许无国际区号的电话,请在您的配置文件中添加 “default_phone_region” 设置选项并依照 ISO 3166-1 进行设置。

sudo nextcloud.occ config:system:set default_phone_region --value="CN"

PHP 模块“imagick”没有被启用,尽管已启用了主题程序。为了使收藏图标正常生成,您需要安装并启用这个模块。

根据 Github 上的说法,由于 imagick 存在漏洞,snap 没有安装此依赖,因此我们暂时忽略这个问题。

https://github.com/nextcloud-snap/nextcloud-snap/issues/1540

应用商店无法加载的问题

原因是因为 Nextcloud 的应用商店后台服务器位于国外,国内网络经常无法访问,导致无法加载数据。以下是几种解决方案:

  1. 为服务器设置代理,确保网络畅通。

  2. 从 Nextcloud 官方应用商店下载离线包,手动部署。

  3. 设置国内代理源,或者自行搭建代理源。

https://apps.nextcloud.com/https://www.orcy.net.cn/1129.html

自从 xxxx年xx月xx日 xx:xx:xx 日志中存在 n 个错误

可以在 Nextcloud > 管理设置 > 日志 中查看具体错误信息。经过预览,都是网络访问错误。这个问题与应用商店无法连接的问题类似,只能通过优化网络来解决。如果不需要使用第三方插件或者错误不影响使用,可以直接忽略。

推荐站在巨人的肩膀上,让我们能走得更远

https://www.orcy.net.cn/?s=nextcloud

将默认标签页从仪表盘修改为文件

config.php修改

'defaultapp' => 'files',