收起左侧

WatchCow使用方法简介,实现任意docker自动生成飞牛应用

7
回复
831
查看
[ 复制链接 ]

8

主题

92

回帖

0

牛值

初出茅庐

一、前言

  1. 本人为小白,在论坛和网上找了一圈,别的教程有点不够小白,所以以小白的视角写一篇喂饭级别的教程,让小白们能更好的理解与应用。

二、前置准备

  1. 环境要求

    • 应用商店安装WatchCow
    • 准备图标库,文末我会给出大佬分享的图标库,将图标放入你自己的nas

三、实操步骤:Docker 容器对接飞牛应用(以 omnibox 为例)

  1. 原docker compose文件
services:
  omnibox:
    image: lampon/omnibox:latest  # 使用最新的 Omnibox 镜像
    container_name: omnibox  # 容器名称为 omnibox
    restart: always  # 容器自动重启策略设置为总是重启
    environment:
      - TZ=Asia/Shanghai  # 设置时区为上海
    ports:
      - "7023:7023"  # 映射本地端口 到容器的 7023 端口
    volumes:
      - /vol1/1000/docker/omnibox/data:/app/data  # 将本地的 ./omnibox/data 目录挂载到容器的 /app/data 目录
    networks:
      - media-net  # 使用内部网络 media-net 进行通信
networks:
  media-net:
    driver: bridge  # 使用默认的桥接网络驱动
  1. 根据WatchCow的github地址:GitHub - tf4fun/watchcow提供的示例在docker compose文件里加入以下代码:
    labels:
      watchcow.enable: "true"
      watchcow.appname: "Omnibox"   # 对应前面的应用名
      watchcow.service_port: "7023"   # 和前面libretv的端口名对应
      watchcow.protocol: "http"
      watchcow.path: "/"
      watchcow.icon: "file:///vol1/1000/docker/icons/omnibox.png"   # 这里替换成你自己的图标库
      # watchcow.icon: "https://example.com/libretv.png"     # 这里也可以改成在线图标,把前面注释掉就行了
  1. 完整的docker compose文件
services:
  omnibox:
    image: lampon/omnibox:latest  # 使用最新的 Omnibox 镜像
    container_name: omnibox  # 容器名称为 omnibox
    restart: always  # 容器自动重启策略设置为总是重启
    environment:
      - TZ=Asia/Shanghai  # 设置时区为上海
    ports:
      - "7023:7023"  # 映射本地端口 到容器的 7023 端口
    volumes:
      - /vol1/1000/docker/omnibox/data:/app/data  # 将本地的 ./omnibox/data 目录挂载到容器的 /app/data 目录
    networks:
      - media-net  # 使用内部网络 media-net 进行通信
    labels:
      watchcow.enable: "true"
      watchcow.appname: "Omnibox"   # 对应前面的应用名
      watchcow.service_port: "7023"   # 和前面libretv的端口名对应
      watchcow.protocol: "http"
      watchcow.path: "/"
      watchcow.icon: "file:///vol1/1000/docker/icons/omnibox.png"   # 这里替换成你自己的图标库
      # watchcow.icon: "https://example.com/libretv.png"     # 这里也可以改成在线图标,把前面注释掉就行了
networks:
  media-net:
    driver: bridge  # 使用默认的桥接网络驱动
  1. 进入docker使用docker compose的方式安装docker
  2. 看看有没有正确生成图标,名称是否正确
  3. 访问测试,是否正常

六、感谢与引用:

  1. [](https://github.com/tf4fun/watchcow) WatchCow原作者Github
  2. 星河流放大佬的帖子:转换任意 Docker 容器为飞牛应用 - 攻略分享 飞牛私有云论坛 fnOS
  3. 论坛大佬 quanmingxin 上传的图标库:小飞机网盘
收藏
送赞 6
分享

0

主题

7

回帖

0

牛值

江湖小虾

这样做有什么好处吗,一直都比较喜欢用compose方式部署

当你在一台电脑上用fn id登录过fnos的管理界面之后,可以实现伪域名无端口访问应用,比如https://omnibox.fnid.fnos.net/ 可以直接访问应用。哈哈,其实最方便的还是把docker应用加到主页之后,可以直接点应用打开  详情 回复
前天 11:53

0

主题

27

回帖

0

牛值

江湖小虾

成功成功成功

8

主题

92

回帖

0

牛值

初出茅庐

前天 11:53 楼主 显示全部楼层
lostlost 发表于 2026-1-9 23:52
这样做有什么好处吗,一直都比较喜欢用compose方式部署

当你在一台电脑上用fn id登录过fnos的管理界面之后,可以实现伪域名无端口访问应用,比如https://omnibox.fnid.fnos.net/   可以直接访问应用。哈哈,其实最方便的还是把docker应用加到主页之后,可以直接点应用打开docker最方便。

0

主题

5

回帖

0

牛值

江湖小虾

不需要穿透了 可以直接远程打开了 意义不大 聊胜于无 现在小宝组网很方便

2

主题

19

回帖

0

牛值

江湖小虾

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

配置说明:

  1. 创建 .env 文件配置外网 域名:

    EXTERNAL_DOMAIN=.your-domain.com
    

    匹配该域名后缀的请求会自动使用 HTTPS 协议

  2. 修改 DOCUMENT_SERVER_SECRETJWT_SECRET(两者必须一致)

  3. 根据你的存储卷调整 volumes 挂载(如 /vol1:/vol1

  4. 只暴露 nginx 的 9080 端口,所有服务通过内部网络通信

⚠️ 已知限制:

  • fnOS 暂未提供用户系统接入 API,无法获取编辑用户信息

第一次启动会比较久,onlyoffice-documentserver 有一些插件要安装,等状态显示为 healthy 就可以用了。

仓库地址:https://github.com/tf4fun/onlyoffice-fnos ,欢迎来报 issue

onlyoffice icon:

onlyoffice.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬睡这么迟啊,早点休息啊  详情 回复
昨天 09:19

8

主题

92

回帖

0

牛值

初出茅庐

昨天 09:19 楼主 显示全部楼层
星河流放 发表于 2026-1-11 03:42
WatchCow其实还可以通过它注册文件右键入口, 我最近写了一个 OnlyOffice 的连接器, 可以用纯 Docker 部署的 ...

大佬睡这么迟啊,早点休息啊

13

主题

186

回帖

0

牛值

小有名气

fnOS1.0上线纪念勋章

看起来不错呀,感谢分享!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则