群晖docker nextcloud onlyoffice 自签https 搭建在线文档编辑
创作立场声明:我的配置:群晖DS1618+ 红盘6T*6;内存太贵自己换了,空个PICe有时间再折腾~;欢迎喜欢玩NAS和服务器的盆友分享折腾避坑
【先说需求实现】:多设备文档同步/备份、office文档在线编辑(核心需求);
【闲扯话题】:为了office在线编辑,折腾了一大圈,搭过office online server + sharepoint server,也用过群晖自带的;前者太庞大,后者需要转格式;加上其他各种折腾,最终还是觉得Nextcloud+onlyoffice最好;
【安装前准备】:
1、群晖 : 安装docker + MariaDB 10
2、DDNS : 推荐f3322 (公云PubYun)
*有服务器和固定IP的略过1和2 ,可以直接看下一条有哪些坑需要避;
【坑在哪里】:主要就是自签HTTPS证书,nextcloud和onlyoffice都需要改免受信(没80和443端口,不想折腾Let’s encrypt);另外,千万不要直接cp在docker映射的目录下放需要同步的文件,不然文件没法进nextcloud的数据库记录;
怎么选购
本来不想导购的,既然是什么值得买,那还是说说吧;NAS品牌基本都用过,个人只推荐群晖(黑的用过2年,618转白DS1618+);也不吐槽其他家的NAS了,留给评论区
如果懂硬件,群晖官方有非常好的配置对比查询,个人推荐买intel x86的;别谈性能(要当PC用的那种),要性能自己装。
给几个推荐:DS218+DS918+DS1618+(适合深度折腾的盆友,主要是贵,需求看盘位)
如果只存小姐姐的就看什么便宜买什么就好,盘位合适就行;
不行,还是得吐槽下,话说NAS为什么贵,就因为系统和软件啊!
软件呢?一个比一个渣~,最好用的还是 docker…………
搭建走起
一、部署 MariaDB 10,安装docker(群晖套件中心)
安装 MariaDB 10 启用 Tcp/ip(最新的版本光字母大小写还不够,密码一定要带符号;密码记不住啊~)
安装phpMyAdmin(不装也行,主要初始化安装nextcloud的时候可以看看数据库的情况,安装时会自动装依赖项)
安装docker(这是已经装好nextcloud和onlyoffice的图)
基本都是麻瓜式安装,简单;
二、注册f3322,配置ddns
f3322的注册我就不说了,用其他ddns也都没问题;直接说配置ddns吧(可以配置在路由,我这里说配置群晖的,需要用到添加自定义)
群晖 控制面板-外部访问-DDNS,选择 自定义,服务供应商随便填;
Query URL:http://members.3322.net/dyndns/update?system=dyndns&hostname=__HOSTNAME__
选择 新增 填写注册的ddns信息(用户名 和 密码 就是登录f3322的用户名和密码)
三、安装nextcloud
准备nextcloud文档映射目录,新建docker.nextcloud.data
docker 注册表中搜索 nextcloud 往下拉选择 19.0.0 版本
docker安装配置nextcloud,双击 镜像,选择 高级设置,勾选 启用自动重启
选择 卷 添加映射路径 dockers/nextccloud/data=>/var/www/html/data
配置端口,本地端口可以自己定,一般8080以上没问题;80对应http,443对应https
配置环境,貌似不配置数据库信息,nextcloud会直接自带的sqllite数据库
数据库地址:MYSQL_HOST:172.17.0.1:3307 (172.17.0.1是docker的默认bridge网关,3307是MariaDB端口)
数据库账户:MYSQL_USER:你的账户;默认root
数据库密码:MYSQL_PASSWORD:你那难记的密码
数据库名:MYSQL_DATABASE:next_cloud;(库不用先建,nextcloud会自己建)
点 应用,选择 下一步,检查没错就可以直接 点击 应用,开始启动容器
浏览器访问,本地ip访问或ddns域名访问都行,注意加上配置的端口(话说回来,ddns访问路由器要设置端口映射,这里就不废话了);
坑1:有时候会提示无法访问数据库,或者xxx错误之类的;然而,只要你确定数据库 账号 密码 端口都没错的话,果断多点几次 安装完成 说不定就好了。搞得我怀疑人生~
数据库:nextcloud自己建了“oc_管理员名”的账户和库;如果重装nextcloud之类的,建议全部先删掉;
nextcloud就已经可以使用了,接着先配置nextcloud的https;
四、https自签证书(不会用cmd或shell的,跟着操作就行)
群晖 控制面板 终端机和SNMP 启动SSH功能
电脑 搜索 CMD ,输入 ssh admin@群晖局域网IP ; 回车输入admin的密码(不会显示)
进入后一顿操作:
1、sudo -i (再次输入群晖admin密码,获取root权限;不然docker命令用不了)
2、docker container ls -a (查看当前运行的容器,记住 container id)
3、docker exec -it [容器ID或名称] /bin/bash (容器ID只要输入前几个,能不跟其他的重复就行)
坑2,一定要修改容器时区,不然修改apache2的ssl重启后,容器会无线重启,不然会~无~线~重~启~,重启~
4、echo "Asia/Shanghai" > /etc/timezone; (重点:修改容器时区)
5、ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (也是修改时区,都要操作)
6、date -R (查看时间是否正确)
正式开始自签HTTPS ssl证书,又是一顿操作
1、mkdir /etc/ssl/ca/ (创建ca文件夹)
2、cd /etc/ssl/ca/ (到ca文件夹)
3、openssl genrsa -out ca.key 2048
4、openssl req -new -key ca.key -out ca.csr (根据提示,输入各种信息,部分信息打码)
坑3:划重点,提示 Common Name (e. g. server FQDN or YOUR name) []: 一定要填ddns的域名,就是xxx.f3322.net
5、openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
6、openssl genrsa -out server.key 2048
7、openssl rsa -in server.key -pubout -out server.pem
8、penssl req -new -key server.key -out server.csr (又是一顿填信息,还是那个位置记得填域名)
9、openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
以上,证书就签完了,别问,问就是不懂,操作就行;也可以评论区上更简单的命令行
修改 apache 的ssl证书配置:本来想用vim来修改的,结果apt update各种不行,apt源改了也不行;只能曲线救国,先复制到 群晖,修改完再复制回复了………………;划红线,但没写出来的,可以不用操作;
1、ls (查看那一堆证书文件,最终要用 server.crt 和 server.key)
2、cd /etc/apache2/
3、cp sites-available/default-ssl.conf /var/www/html/data/
回到群晖,或电脑链接共享文件夹,在docker.nextcloud.data目录下编辑 default-ssl.conf 这个文件;将红线的地方如下图修改;
修改完后,回到终端接着操作
4、cp /var/www/html/data/default-ssl.conf sites-available/
5、ln -s sites-available/default-ssl.conf sites-enabled/000-default-ssl.conf
6、a2enmod ssl (启用ssl)
7、service apache2 restart (重启apache服务器)
nextcloud就可以通过 https 进行访问了;
下面可以不用操作:
如果想http强制转https的,在/etc/apache2/sites-available/000-default.conf 这个文件<VirtualHost*:80>标签中增加
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]保存,然后:
1、a2enmod rewrite
2、service apache2 restart
打开浏览器访问,遇到这个问题,直接点击继续访问就行;因为是自签证书;
接着来,下图是遇到域名问题,之前用ip访问的,改成用ddns,或者相反的;都会遇到这个问题,这个时候就需要回去容器中接着修改配置文件;
电脑 搜索 CMD ,输入 ssh admin@群晖局域网IP ; 回车输入admin的密码(不会显示)
1、sudo -i (再次输入群晖admin密码,获取root权限;不然docker命令用不了)
2、docker container ls -a (查看当前运行的容器,记住 container id)
3、docker exec -it [容器ID或名称] /bin/bash (容器ID只要输入前几个,能不跟其他的重复就行)
4、cp /var/www/html/config/config.php /var/www/html/data/
配置文件里面修改三个地方;
1、trusted_domains 的 array 里面,添加自己的域名和端口,信任几个填几个,序号逐个增加就行
2、overwrite.cli.url里面,也可以直接修改为https的url地址
3、提前为office配置,不对ssl证书进行验证,添加如下代码:
'onlyoffice' =>
array (
'verify_peer_off' => TRUE,
),
坑4:第3点很重要,不然onlyoffice配置了https之后,nextcloud一直报错提示证书问题
保存后,cmd里移动回nextcloud容器中
1、mv /var/www/html/data/config.php /var/www/html/config/
别着急关CMD终端,直接就可以在nextcloud的证书先制作了,接着看;
五、onlyoffice安装及配置
制作onlyoffice证书文件
1、mkdir /var/www/html/data/certs
2、cd /var/www/html/data/certs/
3、openssl genrsa -out onlyoffice.key 2048
4、openssl req -new -key onlyoffice.key -out onlyoffice.csr (*填写各种信息,同样记得 域名的地方要用ddns的域名)
5、openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
6、openssl dhparam -out dhparam.pem 2048 (这个要等比较久)
然后就可以一路输入 exit 退出并关闭CMD终端
在群晖docker目录下新建onlyoffice目录,并将nextcloud.data目录下的 certs 文件夹复制到 onlyoffice中
接着安装onlyoffice:
同样 docker 中下载 onlyoffice/documentserver:5.5.3.39
配置路径映射:docker/onlyoffice/certs:/var/www/onlyoffice/Data/certs
配置端口
配置完成,直接 应用 ,然后 下一步 ,应用 ,就进行安装了;然后就是等,等很久~~~~,好几分钟吧;
这个时候就可以先进onlyoffice容器中,把一些配置先修改了;
电脑 搜索 CMD ,输入 ssh admin@群晖局域网IP ; 回车输入admin的密码(不会显示)
1、sudo -i (再次输入群晖admin密码,获取root权限;不然docker命令用不了)
2、docker container ls -a (查看当前运行的容器,记住 container id)
3、docker exec -it [容器ID或名称] /bin/bash (容器ID只要输入前几个,能不跟其他的重复就行)
4、echo "Asia/Shanghai" > /etc/timezone; (重点:修改容器时区)
5、ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (也是修改时区,都要操作)
6、date -R (查看时间是否正确)
坑5:关闭 onlyoffice 的 ssl 证书验证
7、cp /etc/onlyoffice/documentserver/default.json /var/www/onlyoffice/Data/certs/ (复制出配置文件)
在群晖或电脑上修改文件,路径:docker.onlyoffice.certs 下的 default.json;
将"rejectUnauthorized"后面的 true 改为 false
回到CMD容器终端,再复制回去配置文件
8、mv /var/www/onlyoffice/Data/certs/default.json /etc/onlyoffice/documentserver/
然后就可以一路输入 exit 退出并关闭CMD终端,后面再也用不上了;
重点:顺路可以把群晖的 ssh 22 端口关了;
回到 docker 中,把onlyoffice重启;大功告成,差最后一步了;
六、nextcloud 连接 onlyoffice
进入 nextcloud ,选择 应用 Office & text,找到 ONLYOFFICE,点击下载并启用
坑6:nextcloud应用下载总因为网络原因报错,我不管,就一直重试;(不想折腾外部安装,有坑,折腾)
坑7:最后一个坑,最好用ddns的域名来连接,用 docker bridge ip 和 局域网ip 都试过不行,估计docker内容器网络配置的问题,不折腾了
下载好之后,选择 设置,找到 ONLYOFFICE,将 onlyoffice 的ddns域名和端口填上去,点击保存即可;
最后,把需要的格式文件都勾选上,就可以了;
在 nextcloud 首页就可以看到可以新建的文档;折腾这么久,最重要的就是兼容MS office,卒!
nextcloud 官网可以下载 PC 和 手机的客户端,直接用ddns的域名+端口就可以连接,实现同步;
njsfcy
校验提示文案
真水月居士
校验提示文案
wocawoca
非常羡慕楼主年轻又富有激情的心态,关键能够分享,大赞
校验提示文案
chewy
校验提示文案
值友1274162228
校验提示文案
Respawn
校验提示文案
天空城的国王
校验提示文案
_小伟_
校验提示文案
Leelone
校验提示文案
telanx
校验提示文案
疯狂的蜂鸟
校验提示文案
东皓雪
校验提示文案
chewy
校验提示文案
东皓雪
校验提示文案
疯狂的蜂鸟
校验提示文案
telanx
校验提示文案
Leelone
校验提示文案
_小伟_
校验提示文案
天空城的国王
校验提示文案
Respawn
校验提示文案
值友1274162228
校验提示文案
njsfcy
校验提示文案
wocawoca
非常羡慕楼主年轻又富有激情的心态,关键能够分享,大赞
校验提示文案
真水月居士
校验提示文案