onlyoffice/4testing-documentserverONLYOFFICE 文档服务器(ONLYOFFICE Document Server)是一款在线办公套件,包含文本、电子表格和演示文稿的查看器与编辑器,完全兼容 Office Open XML 格式(.docx、.xlsx、.pptx),并支持实时协同编辑。
从 6.0 版本开始,文档服务器以 ONLYOFFICE Docs 名称发布,提供三个版本。本镜像安装的是免费的社区版(Community Edition)。
ONLYOFFICE Docs 可作为 ONLYOFFICE Workspace 的组成部分,或与第三方同步共享解决方案(如 Nextcloud、ownCloud、Seafile 等)集成,在其界面内启用协同编辑功能。
若需单独安装 ONLYOFFICE 文档服务器,执行以下命令:
bashsudo docker run -i -t -d -p 80:80 onlyoffice/documentserver
文档服务器的所有数据存储在以下指定目录(数据卷):
/var/log/onlyoffice:ONLYOFFICE 文档服务器日志/var/www/onlyoffice/Data:证书/var/lib/onlyoffice:文件缓存/var/lib/postgresql:数据库如需从容器外部访问数据,需通过 -v 参数挂载数据卷。示例命令:
bashsudo docker run -i -t -d -p 80:80 \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \ -v /app/onlyoffice/DocumentServer/rabbitmq:/var/lib/rabbitmq \ -v /app/onlyoffice/DocumentServer/redis:/var/lib/redis \ -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver
挂载数据卷的优势:
通过 -p 参数修改端口。例如,使用 8080 端口访问:
bashsudo docker run -i -t -d -p 8080:80 onlyoffice/documentserver
bashsudo docker run -i -t -d -p 443:443 \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver
HTTPS 访问需准备:
证书文件需放置在宿主机的以下路径(挂载至容器内 /var/www/onlyoffice/Data/certs):
/app/onlyoffice/DocumentServer/data/certs/tls.key /app/onlyoffice/DocumentServer/data/certs/tls.crt
CA 颁发的证书(如 Let's Encrypt)可直接使用;自签名证书需手动生成。
通过环境变量自动获取和续期 Let's Encrypt 证书:
bashsudo docker run -i -t -d -p 443:443 \ -e LETS_ENCRYPT_DOMAIN=your_domain -e LETS_ENCRYPT_MAIL=your_mail onlyoffice/documentserver
步骤 1:创建服务器私钥
bashopenssl genrsa -out tls.key 2048
步骤 2:创建证书签名请求(CSR)
bashopenssl req -new -key tls.key -out tls.csr
步骤 3:使用私钥和 CSR 签名证书(有效期 365 天)
bashopenssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt
生成更强的 DHE 参数:
bashopenssl dhparam -out dhparam.pem 2048
将 tls.key、tls.crt 和 dhparam.pem 复制到宿主机证书目录,并设置权限:
bashmkdir -p /app/onlyoffice/DocumentServer/data/certs cp tls.key /app/onlyoffice/DocumentServer/data/certs/ cp tls.crt /app/onlyoffice/DocumentServer/data/certs/ cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/ chmod 400 /app/onlyoffice/DocumentServer/data/certs/tls.key
以下环境变量可通过 docker run -e 或 --env-file 指定:
| 参数名称 | 说明 | 默认值 |
|---|---|---|
| ONLYOFFICE_HTTPS_HSTS_ENABLED | 启用/禁用 HSTS 配置(仅 SSL 模式) | true |
| ONLYOFFICE_HTTPS_HSTS_MAXAGE | HSTS 最大有效期(秒) | 31536000 |
| SSL_CERTIFICATE_PATH | SSL 证书路径 | /var/www/onlyoffice/Data/certs/tls.crt |
| SSL_KEY_PATH | 私钥路径 | /var/www/onlyoffice/Data/certs/tls.key |
| SSL_DHPARAM_PATH | Diffie-Hellman 参数路径 | /var/www/onlyoffice/Data/certs/dhparam.pem |
| SSL_VERIFY_CLIENT | 启用客户端证书验证(需 CA 证书) | false |
| DB_TYPE | 数据库类型(postgres/mariadb/mysql) | postgres |
| DB_HOST | 数据库主机地址 | - |
| DB_PORT | 数据库端口 | - |
| DB_NAME | 数据库名称 | - |
| DB_USER | 数据库用户名 | - |
| DB_PWD | 数据库密码 | - |
| AMQP_URI | 消息代理连接 URI(RabbitMQ/ActiveMQ) | - |
| AMQP_TYPE | 消息代理类型(rabbitmq/activemq) | rabbitmq |
| REDIS_SERVER_HOST | Redis 服务器地址 | - |
| REDIS_SERVER_PORT | Redis 端口 | - |
| NGINX_WORKER_PROCESSES | Nginx 工作进程数 | - |
| NGINX_WORKER_CONNECTIONS | Nginx 单进程最大连接数 | - |
| JWT_ENABLED | 启用 JWT 验证 | false |
| JWT_SECRET | JWT 密钥 | secret |
| JWT_HEADER | 传递 JWT 的 HTTP 头 | Authorization |
| JWT_IN_BODY | 启用请求体中的 JWT 验证 | false |
| USE_UNAUTHORIZED_STORAGE | 允许自签名证书的存储服务器(如 Nextcloud) | false |
| GENERATE_FONTS | 启动时重新生成字体列表和缩略图 | true |
| METRICS_ENABLED | 启用 StatsD 指标收集 | false |
| METRICS_HOST | StatsD 主机 | localhost |
| METRICS_PORT | StatsD 端口 | 8125 |
| METRICS_PREFIX | 指标前缀 | ds. |
| LETS_ENCRYPT_DOMAIN | Let's Encrypt 域名 | - |
| LETS_ENCRYPT_MAIL | Let's Encrypt *** | - |
ONLYOFFICE 文档服务器可与社区服务器、邮件服务器组成 ONLYOFFICE Community Edition。
步骤 1:创建 Docker 网络
bashdocker network create --driver bridge onlyoffice
步骤 2:安装 MySQL
参考 MySQL 安装指南。
步骤 3:安装文档服务器
bashsudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \ -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \ onlyoffice/documentserver
步骤 4:安装邮件服务器
需指定主机名 yourdomain.com:
bashsudo docker run --init --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 \ -e MYSQL_SERVER=onlyoffice-mysql-server \ -e MYSQL_SERVER_PORT=3306 \ -e MYSQL_ROOT_USER=root \ -e MYSQL_ROOT_PASSWD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \ -v /app/onlyoffice/MailServer/data:/var/vmail \ -v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \ -v /app/onlyoffice/MailServer/logs:/var/log \ -h yourdomain.com \ onlyoffice/mailserver
步骤 5:安装社区服务器
替换 ${MAIL_SERVER_IP} 为邮件服务器 IP(通过 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server 获取):
bashsudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_SERVER_DB_NAME=onlyoffice \ -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \ -e MYSQL_SERVER_USER=onlyoffice_user \ -e MYSQL_SERVER_PASS=onlyoffice_pass \ -e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \ -e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP} \ -e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server \ -e MAIL_SERVER_DB_NAME=onlyoffice_mailserver \ -e MAIL_SERVER_DB_PORT=3306 \ -e MAIL_SERVER_DB_USER=root \ -e MAIL_SERVER_DB_PASS=my-secret-pw \ -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ onlyoffice/communityserver
使用脚本安装:
bashwget [***] bash opensource-install.sh -md yourdomain.com
使用 docker-compose:
bashwget [***] docker-compose up -d
setenforce 0 临时禁用 SELinux,或切换至 Ubuntu。文档服务器仅在所有编辑用户关闭文档后保存更改。更新或重启前需强制断开用户连接,执行:
bashsudo docker exec <容器ID> documentserver-prepare4shutdown.sh
(断开用户可能需要 5 分钟)
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务