WatchCow 项目介绍

WatchCow 项目现在已经上架了飞牛的应用中心, 但由于 WatchCow 的运行模式与其他应用不太一样, 可能会造成困惑, 我在这里写一个使用说明
WatchCow 是什么
WatchCow 是一个纯后台项目, 用于增强飞牛上的Docker的功能, 并没有前端界面, 这与其他项目有点不同
现在的 fnOS 存在一个小缺憾, 对于用户自己安装的 Docker 容器, 无法识别为系统应用, 从而展示在系统界面上, WatchCow 就是来解决这个问题的
WatchCow 运行时会获取 Docker 容器的 Labels 信息, 并动态打包为一个飞牛的第三方应用
以下为一个最简单的 Compose 示例
services:
nginx:
image: nginx:alpine
container_name: nginx
network_mode: bridge
ports:
- "8081:80"
labels:
watchcow.enable: "true"
与普通的 compose 文件对比, 增加了 labels 配置
以下为一个相对完整的实例
configs:
redirect:
content: |
#!/bin/sh
echo "Status: 302 Found"
echo "Location: https://www.bilibili.com/"
echo ""
services:
bilibili:
image: busybox:uclibc
container_name: bilibili-redirect
ports:
- "3000:3000"
configs:
- source: redirect
target: /www/cgi-bin/index.cgi
mode: 0755
command: httpd -f -p 3000 -h /www
restart: unless-stopped
stop_signal: SIGKILL # 立即强制停止
network_mode: bridge
labels:
# 启用 WatchCow 发现
watchcow.enable: "true"
# 应用标识 (对应 manifest.appname)
watchcow.appname: "watchcow.bilibili"
# 显示信息 (对应 manifest 字段)
watchcow.display_name: "哔哩哔哩"
watchcow.desc: "一键跳转到 B 站"
watchcow.version: "1.0.0"
watchcow.maintainer: "WatchCow"
# 网络配置
watchcow.service_port: "3000"
watchcow.protocol: "http"
watchcow.path: "/cgi-bin/index.cgi"
# UI 配置
watchcow.ui_type: "url"
watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/bilibili.png"
通过这些特殊的label, WatchCow 将会获取完整的应用信息, 当然在默认情况下, WatchCow 会使用缺省值
这里是 WatchCow 支持的所有 Label
应用级配置
| 标签 |
必需 |
默认值 |
说明 |
watchcow.enable |
是 |
- |
设为 "true" 启用 |
watchcow.appname |
否 |
watchcow.<容器名> |
应用唯一标识 |
watchcow.display_name |
否 |
容器名 |
应用显示名称(manifest) |
watchcow.desc |
否 |
镜像名 |
应用描述 |
watchcow.version |
否 |
1.0.0 |
应用版本 |
watchcow.maintainer |
否 |
WatchCow |
维护者 |
入口配置(默认入口)
| 标签 |
必需 |
默认值 |
说明 |
watchcow.service_port |
否 |
首个暴露端口 |
Web UI 端口 |
watchcow.protocol |
否 |
http |
协议 (http/https) |
watchcow.path |
否 |
/ |
URL 路径 |
watchcow.ui_type |
否 |
url |
UI 类型 (url 新标签页 / iframe 桌面窗口) |
watchcow.all_users |
否 |
true |
访问权限 (true 所有用户 / false 仅管理员) |
watchcow.title |
否 |
display_name |
入口标题 |
watchcow.icon |
否 |
自动猜测 |
图标 URL 或 file:// 本地路径 |
watchcow.file_types |
否 |
- |
支持的文件类型(逗号分隔),用于文件右键菜单 |
watchcow.no_display |
否 |
false |
设为 true 则不在桌面显示 |
watchcow.control.access_perm |
否 |
readonly |
访问权限设置权限 |
watchcow.control.port_perm |
否 |
readonly |
端口设置权限 |
watchcow.control.path_perm |
否 |
readonly |
路径设置权限 |
多入口配置
WatchCow 支持为单个应用配置多个入口。使用 watchcow.<entry>.<field> 格式定义命名入口:
| 标签 |
说明 |
watchcow.<entry>.service_port |
入口端口 |
watchcow.<entry>.protocol |
入口协议 |
watchcow.<entry>.path |
入口路径 |
watchcow.<entry>.ui_type |
入口 UI 类型 |
watchcow.<entry>.all_users |
入口访问权限 |
watchcow.<entry>.title |
入口标题(默认:display_name - entry) |
watchcow.<entry>.icon |
入口图标 |
watchcow.<entry>.file_types |
支持的文件类型(逗号分隔),用于文件右键菜单 |
watchcow.<entry>.no_display |
设为 true 则不在桌面显示,仅在右键菜单显示 |
watchcow.<entry>.control.access_perm |
访问权限设置权限:editable/readonly/hidden |
watchcow.<entry>.control.port_perm |
端口设置权限:editable/readonly/hidden |
watchcow.<entry>.control.path_perm |
路径设置权限:editable/readonly/hidden |
在通常情况下, 你可能只需要补充一下项目 ICON, 其余项都可以让 WatchCow 自动识别
WatchCow 的使用场景
WatchCow 的初衷是让你能自由使用海量的开源 Docker 项目,同时享受与飞牛原生应用一致的体验。
- 不用担心第三方应用没人维护打包
- 觉得官方仓库版本太老?自己部署最新版
- 需要修改配置?随时调整
- 想测试自己打包的镜像?没问题
只要你愿意折腾,完全可以把 NAS 打造成你的专属 Homelab。
另外,compose.yaml 是纯文本文件,分享给朋友也很方便——复制粘贴就能用。
项目地址:https://github.com/tf4fun/watchcow
Compose 分享
基于上文我说的 Compose 易于分享的特点, 我整理了几个我常用的开源项目放在这里, 希望大家可以喜欢
1. n8n - 可视化开源工作流

n8n 是一个开源的工作流软件, 可以把不同的应用、API 和服务串联起来,让它们自动协作。在新版本中加入了 AI 支持, 可以轻松的让 AI 读取并处理输入数据, 减少重复工作量, 不会写代码也能上手,同时较新的编程 Agent 也可以直接输出工作流配置, 进一步降低使用门槛
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
network_mode: bridge
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE="Asia/Shanghai"
- TZ="Asia/Shanghai"
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
- N8N_SECURE_COOKIE=false
volumes:
- ./volumes/data:/home/node/.n8n
labels:
watchcow.enable: "true"
watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-ico
NocoDB - 把数据库变成在线表格

NocoDB 是 Airtable 的开源替代品, 能把你的数据库(MySQL、PostgreSQL、SQLite 等)变成一个类似 Excel 的在线表格界面。
不需要写 SQL,点点鼠标就能增删改查数据。除了常规的表格视图,还支持看板、画廊、表单、日历等多种展示方式。
同时提供了对外的API接口, 可以轻松的接入现有系统
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
restart: always
network_mode: bridge
ports:
- 8080:8080
volumes:
- ./volumes:/usr/app/data/
labels:
watchcow.enable: "true"
watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/nocodb.png"
Memos - 轻量级私人笔记

Memos 是一款开源的自托管笔记应用,主打隐私和简洁。
界面简洁, 打开就能记录想法, 支持 Markdown 语法, 支持备忘录搜索, 标签, 和附件视图。
适合用来记录灵感、待办事项、学习笔记,或者当作个人的"碎碎念"空间。轻量到几乎不占资源,部署简单,是 NAS 上的理想笔记工具。
services:
memos:
image: neosmemo/memos:stable
container_name: memos
ports:
- "5230:5230"
volumes:
- ./data:/var/opt/memos
restart: unless-stopped
network_mode: bridge
labels:
watchcow.enable: "true"
watchcow.ui_type: "iframe"
watchcow.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/memos.png"
附
以上的项目 ICON 均使用 URL 形式, 若出现图标显示为飞牛默认图标, 可能为网络原因, 可尝试更换图片地址, 或者下载至本地使用 file:// + 图片绝对路径
另外图标仅可以使用 PNG 形式
此外, 如果出现拉去镜像过慢超时, 可尝试加入其他镜像加速源, 如 1ms 等
一些资源
- https://selfh.st/apps/
该网站收录了大量可自部署的开源项目
- https://github.com/homarr-labs/dashboard-icons
图标库, 如果缺少图标可以在这里找找
最后
基于上文描述的内容, 任何 一个你看到的 compose.yaml 都可以按照该方法变成一个飞牛应用, 如果有问题可在本帖下提问, 有其他 Compose 项目也欢迎在这里分享