
飞牛 OS 上安装的服务逐渐增多后,往往会出现一个很实际的管理问题:每套应用都有自己的 IP、端口和访问路径。Docker 容器本身可以正常运行,但查找管理页面、整理常用网站、在不同设备间切换访问入口,仍然需要单独维护。对于 NAS、HomeLab 或个人开发环境,一个能够集中呈现链接的自托管导航页,通常比把所有入口散落在书签和文档中更方便。
这次部署的工具是 Flare。它是一款轻量级导航页,使用 YAML 文件管理书签与应用分组,提供浏览器页面,适合把开发工具、云服务、媒体平台以及自建服务放在统一入口中。本文以飞牛 OS 为部署环境,沿用原文的 soulteary/flare:0.2.4 镜像、5050:5005 端口映射和 ./app:/app 数据挂载,完整展示从 SSH 连接、Compose 启动、配置文件编辑到网页访问的过程。
导航页完成后,再通过 cpolar 创建 HTTP 隧道,先使用随机域名验证外网访问,再按需要设置固定二级子域名。所有示例中的 NAS 地址与自建服务域名都需要替换成自己的实际信息;原文的配置也会标明命令行与 YAML 内容的区别,避免直接复制时产生语法问题。本文聚焦已经展示的导航、编辑和远程访问能力,不把多用户独立空间或完整内容管理 API 写成这个镜像的已验证功能。

Flare 是一款开源的自托管导航页,主要解决的不是存储或远程控制,而是把分散的链接集中展示。例如把 GitHub、开发文档、云盘、影视网站以及 NAS 上的各种服务分组,日常只需要打开一个首页,就能快速跳转。
项目主要使用 Go 开发,镜像提供 Web 页面,书签和应用内容可通过挂载到容器的 YAML 文件维护。对于只想搭一个家庭数字入口的人,部署和迁移都相对直接:重点备份配置目录即可,不必为了导航功能另起数据库。
这一用途适合三种情形:个人把浏览器书签整理成主页;家庭成员从同一页面找到影音、网盘等常用入口;HomeLab 用户集中维护 NAS、Home Assistant、Portainer 等应用的地址。如果需要外出使用,还可以为导航页单独配置公网访问。
功能边界要先说明: 本文所用的 soulteary/flare:0.2.4 示例没有演示多用户独立工作空间、用户级权限体系或完整 REST API。Flare 官方的 Docker 项目文档明确表示不依赖数据库,且将“使用 API 管理内容”列为待办功能,因此不能把这些能力直接当成本教程的实测结果。它支持的登录控制与“每位用户有独立数据”也不是同一件事。
正式安装前,先确认 NAS 已经运行 Docker,并允许通过 SSH 登录。Docker 用于运行 Flare 容器;SSH 让我们能够在终端中创建目录、编辑配置和启动服务。如果已有这两项环境,可以直接进入下一节。
在飞牛的设置 → SSH 中开启服务,按照页面提示保存设置。下面几张截图对应启用入口和连接过程。



随后在 Windows PowerShell、macOS Terminal 或自己惯用的终端中,通过 NAS 的实际 IP 和用户名连接。登录所需凭据以个人 NAS 的配置为准,不要把 SSH 管理端口直接开放到公网。
原文给出了下面的检查命令,这里按原样保留:
docker -v
systemctl status -v其中 docker -v 用于查看 Docker 客户端版本;systemctl status -v 并不是检查 Docker 服务状态的正确命令。实际排查时应查看 Docker 应用的运行状态,或使用 docker info,若设备采用 systemd 再按具体服务名检查。
也可通过飞牛的应用界面确认 Docker 是否安装并正常打开。

先在终端中准备存放配置的目录,原文使用以下路径:
mkdir -p /docker/Flare
cd /docker/Flare
这里需要注意 Linux 文件名区分大小写,/docker/Flare 与 /docker/flare 是两个不同目录。后文出现的小写目录截图仅反映原文的操作画面,实际执行请统一使用你自己创建的目录。 此外,/docker 是否为实际可写存储位置,也要结合飞牛上的挂载和权限确认。
在刚才的目录中创建 docker-compose.yml,放入原文使用的服务配置:
version: '3.8'
services:
flare:
image: soulteary/flare:0.2.4
container_name: flare
restart: unless-stopped
ports:
- "5050:5005"
volumes:
- ./app:/app这份配置使用 soulteary/flare:0.2.4 镜像,将 NAS 的 5050 端口映射到容器的 5005 端口,并把当前目录下的 app 挂载到容器 /app。导航数据会保留在宿主机对应目录中,方便修改与备份。镜像版本固定可以保持教程一致,但是否升级应先确认配置兼容性。

在 Compose 文件所在目录运行:
docker compose up -d
容器启动后,用同一局域网内的浏览器访问 http://飞牛IP:5050。这里的“飞牛IP”必须替换成 NAS 的实际地址;页面能正常加载,说明本地映射至少已经可以访问。

如未能打开,应先确认容器是否运行、5050 是否被其他应用占用,以及浏览器和 NAS 是否处在可互通的网络中。
Flare 的好处不只是能显示一个漂亮首页,更重要的是把常用入口整理成可维护的数据。原文通过 /app 目录里的文件分别配置书签和应用区。正式修改前,建议留存一份配置备份,避免写错 YAML 时需要重新整理。
原文终端显示的当前位置如下,请注意它与前文大写的目录存在大小写差异:
# pwd
/docker/flare查看文件:
ls进入 app 目录:
cd app
继续查看其中的配置文件,原文展示为:
# ls
apps.yml bookmarks.yml config.yml通常可以按用途理解:bookmarks.yml 管理分类书签,apps.yml 管理应用快捷入口,config.yml 记录相关配置。不同版本的配置字段应以该版本生成的文件和项目示例为准。
书签区主要承载常用网站或按类别整理的资源:

应用区更适合放常用工具及自建服务的直接入口:

整体配置则由 config.yml 等文件承载:

原文的配置内容涵盖开发工具、云服务、媒体娱乐和家庭实验室四类,适合作为整理个人入口的参考。下面保留原始示例及链接顺序:
vi bookmarks.yml
categories:
- id: dev-tools
title: 开发工具
- id: cloud-services
title: 云服务 & 网盘
- id: media
title: 媒体娱乐
- id: homelab
title: 家庭实验室(含内网服务)
links:
# 开发工具
- name: GitHub
link: https://github.com
icon: github
category: dev-tools
- name: GitLab
link: https://gitlab.com
icon: gitlab
category: dev-tools
- name: Stack Overflow
link: https://stackoverflow.com
icon: stackoverflow
category: dev-tools
- name: Vercel
link: https://vercel.com
icon: vercel
category: dev-tools
- name: Docker Hub
link: https://hub.docker.com
icon: docker
category: dev-tools
# 云服务 & 网盘
- name: Google Drive
link: https://drive.google.com
icon: google-drive
category: cloud-services
- name: OneDrive
link: https://onedrive.live.com
icon: onedrive
category: cloud-services
- name: Dropbox
link: https://www.dropbox.com
icon: dropbox
category: cloud-services
- name: 阿里云盘
link: https://www.aliyundrive.com
icon: alibabacloud
category: cloud-services
- name: 百度网盘
link: https://pan.baidu.com
icon: baidu
category: cloud-services
# 媒体娱乐
- name: YouTube
link: https://www.youtube.com
icon: youtube
category: media
- name: Bilibili
link: https://www.bilibili.com
icon: bilibili
category: media
- name: Spotify
link: https://open.spotify.com
icon: spotify
category: media
- name: Netflix
link: https://www.netflix.com
icon: netflix
category: media
- name: 腾讯视频
link: https://v.qq.com
icon: tencent-qq
category: media
# 家庭实验室(内网服务示例,可替换为你的 cpolar 公网地址)
- name: NAS 主页
link: http://your-cpolar-domain.cpolar.io # ← 替换为你自己的地址
icon: server
category: homelab
- name: Home Assistant
link: http://ha.yourdomain.com
icon: home-assistant
category: homelab
- name: Alist 网盘聚合
link: http://alist.yourdomain.com
icon: file-search
category: homelab
- name: Portainer(Docker管理)
link: http://portainer.yourdomain.com
icon: docker
category: homelab
- name: qBittorrent
link: http://qbittorrent.yourdomain.com
icon: download
category: homelab复制时务必区分命令和文件内容: 上面第一行 vi bookmarks.yml 是终端命令,不是 YAML 内容。执行它打开编辑器后,只把 categories: 开始的内容写入文件。NAS、Home Assistant、Alist 等自建服务地址都是占位示例,需要替换成真实地址;图标名称也应按 Flare 当前版本支持的格式调整。
完成保存后,可返回页面查看分类与入口是否按预期显示:

应用区可以安排更高频的入口,例如 GitHub、Notion、邮箱、NAS 首页及 Docker 管理页面。原文使用的示例如下:
vi apps.yml
links:
# 常用生产力 & 工具
- name: GitHub
link: https://github.com
icon: simple-icons:github
desc: 代码托管平台
- name: Notion
link: https://www.notion.so
icon: simple-icons:notion
desc: 全能笔记与协作工具
- name: Google 邮箱
link: https://mail.google.com
icon: simple-icons:gmail
desc: Gmail 邮件服务
- name: OneNote
link: https://www.onenote.com
icon: simple-icons:microsoftonenote
desc: 微软云笔记
# 家庭/自建服务(可替换为你的地址)
- name: NAS 主页
link: http://your-nas.cpolar.io # ← 替换为你自己的地址
icon: mdi:server-network
desc: 家庭网络存储
- name: Home Assistant
link: http://ha.yourdomain.com
icon: simple-icons:homeassistant
desc: 智能家居控制中心
- name: Alist 网盘聚合
link: http://alist.yourdomain.com
icon: mdi:file-multiple
desc: 多网盘统一管理
- name: Portainer
link: http://portainer.yourdomain.com
icon: simple-icons:docker
desc: Docker 可视化管理这里同样需要将 vi apps.yml 作为终端操作,而不是粘进 YAML 文件里。your-nas.cpolar.io、ha.yourdomain.com 等均为示例地址;若实际网址不是该示例,直接照抄会导致跳转失败。图标的 simple-icons:、mdi: 写法也应核对当前版本的支持情况,不保证所有示例都能原样显示。
修改效果与原文页面截图如下:



做到这里,Flare 的本地导航页就有了明确的分类结构。导航页只保存和展示链接,不会因为加了一条 NAS 或 Home Assistant 链接,就自动给对应服务开通公网访问。 如果链接本身是局域网地址,那么从外网点击时仍然可能打不开。
本地导航页完成后,如果还想在外出时打开同一个入口,就需要解决网络访问问题。这里沿用原文的 cpolar 流程:在飞牛 NAS 上安装客户端,再把 Flare 运行的 5050 端口映射成公网可访问的地址。
Flare 负责整理和呈现链接,cpolar 负责把指定的本地 Web 服务映射到外部网络。二者功能不同:穿透 Flare 本身,只能说明导航页面可从外部打开;其中的私有应用是否可访问,仍取决于各自的网络地址和授权设置。
沿用原文 Linux 安装方式,在 NAS 终端运行:
sudo curl https://get.cpolar.sh | sh
这是下载安装脚本并交给 shell 执行的命令,正式使用前应确认来源可信,并了解脚本会对主机进行哪些操作。完成后检查服务状态:
sudo systemctl status cpolar
状态显示为 active (running) 时,可继续在浏览器中访问 http://NAS实际IP:9200,使用自己的 cpolar 账号登录 Web 管理界面。如果是在 NAS 以外的电脑访问,localhost 指向的是电脑本机,不能直接替代 NAS 的 IP。

进入 cpolar Web UI,打开隧道管理 → 创建隧道,新建一条对应 Flare 的隧道。本例配置沿用原文:
flare,或其他没有重复的名称。http。5050,与前面 Docker 映射的宿主机端口一致。China Top。
创建完成后进入状态 → 在线隧道列表,查看系统分配的访问地址。

将公网地址复制到另一网络中的浏览器测试,例如手机切换到移动网络,确认导航页能否加载。若出现 HTTPS 地址,优先使用 HTTPS 入口;不要把 HTTP 连接本身描述成已经具备 HTTPS 的传输保护。

随机域名更适合测试或临时访问。若将其设为长期浏览器首页,地址变化之后需要重新更新书签;后面可继续按需配置固定地址。
对于准备长期使用的导航页,固定地址可以减少反复修改浏览器书签的麻烦。该功能需以 cpolar 当前账号套餐及实际控制台提供的权益为准。

先登录 cpolar 控制台,进入预留 → 保留二级子域名,选择对应地区,并设置可用名称。原文使用 flaree 作为示例,自己配置时应以实际保留成功的名称为准。

然后返回本地 Web UI,在隧道管理 → 隧道列表找到前面创建的 flare 隧道,点击编辑。

将域名类型调整为二级子域名,在 Sub Domain 中填写刚才保留的名称,地区仍使用对应选项,然后点击更新。

更新成功后,再到在线隧道列表查看新的公网地址。原来随机分配的地址将按本次配置变更;具体域名后缀以控制台实际生成结果为准。

最后在其他设备上打开固定地址,确认 Flare 导航页能正常显示。

如果页面包含 NAS 后台、下载工具、监控面板等敏感入口,建议不要把无登录保护的编辑功能直接公开。Flare 官方说明其免登录模式适合本地场景,准备公网使用时应按所用版本配置登录保护,并根据需要在隧道层增加访问控制。
systemctl status -v 不能证明 Docker 正常工作;应结合 Docker 自身的状态检查。/docker/Flare 与 /docker/flare 在 Linux 中不相同,整个部署过程应以实际目录为准。vi bookmarks.yml、vi apps.yml 是编辑命令,不属于 YAML 配置;占位域名和图标名称也要核对后再使用。官方参考:https://github.com/soulteary/docker-flare | https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md
本篇保留了飞牛 OS 上 Flare 的完整操作链:开启 SSH、检查 Docker、通过 Compose 运行固定版本镜像,编辑 bookmarks.yml 与 apps.yml,再使用 cpolar 为 5050 端口创建随机及固定域名。这样可将本地网页整理成一个方便在多设备访问的导航入口。
需要留意的是,示例代码中的目录大小写、占位域名和 YAML 内容应按实际环境检查;公网访问前也应处理编辑权限和敏感链接。Flare 在本篇承担的是导航与链接管理,而不是数据库平台、权限隔离平台或自动把所有内网应用发布到公网的网关。