如何使用 docker-compose、systemd 和 nginx 设置 OnlyOffice
在此设置中,我们展示如何使用 nginx 作为反向代理设置 OnlyOffice,使用 docker-compose 运行和配置 OnlyOffice 镜像,使用 systemd 自动启动和重启 OnlyOffice 实例。在反向代理配置中运行它允许你在同一 IP 地址上监听其他域并集中管理 Let’s Encrypt SSL 证书。
我们将在 /opt/onlyoffice 端口 2291 上设置实例。
将此文件保存为 /opt/onlyoffice/docker-compose.yml 不要忘记将 JWT_SECRET 更改为随机密码!
services:
onlyoffice-documentserver:
image: onlyoffice/documentserver:latest
restart: always
environment:
- JWT_ENABLED=true
- JWT_SECRET=Shei9AifuZ4ze7udahG2seb3aa6ool
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现在我们可以创建 systemd 服务。我使用 TechOverflow 的 docker-compose systemd .service 生成器创建它。将其保存在 /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 /opt/onlyoffice/docker-compose.yml down
# 当单元启动时启动容器
ExecStart=/usr/local/bin/docker-compose -f /opt/onlyoffice/docker-compose.yml up
# 当单元停止时停止容器
ExecStop=/usr/local/bin/docker-compose -f /opt/onlyoffice/docker-compose.yml down
[Install]
WantedBy=multi-user.target现在我们可以使用以下命令启用并启动服务
sudo systemctl enable OnlyOffice.service
sudo systemctl start OnlyOffice.service现在让我们在 /etc/nginx/sites-enabled/OnlyOffice.conf 中创建 nginx 配置。显然,你至少需要修改
server {
server_name onlyoffice.mydomain.com;
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;
}
listen 80;
}使用以下命令检查 nginx 配置的有效性
sudo nginx -t除非失败,否则使用以下命令重新加载 nginx
sudo service nginx reload现在我建议使用 certbot 在你的域上启用 TLS 加密。你应该已经熟悉这些步骤;我的方法是 sudo apt -y install python-certbot-nginx,然后 certbot --nginx --staging 首先获取临时证书以避免在有任何问题时被阻止,获取临时证书后使用 certbot --nginx 和 Renew & replace cert。之后,运行 sudo service nginx reload 并检查你的域是否使用 HTTPS 工作。如果 certbot 询问你,你应该始终选择重定向到 HTTPS。