nextcloud
集成OnlyOffice
onlyoffice
提供了nextloud
的插件,集成后便可在网盘中直接打开和编辑office
文件。
onlyoffice
配置
docker
运行
直接通过docker
运行
sudo docker run -i -t -d -p 13800:80 -p 13443:443 --restart=always \
--name onlyoffice \
-v /home/wt/programs/onlyoffice/logs:/var/log/onlyoffice \
-v /home/wt/programs/onlyoffice/data:/var/www/onlyoffice/Data \
-v /home/wt/programs/onlyoffice/lib:/var/lib/onlyoffice \
-v /home/wt/programs/onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
配置密码
为了安全考虑,可以为onlyoffice
配置密码验证,将容器内的/etc/onlyoffice/documentserver/local.json
文件拷贝出来:
sudo docker cp onlyoffice:/etc/onlyoffice/documentserver/local.json ./local.json
然后更改配置如下:
然后将更改完的文件复制回去:
sudo docker cp local.json onlyoffice:/etc/onlyoffice/documentserver/
重启生效:
sudo docker restart onlyoffice
添加域名解析
为onlyoffice
添加一个域名解析,解析到onlyoffice
的服务器。
配置nginx
代理
配置onlyoffice
的反向代理,使onlyoffice
可通过域名访问,配置如下:
upstream docservice {
server <ServerDomain>; # 域名 如office.example.com
}
map $http_host $this_host {
"" $host;
default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $this_host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
## Normal HTTP host
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name <ServerDomain>; # 域名 如office.example.com
server_tokens off;
## Redirects all traffic to the HTTPS host
return 301 https://$server_name:443$request_uri;
}
server {
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl;
server_name <ServerDomain>; # 域名 如office.example.com
server_tokens off;
root /usr/share/nginx/html;
ssl on;
ssl_certificate /etc/nginx/ssl/<ssl.pem>; # 证书路径
ssl_certificate_key /etc/nginx/ssl/<ssl.pem>; # 证书私钥路径
ssl_verify_client off;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_prefer_server_ciphers on;
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://172.17.0.1:13800; # 代理
proxy_http_version 1.1;
}
}
注意将三处域名配置替换为自己的实际域名,以及配置正确的证书路径。
启用ipv6
配置
如果nextcloud
网盘域名走的是ipv6
地址,则还需要开启docker
的ipv6
支持,因为默认docker
是不开启v6
的,容器内的onlyoffice
通过ipv6
下载网盘中内容时会出错。只有docker
是以daemon
方式启动的才可配置。
我的nextcloud
网盘是部署在内网电脑上的,为了公网访问,域名解析的是电脑ipv6
的地址(ipv6
是公网的),因此通过域名公网访问时必须走ipv6
,也就必须要配置docker
的ipv6
支持,如果网盘服务器是走ipv4
的,就可以不用配置。
编辑(没有则创建)/etc/docker/daemon.json
:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}
其中fixed-cidr-v6
是子网段划分,随便分就好。
然后重启docker
:
sudo systemctl restart docker
仅用systemctl reload docker
不会影响已创建的容器,因此需要restart
。
添加并配置onlyoffice
插件
在插件市场找到onlyoffice
插件并安装,安装完成后,进入【设置】,在侧边栏管理中可看到ONLYOFFICE
,点击进入配置,在 服务器设置 里填写服务器地址,也即域名:
点击保存即可。
在网盘中点击office
文件,即可直接打开: