乐于分享
好东西不私藏

Nextcloud + OnlyOffice部署 实现协同办公

Nextcloud + OnlyOffice部署 实现协同办公

一、介绍

Nextcloud是一款开源、自托管、私有化部署的企业级私有云与协同办公平台,2016 年从 ownCloud 分支而来,采用 AGPL-3.0 开源协议,核心价值是数据自主可控,避免公有云数据泄露与合规风险。

ONLYOFFICE 是一款由拉脱维亚公司 Ascensio System SIA 开发的开源、自托管、在线办公套件,核心是实现文档的实时协作编辑,常与 Nextcloud 等私有云平台深度集成,构建私有化协同办公环境。目前免费版,可能只能同时在线20人,超出20人时,可能没有编辑权限。

本教程采用 Docker 容器化部署 Nextcloud 与 OnlyOffice,深度集成构建私有云协同办公解决方案。Nextcloud 承担统一文件存储、云端同步、人员权限与资源管理能力,OnlyOffice 提供专业在线办公编辑能力,完美兼容主流 Office 格式。部署完成后支持多人实时同编、在线批注、修订追踪、历史版本留存,兼具文件共享、外链分发、数据加密保护等特性,适配企业、团队内网办公需求,低成本落地自建式协同办公系统。

二、步骤

以Linux系统为例,需提前安装好Docker。

1. 创建目录结构并设置权限(关键!避免权限错误)

sudo mkdir -p /opt/nextcloud/{nextcloud,onlyoffice,mysql}sudo chown -R 33:33 /opt/nextcloud/nextcloudsudo chown -R 101:101 /opt/nextcloud/onlyofficesudo chown -R 999:999 /opt/nextcloud/mysqlls -ld /opt/nextcloud/{nextcloud,onlyoffice,mysql}

2. 拉取镜像拷贝镜像

docker pull nextcloud:latestdocker pull onlyoffice/documentserverdocker pull mysql:5.7docker pull alpine

3. 创建 docker-compose.yml 文件

networks:  nextcloud_net:    driver: bridgeservices:  mysql:    image: mysql:5.7    container_name: mysql    restart: always    environment:      MYSQL_ROOT_PASSWORD: nextcloud_db      MYSQL_DATABASE: nextcloud_db      MYSQL_USER: nextcloud_db      MYSQL_PASSWORD: nextcloud_db    volumes:      - /opt/nextcloud/mysql:/var/lib/mysql    networks:      - nextcloud_net    healthcheck:      test: ["CMD""mysqladmin""ping""-h""localhost""-u""root""-pnextcloud_db"]      interval: 10s      timeout: 5s      retries: 10  nextcloud:    image: nextcloud:latest    container_name: nextcloud    restart: always    ports:      - 18080:80    environment:      - MYSQL_HOST=mysql      - MYSQL_DATABASE=nextcloud_db      - MYSQL_USER=nextcloud_db      - MYSQL_PASSWORD=nextcloud_db      - NEXTCLOUD_ADMIN_USER=admin      - NEXTCLOUD_ADMIN_PASSWORD=nextcloud      - OVERWRITEHOST=172.28.61.122:18080      - OVERWRITEPROTOCOL=http    volumes:      - /opt/nextcloud/nextcloud:/var/www/html    depends_on:      mysql:        condition: service_healthy    networks:      - nextcloud_net  onlyoffice:    image: onlyoffice/documentserver:latest    container_name: onlyoffice    restart: always    ports:      - 17080:80    environment:      - JWT_ENABLED=true      - JWT_SECRET=onlyoffice_jwt    volumes:      - /opt/nextcloud/onlyoffice:/var/www/onlyoffice/Data    networks:      - nextcloud_net

4. 安装nextcloud的onlyoffice插件

docker cp /root/onlyoffice.tar.gz nextcloud:/var/www/html/apps/docker exec -it nextcloud /bin/bashcd /var/www/html/apps/tar -zxvf onlyoffice.tar.gzchown -R www-data:www-data onlyoffice/exit

5. 启动服务并验证初始化

cd /opt/nextcloudsudo docker-compose up -dsudo docker-compose logs -f

6. 修改config文件

docker exec -it onlyoffice /bin/bashcat /var/www/html/config/config.phpdocker inspect nextcloud | grep -A 30 "Mounts"