在完成基于 NAS 的 Podcast 訂閱管理平臺以及密碼庫之后,我將下一步「私有化」的目標(biāo)瞄上了自己多年來的精心收藏的數(shù)字書庫。
我自己閱讀的電子書除了從 kindle 商店購買書籍之外,還有就是從第三方渠道下載以及自己 DIY 的電子書了。以前這些自制的電子書都被我放在電腦的某個文件目錄中,而隨著時間的推移,這些電子書文件越來越多,如何對這些數(shù)字文件進(jìn)行高效的管理成為我心中的一大難題。
由于我主要的閱讀工具都是通過 Kindle 來閱讀,很少通過手機(jī)或者平板上進(jìn)行電子書的閱讀,因此我從其他渠道下載以及 DIY 的電子書都是基于 Kindle 的電子書格式 azw3,這種格式雖然在 Kindle 硬件上可以獲得較好的閱讀體驗(yàn),但這也無形中讓我個人隨身書庫的打造帶來了相當(dāng)多的難點(diǎn),所以如果你也想打造類似的數(shù)字書庫,那么下載的電子書的文件格式可以選擇更為通用的 mobi,這樣無論是管理還是閱讀上都會更為方便。
下面就來介紹下我的個人隨身數(shù)字書庫打造過程吧。
使用工具來管理自己的電子書庫
以前我會將下載的 azw3 格式的電子書經(jīng)過簡單的重命名后,直接保存在電腦的某個目錄中。當(dāng)時的考慮非常簡單——將 AZW3 格式的電子書直接拷貝到 kindle 的存儲空間就可以在設(shè)備上閱讀了。
這種操作方式最為簡單,但也帶來了管理上的難題——無法確認(rèn) kindle 中已經(jīng)保存了哪些書、是否重復(fù)等等。之后我開始使用桌面端的電子書管理軟件來對書籍進(jìn)行管理,也就是使用開源的電子書管理器 calibre。
calibre 的優(yōu)點(diǎn)在于可以通過刮削器完善書庫中的電子書元數(shù)據(jù)信息,并且通過類似文件同步的方式來實(shí)現(xiàn)本地數(shù)字書庫和 kindle 的電子書同步以及傳輸操作。同時 calibre 還可以實(shí)現(xiàn)電子書轉(zhuǎn)換、編輯等操作,可以說是現(xiàn)階段最為全面的本地化電子書管理工具了。
而通過將電子書導(dǎo)入到 calibre 中,我逐步建立起一個基于本地電腦的個人電子書數(shù)據(jù)庫。而更大的設(shè)想還在后面——我能不能將其變成一個自己專屬的電子書書庫,并且實(shí)現(xiàn)全終端的在公網(wǎng)環(huán)境下的閱讀甚至管理?
我將實(shí)現(xiàn)目標(biāo)轉(zhuǎn)向了家中的群暉。
基于 NAS 構(gòu)建在線書庫做好第一步:將本地書庫轉(zhuǎn)移到 NAS 上
我的初期的目標(biāo)很簡單——實(shí)現(xiàn)家中局域網(wǎng)內(nèi)的桌面設(shè)備(Windows 電腦和 Mac )可以訪問書庫并使用 calibre 進(jìn)行管理即可,那么首先就是要將原本存儲在電腦中的書庫轉(zhuǎn)移到 NAS 上,當(dāng)然也需要為此新增一個共享文件夾。
通過群暉的「控制面板」-「共享文件夾」,點(diǎn)擊「新建」來創(chuàng)建書庫目錄(比如說我所創(chuàng)建的這個 book 目錄),這里需要注意的是權(quán)限部分,為了方便訪問可以給管理員以及訪客開啟「可讀寫」權(quán)限。
完成之后我們需要為該目錄開啟局域網(wǎng)內(nèi)的共享訪問,這里回到「控制面板」,然后在「文件服務(wù)」中找到 「SMB 服務(wù)」并勾選「啟動 SMB 服務(wù)」。然后在「高級設(shè)置」里面對最低以及最高的 SMB 版本進(jìn)行設(shè)置,并點(diǎn)擊「應(yīng)用」。
再回到當(dāng)前的 Windows 電腦中打開「網(wǎng)絡(luò)」,然后在共享的設(shè)備中查看是否有 NAS 這個設(shè)備,然后看一下里面是否有新建的這個書庫文件夾(如果提示需要驗(yàn)證輸入 NAS 的管理員的賬戶和密碼),如果可以在這個文件夾里新建或者刪除文件就表示創(chuàng)建成功。
接下來就是將原本保存在 PC 上的書庫目錄拷貝到新建的 NAS 共享文件夾下面,我這里在 book 目錄下方再創(chuàng)建了一個library目錄,然后將之前保存到本地電腦中的書庫全部拷貝進(jìn)去,需要注意是一定要把 metadata.db 這個文件一并拷貝進(jìn)去,也是書庫數(shù)據(jù)的關(guān)鍵。
接下來我們打開桌面端的 calibre 開始切換書庫,點(diǎn)擊工具欄中的「書庫」-「切換/創(chuàng)建書庫」,然后導(dǎo)航到網(wǎng)絡(luò)中 NAS 下對應(yīng)的 book 目錄并選擇library這個文件夾,并且勾選「使用當(dāng)前現(xiàn)有的書庫位置作為新的位置」并點(diǎn)擊確定,如果前面設(shè)置正常,你將會看到和之前本地書庫一樣的書籍列表,只不過這時候的書庫的位置被轉(zhuǎn)移到了局域網(wǎng)中的 NAS 上。
使用 calibre web 的 docker 鏡像構(gòu)建書庫數(shù)據(jù)庫
僅僅只是讓書庫放在 NAS 上通過 SMB 進(jìn)行目錄共享,也只能通過局域網(wǎng)中的桌面設(shè)備(Windows 電腦或者 Mac 電腦)進(jìn)行訪問。顯然我希望的是實(shí)現(xiàn)全終端的訪問(這當(dāng)然包括手機(jī)以及平板設(shè)備),而要想實(shí)現(xiàn)這個目標(biāo),就需要為 NAS 上的虛擬書庫生成為 OPDS 的目錄結(jié)構(gòu)。
OPDS 全稱為 Open Publication Distribution System,即開放出版物發(fā)行系統(tǒng),通過這個系統(tǒng)我們就可以通過 App 或者網(wǎng)頁瀏覽器來對虛擬書庫進(jìn)行管理和訪問,而不再需要通過文件目錄訪問的形式來管理你的書庫。而要想生成 OPDS,我們就需要使用基于 calibre 的 web 分享服務(wù),這里我選擇的依舊是我們熟悉的 「Calibre-web」,只不過這次選擇了一個新的 Docker 鏡像版本(其實(shí)是此前我派介紹的鏡像版本有點(diǎn)太老了)。
在下載鏡像之前,我們需要對目標(biāo)的文件目錄進(jìn)行權(quán)限上的修改,這里需要用到的除了之前我們存放虛擬書庫的 book 目錄之外,還需要一個存放配置文件的目錄,這里我在 docker 文件夾下創(chuàng)建了一個 calibre 目錄。
下面還是在 File station 中,選擇 book 目錄以及剛剛創(chuàng)建的 docker/calibre 并右擊屬性,在「權(quán)限」選項(xiàng)卡中選擇 「Everyone」用戶組并點(diǎn)擊「編輯」,選擇所有的權(quán)限并授予全部權(quán)限(全部控制),如果有 http 用戶組也可以以此類推進(jìn)行權(quán)限設(shè)置,這一步的設(shè)置主要是為了方便后續(xù)生成的應(yīng)用容器可以正常讀寫該目錄。
接下來打開群暉的 Docker ,在側(cè)欄中點(diǎn)擊注冊表并搜索 「Calibre-web」,并選擇搜索結(jié)果中出現(xiàn)的「linuxserver/calibre-web」這個鏡像,雙擊進(jìn)行下載并等待下載完畢。
在「映像」中找到雙擊剛剛下載的「linuxserver/calibre-web」,雙擊開始創(chuàng)建容器。
在設(shè)置頁面中點(diǎn)擊高級設(shè)置,在「卷-添加文件夾」中選擇書庫目錄(比我我的路徑是book/library),轉(zhuǎn)載路徑輸入/books,然后再添加一個配置文件路徑(比如我的是 docker/calibre),轉(zhuǎn)載路徑為 /config。
切換到端口設(shè)置選項(xiàng)卡,在本地端口上填入和容器端口一致的 8083 端口,完成之后選擇點(diǎn)擊「應(yīng)用」并啟動容器。
啟動后在瀏覽器中輸入http://你的 NAS ip:8083 進(jìn)入設(shè)置頁面,這里會要求你首先填入書庫的路徑,這里輸入 /books 后點(diǎn)擊 submit 完成設(shè)置,需要說明的是如果出現(xiàn)相關(guān)錯誤提示,可以在回到 File station 中檢查 books 文件夾是否給「Everyone」提供了「全部控制」權(quán)限。
然后你再訪問http://你的 NAS ip:8083,這時應(yīng)該會直接進(jìn)入到登錄頁面,在 Username 這里輸入 admin,在 Password 這里輸入 admin123 完成登錄,如果看到首頁上都是你收藏的書則表示 Calibre-web 已經(jīng)成功創(chuàng)建你的在線書庫了!
這里我們可以檢驗(yàn)下 OPDS 是否創(chuàng)建成功,在瀏覽器的地址欄輸入 http://你的 NAS ip:8083/opds 回車,如果彈出登錄頁面則表示目錄創(chuàng)建成功。
讓 NAS 上的數(shù)字書庫可以在公網(wǎng)訪問
顯然我們看電子書不可能僅僅只在家中局域網(wǎng)環(huán)境內(nèi),我們更希望書庫可以「隨時隨地」都可以被訪問,因此這里我們需要解決的就是公網(wǎng)訪問問題,這里除了使用 DDNS 之外,我選擇了更穩(wěn)定的 frp 內(nèi)網(wǎng)穿透。
而在 NAS 上創(chuàng)建 frp 內(nèi)網(wǎng)穿透服務(wù),一般用得比較多的是使用 Docker 鏡像,考慮靈活以及穩(wěn)定性上,我這里選擇通過計劃任務(wù)來實(shí)現(xiàn)。
首先在群暉的 docker 目錄下創(chuàng)建 frpc 文件夾,在 frp 的 GitHub 主頁上下載對應(yīng)版本的 frp 包(這里選擇的是 Linux amd64 位版本),然后完全解壓縮將 frpc 文件幾個 frpc.ini 文件拷貝到 frpc 文件夾中。
在群暉的 File station 打開 frpc 文件夾,使用文本編輯器打開并添加一段新的配置項(xiàng)目(如圖)并保存。
在打開「控制面板-計劃任務(wù)」,點(diǎn)擊「新增-計劃的任務(wù)-用戶定義的腳本」。
在創(chuàng)建任務(wù)選項(xiàng)卡輸入任務(wù)名稱,用戶賬號可以選擇 root(或者其他管理員賬號),然后再切換到「任務(wù)設(shè)置」中,在「用戶定義的腳本」中輸入:
nohup /volume1/docker/frpc/frpc -c /volume1/docker/frpc/frpc.ini &
在「計劃」中設(shè)定任務(wù)排期(隨便填寫)點(diǎn)擊保存。
回到「計劃任務(wù)」頁選中新建的任務(wù)并點(diǎn)擊「設(shè)置」,勾選「保存輸入結(jié)果」并將其保存到和 frp 相同的目錄并點(diǎn)擊確定。
最后在「計劃任務(wù)」頁中選中 frpc 任務(wù)并點(diǎn)擊運(yùn)行。這是再使用http://<映射的公網(wǎng) ip>:<映射的端口地址>訪問 calibre web,如果能顯示 calibre web 的登錄頁面即表示內(nèi)網(wǎng)穿透成功。
這樣我們就可以在非家中局域網(wǎng)的環(huán)境下,通過瀏覽器和各種應(yīng)用來訪問自己的在線書庫了。
在多個平臺訪問和管理私人書庫
現(xiàn)在,我的私人數(shù)字書庫已經(jīng)基本搭建完畢,可以通過瀏覽器在任何地方管理書庫,但我希望可以不僅僅只是通過瀏覽器來進(jìn)行遠(yuǎn)程管理和訪問,而希望即便是在公司的 PC 上也能管理家中的書庫,甚至可以直接在手機(jī)上打開書庫并下載書籍。
因此我需要解決的問題是如何在外網(wǎng)上安全訪問到家中群暉的文件目錄。
由于配置上的問題,最終我選擇的依舊是通過 SSH / sftp 方式來實(shí)現(xiàn)遠(yuǎn)程的登錄訪問,首先在群暉中打開「控制面板」-「終端機(jī)和 SNMP」,勾選「啟動 SSH 功能」并設(shè)置一個端口(最好不是 22)。