自建极客范的云笔记–蚂蚁笔记Leanote
自建极客范的云笔记–蚂蚁笔记Leanote
GitHub地址:https://github.com/leanote/leanote
- 1. 1. 介绍
- 2. 2. 为什么我们要创建Leanote?
- 3. 3. 获取Leanote
- 4. no reachable server
- 5. 安装Leanote后运行出错
- 6. Leanote运行成功, 但不能登录
- 7. 修改Leanote运行端口
- 8. 如何绑定域名?
- 9. 为mongodb数据库添加用户
- 10. 为Leanote指定超级管理员帐户(admin用户)
- 11. 为Leanote配置https
- 12. Import of github.com/revel/revel/modules/testrunner failed
- 13. 开发版如何更新leanote?
- 14. 二进制版如何更新leanote?
- 15. 为什么需要 site.url
- 16. 客户端不能同步图片
- 17. 导出PDF配置 wkhtmltopdf
- 18. 不能通过IP访问
1. 介绍
Leanote, 不只是笔记!
特性
- 高效笔记:Leanote 有易操作的界面, 包含一款富文本编辑器和Markdown编辑器,让您的笔记记录更轻松和高效。对高阶用户,我们还提供
Vim
和Emacs
编辑模式,助推你的写作速度更上层楼。 - 知识管理: Leanote 灵活而强大的“笔记本-笔记-标签”系统,让它成为你个人知识管理的利器。
- 分享: 你可以通过Leanote同好友分享知识、想法和经历, 邀请好友加入你的笔记簿,通过云端交流信息。
- 协作: Leanote协助你与同事之间相互协作,激荡新思路,随时随地头脑风暴。
- 博客: Leanote也可以作为你的个人博客, 把你的知识传播的更远!
其它特性
- 支持Markdown编辑
- 写作模式
Vim
及Emacs
编辑模式- 支持PDF导出
- 支持批量操作
- 博客自定义主题, 实现高度定制化
2. 为什么我们要创建Leanote?
我们都曾是Evernote
的忠实粉丝, 一直以来Evernote
都是我们日常知识管理的有效工具。于是我们决定重新创造一款工具,提供Evernote
所能提供的功能,同时弥补Evernote
的不足,比如:
- 功能更强的文本编辑器:
Evernote
的编辑器不能满足我们的需求, 不能实现文档导航、不能贴代码(格式会乱掉, 作为程序员, 代码是我们的基本需求啊), 图片不能缩放等。 Evernote
不支持所有人都喜爱的markdown语法,于是我们为Leanote配备了一款可以实时渲染的markdown编辑器。- 如果你是一名开发者,觉得手指怀念
Vim
或Emacs
了,那么我们还提供给你Vim
和Emacs
写作模式,配合markdown的格式编辑,写作的时候再也不用去碰鼠标了。 - 知识积累和知识分享同样重要,因此大家都有自己的笔记账号和社交账号。但为什么这两者不能合二为一呢? Leanote 做到了将二者无缝衔接。
- 一套完整的、全平台覆盖的软件套装,包括了web、桌面、安卓、IOS设备,而且全部开源!
- 还有…
3. 获取Leanote
Leanote云笔记产品包括: Leanote Web & Server(即本仓库), 桌面客户端, IOS, android. 4端全部开源!
如果想试用我们的产品,欢迎在 https://leanote.com 上注册, Leanote团队为你提供稳定可靠的服务。 担心服务厂商如何处理你的个人数据吗?你可以下载Leanote安装在自己的服务器上, 通过Leanote客户端连接与自建服务同步数据。
这里详细整理了Leanote二进版和Leanote开发版的安装教程, 请移步至:
- Leanote二进制详细安装教程:
- Leanote源码详细安装教程:
以下为常见问题处理方式:
no reachable server
请确保数据库是否启动, 如果确定已启动 可以 尝试将 conf/app.conf db.host=localhost
改为db.host=127.0.0.1
修改后请重新启动Leanote.
安装Leanote后运行出错
如果出现以下问题:
Go to /@tests to run the tests.
panic: auth fails
goroutine 1 [running]:
github.com/leanote/leanote/app/db.Init()
/home/life/gopackage1/src/github.com/leanote/leanote/app/db/Mgo.go:64 +0x356
Leanote运行出错90%的原因是数据库的问题, 请检查:
- 数据库是否启动了?
- 如果数据库是以auth方式启动的, 请检查conf/app.conf是否配置了正确的数据库用户名和密码
注意, 默认的conf/app.conf 数据库配置如下:
# mongdb
db.host=localhost
db.port=27017
db.dbname=leanote # required
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
# or you can set the mongdb url for more complex needs the format is:
# mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
# db.url=mongodb://root:root123@localhost:27017/leanote
db.urlEnv=${MONGODB_URL} # set url from env
即数据库名为leanote, 用户名和密码为空, 请检查是否正确.
Leanote运行成功, 但不能登录
原因: 数据库已停止运行, 请重新启动数据库和Leanote.
如果数据库在运行, 请重新启动Leanote.
修改Leanote运行端口
比如想以8080端口启动.
修改conf/app.conf:
http.port=8080
site.url=http://localhost:8080
请重启Leanote, 使用http://localhost:8080访问.
如何绑定域名?
比如想绑定域名a.com到你运行Leanote服务器, 你需要将leanote以80端口运行, 请修改conf/app.conf的如下配置:
http.port=80
site.url=http://a.com
然后启动Leanote. 当然你还需要将a.com绑定ip到Leanote服务器.
如果服务器上已有其它程序运行了80端口, 怎么办呢? 请google或百度下 “使用nginx分发请求到不同端口".
为mongodb数据库添加用户
像mysql一样有root用户, mongodb初始是没有用户的, 这样很不安全, 所以要为leanote数据库新建一个用户来连接leanote数据库(注意, 并不是为leanote的表users里新建用户, 而是新建一个连接leanote数据库的用户, 类似mysql的root用户).
mognodb v2与v3创建用户命令有所不同
mongodb v2 创建用户如下:
# 首先切换到leanote数据库下
> use leanote;
# 添加一个用户root, 密码是abc123
> db.addUser("root", "abc123");
{
"_id" : ObjectId("53688d1950cc1813efb9564c"),
"user" : "root",
"readOnly" : false,
"pwd" : "e014bfea4a9c3c27ab34e50bd1ef0955"
}
# 测试下是否正确
> db.auth("root", "abc123");
1 # 返回1表示正确
mongodb v3 创建用户如下:
# 首先切换到leanote数据库下
> use leanote;
# 添加一个用户root, 密码是abc123
> db.createUser({
user: 'root',
pwd: 'abc123',
roles: [{role: 'dbOwner', db: 'leanote'}]
});
# 测试下是否正确
> db.auth("root", "abc123");
1 # 返回1表示正确
用户添加好后重新运行下mongodb, 并开启权限验证. 在mongod的终端按ctrl+c即可退出mongodb.
启动mongodb:
$> mongod --dbpath /home/user1/data --auth
还要修改配置文件 : 修改 leanote/conf/app.conf:
db.host=localhost
db.port=27017
db.dbname=leanote # required
db.username=root # if not exists, please leave blank
db.password=abc123 # if not exists, please leave blank
为Leanote指定超级管理员帐户(admin用户)
Leanote默认超级管理员为admin, 且一旦不小心修改了username则不能改回. 此时可修改配置文件app.conf, 比如指定用户life为超级管理员, 修改或/添加一行:
adminUsername=life
为Leanote配置https
1. 生成SSL证书
可以在网上买一个, 或者自己做一个. 这里有一个shell脚本可以自动生成证书: (cert.sh)
#!/bin/sh
# create self-signed server certificate:
read -p "Enter your domain [www.example.com]: " DOMAIN
echo "Create server key..."
openssl genrsa -des3 -out $DOMAIN.key 1024
echo "Create server certificate signing request..."
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
echo "Remove password..."
mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key
echo "Sign SSL certificate..."
openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
假设得到了两个文件: a.com.crt
, a.com.key
2. 配置Nginx
假设Leanote运行的端口是9000, 域名为a.com, 那么nginx.conf可以配置如下:
# 本配置只有http部分, 不全
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream a.com {
server localhost:9000;
}
# http
server
{
listen 80;
server_name a.com;
# 强制https
# 如果不需要, 请注释这一行rewrite
rewrite ^/(.*) https://jp_linode2.com/$1 permanent;
location / {
proxy_pass http://a.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# https
server
{
listen 443 ssl;
server_name a.com;
ssl_certificate /root/a.com.crt; # 修改路径, 到a.com.crt, 下同
ssl_certificate_key /root/a.com.key;
location / {
proxy_pass http://a.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Import of github.com/revel/revel/modules/testrunner failed
1.0版之前(beta版)会遇到这个问题, 1.0采用revel-0.12, 所以不会遇到这个问题.
Failed to load module. Import of github.com/revel/revel/modules/testrunner failed: cannot find package "github.com/revel/revel/modules/testrunner" in any of:
/Users/life/app/go1.4/src/github.com/revel/revel/modules/testrunner (from $GOROOT)
/Users/life/Documents/Go/package_base/src/github.com/revel/revel/modules/testrunner (from $GOPATH)
revel 0.12 版配置不一样, 请修改app.conf
module.static=github.com/revel/modules/static
module.testrunner=github.com/revel/modules/testrunner
开发版如何更新leanote?
可以使用git pull得到leanote上最新版本, 如果你已修改了leanote, 可以先fetch(推荐使用fetch的方式)最新到本地, 再与本地的合并. 如:
git fetch origin master:tmp # 得到远程最新版本, 别名为tmp
git diff tmp # 查看tmp与本地的不同
git merge tmp # 合并到本地
如果不能用git方式同步源码, 请下载 https://github.com/leanote/leanote
- 请先备份leanote之前的目录, 以防万一
- 将下载好的替换之前的leanote
- 将之前版本下的
- /public/upload/ 目录
- /files/ 目录
- /conf/app.conf 移到新版下相应位置.
重启Leanote.
如果运行有问题, 如 “cannot find package “github.com/PuerkitoBio/goquery" in any of:…" 类似的信息, 原因是Leanote增加了新的依赖, 此时可以使用go get命令下载新包, 如下载"github.com/PuerkitoBio/goquery"
go get github.com/PuerkitoBio/goquery
或下载依赖包与源码全集: https://github.com/leanote/leanote-all
二进制版如何更新leanote?
请下载最新的leanote二进制版, 将之前版本下的
- /public/upload/ 目录
- /files/ 目录
- /conf/app.conf
移到新版下相应位置.
在新版下运行leanote.
为什么需要 site.url
site.url是外网可访问的域名, 比如你可以配置为http://a.com, 但在运行leanote可以设端口为9000, 再通过Nginx转发到9000. 如果外网地址是80端口, 请不要填写http://a.com:80, 而只要为http://a.com即可!
site.url用于生成笔记内的图片/附件路径.
若使用nginx转发到https方式部署leanote,site.url需要配置成https://a.com ;否则在博客页面输出的css和js是以http链接形式展现在html中,高版本浏览器比如firefox会直接block掉这部分内容,从而页面显示不正常。更多信息请查看https://github.com/leanote/leanote/issues/228
客户端不能同步图片
请确保conf/app.conf的site.url
和在客户端登录时填写的自建服务地址相同!
导出PDF配置 wkhtmltopdf
Leanote的PDF导出使用了wkhtmltopdf, 所以需要先安装wkhtmltopdf, 然后以管理员身份登录Leanote管理后台配置wkhtmltopdf路径.
下文讲解如何安装wkhtmltopdf.
源码编译安装
源码编译安装不会出现依赖的问题,wkhtmltopdf提供的编译脚本已经包含了相关依赖库的下载和安装过程,具体编译请查看wkhtmltopdf的源码包中的install.md文件。
二进制版本wkhtmltopdf安装 [推荐]
下载wkhtmltopdf,选择对应的版本,下载下来后通过rpm -ivh命令进行安装。
然后就会看到缺少一些依赖,所以要安装一些依赖库。
安装wkhtmltopdf的依赖包:
yum install -y fontconfig libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi libpng
安装完后再通过rpm -ivh命令安装wkhtmltopdf。
测试wkhtmltopdf
使用命令wkhtmltopdf http://google.com google.pdf,若没有问题则安装ok。若提示缺少库无法运行,则可以通过ldd wkhtmltopdf,查看缺少什么依赖库,然后再安装缺少的依赖库。
可能部分机器会遇到libpng提示缺少的问题,原因是直接安装的版本过高,某些版本wkhtmltopdf预编译版本依赖的libpng版本要低一点,通过yum provides *libpng12.so.0*,找到对应的版本,然后在进行安装yum install libpng12-1.2.50-6.el7.x86_64。
中文问题
在测试了将google页面导出成pdf,并检查pdf内容正常后,可以试一下使用命令wkhtmltopdfhttp://baidu.com baidu.pdf看一下中文页面是否能正常导出。若导出后中文内容为空白则是linux系统缺少中文字体。可以从windwows机器的windwows/fonts目录拷贝几个中文字体文件(微软雅黑之类的)到linux系统的/usr/share/fonts目录,然后再去测试下导出百度页面。
不能导出PDF?
如果导出PDF没有出现下载文件的提示, 证明导出出错, 请按照以下步骤检查:
- wkhtmltopdf安装是否成功? 请通过
wkhtmltopdf http://baidu.com baidu.pdf
检查 - wkhtmltopdf的路径在Leanote是否正确设置? 请复制你设置的路径到控制台导出试试, 比如
/usr/bin/wkhtmltopdf http://baidu.com baidu.pdf
- 导出还有问题? 请检查你的conf/app.conf中设置的
site.url
是否可以访问, Leanote导出PDF时会访问笔记链接, 这个链接的前缀就是site.url
不能通过IP访问
2.6版默认绑定localhost, 不能通过ip访问Leanote,
请修改 app.conf
http.addr=0.0.0.0 # listen on all ip addresses
重启Leanote