资讯详情

使用 Docker 搭建适用于 HomeLab 的书签导航

使用新私有化部署的书签导航应用一个月后,我们将讨论书签导航工具以及如何使用它 Docker 在几分钟内部署自己的书签导航应用程序。

写在前面

我目前使用的书签导航工具的界面是这样的(马赛克掉了一部分链接内容):

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

作为一个使用了十多年的人 Chrome 的用户,Chrome 书签管理器一直是我的主要书签管理工具。在漫长的岁月里,我的 Chrome 在书签管理器中,最多存储数千个书签链接。

但是 Chrome 书签栏的面积非常有限。随着越来越多的东西被扔掉,导航栏基本上不能放太多的东西。许多书签经常需要在二级甚至三级书签目录中找到,这非常麻烦。当然,Chrome 地址栏和搜索栏二合一后,浏览器支持从这个全方位的文本框中搜索书签和历史搜索结果,但在没有提示的情况下经常出现 茫茫人海,不知从何搜索的情况,或者搜索结果中的书签会混在一堆历史浏览记录中。

几个月前,我开始做个人 PKM 重建。在这个过程中,我期待着更好的方式使用书签,这样我就可以使用更多的点击来解决问题,减少大量的搜索和搜索动作;我也希望这些书签可以在不同的浏览器和设备中共享,而不仅限于 Chrome、Safari 或者在特定的产品中使用,甚至仅限于桌面浏览器环境;我希望尽量不要使用在线云服务,因为在过去的十年里,许多以云收藏夹为主要业务的公司在互联网的长河中崩溃;最后,我希望这些数据能够以更友好的格式妥善存储,在未来的某个时刻,迁移到更先进的工具是非常方便的。

基于以上考虑,我在众多开源软件中找到了它 Flame,使用一段时间后,我想 Flame 有些设计对我来说是多余的,软件本身的性能效率也不是特别好,尤其是对于像我这样有很多书签的用户。因此,在参考中 Flame 在原功能的基础上,我写了一套新工具 Flare。关于 Flare 感兴趣的学生可以观看之前的文章《Flare 生产记录:应用前后端性能优化。

虽然我做了改良版 Flare,但是 Flame 对大多数人来说,这仍然是一个很好的软件。因此,接下来,我将讨论两个软件在容器下的使用,供读者根据需要选择。

使用容器 Flame

与其他功能复杂或界面陈旧落后的开源软件相比,功能相对简单,界面价值也很高 Flame 很快进入我的视野。

经过一番努力,我会 flame 封装成了 Docker 镜像,Flame 的镜像尺寸 50MB 多一点点。

它的使用非常简单,将以下内容保存为 docker-compose.yml

version: '3.6'  services:   flame:     image: soulteary/flame:2.2.0     container_name: flame     volumes:       - ./data:/app/data       # 如果需要 Docker 集成,可选择打开       # - /var/run/docker.sock:/var/run/docker.sock     ports:       - 5005:5005     # 如果想使用 Docker Secrets,可选择开启     # secrets:     # - password # optional but required for (1)     environment:       - NODE_ENV=production       # 默认管理密码       - PASSWORD=flame_password       # 如果想使用 Docker Secrets,可选择开启       # - PASSWORD_FILE=/run/secrets/password # optional but required for (1)     restart: always  # 如果想使用 Docker Secrets,可选择开启 # secrets: # password: # file: /path/to/secrets/password 

然后使用 docker-compose up -d 启动应用程序,然后访问浏览器 http://localhost:5005 可以看到软件的默认界面。

关于如何进行个性化调整,以及添加书签等,也很简单,聪明的你可以自己探索,为了不剧透,这里就不赘述了。

这里有这个项目地址:https://github.com/soulteary/docker-flame,其中一些变化已经合并 flame 官方仓库。

接下来,让我们来谈谈为什么我想制作它 Flare、以及 Flare 如何在容器环境中使用?

为什么要做? Flare

深入使用 Flame,我发现了一些小的经验问题:例如,软件不支持搜索中文内容;例如,软件需要使用经纬度(以及需要注册的天气平台 API)非常麻烦;软件背景存在一些浪费性能的问题;在大量书签的情况下,软件前端的实现性能相对较差,会卡住;虽然软件功能简单,但整体性能还不够好,我希望用更少的资源来运营这项服务。

而 Flame 对于我个人使用的场景来说,原来的功能设计也有点多余:

  • 我不需要软件本身。 Docker、K8S 这两个功能的初衷是集成功能 Docker Label、K8S Ingress 在注释中提取链接信息,添加和删除动态链接,但我更抗拒 All In One,因此,我的设备和服务大多是分布式部署的,长期运行的服务非常固定,变化较小;
  • 在整理了越来越多的书签后,我发现我写书签的频率并不高,原来的书签编辑器体验也不是很好。我希望有更好的方法来替换它;
  • 作为私人书签导航,我似乎不需要用户功能;
  • Flame 使用 SQLite 虽然数据存储比使用更好 PG、MySQL 要轻得多,但在数据变化不大的情况下,也许结构化的明文保存会很简单,也更有利于未来的数据迁移。

在澄清了上述问题以及我想要什么之后,我做了它 Flare,

相比较 Flame 在裁剪功能后封装的容器镜像需要 50MB 的大小,Flare 只需要不到 10MB 的空间,以及远低于 Flame 的运行资源(通常情况下远小于 1% 的CPU占用、30M以内的内存)。

在这个基础上,Flare 除了可以运行在传统的 x86 主机上,比如你的笔记本、你的NAS、云服务器上,还可以运行在各种 ARM 设备上,甚至是很早之前分享过的成本不到 50 元的玩客云上。(感兴趣的同学可以阅读《玩客云折腾记录(一):编译 ArmBian 系统》)

我们可以使用文本文件的方式来针对链接数据的管理,尤其是在链接数据非常少的情况下,简单的文本文件,配合任意你喜爱的编辑器,编辑体验远胜于各种简单引入的 Web IDE 或简陋的应用提交表单。而这些文件,也更容易保存、备份,以及在未来合适的时候,导入到更好的工具中。

在容器中使用 Flare

Flare 的使用同样也非常简单,你可以使用 docker 的一句话命令,快速启动一个 flare 应用:

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

或者将下面的内容保存为 docker-compose.yml

version: '3.6'

services:
  flame:
    image: soulteary/flare:0.2.3
    restart: always
    command: flare
    ports:
      - 5005:5005
    volumes:
      - ./app:/app

然后使用 docker-compose up -d 来启动应用。

当应用启动完毕之后,还是访问相同的浏览器地址,你将看到类似下面的界面:

应用会在启动目录的 app 文件夹中生成默认的示例数据,方便你参考修改,数据文件格式为 yaml,如果你不熟悉也没关系,参考文件内的内容格式进行调整,保证缩进一致即可。

当你编辑完 app/bookmarkd.ymlapp/apps.yml 两个文件后,刷新浏览器,你的修改就生效了,不必进行应用重启。

其他

Flare 目前还处于比较早期的阶段,不过对于个人使用而言,或许已经足够了,和 Flame 一样漂亮的界面,更高效的资源使用,没有迁移负担的数据格式。

接下来,我会在慢慢更新这个小工具,在保证数据兼容、性能高效的前提下,慢慢将它的用户体验持续提升,如果你对这个项目感兴趣,或者在使用过程中遇到了问题,可以关注或者在这里反馈:https://github.com/soulteary/docker-flare。

至于书签内容的离线管理,我将在后续文章中介绍另外一个工具,先按下不表。

最后

写到这里,两款书签导航软件的使用就介绍完啦。

浏览器书签是众多知识管理方式的其中一种,它和电子书库、电子笔记、桌面文件、云端文档等其他形式的工具一起构建了我们的知识体系。

接下来的文章里,我会逐步分享我在过程中的一些经验。希望能帮助到有同样需求的你。

–EOF


我们有一个小小的折腾群,里面聚集了一些喜欢折腾的小伙伴。

在不发广告的情况下,我们在里面会一起聊聊软硬件、HomeLab、编程上的一些问题,大家也会在群里不时讨论一些技术问题。

喜欢折腾的小伙伴欢迎扫码添加好友。(请注明来源和目的,备注实名,否则不会通过审核)

关于折腾群入群的那些事


如果你觉得内容还算实用,欢迎点赞分享给你的朋友,在此谢过。

如果你想更快的看到后续内容的更新,请戳 ,这些免费的鼓励将会影响后续有关内容的更新速度。


本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2022年02月08日 统计字数: 4426字 阅读时间: 9分钟阅读 本文链接: https://soulteary.com/2022/02/08/building-bookmark-navigation-for-homelab-with-docker.html

标签: pkm滑块式直线位移传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台