使用?Docker?搭建適用于?HomeLab?的書簽導(dǎo)航應(yīng)用
寫在前面
我目前使用的書簽導(dǎo)航工具的界面是這樣的(馬賽克掉了一部分鏈接內(nèi)容):
作為一個使用了十多年 Chrome 的用戶,Chrome 書簽管理器一直是我的主要的書簽管理工具。在漫長的歲月里,我的 Chrome 書簽管理器中,最多的時候存放了上千個書簽鏈接。
但是 Chrome 的書簽欄面積十分有限,隨著折騰的東西越來越多,導(dǎo)致導(dǎo)航欄基本放不了多少東西,許多書簽常常需要在書簽二級目錄甚至三級目錄中查找,非常麻煩。當(dāng)然,Chrome 地址欄和搜索欄二合一之后,瀏覽器支持從這個全能文本框中搜索某個書簽以及歷史搜索結(jié)果,但是在缺少提示的情況下,也時常出現(xiàn) “茫茫人海,不知從何搜起”的狀況,或者出現(xiàn)搜索結(jié)果中的書簽會混雜在一堆歷史瀏覽記錄中的狀況。
幾個月前,我開始進(jìn)行個人 PKM 重建。在過程中,我期待有更好的方式來使用書簽,讓我能夠更多的使用“一次點擊”來解決問題,減少大量翻箱倒柜式的“翻找”和“搜索”動作;同時,我也希望這些書簽內(nèi)容,可以在不同的瀏覽器和設(shè)備中共享,而不是僅限在 Chrome、Safari 或某個特定的產(chǎn)品中使用、甚至僅限在桌面瀏覽器環(huán)境中使用;我希望盡可能不使用在線的云服務(wù),因為在過去的十年中,非常多的以云收藏夾為主營業(yè)務(wù)的公司都折戟在了互聯(lián)網(wǎng)長河中;最后,我希望這些數(shù)據(jù)是能夠使用比較友好的格式被妥善的存儲,在未來某個時刻能夠很方便的遷移到更先進(jìn)的工具中。
基于上面的種種考慮,我在一眾開源軟件中找到了 Flame,在使用了一段時間后,我覺得 Flame 中的一些設(shè)計對于我而言比較多余,以及軟件本身的性能效率并不是特別好,尤其是針對我這種擁有非常多書簽的用戶而言。所以,在借鑒 Flame 原有功能的基礎(chǔ)上,我寫了一套新的工具 Flare。關(guān)于 Flare 的制作和性能調(diào)優(yōu),感興趣的同學(xué)可以圍觀之前的文章 《Flare 制作記錄:應(yīng)用前后端性能優(yōu)化》 。
雖然我制作了“改良版” Flare,但是 Flame 對于多數(shù)人而言,依舊是一款不錯的軟件。所以,接下來我會分別聊聊兩款軟件在容器下的使用,供我的讀者按需選擇。?
在容器中使用 Flame
相比較其他的要么功能紛繁復(fù)雜,要么界面陳舊落后的開源軟件,功能相對簡單,界面顏值也非常高的 Flame 很快進(jìn)入我的視野。
在花費了一番功夫之后,我將 flame 封裝成了 Docker 鏡像,F(xiàn)lame 的鏡像尺寸 50MB 多一點點。
它的使用方式很簡單,將下面的內(nèi)容保存為 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 # 默認(rèn)管理密碼 - 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
啟動應(yīng)用,接著訪問瀏覽器中的 http://localhost:5005
就能看到軟件的默認(rèn)界面啦。
關(guān)于如何進(jìn)行個性化調(diào)整,以及書簽的添加等,同樣非常簡單,聰明的你可以自行探索,為了不“劇透”,這里就不過多贅述啦。
這個項目地址在這里: https://github.com/soulteary/docker-flame ,其中的一些改動已經(jīng)被合并到了 flame 官方倉庫。
接下來聊聊為什么我要制作 Flare、以及 Flare 如何在容器環(huán)境下使用。
為什么要制作 Flare
隨著深入使用 Flame,我發(fā)現(xiàn)了一些體驗上的小問題:比如軟件不支持搜索中文內(nèi)容;比如軟件獲取天氣數(shù)據(jù)需要使用經(jīng)緯度(以及需要注冊獲取天氣平臺 API)非常麻煩;軟件后臺存在一些浪費性能的問題;軟件前端的實現(xiàn)方式,在大量書簽的場景下,性能表現(xiàn)比較糟糕,會出現(xiàn)卡頓;軟件雖然功能簡單,但是整體性能不夠好,我希望用更少的資源運行這個服務(wù)。
而 Flame 原本的功能設(shè)計,對于我個人使用的場景而言,也顯得稍微有一些多余:
- 我不太需要軟件本身的 Docker、K8S 集成功能,這兩個功能的初衷是從 Docker Label、K8S Ingress 注解中提取鏈接信息,進(jìn)行動態(tài)的鏈接添加和刪除,但是我比較抵觸 All In One,所以我的設(shè)備和服務(wù)多是分布式部署的,并且長期運行的服務(wù)非常固定,變動比較少;
- 隨著整理了越來越多的書簽后,我發(fā)現(xiàn)我對于書簽的寫入頻率其實不高,原本的書簽編輯器的體驗也不是很好,我希望有更好的方式來進(jìn)行替換;
- 以及作為私人使用的書簽導(dǎo)航,我似乎也不需要用戶功能;
- Flame 使用 SQLite 進(jìn)行數(shù)據(jù)存儲,雖然比使用 PG、MySQL 要輕不少,但是在數(shù)據(jù)變化不大的場景下,或許結(jié)構(gòu)化的明文保存會簡單,也更利于未來的數(shù)據(jù)遷移。
在明確了上面的問題,以及我到底想要什么之后,我制作了 Flare, 一個輕量的、適合私有化部署,個人使用的導(dǎo)航工具 。
相比較 Flame 在裁剪功能后封裝的容器鏡像需要 50MB 的大小,F(xiàn)lare 只需要不到 10MB 的空間,以及遠(yuǎn)低于 Flame 的運行資源(通常情況下遠(yuǎn)小于 1% 的CPU占用、30M以內(nèi)的內(nèi)存)。
在這個基礎(chǔ)上,F(xiàn)lare 除了可以運行在傳統(tǒng)的 x86 主機上,比如你的筆記本、你的NAS、云服務(wù)器上,還可以運行在各種 ARM 設(shè)備上,甚至是很早之前分享過的成本不到 50 元的玩客云上。(感興趣的同學(xué)可以閱讀 《玩客云折騰記錄(一):編譯 ArmBian 系統(tǒng)》 )
我們可以使用文本文件的方式來針對鏈接數(shù)據(jù)的管理,尤其是在鏈接數(shù)據(jù)非常少的情況下,簡單的文本文件,配合任意你喜愛的編輯器,編輯體驗遠(yuǎn)勝于各種簡單引入的 Web IDE 或簡陋的應(yīng)用提交表單。而這些文件,也更容易保存、備份,以及在未來合適的時候,導(dǎo)入到更好的工具中。
在容器中使用 Flare
Flare 的使用同樣也非常簡單,你可以使用 docker 的一句話命令,快速啟動一個 flare 應(yīng)用:
docker run --rm -it -p 5005:5005 -v `pwd`/app:/app soulteary/flare:0.2.3
或者將下面的內(nèi)容保存為 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
來啟動應(yīng)用。
當(dāng)應(yīng)用啟動完畢之后,還是訪問相同的瀏覽器地址,你將看到類似下面的界面:
應(yīng)用會在啟動目錄的 app
文件夾中生成默認(rèn)的示例數(shù)據(jù),方便你參考修改,數(shù)據(jù)文件格式為 yaml
,如果你不熟悉也沒關(guān)系,參考文件內(nèi)的內(nèi)容格式進(jìn)行調(diào)整,保證縮進(jìn)一致即可。
當(dāng)你編輯完 app/bookmarkd.yml
和 app/apps.yml
兩個文件后,刷新瀏覽器,你的修改就生效了,不必進(jìn)行應(yīng)用重啟。
其他
Flare 目前還處于比較早期的階段,不過對于個人使用而言,或許已經(jīng)足夠了,和 Flame 一樣漂亮的界面,更高效的資源使用,沒有遷移負(fù)擔(dān)的數(shù)據(jù)格式。
接下來,我會在慢慢更新這個小工具,在保證數(shù)據(jù)兼容、性能高效的前提下,慢慢將它的用戶體驗持續(xù)提升,如果你對這個項目感興趣,或者在使用過程中遇到了問題,可以關(guān)注或者在這里反饋: https://github.com/soulteary/docker-flare 。
至于書簽內(nèi)容的離線管理,我將在后續(xù)文章中介紹另外一個工具,先按下不表。
最后
寫到這里,兩款書簽導(dǎo)航軟件的使用就介紹完啦。
瀏覽器書簽是眾多知識管理方式的其中一種,它和電子書庫、電子筆記、桌面文件、云端文檔等其他形式的工具一起構(gòu)建了我們的知識體系。
接下來的文章里,我會逐步分享我在過程中的一些經(jīng)驗。希望能幫助到有同樣需求的你。
到此這篇關(guān)于使用 Docker 搭建適用于 HomeLab 的書簽導(dǎo)航的文章就介紹到這了,更多相關(guān)Docker 搭建HomeLab 書簽導(dǎo)航內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot?分層打包?Docker?鏡像實踐及分析(推薦)
這篇文章主要介紹了Spring?Boot?分層打包?Docker?鏡像實踐及分析,本文通過圖文并茂的形式實例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12在Ubuntu15.04上安裝Docker的步驟以及基本用法
Docker是一種輕量型的的類虛擬機的平臺,在開發(fā)項目上還是很有優(yōu)勢的,這僅是我的一種直觀理解。所以這篇文章主要給大家介紹了在Ubuntu15.04上安裝Docker的步驟以及基本用法,有需要的朋友們可以參考借鑒。2016-10-10阿里云CentOS 6.5 安裝Docker詳細(xì)步驟
這篇文章主要介紹了阿里云CentOS 6.5 安裝Docker的相關(guān)資料,現(xiàn)在都是云時代和大數(shù)據(jù)時代,希望大家也能跟著時代的步伐,需要的朋友可以參考下2016-10-10Docker執(zhí)行DockerFile構(gòu)建過程指令解析
這篇文章主要為大家介紹了Docker執(zhí)行DockerFile構(gòu)建過程及DockerFile的指令解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪<BR>2022-04-04