老婆是印象筆記的資深用戶,早在2016年就買了十年會員,當(dāng)時價格還比較優(yōu)惠,十年的會員費用也就幾百塊。會員現(xiàn)在還有兩年到期,對應(yīng)的高級賬戶現(xiàn)在的價格已經(jīng)到了14元/月,于是我開始尋找替代品。經(jīng)過一番搜索,鎖定了Joplin。
Joplin是一款開源的筆記應(yīng)用,支持同一賬戶多平臺的同步,包括Windows、macOS、Linux、Android和iOS,滿足了不同用戶的需求。他還支持Markdown格式,使得筆記排版更加靈活,同時支持插入圖片、附件等多種媒體類型,不斷更新的各種插件也能滿足各種個性化的需求。
在參考了什么值得買上的兩位大神的文章之后(文章1 文章2),我信心滿滿的準(zhǔn)備照貓畫虎,沒成想原本以為挺簡單的搭建過程折騰了好幾天(我太菜了),每一步都精準(zhǔn)的踩到坑里。所以這篇文章的步驟會寫得很詳細(xì),避免值友們繞路。
我的nas是威聯(lián)通的453Bmini,固件版本是5.1.7.2770,不同的設(shè)備和固件版本在設(shè)置上可能會有所區(qū)別。以我淺顯的理解,Joplin服務(wù)器的數(shù)據(jù)是存在另外一個數(shù)據(jù)庫里的,所以在nas上需要做的大概有3件事情:1. 安裝開源數(shù)據(jù)庫應(yīng)用程序PostgreSQL、2. 安裝Joplin Server、3. 設(shè)置反向代理。前兩個需要在docker中拉取應(yīng)用,后一個在nas控制臺設(shè)置。
拉取docker應(yīng)用
上一次在容器里安裝應(yīng)用大概是半年前,但這次按照之前的操作總是提示失敗。在網(wǎng)上搜索才知道6月初國內(nèi)就無法訪問dockerhub和所有的國內(nèi)鏡像站了。在網(wǎng)上了解到拉取docker應(yīng)用的兩種方法:一個是添加新的鏡像站,具體說明見這里;一個是在提取鏡像的時候在docker名稱欄開頭寫入dockerpull.com/,例如,要下載postgres和joplin兩個docker,可按照如下方法來提取鏡像:
在Container Station界面的右上角找到“瀏覽”按鈕,點擊這個按鈕右側(cè)的箭頭展開菜單,選擇“提取映像”
提取映像
在彈出的對話框中的“映像”一欄填入“dockerpull.com/joplin/server:latest”或“dockerpull.com/postgres:latest”來分別提取postgres和joplin server的映像,輸入后點擊“提取”按鈕等待下載完成。
提取joplin server映像
提取postgres映像
部署postgres數(shù)據(jù)庫容器
下載完畢后,在左側(cè)點擊“映像”,先來部署postgres數(shù)據(jù)庫,點擊postgres對應(yīng)的docker右側(cè)的三角箭頭按鈕:
部署postgres數(shù)據(jù)庫
在彈出的對話框中選擇“下一步”
創(chuàng)建容器
在“名稱”欄給這個docker起個名字,這里填入“postgres_joplin”,然后點擊“高級設(shè)置”
設(shè)置容器名稱
彈出高級設(shè)置對話框后,點擊左側(cè)“網(wǎng)絡(luò)”,在“主機(jī)”欄填入與容器端口相同的5432
網(wǎng)絡(luò)設(shè)置
點擊左側(cè)“環(huán)境”,點擊右上角“添加新變量”,這里需要添加4個環(huán)境變量:
變量:POSTGRES_DATABASE
值:joplin
變量:POSTGRES_USER
值:joplin
變量:POSTGRES_PASSWORD
值:joplin
變量:TZ
值:Asia/Shanghai
添加環(huán)境變量
點擊左側(cè)“存儲”,在這里設(shè)置數(shù)據(jù)庫存儲的位置,點擊右上角“添加卷”右側(cè)的箭頭,在展開的菜單中選擇“綁定裝在主機(jī)路徑”
設(shè)置存儲路徑1
點擊右側(cè)的文件夾圖標(biāo),選擇需要保存的路徑位置,然后把默認(rèn)值的容器路徑復(fù)制到新建的路徑中,最后刪除默認(rèn)的存儲映射
設(shè)置存儲路徑2
最后點擊“應(yīng)用”、下一步“”、“完成”,即完成了postgres容器的創(chuàng)建。
部署Joplin Server容器
與postgres相同,在Container Station中的左側(cè)點擊“映像”,找到之前下載的joplin server,點擊對應(yīng)右側(cè)的三角按鈕
部署joplin server
點擊“下一步”
創(chuàng)建joplin容器
輸入一個名稱,這里輸入“joplin”,然后點擊“高級設(shè)置”
設(shè)置容器名稱
點擊左側(cè)“網(wǎng)絡(luò)”,點擊“新發(fā)布端口”,“主機(jī)”和“容器”欄都填入22300
設(shè)置網(wǎng)絡(luò)
點擊左側(cè)“環(huán)境”,點擊右上角“添加新變量”,這里需要添加9個環(huán)境變量:
變量:APP_BASE_URL
值:https://你的域名:訪問端口
變量:APP_PORT
值:22300
變量:DB_CLIENT
值:pg
變量:POSTGRES_DATABASE
值:joplin
變量:POSTGRES_USER
值:joplin
變量:POSTGRES_PASSWORD
值:joplin
變量:POSTGRES_PORT
值:5432
變量:POSTGRES_HOST
值:nas的ip地址
變量:TZ
值:Asia/Shanghai
添加環(huán)境變量
最后點擊“應(yīng)用”、下一步“”、“完成”,即完成了joplin server容器的創(chuàng)建。
設(shè)置反向代理
前面設(shè)置的端口都是指容器端口,設(shè)置反向代理的作用是:當(dāng)從指定域名訪問nas的指定端口時,轉(zhuǎn)發(fā)到對應(yīng)的容器端口上,具體操作如下:
在“控制臺”——“網(wǎng)絡(luò)和文件服務(wù)”——“網(wǎng)絡(luò)訪問”中,找到“反向代理”標(biāo)簽,點擊“添加”
設(shè)置反向代理
隨便取一個規(guī)則名稱,自己能分辨就好,這里填入“joplinserver”,來源部分的協(xié)議選擇https,域名寫自己的域名,注意不要“https://”部分,只寫www.xxx.com即可,端口號寫你從外網(wǎng)連接joplin server時的端口號
反向代理規(guī)則1
目標(biāo)協(xié)議默認(rèn)http,主機(jī)名寫“l(fā)ocalhost”,端口號填之前設(shè)置的joplin server端口號:22300
反向代理規(guī)則2
最后點擊“應(yīng)用”完成反向代理規(guī)則的添加。
在路由器或者光貓上設(shè)置好端口轉(zhuǎn)發(fā),就可以通過外網(wǎng)連接joplin服務(wù)器了。首次登陸默認(rèn)賬號密碼分別為:admin@localhost和admin,登錄后按照提示修改密碼。
- 如果joplin server的日志提示無法連接到database,先停止joplin server和postgres,然后先啟動postgres,等數(shù)據(jù)庫啟動完畢后再啟動joplin server。
- 如果joplin server提示time drift too large,可在“控制臺”——“常規(guī)設(shè)置”——“時間”中將默認(rèn)的服務(wù)器改為國內(nèi)的時間服務(wù)器,然后點擊“更新”、“應(yīng)用”即可,例如:ntp.aliyun.com(阿里云時間服務(wù)器)、ntp.tencent.com(騰訊云時間服務(wù)器)等。
通過客戶端連接Joplin
PC、Mac和安卓手機(jī)端的應(yīng)用可以在這里下載,iOS端在AppStore中搜索下載。這里以PC端為例,其他類型的客戶端設(shè)置相同。
首次運行PC端時會彈出同步向?qū)?,這里選擇底部的自托管選項。如果不小心關(guān)閉了這個窗口也不用擔(dān)心,在軟件頂部的“工具”——“選項”——“同步”中也可以進(jìn)入同步設(shè)置頁面。
點擊這里選擇自托管
在彈出的同步設(shè)置中,同步目標(biāo)選擇“Joplin服務(wù)器”,依次填入服務(wù)器地址(含端口)、登錄賬戶的郵箱、密碼,點擊“應(yīng)用”即可完成同步設(shè)置。
PC端同步設(shè)置
以上就是使用postgres作為數(shù)據(jù)庫的自托管joplin服務(wù)器設(shè)置的全部過程,希望能對計劃搭建個人云筆記的值友們有所幫助。
存在的問題
- 在PC、安卓、iOS端同步時,如果在PC端建立了一個筆記,安卓和iOS端可以同步看到該筆記,但如果安卓端刪除該筆記到回收站,則PC和iOS端不會出現(xiàn)刪除動作,而在清空回收站后才會同步刪除,反之亦然。
- 在iOS端刪除空筆記本時(即筆記本中沒有筆記),會直接徹底刪除而不會出現(xiàn)在回收站中。安卓和PC端會先到回收站,清空回收站時才徹底刪除。
.
.
- 希望有大神可以幫忙解決上面的問題
作者聲明本文無利益相關(guān),歡迎值友理性交流,和諧討論~
,