美文网首页我用 Linux我爱编程
最新版nextcloud+onlyoffice(docker)安

最新版nextcloud+onlyoffice(docker)安

作者: forwardlee | 来源:发表于2018-05-28 09:58 被阅读525次

    docker

    CentOS Docker 安装

    参考地址

    前提条件

    目前,CentOS 仅发行版本中的内核支持 Docker。

    Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

    Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

    查询版本

    cat /etc/redhat-release 
    

    使用 yum 安装

    uname -r ##查看内核版本是否符合要求
    
    

    安装 Docker

    yum -y install docker-io
    
    service docker start    #启动 Docker 后台服务
    
    

    安装Compose

    
    curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    
    docker-compose up -d #运行yml命令
    
    

    测试docker

    docker run hello-world
    
    

    由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

    镜像加速

    鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com

    #重启
    service docker restart 
    

    --- 以下这部分是docker介绍 ---

    Docker Hello World

    Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

    docker run ubuntu:15.10 /bin/echo "Hello world" #Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
    

    运行交互式的容器

    我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

    docker run -i -t ubuntu:15.10 /bin/bash  
    

    各个参数解析:

    • -t:在新容器内指定一个伪终端或终端。

    • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

    我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表。

    我们可以通过运行exit命令或者使用CTRL+D来退出容器。

    启动容器

    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    

    在容器内使用docker logs命令,查看容器内的标准输出

    docker logs ** #填写docker id
    
    

    停止容器

    
    docker stop ** #填写docker id
    

    运行一个web应用

    接下来让我们尝试使用 docker 构建一个 web 应用程序。

    我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

    
    docker pull training/webapp
    
    docker run -d -P training/webapp python app.py
    
    
    

    Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。

    这时我们可以通过浏览器访问WEB应用

    进入容器

    
    docker exec -it <docker_name> /bin/bash
    

    其中,/bin/bash有可能是/bin/sh,因为不一定所有的docker都安装了shell

    卸载docker

    
    rpm -e docker-io
    

    卸载Docker后,/var/lib/docker/目录下会保留原Docker的镜像,网络,存储卷等文件. 如果需要全新安装Docker,需要删除/var/lib/docker/目录

    rm -fr /var/lib/docker/
    
    

    卸载镜像

    1. 删除前需要保证容器是停止的 stop

    2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID ,其中 容器(rm) 和 镜像(rmi)

    3. 顺序需要先删除容器

    docker rmi 镜像id
    
    
    

    修改已经存在的docker容器的映射端口

    1. 停止容器
    2. 停止docker
    3. 进入 /var/lib/docker/containers/ 容器ID的文件夹
    4. 修改config.v2.json和hostconfig.json
    5. 启动docker
    6. 启动容器

    --- docker介绍到此为止---


    nextcloud

    先下载镜像

    关闭selinux

    yml配置文件

    
    
    nextcloud-db:
    
        image: mariadb
        container_name: nextcloud_db
        ports:
        - 33034:3306
        volumes:
            - /cloud/mysql/data:/var/lib/mysql
    
        environment:
    
            - MYSQL_ROOT_PASSWORD=rootPW1234
            - MYSQL_DATABASE=nextcloud
            - MYSQL_USER=dbuser
            - MYSQL_PASSWORD=dbuser1234
            - MYSQL_ROOT_HOST=%
    
    nextcloud_web:
    
        image: wonderfall/nextcloud
        container_name: nextcloud_web
        environment:
            - UID=1000
            - GID=1000
            - UPLOAD_MAX_SIZE=10G
            - APC_SHM_SIZE=128M
            - OPCACHE_MEM_SIZE=128
            - CRON_PERIOD=15m
            - TZ=Aisa/Shanghai
            - ADMIN_USER=admin
            - ADMIN_PASSWORD=admin1234
            - DOMAIN=***  #你的域名
            - DB_TYPE=mysql
            - DB_NAME=nextcloud
            - DB_USER=dbuser
            - DB_PASSWORD=dbuser1234
            - DB_HOST=nextcloud-db:3306
    
        volumes:
    
            - /cloud/nextcloud/data:/data
    
            - /cloud/nextcloud/config:/config
    
            - /cloud/nextcloud/apps:/apps2
    
            - /cloud/nextcloud/themes:/nextcloud/themes
        expose:
          - 8888
        links:
    
          - nextcloud-db
    
        
    

    office

    collabora office

    1. 拉取镜像

    
    docker pull collabora/code
    
    

    2. 启动镜像

    容器运行命令

    docker run -t -d -p 0.0.0.0:9980:9980 -e 'domain=***\\.***\\.**' -e "username=admin" -e "password=123456" --restart always --cap-add MKNOD collabora/code
    
    ##domain处填写nextcloud的域名,小数点前面是两个\
    
    

    测试是否成功安装命令

    
    https://你的域名地址/loleaflet/dist/admin/admin.html
    
    

    Nginx配置文件

    
    
    ## collabora office
    
        server {
        listen       443 ssl;
        server_name  你的域名地址;
    
        ssl_certificate /cloud/nginx/ssl/collabora.crt;
        ssl_certificate_key /cloud/nginx/ssl/collabora.key;
    
        # static files
        location ^~ /loleaflet {
            proxy_pass https://localhost:9980;
            proxy_set_header Host $http_host;
        }
    
        # WOPI discovery URL
        location ^~ /hosting/discovery {
            proxy_pass https://localhost:9980;
            proxy_set_header Host $http_host;
        }
    
        # main websocket
        location ~ ^/lool/(.*)/ws$ {
            proxy_pass https://localhost: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 ~ ^/lool {
            proxy_pass https://localhost:9980;
            proxy_set_header Host $http_host;
        }
    
        # Admin Console websocket
        location ^~ /lool/adminws {
            proxy_pass https://localhost:9980;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $http_host;
            proxy_read_timeout 36000s;
        }
        }
    

    重启docker 服务

    
    systemctl daemon-reload
    
    启动Nginx
    
    

    onlyoffice

    1. 拉取镜像

    
    docker pull onlyoffice/documentserver
    
    

    2. 前期准备

    
    mkdir -p /cloud/onlyoffice/DocumentServer/logs
    mkdir -p /cloud/onlyoffice/DocumentServer/data
    mkdir -p /cloud/onlyoffice/DocumentServer/data/certs #复制证书文件到此文件夹,证书改名onlyoffice
    
    
    

    3. 启动容器

    
    docker run -i -t -d -p 9443:443 -v /cloud/onlyoffice/DocumentServer/logs:/var/log/onlyoffice -v /cloud/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data --name onlyoffice onlyoffice/documentserver
    
    
    

    4. docker配置文件

    
    ## office
        
          server {
            listen       443 ssl;
            server_name  你的域名;
    
            ssl on;
            ssl_certificate /cloud/nginx/ssl/onlyoffice.crt;
            ssl_certificate_key /cloud/nginx/ssl/onlyoffice.key;
            ssl_session_timeout 1d;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ##根据证书来改 
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        
            ssl_prefer_server_ciphers on;
    
            location / {
               proxy_redirect off;
                proxy_pass https://localhost:9443;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 
    
            }
        }
    

    4. 重启docker服务

    systemctl daemon-reload
    
    重启Nginx
    
    

    5. 测试地址

    https://服务器地址:9443/

    暂时关闭SELinux

    参考引用

    collabora office

    only office


    欢迎关注

    相关文章

      网友评论

      • forwardlee:欢迎留言,入住简书,多多交流
      • 左蓝:collabora用来做什么?在线编辑文档吗,以前一直想试下,不过似乎没有自建的需求,hhh
        forwardlee:@左蓝 是的,在线协作

      本文标题:最新版nextcloud+onlyoffice(docker)安

      本文链接:https://www.haomeiwen.com/subject/laywjftx.html