WatchCow 其实还可以通过它注册文件右键入口,我最近写了一个 OnlyOffice 的连接器,可以用纯 Docker 部署的方式完成和飞牛文件管理器的集成。
networks:
onlyoffice-net:
name: onlyoffice-net
driver: bridge
configs:
nginx_conf:
content: |
worker_processes auto;
events { worker_connections 1024; }
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
map $$host $$is_external {
~*${EXTERNAL_DOMAIN}$$ 1;
default 0;
}
map $$is_external $$the_scheme {
1 https;
default http;
}
upstream doc-svr { server onlyoffice-doc-svr:80; }
upstream connector { server onlyoffice-connector:10099; }
server {
listen 80;
server_name _;
location /doc-svr/ {
rewrite ^/doc-svr/(.*)$$ /$$1 break;
proxy_pass http://doc-svr;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection "upgrade";
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 $$http_host/doc-svr;
proxy_set_header X-Forwarded-Proto $$the_scheme;
}
location / {
proxy_pass http://connector;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection "upgrade";
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 $$the_scheme;
}
}
}
services:
onlyoffice-nginx:
image: nginx:alpine
container_name: onlyoffice-nginx
networks:
- onlyoffice-net
restart: unless-stopped
ports:
- '9080:80'
configs:
- source: nginx_conf
target: /etc/nginx/nginx.conf
labels:
watchcow.enable: "true"
watchcow.editor.service_port: "9080"
watchcow.editor.protocol: "http"
watchcow.editor.path: "/editor"
watchcow.editor.ui_type: "iframe"
watchcow.editor.all_users: "true"
watchcow.editor.title: "使用 OnlyOffice 打开"
watchcow.editor.file_types: "docx,xlsx,pptx,doc,xls,ppt,odt,ods,odp,pdf,txt,rtf,csv,djvu,oxps,epub,fb2"
watchcow.editor.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/onlyoffice.png"
watchcow.editor.no_display: "true"
depends_on:
- onlyoffice-connector
- onlyoffice-documentserver
onlyoffice-connector:
image: xingheliufang/onlyoffice-fnos:main
container_name: onlyoffice-connector
networks:
- onlyoffice-net
restart: unless-stopped
environment:
- DOCUMENT_SERVER_URL=http://onlyoffice-doc-svr:80
- DOCUMENT_SERVER_SECRET=your-secret-key-change-me # 与下方 JWT_SECRET 一致
- BASE_URL=http://onlyoffice-connector:10099
- DOC_SERVER_PATH=/doc-svr
volumes:
- /vol1:/vol1 # 根据实际存储卷调整
onlyoffice-documentserver:
image: onlyoffice/documentserver:latest
container_name: onlyoffice-doc-svr
networks:
- onlyoffice-net
restart: unless-stopped
stop_grace_period: 60s
environment:
- JWT_ENABLED=true
- JWT_SECRET=your-secret-key-change-me # 与 connector 的 DOCUMENT_SERVER_SECRET 一致
- JWT_HEADER=Authorization
- JWT_IN_BODY=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/info/info.json"]
interval: 30s
retries: 5
start_period: 60s
timeout: 10s
volumes:
- ./volumes/data:/var/www/onlyoffice/Data
- ./volumes/log:/var/log/onlyoffice
- ./volumes/lib:/var/lib/onlyoffice
- ./volumes/plugins:/var/www/onlyoffice/documentserver/sdkjs-plugins
- ./volumes/fonts:/usr/share/fonts/truetype/custom
配置说明:
-
创建 .env 文件配置外网 域名:
EXTERNAL_DOMAIN=.your-domain.com
匹配该域名后缀的请求会自动使用 HTTPS 协议
-
修改 DOCUMENT_SERVER_SECRET 和 JWT_SECRET(两者必须一致)
-
根据你的存储卷调整 volumes 挂载(如 /vol1:/vol1)
-
只暴露 nginx 的 9080 端口,所有服务通过内部网络通信
⚠️ 已知限制:
- fnOS 暂未提供用户系统接入 API,无法获取编辑用户信息
第一次启动会比较久,onlyoffice-documentserver 有一些插件要安装,等状态显示为 healthy 就可以用了。
仓库地址:https://github.com/tf4fun/onlyoffice-fnos ,欢迎来报 issue
onlyoffice icon:
