使用 Docker Compose 管理 ONLYOFFICE DocumentServer 的配置与优化实践

在日常部署和维护在线协作平台时,ONLYOFFICE DocumentServer 作为一款强大的在线 Office 解决方案,因其优秀的兼容性和开放性被广泛采用。结合 Docker Compose,可以更灵活地控制服务的生命周期、挂载、更新及安全策略。以下记录一次优化配置和维护的实践过程。 💡 配置背景 在最初的配置中,DocumentServer 容器同时暴露了 HTTP(80)和 HTTPS(443)端口,并在容器内部配置证书。这种方式在单机场景下可以快速实现,但长期来看,证书管理和更新不够灵活。 随着需求的发展,改为由外部反向代理(如 Nginx)统一处理 HTTPS,加密与证书管理集中在代理层面,容器只需使用 HTTP。这样不仅减少了内部配置复杂度,也方便后续维护。 ⚙️ 优化前配置示例 services: onlyoffice: image: onlyoffice/documentserver container_name: onlyoffice restart: always ports: – “8080:80” – “8443:443” volumes: – /path/to/logs:/var/log/onlyoffice – /path/to/data:/var/www/onlyoffice/Data – /path/to/cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files – /path/to/public:/var/www/onlyoffice/documentserver-example/public/files – /path/to/fonts:/usr/share/fonts 在该配置中,容器内已经开启 HTTPS(8443),同时还挂载了示例文件和自定义字体目录,配置较为繁琐。 ✅ 优化后的配置 为了精简容器内部配置,只保留 HTTP(示例端口 8080),并将证书管理交由反向代理处理,配置文件进行了调整: …

Rocket.Chat 域名迁移与 Jitsi 配置调整实战总结

在一次 Rocket.Chat 生产环境的维护中,需要将服务域名从旧地址迁移到新的子域名,同时更新文件上传链接和 Jitsi 视频会议配置。这篇文章总结了整个过程中遇到的问题、解决方案以及关键操作步骤,供有类似需求的用户参考。 💡 背景 🟢 域名迁移 修改 docker-compose.yml 首先需要在 docker-compose.yml 中更新 Rocket.Chat 服务的 ROOT_URL 环境变量,例如: environment: ROOT_URL: https://chat.example.com 修改后执行以下命令重新启动容器,使修改生效: docker-compose downdocker-compose up -d 更新数据库中的 Site URL Rocket.Chat 会在数据库中保存一个 Site_Url 配置,优先级高于自动推断。当域名变更时,需要同步更新此值。 进入 MongoDB 容器: docker exec -it <mongodb-container-name> mongosh 切换数据库: use rocketchat 更新 Site_Url: db.rocketchat_settings.updateOne( { _id: “Site_Url” …

用子路径访问 WordPress:更稳定、更简单的最佳实践

在实际运维和多站点管理中,很多人常常会遇到这样的问题: 想通过子域名(例如 blog.example.com)来访问某个子目录中的 WordPress,但最终发现跳转逻辑复杂、配置繁琐,甚至会引发各种不必要的麻烦。 💡 WordPress 的设计逻辑 WordPress 是一个需要严格识别「主站 URL」的应用,站点地址(siteurl 和 home)会被写入数据库。它的架构假设访问地址是唯一且固定的,这与 Nextcloud 等可以完全依赖相对路径的应用不同。 ⚡ 子域名访问的复杂性 如果希望通过子域名根路径访问 WordPress,比如 blog.example.com: 对于已有多文件的根目录环境,或同一台服务器上有其他重要应用,这种方案会带来较高的风险和维护成本。 ✅ 子路径访问:最简单、最稳妥 相比之下,保留原有子路径(例如 https://example.com/wordpress/)具有明显优势: 在 Nginx 配置中,可以继续保留: location / { proxy_pass http://后端服务器/wordpress/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https;} 🔥 子路径方案的适用场景 ⭐ 总结 …

WordPress 备份遇到 504 Gateway Timeout 与大文件问题的解决方案

在使用 WordPress 过程中,网站数据的安全备份至关重要。常见的备份插件(如 Duplicator)可以快速打包整个站点文件和数据库,但在实际操作中,若站点体积较大,经常会遇到 504 Gateway Time-out 错误,或者浏览器下载时中断。这些问题并非插件故障,而多由服务器配置、超时设置或下载方式不当引起。 备份流程与后台情况 Duplicator 的典型流程分为两步:先导出数据库 SQL 文件,再将站点文件夹与数据库一起压缩为一个 zip 包。在后台任务执行时,会显示「Building Backup xx%」等进度信息。 若在打包中途遇到 504 Gateway Timeout 错误,往往只是浏览器或代理超时,实际压缩进程在服务器上通常仍在继续。刷新页面或重新进入备份列表,常可看到完整备份文件已生成。 504 Gateway Time-out 的原因 当服务器或代理(如 Nginx、Cloudflare 等)在设定时间内未收到后端响应,会返回 504 错误。进行大文件打包时,后端需要长时间执行 PHP 代码,若超出配置的超时时间,就会触发该错误。 解决思路 1️⃣ 调整服务器超时设置 修改后需重启服务: bashCopyEditsudo systemctl restart nginx sudo systemctl restart apache2 sudo systemctl restart php8.1-fpm 2️⃣ …

Rocket.Chat🚀更换域名操作全记录(Docker + MongoDB 7)

这篇文章分享如何在 Docker 部署环境下,将 Rocket.Chat 的旧域名彻底替换为新域名,包括数据库更新、服务重启和客户端验证等全流程,适用于自己搭建的私有聊天系统。 🧱 部署架构概览 🛡 本文中所有域名、容器名均为示例,实际请根据你的环境替换。 🔍 步骤一:查找并确认含旧域名的数据 进入 MongoDB 容器: bashCopyEditdocker exec -it your-mongo-container-name mongosh 切换到 Rocket.Chat 数据库: jsCopyEdituse rocketchat 检查上传记录中是否包含旧域名: jsCopyEditdb.rocketchat_uploads.countDocuments({ url: { $regex: “localhost|旧域名1|旧域名2|…” } }) 🔄 步骤二:批量替换上传记录中的域名前缀 使用 MongoDB 7 的 $function 方式进行安全、批量替换: jsCopyEditdb.rocketchat_uploads.updateMany( { url: { $regex: “localhost|旧域名1|旧域名2|…” } }, [ { …

Rocket.Chat 7.x 升级后“Workspace in read-only mode”问题完整解决记录(Docker部署 / GFW环境)

本文记录了在中国网络环境中使用 Docker 自托管 Rocket.Chat 升级至 7.x 后,遇到“只读模式”限制的问题。核心原因并非配置错误,而是由于 中国防火墙(GFW)阻断了关键的 DNS 与 API 请求。最终通过 软路由启用全局代理 成功解决,特此记录分享。 🧩 问题现象 升级 Rocket.Chat 到 7.2.0 后,后台出现以下提示: Workspace in read-only mode. Admins can restore full functionality by connecting it to the internet or upgrading to a premium plan. 📖 背景介绍 Rocket.Chat 从 7.0 起更改许可策略: ⚠️ 核心问题并非配置,而是 …

解决Windows系统下网盘同步图标不显示的问题

在Windows系统下同时安装几款同步盘客户端,均设置好文件同步,会发现在文件管理器中不是每个网盘都能显示同步状态。根据个人经验,只有一个网盘能够正常显示。可以通过修改注册表的方式来决定让哪一款网盘显示同步状态。 在开始菜单里找到注册表,打开,定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 会看到类似于下图的结果 我使用的是Nextcloud客户端,所以有OC开头的项目。如果使用Seafile,则会有包含Seafile的项目。下一步将需要显示同步状态的网盘的项目前置即可。我只保留了Nextcloud的几个项目。如果删除其他项目,建议在删除之前先导出注册表,便于日后恢复调整。