skip to content
icePigeon's Blog

快速部署 Nextcloud + OnlyOffice (docker) 私人网盘

/ 6 min read

Table of Contents

前言

迫于存储和协同编辑文档的需求,我尝试过 ownCloud 和 kodexplorer,然而都不尽人意。偶然发现 Nextcloud,这是由 ownCloud 原骨干开发的网盘程序,功能比较强大,扩展性也很强。比如 Nextcloud 可以和 OnlyOffice 配合实现云协同工作,这在 group essay 漫天飞的大学生活中是特别实用的。

查询了许多资料,发现大多方案配置较为繁琐,为此摸索出了较为轻松的部署方案:

  1. 使用 LNMP 一键包配置 Nextcloud 环境。 Nextcloud 的配置较为简洁,甚至只需要给予文件夹权限,然后通过官方提供的 PHP 文件进行安装。官方提供的 Docker 运行环境虽然省去了一定的配置步骤,但是需要 MySQL 等其他容器配合(否则只能使用 SQLite 数据库),所以步骤和直接安装并没有太大区别。而 LNMP 一键包易于使用,十分省心。
  2. 利用官方提供的 OnlyOffice Docker 镜像部署 OnlyOffice。 OnlyOffice 的配置比较繁琐,于是直接使用 Docker 镜像,反正只是提供一个 document server。
  3. 各种详细配置。 伪静态以及性能优化。

本文测试环境为 CentOS 7 最新稳定版本。

1. 安装 LNMP

感谢 https://lnmp.org

Terminal window
yum -y install wget vim screen
screen -S lnmp
wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

这里需要注意的是 Nextcloud 只支持 PHP 7.1.x 以上版本(7.1.31 测试通过),安装时请留心。

安装完毕后,顺手安装 Redis、OPcache 以及 APCu(为 Nextcloud 提供性能优化):

Terminal window
bash addons.sh

选择 Redis、OPcache 以及 APCu 即可。

然后进行添加主机等操作,可以到上方提供的官网查询详细命令。

添加主机时记得选择使用 SSL。没有证书可以先把域名解析到服务器 IP 上,然后选择使用 Let’s Encrypt 提供的免费证书,LNMP 脚本会自动更新域名证书。

2. 安装并配置 Nextcloud

感谢 https://nextcloud.com

最为简洁的方式是下载官方提供的 PHP 文件,然后通过网页进行安装。

Terminal window
cd /path/to/your/vhost/directory
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

然后通过绑定的域名访问 setup-nextcloud.php 进行手动安装。

安装完毕后修改 Nginx 伪静态规则。

Terminal window
vim /usr/local/nginx/conf/vhost/yourdomain.tld.conf

listen 80listen 443 对应的 server 块中,注释掉 include enable-php.conf(共两处),并在下方添加如下内容:

#include enable-php.conf;
include enable-php-pathinfo.conf;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}

进入 Nextcloud,测试基本功能。完成后在右上方点击 Apps 标签,然后在搜索框中输入 onlyoffice,安装连接插件(暂时不用配置)。

下一步修改配置文件以开启 APCu 以及 Redis,加速 Nextcloud 页面加载。配置文件位于 config/config.php,使用编辑器在其中加入:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),

保存后测试功能,功能正常进入下一环节。

3. 安装 OnlyOffice Document Server (Docker)

感谢 https://www.onlyoffice.com

首先安装 Docker,设置为系统默认启动项并启动:

Terminal window
yum -y install docker
systemctl enable docker
systemctl start docker

接下来拉取官方镜像:

Terminal window
docker pull onlyoffice/documentserver

完毕后启动(强烈建议启用 HTTPS):

Terminal window
docker run -i -t -d -p 4443:443 \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
onlyoffice/documentserver

检查启动状态:

Terminal window
docker ps

看到其中有容器 ID 以及 onlyoffice/documentserver 即可。现在你应该可以通过 https://IP:4443 访问 OnlyOffice Document Server 的默认页面了。

接下来需要添加 OnlyOffice 使用的域名,并解析到服务器 IP 上,然后添加主机。同样记得选择启用 SSL。

编辑 Nginx 配置文件:

Terminal window
vim /usr/local/nginx/conf/vhost/yourdomain.tld.conf

注释掉 80 端口监听,并在 443 的 server 段中添加反向代理:

server {
listen 443 ssl http2;
#listen [::]:443 ssl http2;
location / {
proxy_pass https://localhost:4443;
}
}

这开启了端口转发,将 4443 端口转发到 443 端口上,以支持域名直接访问 OnlyOffice Document Server。

现在你可以通过 https://yourdomain.tld 访问 OnlyOffice Document Server。返回 Nextcloud,在设置中选择 ONLYOFFICE,然后在第一行填入 https://yourdomain.tld。成功后即可选择默认使用 OnlyOffice 编辑的文件格式。

Enjoy