ubuntu 下搭建 Leanote 笔记服务

leanote,蚂蚁笔记,有极客范的云笔记!前所未有的文档体验,近乎完美的平台覆盖,支持团队协同,企业级私有云。

Leanote 还是不错的,支持 Markdown 的笔记软件,还有 Linux 客户端。我在 vps 上自建了一个,采用二进制安装,安装方法大致参考 leanote binary installation on Mac and Linux (En)

搭建步骤

下载、解压

依照官方指南,从 http://leanote.org/#download 下载、解压二进制文件,过程略。

安装 mongodb 并导入数据

在 ubuntu 上安装 mongodb 没有按照 leanote 文档的做法,而是采用软件包安装,参考:Install MongoDB Community Edition on Ubuntu

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

导入方法是一样的:
mongorestore -h localhost -d leanote --dir PATH_TO_LEANOTE/mongodb_backup/leanote_install_data/

修改配置并试运行

conf/app.conf 里面修改下 app.secret,64 位字符串,即可试执行启动脚本:sh bin/run.sh,leanote 就正常运行了,在浏览器内输入ip + 端口(如 http://ip:9000),应当可以正常访问 Leanote 服务,可通过默认账号 admin/abc123 登录。

nginx 配置

nginx 反向代理与启用 https

利用 nginx 反向代理可免端口(通过 http 的 80 或 https 的 443)访问。我是先配置好 http 访问,再通过 certbot 获取letsencrypt 证书并配置 https 。
原 http 反向代理配置:

upstream  leanote  {
    server   localhost:9000;
}
server
{
    listen 80; 
    server_name  note.s2ex.com;
    location / {
        proxy_pass        http://leanote;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

安装 python-certbot-nginx

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx 

之后运行 sudo certbot --nginx 可自动识别 nginx 配置、获取证书并配置 https,前提是域名要预先解析到 VPS 的 ip。
配置好 https 后,还需要修改 conf/app.conf 内的 site.url 为 https 地址,否则上传图片或附件等会出错。

账号修改

除了通过 /admin/index 页面修改设置以外,还可以通过操作 mongo 数据库的方式。

删除 demo 账号

默认有个 demo 账号,可以通过操作 mongo 数据库删除:

$ mongo
> use leanote
> db.users.remove({"Username": "demo"})

修改 admin 账号

> use leanote
> db.users.updateOne({"Username": "admin"}, {$set: {"Email": "xxx@ooo.com"}})
> db.users.updateOne({"Username": "admin"}, {$set: {"Username": "whoisyourdaddy"}})

管理账号用户名修改完还需要改 conf/app.conf 里面的 adminUsername

服务自启动

一个简单的 leanote 服务脚本 sudo vi /etc/systemd/system/leanote.service

[Unit]
Description=Leanote, Not Just A Notepad!

[Service]
User=root
ExecStart=/home/ubuntu/leanote/bin/run.sh

[Install]
WantedBy=multi-user.target

之后

sudo systemctl enable leanote
sudo systemctl start leanote

大功告成!

参考资料