这是一款集成化的一站式协作系统,可在单一平台内集中管理文档、项目、客户关系及邮件,支持团队成员实时协作,有效整合各类信息资源,避免多平台切换的繁琐,简化工作流程,助力提升团队整体办公效率与协同效果。
收藏数: 82
下载次数: 3807357
类型:
onlyoffice/communityserverONLYOFFICE 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 = *** 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/。
进入Community Server容器执行脚本:
bashsudo docker exec -it onlyoffice-community-server bash bash /var/www/onlyoffice/Tools/letsencrypt.sh yourdomain.com subdomain1.yourdomain.com # 替换为实际域名及子域名
脚本将自动生成证书并重启Nginx,之后可通过`[***] 生成自签名证书
步骤1:生成私钥
bashopenssl genrsa -out onlyoffice.key 2048 # 生成2048位私钥
步骤2:创建证书签名请求(CSR)
bashopenssl req -new -key onlyoffice.key -out onlyoffice.csr # 根据提示填写域名等信息
步骤3:生成证书(有效期365天)
bashopenssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
生成DHE参数(用于强化SSL安全):
bashopenssl dhparam -out dhparam.pem 2048
将生成的onlyoffice.key、onlyoffice.crt、dhparam.pem复制到宿主机证书目录,并设置权限:
bashmkdir -p /app/onlyoffice/CommunityServer/data/certs cp onlyoffice.key onlyoffice.crt dhparam.pem /app/onlyoffice/CommunityServer/data/certs/ chmod 400 /app/onlyoffice/CommunityServer/data/certs/onlyoffice.key # 限制私钥访问权限
通过环境变量调整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,需依次安装:
bashdocker network create --driver bridge onlyoffice
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/fonts:/usr/share/fonts/truetype/custom \ -v /app/onlyoffice/DocumentServer/forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten \ onlyoffice/documentserver
替换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 # 自动拉取最新镜像
可开发并接入自定义模块,详细说明见官方文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务