Sealin

初闻不解词间意,再听已是曲中人。

0%

docker搭建nextcloud个人网盘在线编辑office文件

简述

使用nextcloud运行网盘服务,再加入onlyoffice/documentserver实现在线编辑功能。

运行nextcloud

将以下几个目录持久化到宿主机,防止配置和数据丢失

1
2
3
/var/www/html/data
/var/www/html/config
/var/www/html/custom_apps

同时,为容器传入redis环境变量,以触发nextcloud的缓存机制,缓存的环境变量名称可以通过 /var/www/html/config/redis.config.php 看到,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (getenv('REDIS_HOST')) {
$CONFIG = array (
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => getenv('REDIS_HOST'),
'port' => getenv('REDIS_HOST_PORT') ?: 6379,
'password' => getenv('REDIS_HOST_PASSWORD'),
),
);
}

可以看到如果存在REDIS_HOST这个环境变量,就可以触发缓存,我看网上很多文章的做法是修改apcu.config.php,手动加入以上redis配置代码块,感觉没这必要。
运行容器

1
docker run -d --name cloud -p 888:80 -v /var/data/nextcloud/apps:/var/www/html/custom_apps -v /var/data/nextcloud/config:/var/www/html/config -v /var/data/nextcloud/data:/var/www/html/data -e REDIS_HOST='192.168.11.83' -e REDIS_HOST_PORT='6380' -e REDIS_HOST_PASSWORD='your-password' nextcloud:17.0.1

启动后稍等片刻,访问http://ip:888,即可看到网盘安装界面。
推荐选择mysql作为数据库。

安装onlyoffice服务

1
docker run -i -t -d --name officeserver -p 51000:80 --restart=always onlyoffice/documentserver

如果运行没问题,进入http://ip:51000可以看到如下界面
image.png

安装nextcloud插件

由于国内网络环境不够因特乃熊,网盘里的插件管理界面99%的时间是打不开的,等两个小时也只能显示白板(至少我这边是这样)。
所以使用离线方式安装插件。

下载插件

1
2
3
4
cd /var/data/nextcloud/apps
git clone https://github.com/ONLYOFFICE/onlyoffice-nextcloud.git onlyoffice
# 33是nextcloud访问目录和文件需要的权限
chown -R 33:sealin onlyoffice

配置插件

将插件源码下载到apps目录以后,最好重启下nextcloud,再去启用插件

1
docker restart cloud

重启后进入页面,到插件设置
image.png

启用列表中新出现的onlyoffice插件
image.png

启用完成后进入系统设置,左侧的选项会多出一个onlyoffice
image.png

填写自己的documentserver服务IP和端口
image.png

点击保存后,如果验证51000端口的服务没问题,会出现允许使用在线编辑的格式选项。
image.png

勾选需要的格式后,就可以到网盘主界面的文件列表中添加一个比如word文档,来试试在线编辑了。
image.png
可以看到多出来了几个新建文件的格式,试试word
image.png
image.png
带劲