开源生产力套件Nextcloud

什么是 Nextcloud ?

Nextcloud 是一套用于创建网络硬盘的客户端/服务器开源软件。Nextcloud 服务器是以 PHPJavaScript 脚本语言撰写,可与多种数据库管理系统一协同运作,包含了 SQLiteMariaDBMySQLOraclePostgreSQL 数据库。与 Dropbox 等专有服务相比,Nextcloud 的开放架构让用户可以利用应用程序的方式在服务器上新增额外的功能,并让用户可以完全掌控自己的资料。NextCloud 的客户端覆盖了 WindowsMacAndroidiOSLinux 等各种平台,也提供了网页端以及 WebDAV 接口,所以你几乎可以在各种设备上方便地访问你的云盘。

最新版本 Nextcloud 21 除了提供出色的基于云的文件服务器外,还支持各种文件的在线编辑,办公软件的在线读取,还添加了更多协作功能,包括内置的视频会议和小组会议服务等等。

本文完成于 2021 年上半年,目前最新版本已是 Nextcloud 22 ,老苏已对本文进行了相应的调整和补充

简而言之,Nextcloud Hub 已经是一个具有音频+视频团队聊天,实时协作文档编辑,邮件客户端和日历+联系人管理等功能的一个完全集成的本地内容协作平台。

安装

数据库

通过 phpMyAdminMariaDB 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.4DSM 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

5

MariaDB 10 端口是 3307

10

运行

在浏览器中输入 http://群晖IP:8383,就能看到主界面了

第一次需要初始化,主要是创建数据库、拷贝文件

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

如果遇到错误,一般是数据库设置问题

老苏会用类似 Navicat for MySQL 的数据库工具连接测试一下

如果没有遇到错误

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

接下来就可以使用了

Nextcloud 跨平台支持 WindowsMacAndroidiOSLinux 等平台,而且还提供了 网页版 以及 WebDAV 形式访问,因此你几乎可以在任何电脑、手机设备上都能轻松获取和访问你的文件文档。

NextCloud 最强大的是各种应用,包括 Markdown 在线编辑、OnlyOffice(需另外部署服务端)、笔记、思维导图、日历、联系人等,你可以自行选择用以丰富网盘的功能。所以用得好 Nextcloud 绝对是生产力工具。

老苏建议大家看看『 Nextcloud 和我的一天(https://sspai.com/post/61711) 』,写的非常棒。

工具好不好,还得看你怎么用。

其他

远程访问

反向代理设置

但是用域名访问时会显示错误

老苏用 taiscale 的 IP 访问也是同样的提示

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

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

  1. 或者右键属性

权限 –> 新增

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

添加了两条,其中

1
2
3
4
   /* 第1条是 tailscale 的 IP */
1 => '100.95.238.3:8383',
/* 第2二条是远程访问的域名 */
2 => 'nc.xxxx.ml',

保存之后回到 SSH 客户端,再将权限改回去

可不可以不改,当然是可以的

1
2
# 在 config 目录执行
chmod 644 config.php

不需要重启,直接刷新页面就可以了

数据库

老苏用了 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/server

Nextcloud
地址:https://nextcloud.com/

Synology: How to Install Nextcloud Using Docker – Marius Hosting
地址:https://mariushosting.com/synology-how-to-install-nextcloud-using-docker/