前言
本文为详细讲解搭建Nextcloud云盘后,如何用Docker搭建云盘可以使用的Onlyoffice服务器。
搭建方法好多种,为节省时间,先讲如何快捷搭建的一种方法,之后围绕该方法,讲解其他方法以及各种坑。不求甚解者,后面可不看。
准备
- 一搭建好的概览显示为所有检查已通过的Nextcloud服务器
- 安装好宝塔面板(没打好,用命令也行)
- 推荐使用apache web服务器。
- 拥有自己的域名,保存好nginx ssl文件(什么也没有,看后面的方法)
推荐服务器配置
官方文档如下
配置方面还是尽量高点,实测会消耗很多资源,小内存很累。
- RAM: 4 GB+
- CPU: 双核 2 GHz +
- Swap: 至少2 GB
- HDD: 至少有2GB的剩余空间
- 系统要求: RedHat 64bit,CentOS类、Debian类的内核版本3.8以上。
- Docker: 1.9.0版本及以上
安装Docker
CentOS/RedHat/Fedora
使用yum命令安装Docker:
yum install docker -y
启动Docker服务:
systemctl start docker
Debian/Ubuntu
使用apt命令安装Docker:
sudo apt-get install docker.io
Docker服务会自动启动
本教程直接讲解外网可用方法,80端口的方法就不讲了。
启用HTTPS
HTTPS需要使用SSL证书,可以自己签发也可以用ca机构签发的,加密效果相同。
ca机构签发方式1
Docker默认使用nginx web服务器,所以下载好4个文件,onlyoffice,只需要两个文件,并规定了文件名如下:
- onlyoffice.crt
- dhparam.pem
- onlyoffice.key
-
将生成的证书拷贝到
将生成的证书拷贝到
/app/onlyoffice/DocumentServer/data/certs
目录下。
创建相应目录:
mkdir -p /app/onlyoffice/DocumentServer/data/certs
复制证书到
/app/onlyoffice/DocumentServer/data/certs
- 目录并设置权限:
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
-
运行容器,映射容器的443端口和Data目录至本地:
docker run -i -t -d -p 8080:443 --name OnlyOffice --restart=always
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
-p 8080:443 :指定服务器的8080端口为Docker的443端口
--name OnlyOffice : 指定容器名字
-e JWT_SECRET=my_jwt_secret :指定密钥,之后要用
- 在浏览器里访问https://服务器地址:8080/
ca机构签发方式2
-
将目录映射至本地
sudo docker run -i -t -d -p 8080:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
-p 8080:443 :指定服务器的8080端口为Docker的80端口
--name OnlyOffice : 指定容器名字
-e JWT_SECRET=my_jwt_secret :指定密钥,之后要用
在浏览器里就可以访问http://服务器地址:8080/
-
启用HTTPS
用ca机构签发的证书,在宝塔面板设好
设置好反向代理
本地签发方式
生成证书:
-
创建私钥
openssl genrsa -out onlyoffice.key 2048
-
创建CSR
openssl req -new -key onlyoffice.key -out onlyoffice.csr
-
用私枂和CSR签发证书
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
-
用dhparam加密服务器密钥
openssl dhparam -out dhparam.pem 2048
完成证书的生成后,将生成的证书拷贝到
/app/onlyoffice/DocumentServer/data/certs
目录下。
创建相应目录:
mkdir -p /app/onlyoffice/DocumentServer/data/certs
复制证书到
/app/onlyoffice/DocumentServer/data/certs
目录并设置权限:
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
运行容器,映射容器的443端口和Data目录至本地:
docker run -i -t -d -p 8080:443 --name OnlyOffice --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver```
-p 8080:443 :指定服务器的8080端口为Docker的80端口
--name OnlyOffice : 指定容器名字
-e JWT_SECRET=my_jwt_secret :指定密钥,之后要用
在浏览器里就可以访问https://服务器地址:8080/
填写nextcloud的onlyoffice资料
方法1: 填写https://服务器地址:8080/
方法2: 填写https://服务器地址/
方法3: 填写https://服务器地址:8080/
密钥填写-e JWT_SECRET=my_jwt_secret ,后面你输入的文字。
各种坑
CentOS/RHEL/Fedora无法访问
这是由于SELinux的阻止。
暂时关闭SELinux(重启后失效):
setenforce 0
onlyoffice报 error self signed certificate导致download failed错误处理
安装nextcloud+onlyoffice,打开onlyoffice报错
接下来禁用Document Server的访问验证,Document Server默认拒绝未认证的请求(也就是自签名的HTTPS请求)。
打开/etc/onlyoffice/documentserver/default.json,向下找到rejectUnauthorized字段,将其值改为false。
重启容器。
修改default.json
修改如下: “rejectUnauthorized”: false
重启容器
重启nextcloud onlyoffice