最近一直想换一个云笔记,所以前段时间趁着假期折腾了一顿,弄得很头疼。
云笔记我想大家应该都用吧,这也算是一个刚需软件了。
聊到自己对云笔记的核心刚需,其实现在对于我个人来说,像功能性和颜值方面的要求真心不高,只要它支持Markdown书写,支持搜索和文件夹功能就行。我也不需要太花里胡哨的功能,现在反倒觉得越简单越好。
不过数据层面的几个问题往往会更令人头疼。
第一个就是数据的安全性。毕竟数据放在别人平台里,安全性和可控性始终是一个问题,另外还有一些比较隐私的个人东西也不太好往上面记录。
第二个就是数据的备份和迁移。每当想换云笔记时这个痛点就显露出来了,数据怎么高效地备份和迁移是一件比较头疼的事情。这时候总在期望,如果数据可以一键打包备份,换个平台还能一键导入就好了。
当然,还有一个就是收费问题。有些云笔记在一些关键刚需功能上是收费的,比如放图片,比如容量和空间的限制等等。当然这一点没啥可说的,看自己意愿了。
网上关于云笔记选用的讨论看过很多,但还是找不到最心动的,所以这一次还是准备借助于开源项目自己用服务器来搭一个吧。
一次性把这些痛点全解决了,部署在自己手里,完全免费,数据也全部在自己手里,安全可控,支持一键备份迁移,再也不怕换服务器和换平台了。
接下来就记录一下搭建过程,非常简单,5分钟即可搞定,大家手上的服务器也可以用起来了!
首先就是准备一台服务器,可以直接使用本地机器,当然也可以选用云服务器,这里准备的是一台Linux云主机。
笔记项目这一次使用的是去年逛GitHub下载过的代码,今天又被我翻出来了。链接这里放不了,需要代码和操作文档的朋友转发本文后私信【610】即可无偿获取
个人觉得作为个人云笔记来说是合格的,支持跨平台,支持部署到服务器,并且数据方便可控,常见的功能性需求也基本能够满足。
服务器准备好之后,接下来要在上面安装两个组件。
第一个是MongoDB数据库。这没什么好说的,它是一个广泛使用的文档数据库,我们后续的笔记数据就是用它来存的。
第二个就是Nginx服务器。这个使用得也很广泛,它是一个Web服务器软件,之前也演示过很多次,对外发布应用时要用。
至于安装方式就有多种选择了。
一种方式就是手动在服务器命令行里按步骤进行安装,这个之前这里还专门写过一个《服务器编程环境安装+软件设施部署》PDF手册,需要的同学转发本文后私信【610】即可,过程并不复杂,还可以熟悉一下Linux环境下的操作。
另外一种方式是,如果服务器上有宝塔面板,则可以在宝塔面板的「软件商店」里直接搜索这个两个组件,然后点击进行一键安装即可。
环境准备妥当之后,接下来开始正式部署笔记。
这里下载的是Linux版本。可以先下载到本地然后上传服务器,也可以在服务器命令行里直接通过wget命令来获取。
下载完成之后,执行一行命令将其解压即可。
tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz
这里是解压到了/home/www目录,解压完成会生成一个笔记项目的目录。
这一步我们要将云笔记的初始数据给导入到MongoDB数据库中。
我们进入到刚解压出来的云笔记目录里,其中会有一个mongodb_backup文件夹。
这里面存放的就是云笔记的初始备份数据。
进入文件夹之后,执行一行命令,就能把它们导入到MongoDB数据库中。
mongorestore -h localhost -d leanote --dir leanote_install_data/
初始数据导入完成之后。
接下来我们进入到笔记文件夹的bin目录,来启动项目即可。
执行一行命令,让项目在后台启动。
nohup bash run.sh &
这时候我们就可以在浏览器里通过访问服务器IP+9000端口,就能看到自己部署的云笔记了。
注意:这里要预先在服务器控制台里放通9000端口。
然后选择登录云笔记即可,初始用户名为admin,密码为abc123。
登进去之后,记得在个人中心里先自行修改一下用户名和密码即可。
这样笔记服务就已经在服务器上部署起来了,接下来对外发布一下即可。
这里我们是通过Nginx Web服务器来发布笔记应用。
我们直接修改nginx.conf配置文件,这里主要就两个配置,这在之前文章里也配置过很多次。
首先是定义一个upstream,指向上一步骤中笔记服务的实际地址,也就是9000端口地址的这个服务。
- upstream note {
- server 127.0.0.1:9000;
- }
然后再在location配置里指向该upstream就可以了。
- location / {
- proxy_pass http://note;
- proxy_set_header HOST $host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
然后重启Nginx后,这时候在浏览器里只需要输入服务器IP地址,即可访问云笔记了,而不再需要加9000端口了。
出于篇幅考虑,这里也来简单体验一下这个云笔记。
Markdown书写
常见的md语法比如:一级标题、二级标题、三级标题、分隔符、图片、代码块、数学公式、表格、流程图、待办事项、有序列表、无序列表、引用、脚注都支持,整体还可以。
多层文件夹(子笔记)
自定义标签
支持附件
如果有需要,可以自行文件上传的大小限制
全平台客户端
这个客户端可以连到自己的自建笔记服务,所以还是挺好的。
最后再来聊一下笔记数据的备份和迁移问题,这个尤为重要,毕竟折腾半天主要就是期望有这个功能。
因为数据现在完全在自己手上,位于自己服务器上的MongoDB数据库里。
所以这样就只需要执行一行mongodump命令,就可以把数据备份下来。
mongodump -h localhost -d leanote -o <dir>
以后如果想换服务器或者换平台,直接把数据迁移过去,然后再执行一下mongorestore即可
mongorestore -h localhost -d leanote --dir <dir>
这样即可恢复和重建数据,还是比较方便的。
最后还有一个需要注意的是,因为这里的MongoDB初始是没有用户的,所以建议还是给MongoDB添加一个用户和密码,然后在笔记的配置文件里修改一下对应MongoDB的用户配置,这样就行了。
这样一来,文章开头提到的几个关于笔记使用的痛点问题基本就都能解决了,所以有兴趣的小伙伴可以尝试一下,手上的服务器也可以用起来。