老婆是印象笔记的资深用户,早在2016年就买了十年会员,当时价格还比较优惠,十年的会员费用也就几百块。会员现在还有两年到期,对应的高级账户现在的价格已经到了14元/月,于是我开始寻找替代品。经过一番搜索,锁定了Joplin。
Joplin是一款开源的笔记应用,支持同一账户多平台的同步,包括Windows、macOS、Linux、Android和iOS,满足了不同用户的需求。他还支持Markdown格式,使得笔记排版更加灵活,同时支持插入图片、附件等多种媒体类型,不断更新的各种插件也能满足各种个性化的需求。
在参考了什么值得买上的两位大神的文章之后(文章1 文章2),我信心满满的准备照猫画虎,没成想原本以为挺简单的搭建过程折腾了好几天(我太菜了),每一步都精准的踩到坑里。所以这篇文章的步骤会写得很详细,避免值友们绕路。
我的nas是威联通的453Bmini,固件版本是5.1.7.2770,不同的设备和固件版本在设置上可能会有所区别。以我浅显的理解,Joplin服务器的数据是存在另外一个数据库里的,所以在nas上需要做的大概有3件事情:1. 安装开源数据库应用程序PostgreSQL、2. 安装Joplin Server、3. 设置反向代理。前两个需要在docker中拉取应用,后一个在nas控制台设置。
拉取docker应用
上一次在容器里安装应用大概是半年前,但这次按照之前的操作总是提示失败。在网上搜索才知道6月初国内就无法访问dockerhub和所有的国内镜像站了。在网上了解到拉取docker应用的两种方法:一个是添加新的镜像站,具体说明见这里;一个是在提取镜像的时候在docker名称栏开头写入dockerpull.com/,例如,要下载postgres和joplin两个docker,可按照如下方法来提取镜像:
在Container Station界面的右上角找到“浏览”按钮,点击这个按钮右侧的箭头展开菜单,选择“提取映像”
提取映像
在弹出的对话框中的“映像”一栏填入“dockerpull.com/joplin/server:latest”或“dockerpull.com/postgres:latest”来分别提取postgres和joplin server的映像,输入后点击“提取”按钮等待下载完成。
提取joplin server映像
提取postgres映像
部署postgres数据库容器
下载完毕后,在左侧点击“映像”,先来部署postgres数据库,点击postgres对应的docker右侧的三角箭头按钮:
部署postgres数据库
在弹出的对话框中选择“下一步”
创建容器
在“名称”栏给这个docker起个名字,这里填入“postgres_joplin”,然后点击“高级设置”
设置容器名称
弹出高级设置对话框后,点击左侧“网络”,在“主机”栏填入与容器端口相同的5432
网络设置
点击左侧“环境”,点击右上角“添加新变量”,这里需要添加4个环境变量:
变量:POSTGRES_DATABASE
值:joplin
变量:POSTGRES_USER
值:joplin
变量:POSTGRES_PASSWORD
值:joplin
变量:TZ
值:Asia/Shanghai
添加环境变量
点击左侧“存储”,在这里设置数据库存储的位置,点击右上角“添加卷”右侧的箭头,在展开的菜单中选择“绑定装在主机路径”
设置存储路径1
点击右侧的文件夹图标,选择需要保存的路径位置,然后把默认值的容器路径复制到新建的路径中,最后删除默认的存储映射
设置存储路径2
最后点击“应用”、下一步“”、“完成”,即完成了postgres容器的创建。
部署Joplin Server容器
与postgres相同,在Container Station中的左侧点击“映像”,找到之前下载的joplin server,点击对应右侧的三角按钮
部署joplin server
点击“下一步”
创建joplin容器
输入一个名称,这里输入“joplin”,然后点击“高级设置”
设置容器名称
点击左侧“网络”,点击“新发布端口”,“主机”和“容器”栏都填入22300
设置网络
点击左侧“环境”,点击右上角“添加新变量”,这里需要添加9个环境变量:
变量: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
添加环境变量
最后点击“应用”、下一步“”、“完成”,即完成了joplin server容器的创建。
设置反向代理
前面设置的端口都是指容器端口,设置反向代理的作用是:当从指定域名访问nas的指定端口时,转发到对应的容器端口上,具体操作如下:
在“控制台”——“网络和文件服务”——“网络访问”中,找到“反向代理”标签,点击“添加”
设置反向代理
随便取一个规则名称,自己能分辨就好,这里填入“joplinserver”,来源部分的协议选择https,域名写自己的域名,注意不要“https://”部分,只写www.xxx.com即可,端口号写你从外网连接joplin server时的端口号
反向代理规则1
目标协议默认http,主机名写“localhost”,端口号填之前设置的joplin server端口号:22300
反向代理规则2
最后点击“应用”完成反向代理规则的添加。
在路由器或者光猫上设置好端口转发,就可以通过外网连接joplin服务器了。首次登陆默认账号密码分别为:admin@localhost和admin,登录后按照提示修改密码。
- 如果joplin server的日志提示无法连接到database,先停止joplin server和postgres,然后先启动postgres,等数据库启动完毕后再启动joplin server。
- 如果joplin server提示time drift too large,可在“控制台”——“常规设置”——“时间”中将默认的服务器改为国内的时间服务器,然后点击“更新”、“应用”即可,例如:ntp.aliyun.com(阿里云时间服务器)、ntp.tencent.com(腾讯云时间服务器)等。
通过客户端连接Joplin
PC、Mac和安卓手机端的应用可以在这里下载,iOS端在AppStore中搜索下载。这里以PC端为例,其他类型的客户端设置相同。
首次运行PC端时会弹出同步向导,这里选择底部的自托管选项。如果不小心关闭了这个窗口也不用担心,在软件顶部的“工具”——“选项”——“同步”中也可以进入同步设置页面。
点击这里选择自托管
在弹出的同步设置中,同步目标选择“Joplin服务器”,依次填入服务器地址(含端口)、登录账户的邮箱、密码,点击“应用”即可完成同步设置。
PC端同步设置
以上就是使用postgres作为数据库的自托管joplin服务器设置的全部过程,希望能对计划搭建个人云笔记的值友们有所帮助。
存在的问题
- 在PC、安卓、iOS端同步时,如果在PC端建立了一个笔记,安卓和iOS端可以同步看到该笔记,但如果安卓端删除该笔记到回收站,则PC和iOS端不会出现删除动作,而在清空回收站后才会同步删除,反之亦然。
- 在iOS端删除空笔记本时(即笔记本中没有笔记),会直接彻底删除而不会出现在回收站中。安卓和PC端会先到回收站,清空回收站时才彻底删除。
.
.
- 希望有大神可以帮忙解决上面的问题
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
,