从 Seafile 12.0 开始,所有
基于 Docker 的单节点部署
的反向代理、HTTPS 等处理都由
caddy
处理。如果您需要使用其他反向代理服务,可以参考本文档修改相关配置文件。
需要反向代理的服务
在更改配置文件之前,
您必须
了解 Seafile 和相关组件使用的服务。
下表所示的服务均基于 Seafile 官方文档的
单节点集成部署
。
如果这些服务以
独立模式部署
(如
seadoc
和
notification-server
),或者部署在第三方插件的
官方文档中
(如
onlyoffice
和
collabora
),则
可以跳过修改这些服务的配置文件
(因为 Caddy 不用作此类部署方式的反向代理)。
如果您尚未集成
表
中的服务,请在需要这些服务时选择
Standalone 或
参考第三方插件的官方文档进行安装。
YML
服务
建议暴露端口
服务监听端口
需要 WebSocket
seafile-server.yml
seafile
80
80
No
seadoc.yml
seadoc
8888
80
Yes
notification-server.yml
notification-server
8083
8083
Yes
collabora.yml
collabora
6232
9980
No
onlyoffice.yml
onlyoffice
6233
80
No
thumbnail-server.yml
thumbnail
8084
80
No
修改 YML 文件
-
有关相关服务公开的端口,请参阅上表。为相应服务添加部分 ports
services:
<the service need to be modified>:
...
ports:
- "<Suggest exposed port>:<Service listen port>"
2.
删除与 Caddy 反向代理相关的所有字段(
label
部分)
一些
.yml
文件(例如
onlyoffice.yml
)也有端口公开信息,文件顶部有 Caddy,这些信息也需要删除。
我们以
seafile-server.yml
为例(专业版):
services:
# ... other services
seafile:
image: ${SEAFILE_IMAGE:-seafileltd/seafile-pro-mc:13.0-latest}
container_name: seafile
ports:
- "80:80"
volumes:
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
environment:
... # enviroment variables map, donnot make change
# please remove the `label` section
#label: ... <- remove this section
depends_on:
... # dependencies, donnot make change
...
# ... other options
相关服务添加反向代理
修改
nginx.conf
并为服务 seafile 和 seadoc 添加反向代理:
如果您的代理服务器的主机与 Seafile 部署到的主机不同,请
将 127.0.0.1 替换到您的 Seafile 服务器的主机
#seafile
location / {
proxy_pass http://127.0.0.1:80;
proxy_read_timeout 310s;
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 Connection "";
proxy_http_version 1.1;
client_max_body_size 0;
}
#seadoc
location /sdoc-server/ {
proxy_pass http://127.0.0.1:8888/;
proxy_redirect off;
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-Host $server_name;
client_max_body_size 100m;
}
location /socket.io {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
#notification-server
location /notification {
proxy_pass http://127.0.0.1:8083;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
access_log /var/log/nginx/notification.access.log seafileformat;
error_log /var/log/nginx/notification.error.log;
}
#onlyoffice
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
location /onlyofficeds/ {
proxy_pass http://127.0.0.1:6233/;
proxy_http_version 1.1;
client_max_body_size 100M;
proxy_read_timeout 3600s;
proxy_connect_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host/onlyofficeds;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#thumbnail
location /thumbnail {
proxy_pass http://127.0.0.1:8084;
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 $scheme;
access_log /var/log/nginx/thumbnail.access.log;
error_log /var/log/nginx/thumbnail.error.log;
}
修改.env
从
.env
中的字段
COMPOSE_FILE
中删除
caddy.yml
,例如
COMPOSE_FILE='seafile-server.yml' # remove caddy.yml
重启服务和 nginx
docker compose down
docker compose up -d
nginx restart