本篇文章中,我将介绍怎么快速的在 Docker 中运用 Flare 这个轻巧、美观,而且用户隐私优先、100% 数据用户自己掌控的书签导航东西。

假如你熟悉 Docker,那么你将能够在十分钟内具有归于自己的书签导航;假如你是一个新手,也不要紧。跟着文章一步步操作,大概半个小时,你将能够将 Flare 运转在 Docker 之中,步入容器国际的大门。

写在前面

在上一篇文章《运用 Docker 建立适用于 HomeLab 的书签导航》的开头中,我曾提到过一些我曩昔运用书签导航东西的状况:在运用 Chrome 的十几年里,上千个书签渐渐的呈现在了收藏夹里,然后和现实中放在书橱里的书相同,渐渐的蒙上了厚厚的灰尘。

从零开端建立个人书签导航运用:Flare

几个月前,我开端进行个人的 PKM 重建,其中有一部分是关于书签的运用。实话说,我关于当前书签程序并不是特别满足,首要有几个原因:

我期望这个东西能够更高效和更简略,而不是只要极少数内容在书签栏呈现,更多的内容需求在层层“文件夹”中翻找,或许需求费尽心机,经过在搜索栏中碰运气,看看能不能靠关键词和主动补全来匹配出具体内容。猜测和翻找都太浪费时间了

我期望这些数据都是私有化的、少一些不确定因素。作为一个运用了各种互联网产品二十多年的“年轻人”,看到过太多东西和公司的生生死死、浮浮沉沉。不少在线服务和软件背面的公司渐渐变成了时间长河里的一粒沙,在产品和公司陨落的过程中,用户的数据则常常变成陪葬品。数据跟着产品一同消失,这是我不愿意看到的

我期望软件能够通用一些,书签数据不应该掺和浏览器打架,也跟着玩“生殖隔离”。只能在 Chrome中、或许只能在 Safari、IE 中运用的东西和插件,总让我有一种数据被绑架的感觉。即便我绝大多数状况下只用 Chrome,可是我仍旧期望在我翻开 Safari 的时分,也能够用鼠标“指指点点”这些书签,快速的到达我想要去的当地。(我对浏览器之间的书签导入功用持保留情绪,因为曾经在 Chrome、Firefox、国产浏览器之间搬迁的时分,呈现了“书签大乱斗”、“书签影分身”这类意外。)

在尝试了运用各种软件之后,我把目光锁定在了一个波兰程序员小哥的项目上(Flame)。在深入运用这个软件,重构了一部分代码、封装了容器运用,并提交了几个 PR 之后。我想清楚了我究竟要的是什么,所以我开端动手,制作了这个看起来和 Flame 并无二致的小东西:功用更高数据更通明运用起来更简略 的书签导航东西。

从零开端建立个人书签导航运用:Flare

在介绍怎么运用它之前,我相信你可能更猎奇,它好在哪里?

Flare 的优势

Flare 最大的优势是在具有和 Flame 相同的美观界面的前提下,具有着肯定的功用优势:不论是 10M 不到的容器镜像体积、仍是平时运转起来30M 以内的内存消耗、亦或许 99% 状况下的页面秒开(不计其数条书签),而且不会触发笔记本等设备的风扇狂转。

从零开端建立个人书签导航运用:Flare

“快”作为 Flare 的首要优势而言,程序前端部分自然是需求一些“满分”来凑个热闹的。

从零开端建立个人书签导航运用:Flare

这儿举两个直观的小比如:运用测试东西针对不做任何装备项调整的 Flare 进行百万次恳求的压力(稳定性)测试,在坚持每秒 4800~5000 的并发恳求的状况下,你仍旧能够在1~2毫秒内翻开页面,并正常运用它(极限状况下,内存运用量在 60M,通常会稳定在 30M 左右);以及 Flare 甚至是能够跑在一台搭载 2015 年 S805 芯片的ARM盒子上(成本差不多 50 元)。

# 简略的压力测试示例
wrk -t16 -c 100 -d 300s http://localhost:5005/
Running 5m test @ http://localhost:5005/
  16 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    29.09ms   33.99ms 619.31ms   85.99%
    Req/Sec   302.64     84.43   710.00     69.26%
  1446450 requests in 5.00m, 33.70GB read
Requests/sec:   4819.96
Transfer/sec:    114.99MB

除了“天下武功,唯快不破”之外,Flare 具有更简略通明的数据策略,运用文本格式来存储书签,不论是在悠远的未来,程序在当前的硬件设备和操作系统上无法运转的时分,咱们遇到不得不切换软件的状况;仍是在你运用 Flare 的过程中,发现了更契合你自己的审美的东西,你都能够以极低成本来进行数据搬迁。“用户的数据,应该用户自己做主”,至少我是这样以为的。

咱们关于美的要求一定是不同的,但假如咱们运用的书签图标的风格和品质是高度一致的,那么软件的界面仍是“比较能打,而且能打好长一阵的”(个人运用软件界面的底线,至少得是耐看)。这儿我寻找和定制了几十个精约的气候动画图标,以及将 6000 多个 Material Design Icons 集成在了软件里,便利咱们“开箱可用”。关于图标的运用细节,能够参阅这篇文档。

从零开端建立个人书签导航运用:Flare

在常用的气候展示功用上,相比较 Flame,Flare 的运用成本也更低。通常状况下你只需求发动软件,程序便会以十分抑制的频率去获取必要的气候数据,而且尽可能让你少去设置(感谢 IPIP.net 提供的地理位置接口)。此处是现在 Flare 仅有需求联网的功用,你能够经过启用“离线形式”来制止 Flare 联网,或许参阅这个 Issue 回复,完结对容器运用的完全的、完全的网络禁用操作,从根本上解决隐私顾虑。最新的版别里,程序也支持了运用外部的图片地址,或许让程序直接从方针链接网站抓取图标,来让页面中链接区分度更明显。

当然,为了照料一些小伙伴随时随地的修正需求,最近的版别更新中,也增加了在线修正的功用。

从零开端建立个人书签导航运用:Flare

接下来,咱们来看看怎么运用它。当然,除了上面这些内容之外,还有一些很小的细节,就留给猎奇的你来探究啦!

快速初始化 Docker 环境

现在 Flare 的下载和安全都需求运用 Docker 来完结,假如你是 Mac 或 Windows 用户,能够经过下载装置桌面版的 Docker 完结根底运转环境的初始化。

假如你是一个 Linux 初学者,能够考虑运用我做的一个简略的脚本,用来快速的装置和初始化 Docker 和常用东西 docker-compose。假如你的服务器在海外,能够运用下面的指令,快速完结环境的装置:

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-compose.sh | bash

假如你的环境在国内,则能够履行下面的指令,并依据日志输出的提示,完结环境的装置:

curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-docker-cn.sh | bash
curl -sL https://github.com/soulteary/Home-Network-Note/raw/master/scripts/install-compose-cn.sh | bash

上面的装置脚本,我上传到了 GitHub 中,有需求的小伙伴能够自取:github.com/soulteary/H… 。

快速装置和运用 Flare

Flare 的运用方法有很多,不过为了“可持续发展”,我会将常用的方法都讲解一遍。

先来聊聊最简略的计划。(来自作者的小提示,以下计划,依据个人状况挑选一种随手的即可)

HelloWorld:运用 Docker 快速试用 Flare

在 Docker 环境就绪之后,咱们能够经过一条简略的指令,来完结 Flare 的发动:

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

当指令履行结束,咱们将能看到相似下面的日志输出:

INFO[2022-02-23T19:08:43+08:00] Flare v0.3.1-85EED66 linux/amd64 BuildDate=2022-02-23T10:22:43+0800
INFO[2022-02-23T19:08:43+08:00]                                              
INFO[2022-02-23T19:08:43+08:00] 程序服务端口 5005                                  
INFO[2022-02-23T19:08:43+08:00] 页面恳求合并 false                                 
INFO[2022-02-23T19:08:43+08:00] 启用离线形式 false                                 
INFO[2022-02-23T19:08:43+08:00] 已禁用登录形式,用户可直接调整运用设置。                         
INFO[2022-02-23T19:08:43+08:00] 在线修正模块启用,能够拜访 /editor 来获取程序运用协助。             
INFO[2022-02-23T19:08:43+08:00] 导游模块启用,能够拜访 /guide 来获取程序运用协助。                
INFO[2022-02-23T19:08:43+08:00] 程序已发动结束        

这个时分,咱们在浏览器中翻开 http://localhost:5005,就能够看到前文中的书签导航页面了。

咱们检查履行上面指令所在目录,会发现文件夹中“多出了”几个文件:

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

这些文件便是存储着“运用书签”、“分类书签”以及“程序装备”的数据文件啦,除了 config.yml 能够随意删除丢掉之外,其他两个文件中保存着你的书签数据,请注意妥善保存和备份。

咱们随意翻开一个书签数据文件,将能够看到相似下面的内容:

links:
- name: 示例链接
  link: https://link.example.com
  icon: evernote
  desc: 链接描绘文本
- name: 示例链接
  link: https://link.example.com
  icon: FireHydrant
  desc: 链接描绘文本
- name: 示例链接
  link: https://link.example.com
  icon: email
  desc: 链接描绘文本
...

没错,flare 中的链接便是以这样的格式保存起来的,一个个简略的“文本文件”,你能够运用任何你喜欢的方法对它进行修正,以及任何你喜欢的方法对这些数据进行保存。当你依据自己的需求修正完这个文件,在改写浏览器页面后,Flare 中的内容也会同步更新。

假如你期望软件能够以后台方法运转,或许期望软件能够换个端口运转,比如监听到 8080,能够将运转参数修正为:

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

运用 docker-compose 运转 Flare

相比较运用一次性的指令,运用 docker-compose 能够让咱们根据明确的装备文件来运转容器运用(比如 flare ),并细粒度的设置运用的功用,而无需记忆各种麻烦的参数,下面是一个简略的示例。

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

上面的装备只用了十行左右的代码,就完结了指定 flare 容器镜像、flare 发动指令、开放端口、映射数据文件,以及进程看护,遇到问题主动重启康复,是不是有“真香”的滋味。

当然,为了小伙伴更好的运用,我一般会为 docker-compose 装备文件加上一些必要的注释:

version: '3.6'
services:
  flare:
    image: soulteary/flare
    restart: always
    # 默许无需增加任何参数,如有特殊需求
    # 可阅览文档 https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md
    command: flare
    # 启用账号登录形式
    # command: flare --nologin=0
    # environment:
      # 如需敞开用户登录形式,需求先设置 `nologin` 发动参数为 `0`
      # 如敞开 `nologin`,未设置 FLARE_USER,则默许用户为 `flare`
      # - FLARE_USER=flare
      # 指定你自己的账号暗码,如未设置 `FLARE_USER`,则会默许生成暗码并展示在运用发动日志中
      # - FLARE_PASS=your_password
      # 是否敞开“运用导游”,拜访 `/guide`
      # - FLARE_GUIDE=1
    ports:
      - 5005:5005
    volumes:
      - ./app:/app

咱们将上面的文件保存为 docker-compose.yml,然后运用 docker-compose up -d,稍等片刻,仍是运用浏览器拜访 http://localhost:5005,不出意外,你将看到 flare 的简练的界面。

搭配 Traefik 运用 Flare

我的老读者中有不少小伙伴是 Traefik 用户,所以这儿也给出 Traefik 的容器编列装备。

假如你有运用 docker-composenginx 的经历,那么我引荐你能够试试 Traefik,在熟悉之后,你将翻开一个新的国际。假如你还没有玩过它,能够参阅这个项目,来快速上手:github.com/soulteary/t…,或许阅览我以往的包括 Traefik 运用的技术文章。

# Traefik 快速上手和运用,可参阅 https://github.com/soulteary/traefik-example/
version: '3.6'
services:
  flare:
    image: soulteary/flare
    restart: always
    # 默许无需增加任何参数,如有特殊需求
    # 可阅览文档 https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md
    command: flare
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik"
      - "traefik.http.routers.traefik-flare-http.middlewares=https-redirect@file"
      - "traefik.http.routers.traefik-flare-http.entrypoints=http"
      - "traefik.http.routers.traefik-flare-http.rule=Host(`flare.example.com`)"
      - "traefik.http.routers.traefik-flare-http.service=dashboard@internal"
      - "traefik.http.routers.traefik-flare-https.entrypoints=https"
      - "traefik.http.routers.traefik-flare-https.rule=Host(`flare.example.com`) && PathPrefix(`/`)"
      - "traefik.http.routers.traefik-flare-https.tls=true"
      - "traefik.http.services.traefik-flare-backend.loadbalancer.server.scheme=http"
      - "traefik.http.services.traefik-flare-backend.loadbalancer.server.port=5005"
    networks:
      - traefik
    expose:
      - 5005
    volumes:
      - ./app:/app
networks:
  traefik:
    external: true

运用方法仍旧是简略的 docker-compose up -d,在容器运转起来之后,浏览器直接拜访咱们在 Traefik 中动态注册的域名即可,本比如中是 flare.example.com

尽管说了这么多种装置方法。

可是,我猜此刻的你对 Flare 仍是会感到迷茫,接下来,咱们来更进一步的了解 Flare 的功用和界面。

进一步了解 Flare

考虑到运用文本介绍会占用比较多的篇幅,所以我做了一个简略的运用导游,大概只需求十几秒时间,就能够快速看完功用点的介绍。

那么,怎么翻开 Flare 的导游呢?只需求在本来的地址栏后边加上 /guide 即可,像是这样:http://localhost:5005/guide,是不是很简略。

从零开端建立个人书签导航运用:Flare

接下来,聊聊扩展话题。

在公网服务器上运用 Flare

尽管默许状况下 Flare 是单机形式运转,不需求“用户登录”。可是有的小伙伴期望软件能够跑在云服务器上,比如让吃灰久矣的“轻量云”勃发生机。

这个时分,假如谁都能够修正运用设置,不免会形成许多麻烦。所以咱们能够调整一下程序的自定义发动参数,让程序禁用“免登录形式”。

flare --disable_login=0

默许状况下,程序会运用 flare 的账户称号,和随机生成的管理暗码,假如咱们想运用自己的指定账号和暗码登录的话,能够经过在环境变量中设置 FLARE_USERFLARE_PASS 两个家伙,来替换 flare 的默许登录账号和随机暗码,以 docker-compose 编配文件为例:

version: '3.6'
services:
  flare:
    command: flare --disable_login=0
...

是不是很简略?完好的装备能够参阅下面的内容:

version: '3.6'
services:
  flare:
    image: soulteary/flare:0.2.7
    restart: always
    # 默许无需增加任何参数,如有特殊需求
    # 可阅览文档 https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md
    # 启用账号登录形式
    command: flare --disable_login=0
    environment:
      # 如需敞开用户登录形式,需求先设置 `nologin` 发动参数为 `0`
      # 如敞开 `nologin`,未设置 FLARE_USER,则默许用户为 `flare`
      - FLARE_USER=flare
      # 指定你自己的账号暗码,如未设置 `FLARE_USER`,则会默许生成暗码并展示在运用发动日志中
      - FLARE_PASS=your_password
    ports:
      - 5005:5005
    volumes:
      - ./app:/app

当你运用 docker-compose up -d 发动运用之后,运用 docker-compose ps,咱们就能够看到包括暗码的日志输出啦:

INFO[2022-02-23T19:10:07+08:00] Flare v0.3.1-85EED66 linux/amd64 BuildDate=2022-02-23T10:22:43+0800
INFO[2022-02-23T19:10:07+08:00]                                              
INFO[2022-02-23T19:10:07+08:00] 程序服务端口 5005                                  
INFO[2022-02-23T19:10:07+08:00] 页面恳求合并 false                                 
INFO[2022-02-23T19:10:07+08:00] 启用离线形式 false                                 
INFO[2022-02-23T19:10:07+08:00] 启用登录形式,调整运用设置需求先进行登录。                        
INFO[2022-02-23T19:10:07+08:00] 当前内容整体可见性为: DEFAULT                          
INFO[2022-02-23T19:10:07+08:00] 用户未指定 `FLARE_USER`,运用默许用户名 flare             
INFO[2022-02-23T19:10:07+08:00] 用户未指定 `FLARE_PASS`,主动生成运用暗码 dd0624b7         
INFO[2022-02-23T19:10:07+08:00] 在线修正模块启用,能够拜访 /editor 来获取程序运用协助。             
INFO[2022-02-23T19:10:07+08:00] 导游模块启用,能够拜访 /guide 来获取程序运用协助。                
INFO[2022-02-23T19:10:07+08:00] 程序已发动结束   

接下来是登录运用和进行具体设置,这儿就不过多赘述了,留给你自己探究和把玩啦。

假如你有更私密的要求,还能够运用 flare --disable_login=0 --visibility=private 设置首页内容有必要登录能够看到。

其他材料

假如你对 Flare 的制作过程感兴趣,能够移步 《Flare 制作记录:运用前后端功用优化》 这篇文章,共享了不少优化的思路和细节。

除此之外,为了便利你运用和调整 Flare,还能够参阅下面的文档:

  • 《Flare – 自定义发动参数》
  • 《关闭免登录形式后,怎么设置用户账号》
  • 《怎么挑选和运用图标》
  • 《怎么和 Traefik 一同运用》

最后

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

假如你是一个代码爱好者,还能够在 GitHub 中为项目点赞✨(star)给予制作人一个小小的鼓舞;假如你期望收到这个项目的更新推送,主张点击 GitHub 项目中的关注 (watch)并挑选合适自己的关注形式,引荐挑选 release 形式,一旦有新版呈现,你会第一时间得到推送提示。

当然,十分欢迎你在我首要出没的当地进行留言反应,一同改进 Flare 的体会。

–EOF