NextCloud+ CollaboraOnline HTTPS部署

前言:
本文为在使用Nextcloud作为文档管理系统,CollaboraOnline作为office文件编辑器。并且https部署时的流程和遇到的bug整理与总结。
本文中使用
nextcloud.com作为Nextcloud域名,
collabora.com作为Collabora域名,
mydoc.com作为iframe嵌套网页域名。
部分隐私内容不做展示。

Collabora Online

  1. 下载镜像

    docker pull collabora/code
    
  2. 容器部署

    docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=<your-dot-escaped-domain>" \
    	-e "username=admin" -e "password=xxx" --restart always --cap-add MKNOD collabora/code
    

    填写目标服务器主机名,若你的nextcloud域名为 www.nextcloud.com 则 填写 www\.nextcloud\.com 需要使用 \ 转义

  3. https与证书配置

    在容器中取出coolwsd.xml 配置文件

    docker cp  70af7d73d1b3:/etc/coolwsd/coolwsd.xml coolwsd.xml
    

    在其中修改如下部分

    在这里插入图片描述

    其中 cert_file_path ,key_file_path , ca_file_path 放入ssl证书文件

    enable与termination两项配置https,默认为https不用修改,但若使用http则修改enable为false

    修改后再cp回去

    docker cp coolwsd.xml 70af7d73d1b3:/etc/coolwsd/coolwsd.xml
    

    注意,复制出来的文件存在权限问题,直接复制回去可能导致docker无法使用

    chmod 777 coolwsd.xml
    
  4. nginx配置
    下面使用
    collabora.com代替collabora域名

    server {
     listen       443 ssl;
     server_name  collabora.com;
    
    
     ssl_certificate /etc/nginx/cert_2/collabora.com.pem;
     ssl_certificate_key /etc/nginx/cert_2/collabora.com.key;
    
     location / {
       proxy_set_header   X-Real-IP $remote_addr;
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header   Host      $http_host;
       client_max_body_size 4096m;
     }
    
     # static files
     location ^~ /browser {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # WOPI discovery URL
     location ^~ /hosting/discovery {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # Capabilities
     location ^~ /hosting/capabilities {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # main websocket
     location ~ ^/cool/(.*)/ws$ {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
     }
    
    
     # download, presentation and image upload
     location ~ ^/(c|l)ool {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # Admin Console websocket
     location ^~ /cool/adminws {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
     }
    }
    
  5. 服务器后台

    部署成功后进入后台验证

    进入的用户名与密码对应部署容器时使用的admin与password

    在这里插入图片描述

NextCloud

  1. 下载镜像

    docker pull nextcloud:25.0 
    

    26以上的版本貌似不适配服务器,curl会失效

  2. 容器部署

    docker run -it --dns=114.114.114.114 -d --name nextcloud -v nextcloud_c:/var/www/html -p 8080:80  nextcloud:25.0
    

    注意容器挂载位置,新版本到旧版本无法兼容,需要换位置挂载

  3. 初始化

配置管理员账号,以及数据库

  1. 配置config.php

    在这里插入图片描述

    注意框着的位置配置,将nextcloud配置为https,并且设置office wopi通道(collabora.com )

    若没有进行这一步设置会出现即使是通过https+域名访问nextcloud系统,在设置中启用Collabora Online,绿色√,右上角也会出现

    Saved with error: Collabora Online should expose the same protocol as the server installation. Please check the ssl.enable and ssl.termination settings of your Collabora Online server.
    

    协议不同的错误。原因就是nextcloud内部使用的还是http,只是通过代理实现了https。

    这里与Collabora Online的coolwsd.xml配置相同,需要cp出来编辑,也需要修改权限再cp回去

  2. nginx配置

    server {
           listen 443 ssl;
           server_name nextcloud.com;
    
           ssl_certificate  /etc/nginx/cert_1/nextcloud.com.pem;
           ssl_certificate_key /etc/nginx/cert_1/nextcloud.com.key;
           ssl_session_timeout 5m;
           ssl_ciphers <算法不做展示>;
           ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
           ssl_prefer_server_ciphers on;
           
           location / {
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   Host      $http_host;
                proxy_pass http://内网连接ip:8080;
               #X-Frame-Options:ALLOW-FROM origin;
                add_header X-Frame-Options "ALLOW-FROM https://mydoc.com";
                client_max_body_size 4096m;
           }
           location /.well-known/carddav {
                return 301 $scheme://$host/remote.php/dav;
           }
    
           location /.well-known/caldav {
                return 301 $scheme://$host/remote.php/dav;
           }
    }
    
  3. 应用 Collabora Online

    下载 NextCloudOfiice插件

    在这里插入图片描述

    在管理设置>办公套件(NextOffice) 中配置好Collabora服务器

    在这里插入图片描述

    若 save后,没有报错并且√,则部署成功。否则观察日志排错

    参考官方论坛文章(大部分问题都有提及,根据这个来部署会少踩很多坑)

    https://help.nextcloud.com/t/collabora-integration/151879

    验证两个容器间是否curl互通等等
    在这里插入图片描述

    在此引出先前使用27.0(或者26.0)版本nextcloud ,可能是服务器系统版本问题,在nextcloud容器内无法进行域名解析,curl Collabora 服务器一直报

    curl error 6: getaddrinfo() thread failed to start

    换了25 版本后成功curl通。

iFrame嵌套NextCloud并使用Collabora Online

因为在项目中,需求在iframe中嵌套nextcloud并使用Collabora Online,出现了一些iframe请求头,csp策略等问题,直接使用iframe嵌套无法顺利使用,需要进行部分配置

  1. NextCloud配置

    在25.0版本中,使用nginx直接配置

    add_header X-Frame-Options
    

    无法解决iframe出现

    Refused to frame 'nextcloud网站名' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self'".
    

    csp策略问题,网上搜索后发现需要修改源码,位置如下

    /var/www/html/lib/public/AppFramework/Http/ContentSecurityPolicy.php

    需要修改其中两项,添加需要嵌套iframe的域名

    在这里插入图片描述

    配置内容为需要嵌套iframe的域名mydoc.com

    其中前一项单独配置貌似无用

  2. Collabora Online配置

    在nextcloud可以被iframe访问后,Collabora Online又出现相同问题,csp策略。

    需要修改 Collabora Online 配置文件 coolwsd.xml

    在这里插入图片描述

    在其两项中添加需要嵌套iframe的域名(mydoc.com,不是nextcloud的域名)

其他

  1. Custom CSS

    该插件可以使用自定义的css覆盖在每个页面,可以用来配置系统的部分内容隐藏不可见(配置页面在,管理设置->主题)

    如,隐藏左上角图标

    /*左上菜单栏->动态*/
    #header>div>nav>ul>li[data-app-id="activity"]{
        display: none;
    }
    

在这里插入图片描述

  1. 新用户初始化配置

    新建用户可以配置语言,默认文件模板等,在config.php内配置
    在这里插入图片描述
    前一项为 配置模板目录,若为空则无模板

    后两项为配置的地区与语言

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值