惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
不满意于现有书签工具,我做了一个专属自己的网址导航 - 少数派
2022-02-20 · via 少数派

写在前面

几月前,我开始重建 PKM(个人信息管理)系统,其中有一个环节就是浏览器书签的管理。

实话说,我对于现有的书签程序并不是特别满意,主要因为它们都不能同时满足我的以下几个预期:

  • 我希望这个工具能够更高效和更简单,而不是只有极少数内容在书签栏呈现,更多的内容需要在层层「文件夹」中翻找;或者需要绞尽脑汁,通过在搜索栏中碰运气,看看能不能靠关键词和自动补全来匹配出具体内容。猜测和翻找都太浪费时间了。实际上,正如我在 之前一篇文章 中所提及,在使用 Chrome 的十几年里,上千个书签慢慢的出现在了收藏夹里,然后和现实中放在书柜里的书一样,蒙上了厚厚的灰尘。
  • 我希望书签数据都是私有化的、少一些不确定因素。 作为一个使用了各种互联网产品二十多年的「年轻人」,我看到过太多工具和公司的生生死死、浮浮沉沉。 不少在线服务和软件背后的公司慢慢变成了时间长河里的一粒沙,在产品和公司陨落的过程中,用户的数据则经常变成陪葬品。 数据随着产品一起消失,这是我不愿意看到的
  • 我希望书签工具是通用的。书签数据不应该掺和浏览器打架,也跟着玩「生殖隔离」。 即使我绝大多数情况下只用 Chrome,但是我依旧希望在我打开 Safari 的时候,也能够用鼠标「指指点点」这些书签,快速的到达我想要去的地方。 (我知道有浏览器之间的书签导入功能,但持保留态度,因为曾经在迁移的时候出现「书签大乱斗」「书签影分身」这类意外。)

在尝试了使用各种软件之后,我偶遇了一个波兰程序员小哥的项目 Flame。这是一款个人网址导航制作工具,你可以用它将常用的书签和在线应用制成一个美观的本地页面。

不过,Flame 也并不完全符合我的预期。在深入使用这个软件,重构了一部分代码、封装了容器应用,并提交了几个 PR 之后,我想清楚了我到底要的是什么。于是我决定自己动手,基于 Flame 制作了一个外观和功能相仿,但性能更高、数据更透明、使用起来更简单的书签导航工具——Flare。

我当前使用的书签导航工具界面

与原版相比,Flare 保留了美观的界面,但有很大的性能优势:容器镜像体积不到 10MB,内存占用通常低于 30MB,即使添加上千条书签也能「秒开」(每秒 4800—5000 的并发请求下,依旧可以在 1—2 毫秒内打开页面),在笔记本上也不会引发风扇狂转。事实上,Flare 在前端工具的测试中可以拿到满分的成绩,甚至可以跑在一台成本差不多 50 元、搭载 2015 年 S805 芯片的 ARM 盒子上。

此外,我进一步精简了数据存储和网络活动,用纯文本格式来存储书签,并将联网限制在天气展示这唯一一个场景(也可以 完全禁用网络操作)。(当然,除了上面这些内容之外,还有一些很小的细节,就留给好奇的你来探索啦!)

接下来,我就想为你介绍如何快速通过 Docker 部署 Flare,从而拥有一个轻巧、美观、受自己掌控的个人书签导航应用。

注: 本文行文考虑到了不同水平的读者:如果你熟悉 Docker,那么将能够在十分钟内拥有属于自己的书签导航;如果你是一个新手,也没关系;跟着文章一步步操作,大概半个小时,相信你也能够将 Flare 运行起来,顺带熟悉 Docker 的使用,步入容器世界的大门。

快速安装和使用指南

Flare 的使用方式灵活,丰俭由人。全面起见,我会将常用的方式都讲解一遍,读者根据个人情况选择一种顺手的即可。

准备运行环境:安装 Docker

如上所述,Flare 的下载和安装依赖 Docker。

Docker 的具体安装和配置方式超出了本文的讨论范围,这里只简单提及。如果你是 Mac 或 Windows 用户,最推荐的安装方法还是使用官方的 桌面版 安装包。如果你用 Linux,相信已经对于命令行的包管理有所熟悉;当然,初学者也可以考虑使用我做的两个简单脚本,分别用来快速安装和初始化 Docker 和常用工具 docker-compose,运行下列命令即可(注:正如在将任何脚本导入终端前应当做的,请先审阅一遍 源文件):

# 安装 Docker
curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-docker.sh | bash
# 国内服务器可改用下列使用国内镜像源的版本
# curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-docker-cn.sh | bash

# 安装 Docker Compose
curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-compose.sh | bash
# 国内服务器可改用下列使用国内镜像源的版本
# curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-compose-cn.sh | bash

使用 Docker 快速试用 Flare

在 Docker 环境就绪之后,我们可以通过一条简单的命令启动 Flare:

docker run --rm -it -p 5005:5005 -v `pwd`/app:/app soulteary/flare:latest

这条命令将拉取 Flare 的镜像,将其运行在本地的 5005 端口上,并将当前目录下的 app 目录作为数据存储路径。你可以根据自己的需求更换这些参数。例如希望软件能够换个 8080 端口运行,可以将运行参数修改为:

docker run --rm -d -p 8080:5005 -v `pwd`/app:/app soulteary/flare:latest

当命令执行完毕,我们将能看到类似下面的日志输出:

2022/02/17 22:56:46 用户未指定 `FLARE_USER`,使用默认用户名 flare
2022/02/17 22:56:46 用户未指定 `FLARE_PASS`,自动生成应用密码 [...]
[...]
2022/02/17 22:56:46 应用已启动 🚀
[...]

这个时候,我们在浏览器中打开 http://localhost:5005,就能够看到书签导航页面了。

基本使用和配置

为了方便你了解和使用 Flare,我制作了一个小向导,只需要在原来的地址后面加上 /guide 即可访问:http://localhost:5005/guide。你可以通过这个向导了解 Flare 的基本功能布局。

接下来,就该为 Flare 增加自己所需的链接、显示自己所在城市的天气了。

如上所述,Flare 的配置都通过本地文件完成。初次运行后,查看当前目录,可以看到新出现了如下结构的目录和文件:

app
├── apps.yml
├── bookmarks.yml
└── config.yml

这些就是分别存储着网页应用书签、普通网址书签以及程序配置的数据文件啦,请注意妥善保存和备份。

Flare 的数据文件示例

Flare 的配置和数据都以 YAML 格式保存,可以通过纯文本编辑器直观地修改;在刷新浏览器页面后,Flare 中的内容也会同步更新。

例如,如果我想在 Flare 的「应用」模块增加 Evernote 和 Gmail 的快捷方式,则可以编辑 apps.yml 文件,在其中写上:

links:
- name: Evernote
  desc: Evernote 笔记
  link: https://www.evernote.com
  icon: evernote
- name: Gmail
  desc: Gmail 邮件
  link: https://mail.google.com
  icon: gmail
# [... 其他需要添加的快捷方式]

其中,每个快捷方式均可以指定标题(name)、描述文字(desc)、链接(link)和图标(icon)。图标的名称可以从 Material Design Icon 网站检索。

「书签」模块的配置(bookmarks.yml)类似,区别在于多了链接分类,在开头的 categories: 下配置:

categories:
- id: cate-id-name-0
  title: "链接分类 1"
- id: cate-id-name-1
  title: "链接分类 2"
# [... 其他需要添加的分类]

此外,书签模块中的每个链接只有图标和名称,没有描述文字。

最后,在 config.yml 中,可以对如下内容:

  • 天气的开关(ShowWeather)和城市(Location),
  • 标题Title)、欢迎词Greetings)和页脚文字Footer),
  • 是否在新标签打开应用OpenAppNewTab)和链接OpenBookmarkNewTab),
  • 是否显示应用ShowApps)和书签ShowBookmarks)模块

等进行设置;根据配置项的名称一看便知,在此不赘述。

使用 Docker Compose 运行

上面的一句话命令固然方便,但终归还是适合尝鲜。如果想要长久使用,每次输入这样的命令就不太方便了。

为此,我们需要用到 Docker Compose。这是用配置文件来定义和运行一个或多个 Docker 应用的辅助工具,类似于一种「食谱」。与手打 Docker 命令相比,它的好处是基于明确的配置文件,可以细粒度地设置应用的功能,而无需记忆各种麻烦的参数。

Docker Compose 使用的配置文件称为「Compose 文件」,本质上也是 YAML 格式。例如,下面这段简短的 Compose 文件就能用来运行 Flare:

version: '3.6'
services:
  flare:
    image: soulteary/flare:latest
    restart: always
    command: flare
    ports:
      - 5005:5005
    volumes: 
      - ./app:/app

上面的配置只用了十行左右的代码,就完成了启动、端口和存储映射、进程守护和自动重启的作用,是不是有点「真香」的味道呢。

当然,为了小伙伴更好的使用,Flare 还支持自主决定是否需要登录、是否自行指定用户名和密码;这都可以通过修改 Compose 文件中的命令(command)和环境变量(environment)来实现。具体请参看我制作的 完整配置文件范例 和其中的注释。

写好 Compose 文件后,将其保存为 docker-compose.yml,然后运行 docker-compose up -d

稍等片刻,就能在 http://localhost:5005 看到 Flare 的界面了。

进阶用法:在公网服务器上使用

尽管 Flare 的常见使用场景是在本地运行,但也不排除有的小伙伴希望软件能够跑在云服务器上,比如让吃灰久矣的「轻量云」焕发生机。这就会涉及到两个问题:如何增加登录要求,防止未经授权的访问和修改;以及如何配置自定义域名和反向代理。

对于前者,Flare 支持通过 --nologin 参数来关闭默认的「免登录模式」:

flare --nologin=0

默认情况下,程序会使用 flare 作为账户名称,并随机生成的管理密码。这可以从运行时输出的日志看到。如果我们想使用自己的指定账号和密码登录的话,可以通过在环境变量中设置 FLARE_USERFLARE_PASS 来实现。

因此,如果使用 Compose 文件来表述,完整的配置是:

version: '3.6'
services:
  flare:
    image: soulteary/flare:latest
    restart: always
    command: flare --nologin=0
    # 关闭免登录模式
    environment:
      - FLARE_USER=flare
      # 指定的用户名
      - FLARE_PASS=password
      # 指定的密码
    ports:
      - 5005:5005
    volumes:
      - ./app:/app

至于第二个需求,即配置自定义域名和反向代理,我推荐使用 Traefik。这是一个现代的反向代理和负载均衡工具,相比于传统的 Apache、nginx,与 Docker 搭配使用更为方便。

如果你还没有玩过它,可以参考 这个项目,来快速上手,或者阅读我以往的包含 Traefik 使用的技术文章

我提前写好了一个搭配 Traefik 使用 Flare 的 Compose 文件,请在 这里 获取并查阅其中的注释说明,这里就不多着墨了。

写在最后

如果你觉得这个项目有帮到你,欢迎对本文进行点赞转发,让其他的小伙伴也能看到它(用户反馈越多,更新越快)。

如果你是一个代码爱好者,还可以在 GitHub 中为项目点赞给予制作人一个小小的鼓励;如果你希望收到这个项目的更新推送,建议点击 GitHub 项目中的关注并选择适合自己的关注模式,推荐选择 release 模式,一旦有新版出现,你会第一时间得到推送提醒。

当然,非常欢迎你在我主要出没的地方进行留言反馈,一起改进 Flare 的体验。

延伸阅读

如果你对 Flare 的制作过程感兴趣,可以移步 《Flare 制作记录:应用前后端性能优化》 这篇文章,分享了不少优化的思路和细节。

除此之外,为了方便你使用和调整 Flare,还可以参考下面的文档: