之前因为网络问题,onenote和evernote相继没法用,所以就去了解了一下有哪些靠谱的自建云笔记,发现leanote相当不错,搭建了一个,记录一下安装配置过程。
leanote服务的安装还是很简单的,官方文档也相当详尽,按照文档来基本就没什么问题。这里要吐槽一下官方中文文档,严谨程度较英文文档差了好多,不说描述,代码里都有一些小错误,简直不能忍,希望官方尽快校对一下中文文档吧。如果有想自建leanote的小伙伴,尽量看官方英文文档吧。
这里附上官方英文文档地址:https://github.com/leanote/leanote/wiki/leanote-binary-installation-on-Mac-and-Linux-(En)
leanote服务端支持Linux/mac和win,不过官方说win未经完全测试,我也没条件试,就不予置评了。我这次的安装依旧是阿里云linux服务器,CentOs6。
首先在官方提供的地址上下载二进制包,其实也提供源码包,喜欢折腾的小伙伴们可以下源码包来装,魔改一番什么的,我比较懒就直接二进制装了。
wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz/download
下载之后找个风水宝地,解压出来,然后放一边,去搞数据库。leanote的数据库是用的MongoDB,对我来说要是支持MySQL就好了,毕竟这台机器上有个现成的MySQL。不过新装一个MongoDB也不是很麻烦,毕竟nosql,安装配置啥的都简单。再找个风水宝地,准备放MongoDB和数据目录data,准备好以后,就是下载MongoDB,解压,启动,一气呵成:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.3.tgz
tar -zxf mongodb-linux-x86_64-rhel62-3.6.3.tgz
mongod --dbpath /root/leanote/data &
为了方便,可以将MongoDB的安装位置加到系统变量里,在/etc/profile中的PATH上加上就好,这样可以直接使用mongo等命令,不用每次都带路径。
数据库准备好后,解压leanote,把安装包里带的初始数据导入数据库里:
mongorestore -h localhost -d leanote --dir /path/to/leanote/mongodb_backup/leanote_install_data/
导入完成后,在mongo里show dbs,可以看到多了一个leanote的数据库,大小不是零就ok。我这台虚机配置比较低,导入的过程颇为费劲,重复执行了好多次才算导入完成。导入完成后的命令行会输出一个finish,没看见的话就多执行几次吧。。。还是有个牛B的机器好。
数据导入好了就可以给数据库配置一个用户名密码了。MongoDB默认是没有认证的,这样直接对外服务,总归是有风险的。MongoDB加用户也不复杂,mongo进入数据库,use leanote先切换到目标库,然后执行:
db.createUser({user: 'USERNAME',pwd: 'PASSWORD',roles:[{role: 'dbOwner', db: 'leanote'}]});
配置好密码后再登录MongoDB就需要认证了,有两种方式,第一种方式就和MySQL差不多:
mongo --port 27017 -u "USERNAME" -p "PASSWORD" --authenticationDatabase "DBNAME"
第二种方式就是先通过use切换到数据库里,再用命令认证:
db.auth("USERNAME", "PASSWORD")
配置好密码后重启一下数据库,就ok了:
mongod --dbpath /path/to/leanote/data --auth &
注意MongoDB启动的时候默认是前台启动,这样在退出终端后数据库就退了,这绝对不能忍,必须后台启动。后台启动命令也简单,加个fork项,再指定下日志写到哪就好了。
mongod --dbpath /path/to/leanote/data --fork --logpath=/path/to/mongodb/log/mongodb.log
OR
mongod --dbpath=/root/leanote/data --fork --logpath=/root/leanote/mongodb/log/mongodb.log --logappend &
接下来配置leanote。leanote的配置主要就是配置conf/app.conf文件。需要修改的部分主要是端口、站点地址、数据库连接配置。重点部分如下:
http.addr=0.0.0.0 # listen on all ip addresses
http.port=9000 #默认是9000端口,如果这个端口被占用了,就在这修改,记得一起修改site.url里的端口信息。
site.url=https://leanote.example.com:9000 #站点地址即使用域名,后边的端口号也要加上。
# admin username
adminUsername=admin #这是初始用户,用户名admin,密码abc123。
# mongdb
db.host=127.0.0.1
db.port=27017
db.dbname=leanote # required
db.username=USERNAME # if not exists, please leave it blank
db.password=PASSWORD # if not exists, please leave it blank
# You Must Change It !! About Security!!
app.secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaa #这个地方官方文档强调了一下,为了安全性必须要修改,随意修改即可,保证字符串长度不变。
这步配置结束之后就可以启动服务了:
bash /path/to/leanote/bin/run.sh
启动以后,就可以到浏览器里使用了。我在这里和seafile服务一样,用nginx做了反向代理,nginx配置如下:
server {
listen 80;
server_name leanote.example.com;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
rewrite ^ https://$http_host$request_uri? permanent;
}
server_tokens off;
}
server {
listen 443;
ssl on;
ssl_certificate leanote.crt;
ssl_certificate_key leanote.key;
server_name leanote.gzj1000xp.top;
server_tokens off;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
client_max_body_size 0;
access_log logs/leanote.access.log;
error_log logs/leanote.error.log;
}
}
我这里使用了https,这也是官方文档推荐的,毕竟全站https是大趋势。证书依旧使用阿里云上的免费证书。
这样一来leanote服务就搭建好了,官网上提供桌面、ios和安卓端的程序下载,从此告别畸形网络环境带来的痛苦,痛快记。