編注:
Mozilla 宣布將于 2025 年 7 月 8 日關(guān)閉稍后讀服務(wù) Pocket。
2025 年 7 月 8 日后,用戶僅可從 Pocket 導(dǎo)出數(shù)據(jù),2025 年 10 月 8 日后,所有用戶數(shù)據(jù)將被永久刪除。已訂閱 Pocket Premium 的用戶將按照 2025 年 7 月 8 日之后的訂閱剩余時(shí)長獲得退款。
本文是一篇發(fā)布于 2024 年 6 月的 #自力更生 征文入圍投稿,彼時(shí)作者曾在文中提到過 Pocket 在國內(nèi)的訪問穩(wěn)定性、數(shù)據(jù)導(dǎo)出等問題,沒想一語成讖,Pocket 的服務(wù)和運(yùn)營在不到一年的時(shí)間里迅速收縮、停滯并最終迎來終結(jié)。
自部署又一次在「稍后讀」領(lǐng)域迎來了它的魅力時(shí)刻。如果你也需要:
數(shù)據(jù)本地,完全可控
跨越多設(shè)備,且多端體驗(yàn)一致
內(nèi)容解析速度出色
的稍后讀服務(wù),Readeck 作為一款兼具了書簽功能的自部署方案也許值得你在這個(gè)特別的日子里多了解一點(diǎn)。
作為喜歡閱讀互聯(lián)網(wǎng)長文的「上世代互聯(lián)網(wǎng)遺老」,我一直保持著一個(gè)和現(xiàn)在互聯(lián)網(wǎng)快消時(shí)代格格不入的愛好:偏愛長內(nèi)容,這包括了我喜歡觀看哪些具有豐富知識內(nèi)容的長視頻,收聽播客節(jié)目以及閱讀長篇的文章。尤其是長篇文章,往往是在我在碎片化的時(shí)間瀏覽公眾號或者 RSS 訂閱時(shí),然后就會把這篇長文發(fā)到我的稍后讀應(yīng)用或者推送到我的 Kindle 郵箱中,等晚上坐到書桌前仔細(xì)深度閱讀。
因此我一直都非常留意各家的稍后讀/書簽服務(wù),從最早的 instapaper、Pocket 到后來使用 Kindle 的郵箱推送等都有嘗試,只不過在國內(nèi)這個(gè)互聯(lián)網(wǎng)環(huán)境中難免會遇到網(wǎng)絡(luò)訪問穩(wěn)定性的問題——畢竟這幾種稍后讀服務(wù)都來自國外開發(fā)商,經(jīng)常會遇到發(fā)送微信公眾號文章后重排版出錯的情況,就更別提數(shù)據(jù)保留的安全性問題了。
既然我已經(jīng)在家中部署了 NAS,秉承「將數(shù)據(jù)保留在自己手上」的宗旨,我決定將稍后讀/書簽服務(wù)也進(jìn)行自部署。而考慮到我實(shí)際的使用情況,我自部署的稍后讀/書簽服務(wù)需要滿足以下幾點(diǎn):
支持自部署,且部署方式容易。
可以在手機(jī)端/桌面端進(jìn)行進(jìn)行閱讀。
可以在不同的平臺將文章/網(wǎng)頁發(fā)送到稍后讀服務(wù)中。
解析處理網(wǎng)頁內(nèi)容的速度要很快。
而滿足以上要求的就剩下了這款名為 Readeck 稍后讀/書簽服務(wù)。
▍Readeck:功能全面且支持自部署的稍后讀/書簽服務(wù)
安裝 Readeck 服務(wù)端
和其他自部署的服務(wù)一樣,作為一款自部署優(yōu)先服務(wù),Readeck 官方直接就提供了 Docker 的部署方式,當(dāng)然考慮到我自己家中的 NAS 是群暉的 DS218+,官方 Docker 套件本身功能比較弱,因此我還額外使用 Portainer 這個(gè)可視化的容器部署工具來進(jìn)行部署,這樣做的另一個(gè)好處就是,即便你的 NAS 不是群暉,只要支持容器,也可以采用類似的辦法做部署。
我這里依舊以群暉為參照,首先打開群暉的 File Station 中的 docker 目錄,在目錄下創(chuàng)建一個(gè)新文件夾并將其命名為 readeck(全部是小寫字母)。
然后在新創(chuàng)建的這個(gè)readeck 文件夾里面,再分別創(chuàng)建data以及db兩個(gè)文件夾。這兩個(gè)文件夾后面用來存儲服務(wù)中所產(chǎn)生的數(shù)據(jù)。
接下來我們就打開 Portainer 來進(jìn)行服務(wù)容器的部署,這里打開并登錄 Portainer,然后從左側(cè)邊欄中點(diǎn)擊 Stacks,然后點(diǎn)擊頁面右上角的 Add Stack來添加。
在新創(chuàng)建的 Stack 的 Name 里面填寫readeck,然后在 Build method 這里選擇 Web editor,接著在下面內(nèi)容直接復(fù)制到編輯器中:
version: "3.9"
services:
readeck:
container_name: Readeck
image: codeberg.org/readeck/readeck:latest
mem_limit: 8g
cpu_shares: 1024
security_opt:
- no-new-privileges:true
restart: on-failure:5
ports:
- 4522:8000
volumes:
- /volume1/docker/readeck/data:/readeck:rw
environment:
READECK_USE_X_FORWARDED: true
READECK_DATABASE_SOURCE: postgres://readeck:readeckpass@readeck-db:5432/readeck
readeck-db:
image: postgres:16
container_name: Readeck-DB
hostname: readeck-db
mem_limit: 1g
cpu_shares: 768
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "readeck", "-U", "readeck"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/readeck/db:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: readeck
POSTGRES_USER: readeck
POSTGRES_PASSWORD: readeckpass
restart: on-failure:5
按照上面填寫完成后,這里點(diǎn)擊下方的「Deploy the stack」來部署容器,然后等待出現(xiàn)容器列表就表示部署成功了。
P.S:有關(guān) docker 文件存儲路徑也需要留意,如果你的 NAS 有多個(gè)卷,最好能夠核對自己創(chuàng)建文件夾的絕對路徑,從而避免出錯。
配置 Readeck
當(dāng)容器正式啟動后,這時(shí)打開瀏覽器并訪問:http://你的 NAS 地址:4522 ,如果可以訪問到Readeck 的登錄頁面就表示完全部署成功了,如果你和我一樣,是部署到本地的 NAS 中的,那么如果想要從外網(wǎng)訪問還需要通過 ddns 或者內(nèi)網(wǎng)穿透的方式將服務(wù)暴露到公網(wǎng)中,這里我就不過多贅述了。
在注冊頁面中首先輸入你未來需要登錄 Readeck 的賬號和密碼,最后點(diǎn)擊 Finish installation 來完成最后的注冊。登錄后你就可以看到 readeck 的列表頁面,這就表示你已經(jīng)成功完成了全部的安裝工作。而既然是一款稍后讀應(yīng)用,那么自然少不了就是測試一下他的閱讀模式的處理能力,這里我直接在 Readeck 上點(diǎn)擊上方添加地址處貼上少數(shù)派的某篇文章的鏈接,然后點(diǎn)擊「Save Link」來保存鏈接。
這個(gè)保存并處理的過程非常快,稍等片刻 Readeck 就會完成處理并添加好作者以及標(biāo)題,甚至還會自動生成稍后讀文章卡片的封面圖,而點(diǎn)擊進(jìn)去后可以看出會將一些無用的元素都進(jìn)行清理,保留成適合手機(jī)進(jìn)行閱讀的「閱讀模式」的效果。同時(shí)你還可以對閱讀的效果進(jìn)行設(shè)置,比如選擇字體、字號以及對行高進(jìn)行設(shè)置。
同時(shí)你還可以對不同的文章打上特定的標(biāo)簽,方便的進(jìn)行進(jìn)一步的分類歸檔操作,而在晚間閱讀時(shí)如果你覺得背景比較刺眼,也可以點(diǎn)擊側(cè)欄中的更換主題來切換成暗色模式。
▍Readeck 進(jìn)階用法:用更簡單的方式發(fā)送文章
Readeck 服務(wù)部署完畢并且進(jìn)行了基礎(chǔ)設(shè)置,那么接下來我們發(fā)送需要稍后讀的文章/網(wǎng)頁了,畢竟如果每一次添加稍后讀的文章鏈接都需要打開 readeck 并點(diǎn)擊「Save Link」顯然非常繁瑣,事實(shí)上 Readeck 提供了和很多商業(yè)服務(wù)類似的方式,可以讓我們非常方便的將看到的文章發(fā)送到 Readeck 中。
使用瀏覽器的擴(kuò)展程序發(fā)送文章/鏈接
如果你使用的是桌面瀏覽器來瀏覽網(wǎng)頁內(nèi)容,那么最為簡單的辦法就是通過瀏覽器的擴(kuò)展程序,Readeck 提供了 Chrome/Firefox 兩個(gè)主流瀏覽器的擴(kuò)展程序,這里只需要在相應(yīng)的擴(kuò)展程度市場中下載安裝,然后點(diǎn)擊擴(kuò)展程序后輸入你的賬戶名、密碼以及服務(wù)的具體地址,然后點(diǎn)擊 Login 就可以完成登錄綁定操作。
登錄完成后,當(dāng)你需要將正在瀏覽的網(wǎng)頁發(fā)送到 Readeck 時(shí),就只需要點(diǎn)擊擴(kuò)展程序欄中的 Readeck 圖標(biāo),然后等待其完成保存即可。如果不放心你還可以登錄 Readeck 中,看看你點(diǎn)擊發(fā)送的這篇文章是否已經(jīng)被收藏進(jìn)來了。
在 iOS 上使用快捷指令來收藏文章
我習(xí)慣在手機(jī)端瀏覽器網(wǎng)頁,會將合適的內(nèi)容也會將其發(fā)送到稍后讀中,這同樣在 Readeck 中也可以這樣操作,只不過由于 Readeck 并沒有提供手機(jī)客戶端,因此這里需要自己通過第三方工具來實(shí)現(xiàn),至于 iOS 上則是通過快捷指令來進(jìn)行操作。
不過在使用快捷指令操作之前,我們首先需要為這些操作來創(chuàng)建新的 API 密鑰,這里先登錄你的 Readeck 服務(wù),然后點(diǎn)擊 Profile - API Token,然后點(diǎn)擊「Create a new API token」來創(chuàng)建一個(gè)新的 API Token,這里只需要將生成的「Your API token」下面的字符串保留下來備用即可。
接下來,使用 iOS 上的瀏覽器打開這個(gè)地址,然后點(diǎn)擊「Download Shortcut」保存到你的快捷指令集中,接下來點(diǎn)擊「Send Page To Readeck」這個(gè)快捷指令卡片的編輯按鈕,在第一個(gè)注釋下方的文本框中填寫 Readeck 的公網(wǎng)訪問地址,在第二個(gè)注釋下方的文本框中,把剛才保存的 API Token 復(fù)制進(jìn)去,然后點(diǎn)擊右上角的完成來保存。
那么如何發(fā)文章到 Readeck 呢?當(dāng)你使用 Safari 瀏覽器訪問網(wǎng)址時(shí),點(diǎn)擊下方的分享按鈕并在分享菜單中選擇 Send Page To Readeck,然后等待快捷指令跑完即可,這時(shí)候你再訪問 Readeck 就會發(fā)現(xiàn)剛才在 Safari 瀏覽的網(wǎng)頁已經(jīng)被發(fā)送到 Readeck 中了。
在 Android 上使用 HTTP Request Shortcuts 來收藏文章
相比于 iOS 上有系統(tǒng)級別的快捷指令,Android 上一直以來都沒有系統(tǒng)級別的「腳本工具」,因此要想實(shí)現(xiàn)類似的操作將網(wǎng)頁添加到 Readeck 就只能依賴第三方工具了,這里我們就需要用到這個(gè) HTTP Request Shortcuts 這款應(yīng)用來編寫一個(gè)添加文章的腳本。
首先還是打開 HTTP Request Shortcuts,首先點(diǎn)擊右上角的漢堡菜單,點(diǎn)擊「變量」來創(chuàng)建三個(gè)變量:
第一個(gè)變量叫做readeck_shared_url,變量類型為「輸入文本」,需要注意的是這個(gè)變量的高級設(shè)置里面需要勾選「允許分享」,要從分享獲得的數(shù)據(jù)為「僅文本」。
第二個(gè)變量叫做readeck_url,變量類型是「常量」,這里需要填寫值,這個(gè)值就是你部署的 Readeck 服務(wù)的公網(wǎng)地址。
第三個(gè)變量叫做readeck_token,變量類型是「常量」,這里也需要填寫值,這個(gè)值就是前面我們從 readeck 的 API Token 中保存下來的 Token 值。
緊接著,點(diǎn)擊主頁右下角的 +然后選擇「從頭創(chuàng)建」來創(chuàng)建一個(gè)新的快捷方式,這里名稱你可以隨便命名,可以像我一樣將其命名為「Add To Readeck」,然后在基本設(shè)置中,選擇方法為Post,url 這里輸入值{readeck_url}/api/bookmarks。
在請求體/請求參數(shù)這里,這里設(shè)置返回體類型是參數(shù)(x-www-form-urlencoded),下方的參數(shù)為url,值是{readeck_shared_url}。
在認(rèn)證這里,選擇認(rèn)證方式為「令牌認(rèn)證」,令牌為{readeck_token}。全部編輯好之后點(diǎn)擊右上角的對勾確認(rèn)保存,至此發(fā)送網(wǎng)頁腳本就正式編輯完成了。
那么怎么使用呢?這里只需要使用瀏覽器打開一篇文章,然后點(diǎn)擊分享來展開 Android 系統(tǒng)的原生分享菜單,這里就可以看到剛剛我們創(chuàng)建的這個(gè)名為「Add To Readeck」的圖標(biāo),點(diǎn)擊后會提示該腳本已經(jīng)執(zhí)行,只要不報(bào)錯就表示網(wǎng)頁已經(jīng)成功提交到 Readeck 中了,如果不確定可以到 Readeck 的文章列表中查看是否已經(jīng)發(fā)送成功了。
▍Readeck 進(jìn)階用法2:在不同的平臺使用不同的姿勢閱讀
既然文章都已經(jīng)上傳到 Readeck 中了,那么該如何進(jìn)行閱讀呢?和其他商業(yè)產(chǎn)品不同的是 Readeck 并沒有推出專門的閱讀客戶端,不過好在 Readeck 提供了很多豐富的閱讀方式,體驗(yàn)上還是相當(dāng)不錯的。
Readeck 的準(zhǔn)官方客戶端:PWA 應(yīng)用
如果只是用來閱讀,那么實(shí)際上使用 Web 網(wǎng)頁就完全夠用,而 Readeck 也已經(jīng)支持以 PWA 的形式進(jìn)行安裝,那么最為簡單的方式就是將其安裝成 PWA 應(yīng)用——使用瀏覽器訪問你部署的 Readeck 服務(wù),桌面端點(diǎn)擊地址欄的安裝來將其安裝成 PWA 應(yīng)用,至于移動端也是類似。而整體體驗(yàn)下來個(gè)人覺得已經(jīng)足夠滿足使用需求——尤其是 Readeck 的網(wǎng)頁端也針對移動設(shè)備進(jìn)行了優(yōu)化,閱讀沉浸感還是很不錯的。
在移動端通過支持 OPDS 的閱讀應(yīng)用來閱讀
Readeck 原生支持 OPDS——通過訪問路徑的形式可以將保存的稍后讀文章以電子書的形式發(fā)布,這樣我們看文章的體驗(yàn)就會和通過電子書類似,那么如果你平時(shí)習(xí)慣在手機(jī)上通過閱讀應(yīng)用來看書,那么就可以將 Readeck 添加成書庫在應(yīng)用中閱讀。
這里,iOS 上可以使用這個(gè)名為 cantook 的應(yīng)用來實(shí)現(xiàn),打開這款應(yīng)用并點(diǎn)擊導(dǎo)航欄中的「書店」同時(shí)點(diǎn)擊右上角的添加,然后再選擇「手動添加書店」,在彈出的新建目錄名稱和鏈接對話框中,填寫目錄名稱(這里隨便寫)以及目錄鏈接(https://你的書庫地址/opds)后,然后點(diǎn)擊添加,這時(shí)候再點(diǎn)擊書店中的新保存的這個(gè)新書店,根據(jù)提示輸入你的 readeck 的賬戶和密碼,就可以順利進(jìn)入到目錄中了,只不過進(jìn)入閱讀后你會發(fā)現(xiàn)還是訪問的是 Readeck 的網(wǎng)頁端而已。至于 Android 上,支持 OPDS 目錄的閱讀應(yīng)用也有不少,比如靜讀天下也支持掛載 OPDS 目錄,這里我就不過多的贅述了。
▍總結(jié)
經(jīng)過一段時(shí)間的試用,我正式將自部署的 Readeck 作為我的主要稍后讀服務(wù),并且實(shí)現(xiàn)了我接觸的場景下全平臺的發(fā)送網(wǎng)址/閱讀解決方案,雖然相比商業(yè)化的稍后讀服務(wù)需要自己手動配置多種服務(wù),但由于是自部署的服務(wù),數(shù)據(jù)安全和網(wǎng)絡(luò)訪問上其實(shí)要比商業(yè)化的服務(wù)要更為可靠,如果你和我一樣之前使用的是海外的商業(yè)化的稍后讀服務(wù),不妨嘗試自己部署 Readeck讓數(shù)據(jù)掌握在自己手中。
https://sspai.com/post/89289?utm_source=wechat&utm_medium=social
作者:化學(xué)心情下2
責(zé)編:廣陵止息
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.