收起左侧

WatchCow 使用说明及Compose分享

2
回复
206
查看
[ 复制链接 ]

2

主题

15

回帖

0

牛值

江湖小虾

WatchCow 项目介绍

image.png

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工作流

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 演示

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 示例

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 项目也欢迎在这里分享

收藏
送赞 2
分享

本帖子中包含更多资源

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

x

0

主题

9

回帖

0

牛值

江湖小虾

厉害,解决了一个痛点,部署了reader,完美。

0

主题

26

回帖

0

牛值

江湖小虾

成功成功成功

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

本版积分规则