如何使用 docker-compose 和 nginx 设置 OnlyOffice

前提条件:安装 dockerdocker-compose

例如,按照我们的指南如何在 30 秒内在 Ubuntu 上安装 docker 和 docker-compose

步骤 1:创建 docker-compose.yml

使用以下命令创建我们将安装 OnlyOffice 的目录

commands.sh
sudo mkdir /var/lib/onlyoffice

然后使用例如以下命令编辑 docker-compose 配置

commands.sh
sudo nano /var/lib/onlyoffice/docker-compose.yml

并复制粘贴此内容

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 创建服务:

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

现在使用以下命令启用并启动服务

commands.sh
sudo systemctl enable onlyoffice
sudo systemctl start onlyoffice

步骤 3:创建 nginx 反向代理配置

注意我们将 OnlyOffice 的端口 80 映射到端口 2291。如果你不使用 nginx 作为反向代理,你需要手动配置反向代理将请求传递到端口 2291

onlyoffice_nginx.conf
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

如果你的安装成功,你应该看到类似这样的屏幕:

OnlyOffice 文档服务器欢迎屏幕

如果没有,尝试使用以下命令检查日志

commands.sh
sudo journalctl -xu onlyoffice

(可选)步骤 5:配置 NextCloud 使用 OnlyOffice

如果你正在运行 NextCloud,转到 Settings => ONLYOFFICE 并输入你的域和之前创建的 JWT_SECRET

配置 OnlyOffice 集成的 NextCloud 设置页面

确保 Connect to demo ONLYOFFICE Document Server 未勾选,然后点击 Save

Nextcloud 会在右上角告诉你是否已成功连接到你的 OnlyOffice 实例:


Check out similar posts by category: Container, Docker, Linux, Nginx