开源生产力套件Nextcloud
什么是 Nextcloud ?
Nextcloud是一套用于创建网络硬盘的客户端/服务器开源软件。Nextcloud服务器是以PHP与JavaScript脚本语言撰写,可与多种数据库管理系统一协同运作,包含了SQLite、MariaDB、MySQL、Oracle、PostgreSQL数据库。与Dropbox等专有服务相比,Nextcloud的开放架构让用户可以利用应用程序的方式在服务器上新增额外的功能,并让用户可以完全掌控自己的资料。NextCloud的客户端覆盖了Windows、Mac、Android、iOS、Linux等各种平台,也提供了网页端以及WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。
最新版本 Nextcloud 21 除了提供出色的基于云的文件服务器外,还支持各种文件的在线编辑,办公软件的在线读取,还添加了更多协作功能,包括内置的视频会议和小组会议服务等等。
本文完成于
2021年上半年,目前最新版本已是Nextcloud 22,老苏已对本文进行了相应的调整和补充
简而言之,Nextcloud Hub 已经是一个具有音频+视频团队聊天,实时协作文档编辑,邮件客户端和日历+联系人管理等功能的一个完全集成的本地内容协作平台。
安装
数据库
通过 phpMyAdmin 在 MariaDB 5 中新建用户 nextcloud,创建同名的库 nextcloud 并授予所有权限。

建议使用 MariaDB 10

安装镜像
在群晖上以 Docker 方式安装。
在注册表中搜索 nextcloud ,选择第一个 nextcloud,版本选择 22.1.0(通过 version.php 获知详细版本为 22.1.0.1)。

不能用 latest 版本(目前是 22.1.1.2),因为在初始化时会出现下面的错误
1 | Function not implemented: AH00141: Could not initialize random number generator |
官网有人反馈:https://github.com/nextcloud/docker/issues/1574
不光老苏的 DSM 6.1.7,就是 DSM 6.2.4 、DSM 7.0 上也一样,从回复看像是群晖内核版本太低导致的问题
Your NAS is using a linux kernel < 3.16 and is missing some dependencies required by apache2 now.
卷
在 docker 文件夹中,创建一个新文件夹,并将其命名为 nextcloud
| 文件夹 | 装载路径 | 备注 |
|---|---|---|
/docker/nextcloud |
/var/www/html |
主目录 |

端口
端口不能冲突
| 本地端口 | 容器端口 | 类型 |
|---|---|---|
| 8383 | 80 | TCP |

环境
| 可变 | 值 |
|---|---|
MYSQL_HOST |
数据库服务器的地址 |
MYSQL_DATABASE |
mysql/mariadb 数据库的名称 |
MYSQL_USER |
数据库的用户名 |
MYSQL_PASSWORD |
数据库用户的密码 |
Mariadb 5端口是3306

MariaDB 10端口是3307

运行
在浏览器中输入 http://群晖IP:8383,就能看到主界面了
第一次需要初始化,主要是创建数据库、拷贝文件

第一次使用需要进行设置,首先需要创建 管理员账号

如果遇到错误,一般是数据库设置问题
老苏会用类似
Navicat for MySQL的数据库工具连接测试一下

如果没有遇到错误

应用安装完成之后,会显示几页简介

接下来就可以使用了

Nextcloud 跨平台支持 Windows、Mac、Android、iOS、Linux 等平台,而且还提供了 网页版 以及 WebDAV 形式访问,因此你几乎可以在任何电脑、手机设备上都能轻松获取和访问你的文件文档。
NextCloud 最强大的是各种应用,包括 Markdown 在线编辑、OnlyOffice(需另外部署服务端)、笔记、思维导图、日历、联系人等,你可以自行选择用以丰富网盘的功能。所以用得好 Nextcloud 绝对是生产力工具。

老苏建议大家看看『 Nextcloud 和我的一天(https://sspai.com/post/61711) 』,写的非常棒。
工具好不好,还得看你怎么用。
其他
远程访问
反向代理设置

但是用域名访问时会显示错误
老苏用
taiscale的 IP 访问也是同样的提示

按提示我们需要编辑 config/config.php文件,不过直接编辑会显示权限不足

- 需要我们
SSH登录到群晖,在config目录下修改config.php文件的权限
1 | # 在 config 目录执行 |

- 或者右键属性

权限 –> 新增

接下来可以直接用 vi 编辑,也可以回到群晖桌面编辑。找到 trusted_domains

添加了两条,其中
1 | /* 第1条是 tailscale 的 IP */ |

保存之后回到 SSH 客户端,再将权限改回去
可不可以不改,当然是可以的
1 | # 在 config 目录执行 |

不需要重启,直接刷新页面就可以了
数据库
老苏用了 MariaDB 5 而不是 MariaDB 10,在 设置 –> 管理 –> 概览 中,会看到这些警告

所以老苏建议大家最好使用 MariaDB 10。
安全性
老苏非常赞成这句话: Privacy does not exist without security.
所以对映射到公网的地址,应该定期到 https://scan.nextcloud.com/ 进行扫描和检测

往下拉有扫描的漏洞和建议

参考文档
nextcloud/server: ☁️ Nextcloud server, a safe home for all your data
地址:https://github.com/nextcloud/serverNextcloud
地址:https://nextcloud.com/Synology: How to Install Nextcloud Using Docker – Marius Hosting
地址:https://mariushosting.com/synology-how-to-install-nextcloud-using-docker/