ONLYOFFICE DocSpace 是一款创新的协作平台软件,支持本地部署。简而言之,它是一个基于网络的协作空间,让团队和个人用户能够在可定制的虚拟房间中高效管理和协同处理文档、电子表格、演示文稿及电子表单。产品高度兼容微软的Word、Excel等。
该平台集成了 ONLYOFFICE Docs 在线办公套件,为用户提供了一整套专业的文档格式化与编辑工具,支持包括电子书和 PDF 文件在内的多种内容类型。此外,内置的办公套件还提供了丰富的实时文档协作功能,例如:
-
两种共同编辑模式,满足不同协作需求
-
文档审阅与版本历史追踪
-
实时聊天与评论功能
-
集成 Zoom 和 Jitsi 插件,支持视频/音频通话
ONLYOFFICE DocSpace 兼容多种主流文件格式,包括 Microsoft OOXML(Word、Excel、PowerPoint 文件扩展名)、OpenDocument、PDF、DJVu 等。平台还内置了多媒体播放器,支持直接打开和播放音频、视频文件,实现了对多媒体内容的全面支持。
基于房间的协作模式是 DocSpace 的核心特色。所有协作流程和用户交互都在两种类型的房间中进行:
-
协作房间:专为实时文档共同创作设计
-
定制房间:具备灵活配置的空间,可适应各种使用场景
在权限管理方面,DocSpace 提供了精细化的用户角色体系:
-
DocSpace 所有者:拥有全部设置和配置权限,可分配管理员角色
-
DocSpace 管理员:具备平台和房间管理权限(不含删除 DocSpace 权限)
-
房间管理员、高级用户、普通用户
-
编辑者、查看者、评论者、审阅者、表单填写者
每个角色类别都设有特定的权限组合,既确保了操作的灵活性,又保障了系统的安全性。
二、安装前置条件
在Linux系统中尝试安装ONLYOFFICEA DocSpace之前,请务必查看最低资源要求配置列表(当然配置越高是越好的)
| 硬件 | 要求 |
|---|---|
| CPU | 最少4核,建议8核 |
| 内存 | 至少8G,建议12G(脚本会自动创建 swap) |
| 硬盘空间 | 至少40G |
| 端口 | 80 / 443 / 8092 |
| 操作系统 | Linux内核3.10版本以上 |
三、安装docker
3.1、进opt目录
cd /opt
3.2、编写docker安装脚本
cat >install.docker.ubuntu.sh<<'EOF' #!/bin/bash # Ubuntu Docker 安装脚本(支持 22.04 和 24.04)- 不更新内核 # copywrite @ www.liuguohua.com set -e echo "==========================================" echo " Docker & Docker Compose 安装脚本" echo " 适用于 Ubuntu 22.04 和 24.04 - 国内镜像源" echo " 不更新内核版本" echo "==========================================" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # 系统信息 OS_ID="" OS_VERSION="" OS_CODENAME="" CURRENT_KERNEL="" # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检查是否以 root 运行 check_root() { if [ "$(id -u)" -ne 0 ]; then log_error "请使用 root 权限运行此脚本" log_info "可以使用: sudo bash $0" exit 1 fi } # 检测系统版本 detect_os() { if [ ! -f /etc/os-release ]; then log_error "无法检测操作系统版本" exit 1 fi . /etc/os-release OS_ID="$ID" OS_VERSION="$VERSION_ID" OS_CODENAME="$VERSION_CODENAME" CURRENT_KERNEL=$(uname -r) log_info "检测到系统: $PRETTY_NAME" log_info "当前内核版本: $CURRENT_KERNEL" case "$OS_CODENAME" in "jammy") # 22.04 log_info "检测到 Ubuntu 22.04 (Jammy Jellyfish)" ;; "noble") # 24.04 log_info "检测到 Ubuntu 24.04 (Noble Numbat)" ;; *) log_warn "此脚本主要针对 Ubuntu 22.04 和 24.04 测试" log_warn "当前系统: $OS_ID $OS_VERSION ($OS_CODENAME)" printf "是否继续?(y/n): " read -r choice case "$choice" in y|Y|yes|YES) ;; *) exit 1 ;; esac ;; esac } # 锁定内核版本,防止更新 lock_kernel_packages() { log_info "锁定内核包,防止自动更新..." # 安装 apt-mark 如果不存在 if ! command -v apt-mark > /dev/null 2>&1; then apt-get install -y apt-utils fi # 获取当前已安装的内核包 KERNEL_PACKAGES=$(dpkg -l | grep -E "linux-image-|linux-headers-|linux-modules-" | awk '{print $2}' | grep -v "linux-headers-generic" | grep -v "linux-image-generic") # 锁定所有内核相关包 for package in $KERNEL_PACKAGES; do if dpkg -l | grep -q "^ii $package"; then apt-mark hold "$package" > /dev/null 2>&1 && \ log_info "已锁定包: $package" || \ log_warn "锁定包失败: $package" fi done # 锁定通用的内核元包 for package in linux-generic linux-image-generic linux-headers-generic; do if dpkg -l | grep -q "^ii $package"; then apt-mark hold "$package" > /dev/null 2>&1 fi done # 配置 APT 不更新内核 if [ ! -f /etc/apt/apt.conf.d/50hold-kernel ]; then cat > /etc/apt/apt.conf.d/50hold-kernel << 'EOF' # 阻止内核自动更新 APT::Get::Hold "linux-image-*"; APT::Get::Hold "linux-headers-*"; APT::Get::Hold "linux-modules-*"; APT::Get::Hold "linux-generic"; APT::Get::Hold "linux-image-generic"; APT::Get::Hold "linux-headers-generic"; EOF log_info "已配置 APT 阻止内核更新" fi } # 配置国内镜像源 configure_mirrors() { log_info "配置国内镜像源..." # 备份原有源 if [ ! -f /etc/apt/sources.list.bak ]; then cp /etc/apt/sources.list /etc/apt/sources.list.bak log_info "已备份原有源列表" fi case "$OS_CODENAME" in "jammy") # Ubuntu 22.04 cat > /etc/apt/sources.list << 'EOF' # 阿里云镜像源 - Ubuntu 22.04 Jammy deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse # 注释掉 proposed 和 backports 仓库,减少内核更新风险 # deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse EOF ;; "noble") # Ubuntu 24.04 cat > /etc/apt/sources.list << 'EOF' # 阿里云镜像源 - Ubuntu 24.04 Noble deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse # 注释掉 proposed 和 backports 仓库,减少内核更新风险 # deb http://mirrors.aliyun.com/ubuntu/ noble-proposed main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse EOF ;; *) log_error "不支持的 Ubuntu 版本: $OS_CODENAME" exit 1 ;; esac log_info "已配置阿里云镜像源 ($OS_CODENAME)" log_info "已禁用 proposed 和 backports 仓库以减少内核更新风险" } # 安装基础依赖(不更新内核) install_dependencies() { log_info "更新软件包列表(不更新系统)..." # 使用 --allow-downgrades 和 --allow-remove-essential 避免因依赖问题触发内核更新 apt-get update log_info "安装基础依赖..." # 单独安装每个包,避免大规模更新 for package in apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common git; do if ! dpkg -l | grep -q "^ii $package"; then log_info "安装 $package..." apt-get install -y --allow-downgrades --allow-remove-essential "$package" else log_info "$package 已安装,跳过" fi done } # 获取 Docker Compose 架构名称 get_architecture() { local arch arch=$(uname -m) case "$arch" in "x86_64") echo "x86_64" ;; "aarch64"|"arm64") echo "aarch64" ;; "armv7l") echo "armv7" ;; *) log_error "不支持的架构: $arch" exit 1 ;; esac } # 安装 Docker(不更新内核) install_docker() { log_info "安装 Docker..." if command -v docker > /dev/null 2>&1; then log_warn "Docker 已安装,跳过安装步骤" return 0 fi # 添加 Docker 官方 GPG 密钥 mkdir -p /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 添加 Docker 镜像源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $OS_CODENAME stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null log_info "更新 Docker 软件包列表..." apt-get update # 检查可用的 Docker 版本 log_info "可用的 Docker 版本:" apt-cache madison docker-ce | head -5 # 安装特定版本的 Docker 以避免依赖冲突 DOCKER_VERSION=$(apt-cache madison docker-ce | awk '{print $3}' | head -1) log_info "将安装 Docker 版本: $DOCKER_VERSION" # Ubuntu 24.04 需要先安装 containerd.io if [ "$OS_CODENAME" = "noble" ]; then log_info "检测到 Ubuntu 24.04,安装兼容的 containerd 版本..." apt-get install -y --allow-downgrades --allow-remove-essential containerd.io fi # 安装 Docker(不推荐更新相关包) log_info "安装 Docker CE..." apt-get install -y --allow-downgrades --allow-remove-essential \ docker-ce="$DOCKER_VERSION" \ docker-ce-cli="$DOCKER_VERSION" # 配置 Docker 镜像加速器 mkdir -p /etc/docker cat > /etc/docker/daemon.json << 'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://hub-mirror.c.163.com", "https://hub.mirrorify.net", "https://hub.1panel.dev" ], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }, "storage-driver": "overlay2" } EOF # 启动 Docker systemctl enable docker systemctl start docker log_info "Docker 安装完成" } # 安装 Docker Compose install_docker_compose() { log_info "安装 Docker Compose..." if command -v docker-compose > /dev/null 2>&1; then docker_compose_version=$(docker-compose --version | awk '{print $3}') log_warn "Docker Compose 已安装 (版本: $docker_compose_version)" printf "是否重新安装?(y/n): " read -r choice case "$choice" in y|Y|yes|YES) ;; *) return 0 ;; esac fi local arch arch=$(get_architecture) local compose_version="v2.24.0" log_info "下载 Docker Compose $compose_version (架构: $arch)" if curl -L "https://soft-1251416864.cos.ap-nanjing.myqcloud.com/docker/docker-compose-linux-x86_64" \ -o /usr/local/bin/docker-compose; then chmod +x /usr/local/bin/docker-compose ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose 2>/dev/null || true log_info "Docker Compose 安装完成" else log_error "Docker Compose 下载失败" exit 1 fi } # 配置用户权限 configure_user_permissions() { log_info "配置用户权限..." if [ -n "$SUDO_USER" ]; then if ! groups "$SUDO_USER" | grep -q docker; then usermod -aG docker "$SUDO_USER" log_info "已将用户 $SUDO_USER 添加到 docker 组" else log_info "用户 $SUDO_USER 已在 docker 组中" fi else log_warn "未检测到 SUDO_USER,请手动将用户添加到 docker 组:" log_info "sudo usermod -aG docker \$USER" log_info "然后重新登录或执行: newgrp docker" fi } # 验证安装和内核状态 verify_installation() { log_info "验证安装..." echo echo "=== 安装验证 ===" # 检查内核状态 echo "当前内核版本: $CURRENT_KERNEL" echo "内核锁定状态:" dpkg -l | grep -E "^hi" | grep -E "linux-image-|linux-headers-" | head -3 # 检查 Docker if command -v docker > /dev/null 2>&1; then systemctl restart docker docker_version=$(docker --version | awk '{print $3}') echo "Docker 版本: $docker_version" if systemctl is-active docker > /dev/null; then echo "Docker 服务状态: 运行中" if docker run --rm hello-world 2>/dev/null | grep -q "Hello from Docker"; then log_info "Docker 测试: 成功" else log_warn "Docker 基础功能正常,但测试容器执行失败" fi else log_error "Docker 服务未运行" fi else log_error "Docker 安装失败" fi if command -v docker-compose > /dev/null 2>&1; then compose_version=$(docker-compose --version | awk '{print $3}') echo "Docker Compose 版本: $compose_version" else log_error "Docker Compose 安装失败" fi echo log_info "安装完成!" log_info "内核版本已锁定,不会自动更新" if [ -n "$SUDO_USER" ]; then echo log_info "后续步骤:" log_info "1. 重新登录或执行: newgrp docker" log_info "2. 测试: docker ps" log_info "3. 测试: docker-compose --version" fi } # 显示系统信息 show_system_info() { echo echo "=== 系统信息 ===" echo "操作系统: $OS_ID $OS_VERSION ($OS_CODENAME)" echo "架构: $(uname -m)" echo "内核: $CURRENT_KERNEL" if command -v free > /dev/null 2>&1; then echo "内存: $(free -h | awk '/^Mem:/ {print $2}')" fi if command -v df > /dev/null 2>&1; then echo "磁盘: $(df -h / | awk 'NR==2 {print $4}') 可用" fi echo } # 主函数 main() { check_root detect_os show_system_info log_info "开始安装 Docker 和 Docker Compose(不更新内核)..." # 首先锁定内核 lock_kernel_packages # 询问是否配置国内镜像源 printf "是否配置国内镜像源?(y/n, 推荐 y): " read -r choice case "$choice" in y|Y|yes|YES) configure_mirrors ;; *) log_warn "跳过镜像源配置,使用默认源" ;; esac install_dependencies install_docker install_docker_compose configure_user_permissions verify_installation log_info "=== 重要提示 ===" log_info "内核更新已被禁用,如需手动更新内核,请先执行:" log_info "sudo apt-mark unhold linux-image-* linux-headers-*" log_info "然后更新完成后重新锁定内核" } # 执行主函数 main "$@" EOF
3.3、运行docker安装脚本
bash install.docker.ubuntu.sh 也可以直接远程执行安装脚本 curl https://www.liuguohua.com/soft/install.docker.ubuntu.sh | bash

四、下载安装脚本并安装
4.1、下载安装脚本
curl -fsSL https://download.onlyoffice.com/docspace/docspace-install.sh -o docspace-install.sh chmod +x docspace-install.sh
4.2、安装onlyoffice docspace
bash docspace-install.sh docker #安装docker版的docspace #安装定制版本 bash docspace-install.sh docker -dsv 3.5.0.1
4.3、Images镜像文件一览
安装过程中,会下载所需要的docker镜像,整个镜像约34G,还是很庞大的,zip压缩后还有13G,已丢掉百度网盘里
fluent-fluent-bit-3.0.2 mysql-8.3.0 nginx-latest onlyoffice-docspace-api-3.5.0.1 onlyoffice-docspace-api-system-3.5.0.1 onlyoffice-docspace-backup-3.5.0.1 onlyoffice-docspace-backup-background-3.5.0.1 onlyoffice-docspace-clear-events-3.5.0.1 onlyoffice-docspace-doceditor-3.5.0.1 onlyoffice-docspace-files-3.5.0.1 onlyoffice-docspace-files-services-3.5.0.1 onlyoffice-docspace-healthchecks-3.5.0.1 onlyoffice-docspace-identity-api-3.5.0.1 onlyoffice-docspace-identity-authorization-3.5.0.1 onlyoffice-docspace-login-3.5.0.1 onlyoffice-docspace-management-3.5.0.1 onlyoffice-docspace-migration-runner-3.5.0.1 onlyoffice-docspace-notify-3.5.0.1 onlyoffice-docspace-people-server-3.5.0.1 onlyoffice-docspace-router-3.5.0.1 onlyoffice-docspace-sdk-3.5.0.1 onlyoffice-docspace-socket-3.5.0.1 onlyoffice-docspace-ssoauth-3.5.0.1 onlyoffice-docspace-studio-3.5.0.1 onlyoffice-docspace-studio-notify-3.5.0.1 onlyoffice-docspace-telegram-3.5.0.1 onlyoffice-documentserver-9.1.0.1 onlyoffice-opensearch-2.18.0 opensearchproject-opensearch-dashboards-2.18.0 rabbitmq-3 redis-7 #导入到系统 for f in *.tar; do echo "Loading $f"; docker load -i "$f"; done
五、安装docspace
5.1、设置DNS
安装过程中,要确认是否继续,DNS设置,我这里用114.114.114.114了。
bash docspace-install.sh docker ... DNS issue detected for (loopback IP or NAT). [Y] Use Google DNS | [C] Use custom DNS | [N] Cancel installation Continue installation [Y/C/N]? C Enter custom DNS (e.g. 8.8.8.8 8.8.4.4): 114.114.114.114 Updating Docker DNS config with: 114.114.114.114 Downloading configuration files to /app/onlyoffice...OK
5.2、成功安装后截图

六、浏览器测试
6.1、初始设置
安装过程完成后打开网络浏览器。在地址栏中,输入你的计算机在本地网络中的IP地址,就可以看到登录界面,默认是英文界面,在“语言”那,选择中文。
输入你的电子邮箱及密码(第一个帐户会归类到管理员权限),就可以正常进入到系统里,系统提示需要进邮箱激活功能。



6.2、增加成员

6.3、个性化设置

6.4、版本界面

6.4、停止所有容器
docker-compose -f /app/onlyoffice/build.yml down docker-compose -f /app/onlyoffice/proxy.yml down
七、通过 DEB/RPM包安装
curl -fsSL https://download.onlyoffice.com/docspace/docspace-install.sh -o docspace-install.sh bash docspace-install.sh package
八、卸载DocSpace
bash docspace-install.sh docker -u true 然后会提示是否删除 MySQL、Redis 等数据
九、企业级脚本
https://download.onlyoffice.com/docspace/docspace-enterprise-install.sh
