飞牛OS部署Flare导航页:Docker Compose、YAML书签配置与cpolar公网访问

飞牛OS部署Flare导航页:Docker Compose、YAML书签配置与cpolar公网访问

前言

飞牛 OS 上安装的服务逐渐增多后,往往会出现一个很实际的管理问题:每套应用都有自己的 IP、端口和访问路径。Docker 容器本身可以正常运行,但查找管理页面、整理常用网站、在不同设备间切换访问入口,仍然需要单独维护。对于 NAS、HomeLab 或个人开发环境,一个能够集中呈现链接的自托管导航页,通常比把所有入口散落在书签和文档中更方便。

这次部署的工具是 Flare。它是一款轻量级导航页,使用 YAML 文件管理书签与应用分组,提供浏览器页面,适合把开发工具、云服务、媒体平台以及自建服务放在统一入口中。本文以飞牛 OS 为部署环境,沿用原文的 soulteary/flare:0.2.4 镜像、5050:5005 端口映射和 ./app:/app 数据挂载,完整展示从 SSH 连接、Compose 启动、配置文件编辑到网页访问的过程。

导航页完成后,再通过 cpolar 创建 HTTP 隧道,先使用随机域名验证外网访问,再按需要设置固定二级子域名。所有示例中的 NAS 地址与自建服务域名都需要替换成自己的实际信息;原文的配置也会标明命令行与 YAML 内容的区别,避免直接复制时产生语法问题。本文聚焦已经展示的导航、编辑和远程访问能力,不把多用户独立空间或完整内容管理 API 写成这个镜像的已验证功能。

1. Flare 是什么?适合用来做什么?

Flare 是一款开源的自托管导航页,主要解决的不是存储或远程控制,而是把分散的链接集中展示。例如把 GitHub、开发文档、云盘、影视网站以及 NAS 上的各种服务分组,日常只需要打开一个首页,就能快速跳转。

项目主要使用 Go 开发,镜像提供 Web 页面,书签和应用内容可通过挂载到容器的 YAML 文件维护。对于只想搭一个家庭数字入口的人,部署和迁移都相对直接:重点备份配置目录即可,不必为了导航功能另起数据库。

这一用途适合三种情形:个人把浏览器书签整理成主页;家庭成员从同一页面找到影音、网盘等常用入口;HomeLab 用户集中维护 NAS、Home Assistant、Portainer 等应用的地址。如果需要外出使用,还可以为导航页单独配置公网访问。

功能边界要先说明: 本文所用的 soulteary/flare:0.2.4 示例没有演示多用户独立工作空间、用户级权限体系或完整 REST API。Flare 官方的 Docker 项目文档明确表示不依赖数据库,且将"使用 API 管理内容"列为待办功能,因此不能把这些能力直接当成本教程的实测结果。它支持的登录控制与"每位用户有独立数据"也不是同一件事。

2. 飞牛 OS 上准备 SSH 与 Docker

正式安装前,先确认 NAS 已经运行 Docker,并允许通过 SSH 登录。Docker 用于运行 Flare 容器;SSH 让我们能够在终端中创建目录、编辑配置和启动服务。如果已有这两项环境,可以直接进入下一节。

2.1 开启 SSH 并连接 NAS

在飞牛的设置 → SSH 中开启服务,按照页面提示保存设置。下面几张截图对应启用入口和连接过程。

随后在 Windows PowerShell、macOS Terminal 或自己惯用的终端中,通过 NAS 的实际 IP 和用户名连接。登录所需凭据以个人 NAS 的配置为准,不要把 SSH 管理端口直接开放到公网。

2.2 确认 Docker 环境

原文给出了下面的检查命令,这里按原样保留:

shell 复制代码
docker -v 
systemctl status -v

其中 docker -v 用于查看 Docker 客户端版本;systemctl status -v 并不是检查 Docker 服务状态的正确命令 。实际排查时应查看 Docker 应用的运行状态,或使用 docker info,若设备采用 systemd 再按具体服务名检查。

也可通过飞牛的应用界面确认 Docker 是否安装并正常打开。

3. 用 Docker Compose 部署 Flare

3.1 创建目录

先在终端中准备存放配置的目录,原文使用以下路径:

shell 复制代码
mkdir -p /docker/Flare
cd /docker/Flare

这里需要注意 Linux 文件名区分大小写,/docker/Flare 与 /docker/flare 是两个不同目录。后文出现的小写目录截图仅反映原文的操作画面,实际执行请统一使用你自己创建的目录。 此外,/docker 是否为实际可写存储位置,也要结合飞牛上的挂载和权限确认。

3.2 创建 Compose 文件

在刚才的目录中创建 docker-compose.yml,放入原文使用的服务配置:

shell 复制代码
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。导航数据会保留在宿主机对应目录中,方便修改与备份。镜像版本固定可以保持教程一致,但是否升级应先确认配置兼容性。

3.3 启动并验证

在 Compose 文件所在目录运行:

shell 复制代码
docker compose up -d

容器启动后,用同一局域网内的浏览器访问 http://飞牛IP:5050。这里的"飞牛IP"必须替换成 NAS 的实际地址;页面能正常加载,说明本地映射至少已经可以访问。

如未能打开,应先确认容器是否运行、5050 是否被其他应用占用,以及浏览器和 NAS 是否处在可互通的网络中。

4. 修改导航页:分清书签区与应用区

Flare 的好处不只是能显示一个漂亮首页,更重要的是把常用入口整理成可维护的数据。原文通过 /app 目录里的文件分别配置书签和应用区。正式修改前,建议留存一份配置备份,避免写错 YAML 时需要重新整理。

4.1 找到实际配置目录

原文终端显示的当前位置如下,请注意它与前文大写的目录存在大小写差异:

shell 复制代码
# pwd
/docker/flare

查看文件:

shell 复制代码
ls

进入 app 目录:

shell 复制代码
cd app

继续查看其中的配置文件,原文展示为:

shell 复制代码
# ls
apps.yml  bookmarks.yml  config.yml

通常可以按用途理解:bookmarks.yml 管理分类书签,apps.yml 管理应用快捷入口,config.yml 记录相关配置。不同版本的配置字段应以该版本生成的文件和项目示例为准。

书签区主要承载常用网站或按类别整理的资源:

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

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

4.2 编辑 bookmarks.yml

原文的配置内容涵盖开发工具、云服务、媒体娱乐和家庭实验室四类,适合作为整理个人入口的参考。下面保留原始示例及链接顺序:

shell 复制代码
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 当前版本支持的格式调整。

完成保存后,可返回页面查看分类与入口是否按预期显示:

4.3 编辑 apps.yml

应用区可以安排更高频的入口,例如 GitHub、Notion、邮箱、NAS 首页及 Docker 管理页面。原文使用的示例如下:

shell 复制代码
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 链接,就自动给对应服务开通公网访问。 如果链接本身是局域网地址,那么从外网点击时仍然可能打不开。

5. 安装 cpolar,为导航页准备远程访问

本地导航页完成后,如果还想在外出时打开同一个入口,就需要解决网络访问问题。这里沿用原文的 cpolar 流程:在飞牛 NAS 上安装客户端,再把 Flare 运行的 5050 端口映射成公网可访问的地址。

5.1 cpolar 在本篇中的作用

Flare 负责整理和呈现链接,cpolar 负责把指定的本地 Web 服务映射到外部网络。二者功能不同:穿透 Flare 本身,只能说明导航页面可从外部打开;其中的私有应用是否可访问,仍取决于各自的网络地址和授权设置。

5.2 安装并检查服务

沿用原文 Linux 安装方式,在 NAS 终端运行:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

这是下载安装脚本并交给 shell 执行的命令,正式使用前应确认来源可信,并了解脚本会对主机进行哪些操作。完成后检查服务状态:

shell 复制代码
sudo systemctl status cpolar

状态显示为 active (running) 时,可继续在浏览器中访问 http://NAS实际IP:9200,使用自己的 cpolar 账号登录 Web 管理界面。如果是在 NAS 以外的电脑访问,localhost 指向的是电脑本机,不能直接替代 NAS 的 IP。

6. 创建 Flare 的随机公网地址

进入 cpolar Web UI,打开隧道管理 → 创建隧道,新建一条对应 Flare 的隧道。本例配置沿用原文:

  • 隧道名称:flare,或其他没有重复的名称。
  • 协议:http。
  • 本地地址:5050,与前面 Docker 映射的宿主机端口一致。
  • 域名类型:随机域名。
  • 地区:China Top。

创建完成后进入状态 → 在线隧道列表,查看系统分配的访问地址。

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

随机域名更适合测试或临时访问。若将其设为长期浏览器首页,地址变化之后需要重新更新书签;后面可继续按需配置固定地址。

7. 预留固定二级子域名

对于准备长期使用的导航页,固定地址可以减少反复修改浏览器书签的麻烦。该功能需以 cpolar 当前账号套餐及实际控制台提供的权益为准。

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

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

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

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

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

如果页面包含 NAS 后台、下载工具、监控面板等敏感入口,建议不要把无登录保护的编辑功能直接公开。Flare 官方说明其免登录模式适合本地场景,准备公网使用时应按所用版本配置登录保护,并根据需要在隧道层增加访问控制。

技术补充:这篇教程中的几个容易忽略的地方

  1. systemctl status -v 不能证明 Docker 正常工作;应结合 Docker 自身的状态检查。
  2. /docker/Flare 与 /docker/flare 在 Linux 中不相同,整个部署过程应以实际目录为准。
  3. 示例代码块中的 vi bookmarks.yml、vi apps.yml 是编辑命令,不属于 YAML 配置;占位域名和图标名称也要核对后再使用。
  4. 本文演示的是导航页和单条公网隧道,而非所有内网服务的统一公网代理。只有另外配置了访问路径或独立隧道的服务,才能从外部正常进入。
  5. Flare 官方文档将 API 内容管理列为待办项目,同时明确其无数据库依赖;不要将未经展示的多用户隔离、完整 REST API 或 SQLite/PostgreSQL 作为该镜像的既有功能。

官方参考: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 在本篇承担的是导航与链接管理,而不是数据库平台、权限隔离平台或自动把所有内网应用发布到公网的网关。

相关推荐
NailiConveyor1 小时前
输送机皮带材质选型指南:PVC、PU、橡胶、模块化塑料各适用什么场景?
大数据·运维·自动化·制造·业界资讯·材质
Zhou1411361 小时前
Docker_02_Dockerfile与存储网络
网络·docker·容器
不会就选b1 小时前
Linux之再次理解udp
linux·运维·udp
我命由我123451 小时前
自动化 / 智能装配的对象、内容、层级
运维·学习·职场和发展·自动化·求职招聘·职场发展·学习方法
guo_wen_qiang2 小时前
云服务器kibana环境搭建
linux·运维·服务器
海宇大数据2 小时前
零信任架构实战:基于海宇车辆出险记录核验构建自动化二手车收车评估网关
运维·人工智能·架构·自动化
Lsetea2 小时前
OpenSSL报path length constraint exceeded:CA层级与pathlen排查
运维·https·ssl证书·openssl·证书链
Dragon~Snow2 小时前
Linux server CentOS stream 10系统构建
linux·运维·centos
千舟软件3 小时前
【宿舍管理·产品功能】宿舍水电账单自动算
大数据·运维·科技·安全·业界资讯