Docker 搭建 NextCloud + OnlyOffice 完整教程(Linux Centos7系统)

文章目录

    • 1、前置条件
      • [1.1. 系统环境要求](#1.1. 系统环境要求)
      • [1.2. 依赖安装(Docker + Docker Compose)](#1.2. 依赖安装(Docker + Docker Compose))
    • 2、环境准备
    • [3、编写 Docker Compose 配置文件](#3、编写 Docker Compose 配置文件)
    • 4、启动服务
    • [5、初始化配置 & 集成 OnlyOffice](#5、初始化配置 & 集成 OnlyOffice)

NextCloud 是开源的私有云存储 / 协作平台,OnlyOffice 是开源的在线文档编辑工具,二者集成可实现类似腾讯文档 / 石墨文档的在线编辑能力。以下是 CentOS 7 系统中基于 Docker + Docker Compose 的一键部署方案,兼顾易用性和生产级配置。


1、前置条件

1.1. 系统环境要求

CentOS 7.x(最小化安装 / 服务器版均可),建议 2 核 4G 以上内存(OnlyOffice 对内存要求较高,至少 2G 内存,推荐 4G+)

磁盘空间 ≥ 20G(存储文档 / 数据)

外网访问权限(拉取 Docker 镜像)

关闭 SELinux 和防火墙(或配置放行端口)

1.2. 依赖安装(Docker + Docker Compose)

确保系统都安装Docker + Docker Compose

2、环境准备

bash 复制代码
# 关闭 SELinux(临时+永久)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# 关闭防火墙(或放行端口:80/443/8080)
systemctl stop firewalld
systemctl disable firewalld

# 创建数据目录(持久化存储,避免容器删除数据丢失)
mkdir -p /data/nextcloud/{html,data,config}
mkdir -p /data/onlyoffice/{data,logs,fonts}
chmod -R 777 /data  # 简化权限(生产环境可精细化配置)

3、编写 Docker Compose 配置文件

创建统一的 docker-compose.yml 文件,整合 NextCloud 和 OnlyOffice 服务,自动配置网络互通:

可以提前把所用的三个镜像下载下来:

yaml 复制代码
version: '3'

services:
  # NextCloud 主服务
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    restart: always
    ports:
      - "80:80"  # 对外暴露80端口(可改为443+SSL)
    volumes:
      - /data/nextcloud/html:/var/www/html  # NextCloud 程序目录
      - /data/nextcloud/data:/var/www/html/data  # 用户数据目录
      - /data/nextcloud/config:/var/www/html/config  # 配置文件目录
    environment:
      - MYSQL_PASSWORD=nextcloud123  # 数据库密码(自定义)
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db  # 关联数据库容器
      - NEXTCLOUD_ADMIN_USER=admin  # NextCloud 管理员账号
      - NEXTCLOUD_ADMIN_PASSWORD=admin123  # 管理员密码(生产需修改)
    networks:
      - nextcloud-network
    depends_on:
      - db
      - onlyoffice

  # MySQL 数据库(NextCloud 依赖)
  db:
    image: mysql:8.4.2
    container_name: nextcloud-db-mysql
    restart: always
    volumes:
      - /data/nextcloud/mysql:/var/lib/mysql  # 数据库持久化
    environment:
      - MYSQL_ROOT_PASSWORD=root123  # root密码(自定义)
      - MYSQL_PASSWORD=nextcloud123
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_INITDB_SKIP_TZINFO=1
    command: --default-authentication-plugin=mysql_native_password  # 兼容NextCloud
    networks:
      - nextcloud-network

  # OnlyOffice 文档服务
  onlyoffice:
    image: onlyoffice/documentserver:latest
    container_name: onlyoffice
    restart: always
    ports:
      - "8080:80"  # OnlyOffice 内部端口(不对外暴露,仅容器互通)
    volumes:
      - /data/onlyoffice/data:/var/www/onlyoffice/Data
      - /data/onlyoffice/logs:/var/log/onlyoffice
      - /data/onlyoffice/fonts:/usr/share/fonts
    environment:
      - JWT_SECRET=onlyoffice123  # 安全密钥(需和NextCloud配置一致)
      - TZ=Asia/Shanghai
    networks:
      - nextcloud-network
    # OnlyOffice 依赖较多,需限制内存(可选)
    deploy:
      resources:
        limits:
          memory: 2G

# 自定义网络(保证容器间互通)
networks:
  nextcloud-network:
    driver: bridge

4、启动服务

bash 复制代码
# 1. 创建配置文件目录并写入配置
mkdir -p /opt/nextcloud && cd /opt/nextcloud
vim docker-compose.yml  # 将上面的配置粘贴进去并保存

# 2. 启动所有服务(后台运行)
docker-compose up -d

# 3. 查看启动日志(确认无报错)
docker-compose logs -f

# 关键验证点:
# - nextcloud 容器日志无数据库连接错误
# - onlyoffice 容器日志显示 "Document Server is ready"

5、初始化配置 & 集成 OnlyOffice

  1. 访问 NextCloud 并完成初始化
    访问地址:http://服务器IP
    输入配置的管理员账号 admin / 密码 admin123,登录 NextCloud 后台
  2. 安装 OnlyOffice 插件
    登录 NextCloud 后,点击左侧「应用」→ 搜索「OnlyOffice」→ 安装「OnlyOffice Integration」插件
    安装完成后,点击右上角「设置」→ 左侧「管理」→「OnlyOffice」
  3. 配置 OnlyOffice 连接
    在 OnlyOffice 配置页面填写以下信息:
配置项 填写值
Document Server 地址 http://onlyoffice:80(容器内网络地址,无需填服务器 IP,利用 docker 网络互通)
高级设置 → JWT 密钥 onlyoffice123(需和 docker-compose.yml 中 OnlyOffice 的 JWT_SECRET 一致)
保存后点击「测试连接」 提示「连接成功」即表示集成完成

"人的一生会经历很多痛苦,但回头想想,都是传奇"。


相关推荐
牛奶咖啡135 小时前
Linux的ext4文件系统元数据故障恢复实践教程
linux·服务器·机械硬盘的结构·ext4文件系统的构成·ext4超级块故障的修复·ext4块组描述故障修复·ext4块组的构成
.普通人5 小时前
树莓派4Linux 可操作多个gpio口驱动编写
linux
01传说5 小时前
Linux-yum源切换阿里centos7 实战好用
linux·运维·服务器
颜子鱼5 小时前
Linux字符设备驱动
linux·c语言·驱动开发
是娇娇公主~5 小时前
Redis 悲观锁与乐观锁
linux·redis·面试
一条闲鱼_mytube5 小时前
CI/CD: TektonCI 深入浅出教程
容器·kubernetes·tekton
晚风_END6 小时前
Linux|服务器运维|diff和vimdiff命令详解
linux·运维·服务器·开发语言·网络
HIT_Weston6 小时前
83、【Ubuntu】【Hugo】搭建私人博客:文章目录(二)
linux·运维·ubuntu
记得开心一点嘛6 小时前
k8s部署微服务项目
微服务·容器·kubernetes