選單

不滿意於現有書籤工具,我做了一個專屬自己的網址導航

寫在前面

幾月前,我開始重建 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 快速試用 Flare

在 Docker 環境就緒之後,我們可以透過一條簡單的命令啟動 Flare:

這條命令將拉取 Flare 的映象,將其執行在本地的 埠上,並將當前目錄下的 目錄作為資料儲存路徑。你可以根據自己的需求更換這些引數。例如希望軟體能夠換個 埠執行,可以將執行引數修改為:

當命令執行完畢,我們將能看到類似下面的日誌輸出:

這個時候,我們在瀏覽器中開啟 ,就能夠看到書籤導航頁面了。

不滿意於現有書籤工具,我做了一個專屬自己的網址導航

基本使用和配置

為了方便你瞭解和使用 Flare,我製作了一個小嚮導,只需要在原來的地址後面加上 即可訪問:。你可以透過這個嚮導瞭解 Flare 的基本功能佈局。

接下來,就該為 Flare 增加自己所需的連結、顯示自己所在城市的天氣了。

如上所述,

Flare 的配置都透過本地檔案完成。

初次執行後,檢視當前目錄,可以看到新出現瞭如下結構的目錄和檔案:

這些就是分別儲存著網頁應用書籤、普通網址書籤以及程式配置的資料檔案啦,請注意妥善儲存和備份。

不滿意於現有書籤工具,我做了一個專屬自己的網址導航

Flare 的配置和資料都以YAML格式儲存,可以透過純文字編輯器直觀地修改;在重新整理瀏覽器頁面後,Flare 中的內容也會同步更新。

例如,如果我想在 Flare 的「應用」模組增加 Evernote 和 Gmail 的快捷方式,則可以編輯 檔案,在其中寫上:

其中,每個快捷方式均可以指定標題()、描述文字()、連結()和圖示()。

圖示的名稱

可以從Material Design Icon網站檢索。

「書籤」模組的配置()類似,區別在於多了連結分類,在開頭的 下配置:

此外,書籤模組中的每個連結只有圖示和名稱,沒有描述文字。

最後,在 中,可以對如下內容:

天氣

的開關()和城市(),

標題

()、

歡迎詞

()和

頁尾文字

(),

是否

在新標籤開啟應用

()和

連結

(),

是否

顯示應用

()和

書籤

()模組

等進行設定;根據配置項的名稱一看便知,在此不贅述。

使用 Docker Compose 執行

上面的一句話命令固然方便,但終歸還是適合嚐鮮。如果想要長久使用,每次輸入這樣的命令就不太方便了。

為此,我們需要用到 Docker Compose。這是用配置檔案來定義和執行一個或多個 Docker 應用的輔助工具,類似於一種「食譜」。與手打 Docker 命令相比,它的好處是基於明確的配置檔案,可以細粒度地設定應用的功能,而無需記憶各種麻煩的引數。

Docker Compose 使用的配置檔案稱為「Compose 檔案」,本質上也是 YAML 格式。例如,下面這段簡短的 Compose 檔案就能用來執行 Flare:

上面的配置只用了十行左右的程式碼,就完成了啟動、埠和儲存對映、程序守護和自動重啟的作用,是不是有點「真香」的味道呢。

當然,為了小夥伴更好的使用,Flare 還支援自主決定是否需要登入、是否自行指定使用者名稱和密碼;這都可以透過修改 Compose 檔案中的命令(command)和環境變數(environment)來實現。具體請參看我製作的完整配置檔案範例和其中的註釋。

寫好 Compose 檔案後,將其儲存為 ,然後執行 。

稍等片刻,就能在 看到 Flare 的介面了。

進階用法:在公網伺服器上使用

對於前者,Flare 支援透過 引數來關閉預設的「免登入模式」:

預設情況下,程式會使用 作為賬戶名稱,並隨機生成的管理密碼。這可以從執行時輸出的日誌看到。如果我們想使用自己的指定賬號和密碼登入的話,可以透過在環境變數中設定 和 來實現。

因此,如果使用 Compose 檔案來表述,完整的配置是:

至於第二個需求,即配置自定義域名和反向代理,我推薦使用 Traefik。這是一個現代的反向代理和負載均衡工具,相比於傳統的 Apache、nginx,與 Docker 搭配使用更為方便。

我提前寫好了一個搭配 Traefik 使用 Flare 的 Compose 檔案,請在這裡獲取並查閱其中的註釋說明,這裡就不多著墨了。

寫在最後

如果你覺得這個專案有幫到你,歡迎對本文進行點贊轉發,讓其他的小夥伴也能看到它(使用者反饋越多,更新越快)。

如果你是一個程式碼愛好者,還可以在 GitHub 中為專案點贊給予製作人一個小小的鼓勵;如果你希望收到這個專案的更新推送,建議點選 GitHub 專案中的關注並選擇適合自己的關注模式,推薦選擇 release 模式,一旦有新版出現,你會第一時間得到推送提醒。

當然,非常歡迎你在我主要出沒的地方進行留言反饋,一起改進 Flare 的體驗。