如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ONLYOFFICE Community Server 是一款免费开源协作系统,集成文档管理、项目管理、客户关系管理(CRM)及邮件通信功能于一体。自11.0版本起,该系统以ONLYOFFICE Groups名义发布,遵循Apache许可证。
说明:Community Server(即ONLYOFFICE Groups)是ONLYOFFICE Workspace的组成部分,后者还包含文档服务器(ONLYOFFICE Docs)、邮件服务器、即时通讯工具(Talk)及管理面板(Control Panel)。
开始安装前,需创建以下文件夹(用于数据存储与配置):
bashsudo mkdir -p "/app/onlyoffice/mysql/conf.d" # MySQL配置文件目录 sudo mkdir -p "/app/onlyoffice/mysql/data" # MySQL数据存储目录 sudo mkdir -p "/app/onlyoffice/mysql/initdb" # MySQL初始化脚本目录
bashsudo mkdir -p "/app/onlyoffice/CommunityServer/data" # 数据存储目录 sudo mkdir -p "/app/onlyoffice/CommunityServer/logs" # 日志目录 sudo mkdir -p "/app/onlyoffice/CommunityServer/letsencrypt" # Let's Encrypt证书目录
bashsudo mkdir -p "/app/onlyoffice/DocumentServer/data" # 数据存储目录 sudo mkdir -p "/app/onlyoffice/DocumentServer/logs" # 日志目录
bashsudo mkdir -p "/app/onlyoffice/MailServer/data/certs" # 证书目录 sudo mkdir -p "/app/onlyoffice/MailServer/logs" # 日志目录
bashsudo mkdir -p "/app/onlyoffice/ControlPanel/data" # 数据存储目录 sudo mkdir -p "/app/onlyoffice/ControlPanel/logs" # 日志目录
bashsudo docker network create --driver bridge onlyoffice # 创建名为onlyoffice的桥接网络,用于容器通信
bashecho "[mysqld] sql_mode = 'NO_ENGINE_SUBSTITUTION' max_connections = 1000 max_allowed_packet = 1048576000 group_concat_max_len = 2048 log-error = /var/log/mysql/error.log" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf
以下脚本将创建Community Server所需的onlyoffice_user及邮件服务器所需的mail_admin用户:
bashecho "CREATE USER 'onlyoffice_user'@'localhost' IDENTIFIED BY 'onlyoffice_pass'; CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY 'Isadmin123'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY 'my-secret-pw'; GRANT ALL PRIVILEGES ON * . * TO 'onlyoffice_user'@'%' IDENTIFIED BY 'onlyoffice_pass'; GRANT ALL PRIVILEGES ON * . * TO 'mail_admin'@'%' IDENTIFIED BY 'Isadmin123'; FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql
注意:脚本中%表示允许从任意域名访问数据库,若需限制访问范围,可替换为具体IP或域名。
bashsudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server \ -v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \ # 挂载配置文件目录 -v /app/onlyoffice/mysql/data:/var/lib/mysql \ # 挂载数据存储目录 -v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \ # 挂载初始化脚本目录 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ # root用户密码 -e MYSQL_DATABASE=onlyoffice \ # 创建默认数据库onlyoffice mysql:5.7
通过以下命令启动Community Server容器:
bashsudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ # MySQL root密码(需与上文一致) -e MYSQL_SERVER_DB_NAME=onlyoffice \ # 数据库名称 -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \ # MySQL容器名称(用于网络通信) -e MYSQL_SERVER_USER=onlyoffice_user \ # Community Server数据库用户 -e MYSQL_SERVER_PASS=onlyoffice_pass \ # 用户密码 -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ # 挂载数据目录 -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ # 挂载日志目录 -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \ # 挂载证书目录 -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ # 挂载cgroup(用于容器内服务管理) onlyoffice/communityserver
为避免升级时丢失数据,需将容器内数据目录挂载到宿主机。通过-v参数指定挂载路径,例如:
bashsudo docker run -i -t -d -p 80:80 \ -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ # 日志目录 -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ # 数据目录 -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \ # 证书目录 -v /sys/fs/cgroup:/sys/fs/cgroup:ro onlyoffice/communityserver
如需修改默认端口(如将80端口改为8080),通过-p参数调整:
bashsudo docker run -i -t -d --privileged -p 8080:80 \ # 宿主机8080端口映射容器80端口 -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro onlyoffice/communityserver
容器需开放以下端口用于通信:
通过-p参数开放端口,例如:
bashsudo docker run -i -t -d --privileged -p 80:80 -p 443:443 -p 5222:5222 -p 25:25 ...
HTTPS配置需准备私钥(.key) 和证书(.crt),文件需放置于宿主机/app/onlyoffice/CommunityServer/data/certs/目录,容器内路径为/var/www/onlyoffice/Data/certs/。
自动生成Let's Encrypt证书
进入Community Server容器执行脚本:
bashsudo docker exec -it onlyoffice-community-server bash bash /var/www/onlyoffice/Tools/letsencrypt.sh yourdomain.com subdomain1.yourdomain.com # 替换为实际域名及子域名
脚本将自动生成证书并重启Nginx,之后可通过`[] 生成自签名证书
步骤1:生成私钥
CODE_TOKEN_14
步骤2:创建证书签名请求(CSR)
CODE_TOKEN_15
步骤3:生成证书(有效期365天)
CODE_TOKEN_16
增强服务器安全性
生成DHE参数(用于强化SSL安全):
CODE_TOKEN_17
安装证书
将生成的onlyoffice.key、onlyoffice.crt、dhparam.pem复制到宿主机证书目录,并设置权限:
CODE_TOKEN_18
可用配置参数
通过环境变量调整HTTPS相关配置(示例):
SSL_KEY_PATH:私钥路径(默认/var/www/onlyoffice/Data/certs/onlyoffice.key)SSL_CERTIFICATE_PATH:证书路径(默认/var/www/onlyoffice/Data/certs/onlyoffice.crt)ONLYOFFICE_HTTPS_HSTS_ENABLED:是否启用HSTS(默认true)Workspace包含Community Server、Document Server、Mail Server、Control Panel,需依次安装:
CODE_TOKEN_19
CODE_TOKEN_20
替换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 \ # MySQL容器名称 -e MYSQL_ROOT_PASSWD=my-secret-pw \ # MySQL root密码 -v /app/onlyoffice/MailServer/data:/var/vmail \ # 邮件数据目录 -v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \ # 证书目录 -h yourdomain.com \ # 邮件服务器主机名 onlyoffice/mailserver
bashdocker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-control-panel \ -v /var/run/docker.sock:/var/run/docker.sock \ # 挂载Docker控制接口 -v /app/onlyoffice/CommunityServer/data:/app/onlyoffice/CommunityServer/data \ -v /app/onlyoffice/ControlPanel/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/ControlPanel/logs:/var/log/onlyoffice onlyoffice/controlpanel
需添加文档服务器、邮件服务器等环境变量:
bashsudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ -e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \ # 文档服务器容器名称 -e MAIL_SERVER_API_HOST=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server) \ # 邮件服务器IP ...(其他参数同上文)... onlyoffice/communityserver
bashsudo docker inspect --format='{{range $p,$conf:=.HostConfig.Binds}}{{$conf}};{{end}}' {{社区服务器ID}} # 替换为容器ID/名称
bashsudo docker rm -f {{社区服务器ID}}
bashsudo docker rmi -f $(sudo docker images | grep onlyoffice/communityserver | awk '{ print $3 }')
使用与原容器相同的挂载路径和环境变量启动新镜像:
bashsudo docker run -i -t -d --privileged -p 80:80 \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ # 保持原参数不变 ...(其他参数)... onlyoffice/communityserver # 自动拉取最新镜像
可开发并接入自定义模块,详细说明见官方文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务