如何使用 docker-compose 和 nginx 设置 OnlyOffice
前提条件:安装 docker 和 docker-compose
例如,按照我们的指南如何在 30 秒内在 Ubuntu 上安装 docker 和 docker-compose
步骤 1:创建 docker-compose.yml
使用以下命令创建我们将安装 OnlyOffice 的目录
sudo mkdir /var/lib/onlyoffice然后使用例如以下命令编辑 docker-compose 配置
sudo nano /var/lib/onlyoffice/docker-compose.yml并复制粘贴此内容
services:
onlyoffice-documentserver:
image: onlyoffice/documentserver:latest
restart: always
environment:
- JWT_ENABLED=true
- JWT_SECRET=ahSaTh4waeKe4zoocohngaihaub5pu
ports:
- 2291:80
volumes:
- ./onlyoffice/data:/var/www/onlyoffice/Data
- ./onlyoffice/lib:/var/lib/onlyoffice
- ./onlyoffice/logs:/var/log/onlyoffice
- ./onlyoffice/db:/var/lib/postgresql现在在 JWT_SECRET=... 中添加你的自定义密码!不要忘记此步骤,否则任何人都可以使用你的 OnlyOffice 服务器!我使用 pwgen 30 生成新的随机密码(使用 sudo apt -y install pwgen 安装)。
步骤 2:设置 systemd 服务
使用 sudo nano /etc/systemd/system/onlyoffice.service 创建服务:
[Unit]
Description=OnlyOffice 服务器
Requires=docker.service
After=docker.service
[Service]
Restart=always
User=root
Group=docker
# 当单元停止时关闭容器(如果正在运行)
ExecStartPre=/usr/local/bin/docker-compose -f /var/lib/onlyoffice/docker-compose.yml down -v
# 当单元启动时启动容器
ExecStart=/usr/local/bin/docker-compose -f /var/lib/onlyoffice/docker-compose.yml up
# 当单元停止时停止容器
ExecStop=/usr/local/bin/docker-compose -f /var/lib/onlyoffice/docker-compose.yml down -v
[Install]
WantedBy=multi-user.target现在使用以下命令启用并启动服务
sudo systemctl enable onlyoffice
sudo systemctl start onlyoffice步骤 3:创建 nginx 反向代理配置
注意我们将 OnlyOffice 的端口 80 映射到端口 2291。如果你不使用 nginx 作为反向代理,你需要手动配置反向代理将请求传递到端口 2291。
server {
server_name onlyoffice.mydomain.org;
access_log /var/log/nginx/onlyoffice.access_log;
error_log /var/log/nginx/onlyoffice.error_log info;
location / {
proxy_pass http://127.0.0.1:2291;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
add_header X-Frontend-Host $host;
# 为该域设置 TLS 后取消注释此行并重新加载!
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
listen 80;
}现在使用 nginx -t 测试你的 nginx 配置是否有效,并使用 service nginx reload 重新加载。
现在我建议为你的域设置 Let’s Encrypt,以便你的 OnlyOffice 实例只能通过加密连接访问(sudo certbot --nginx,如果你不知道如何操作,请参阅其他指南)。
一旦 certbot 询问你是否重定向,选择选项 2 - 重定向到 HTTPS。
步骤 4:测试 OnlyOffice
如果你的安装成功,你应该看到类似这样的屏幕:

如果没有,尝试使用以下命令检查日志
sudo journalctl -xu onlyoffice(可选)步骤 5:配置 NextCloud 使用 OnlyOffice
如果你正在运行 NextCloud,转到 Settings => ONLYOFFICE 并输入你的域和之前创建的 JWT_SECRET:

确保 Connect to demo ONLYOFFICE Document Server 未勾选,然后点击 Save。
Nextcloud 会在右上角告诉你是否已成功连接到你的 OnlyOffice 实例:
Settings successfully updated表示 NextCloud 现已连接到 OnlyOfficeInvalid token表示你的密码/密钥不匹配- 其他消息通常表示你的 OnlyOffice 未运行或你未输入正确的域或协议。我建议仅使用
https://- 仅将http://用于测试,找到问题后不要忘记恢复到https://。