自建极客范的云笔记–蚂蚁笔记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 failsgoroutine 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 数据库配置如下:
# mongdbdb.host=localhostdb.port=27017db.dbname=leanote # requireddb.username= # if not exists, please leave it blankdb.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/leanotedb.urlEnv=${MONGODB_URL} # set url from env
即数据库名为leanote, 用户名和密码为空, 请检查是否正确.
Leanote运行成功, 但不能登录
原因: 数据库已停止运行, 请重新启动数据库和Leanote.
如果知识兔数据库在运行, 请重新启动Leanote.
修改Leanote运行端口
比如想以8080端口启动.
修改conf/app.conf:
http.port=8080site.url=http://localhost:8080
请重启Leanote, 使用http://localhost:8080访问.
如何绑定域名?
比如想绑定域名a.com到你运行Leanote服务器, 你需要将leanote以80端口运行, 请修改conf/app.conf的如下配置:
http.port=80site.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=localhostdb.port=27017db.dbname=leanote # requireddb.username=root # if not exists, please leave blankdb.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]: " DOMAINecho "Create server key..."openssl genrsa -des3 -out $DOMAIN.key 1024echo "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.csrecho "Remove password..."mv $DOMAIN.key $DOMAIN.origin.keyopenssl rsa -in $DOMAIN.origin.key -out $DOMAIN.keyecho "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 # 得到远程最新版本, 别名为tmpgit 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
下载仅供下载体验和测试学习,不得商用和正当使用。
[ppwp passwords=”zhishitu.cn”]
下载体验
应版权要求,禁止分享,敬请谅解,有问题务必找客服哈。
有问题找客服哈,并领取学习福利!
[/ppwp]