Leanote 蚂蚁笔记 Docker从零部署安装 2023 home 编辑时间 2023/10/25 ![](https://leanote.zzzmh.cn/api/file/getImage?fileId=65388558da7405001400beb7) ## 前言 时间紧任务重 今天只讲重点 蚂蚁笔记是一个开源的笔记软件 缺点是 版本老 官方已停止更新,如有新需求需要自行二次开发 优点是 开源、支持 Win/Linux/Mac/Android/IOS 5系统客户端 一键公开文章为博客 在web端提供公网访问H5 且自带多套主题 之前写过2篇分别是 1. 在物理机直接搭建蚂蚁笔记,基于蚂蚁笔记官方github凯源代码 https://leanote.zzzmh.cn/blog/post/admin/5cac524316199b2e40000046 2. 在Docker中搭建前辈已打包好环境的一条龙快速搭建方案 https://leanote.zzzmh.cn/blog/post/admin/60d2d9ce16199b501c026a96 今天的主题依旧是Docker搭建,区别是用前辈的Docker镜像的另一个分支,NODB版本,也就是镜像里不包含Mongodb,由用户自行另外提供Mongo环境,好处自然是只需要运行一个Mongo就可以提供多个程序使用,好过每个程序自己跑一个Mongo,并且后续的备份和修改数据也来的更容易。 参考 docker hub 地址 https://hub.docker.com/r/axboy/leanote github地址 https://github.com/axboy/docker-leanote ## 折腾 MongoDB 首先安装数据库 这里选择docker作者axbox推荐的4.2.7 这里演示的是不设账号密码 任何人都能直连的方法 请勿在公网暴露端口 ```shell # 先启动一次mongo docker run -d -p 27017:27017 \ --name mongo \ mongo:4.2.7 # 宿主机提前准备一个Mongo文件夹,复制镜像data到宿主机 docker cp mongo:data /root/docker/mongo/ # 删除镜像 docker stop mongo docker rm mongo # 启动完整镜像,并映射目录到宿主机data docker run -d -p 27017:27017 \ -e "TZ=Asia/Shanghai" \ -v /root/docker/mongo/data:/data \ --restart=always \ -m 200M \ --oom-kill-disable \ --memory-swap=-1 \ --name mongo \ mongo:4.2.7 ``` 根据Leanote Github教程 恢复初始化数据库 首先下载 leanote_install_data 文件夹 https://github.com/leanote/leanote/tree/master/mongodb_backup 然后放到物理机 mongo/data 目录下 再进入docker恢复备份 ```shell # 进入容器 docker exec -it mongo bash # 恢复备份文件到 leanote 数据库 mongorestore -h localhost -d leanote --dir /data/leanote_install_data ``` 恢复完成即初始化数据库成功 **Leanote 无DB版** 这里才是重点,也是最蛋疼的地方,我学艺不精,卡了2天才跑通,经供参考。 ```shell # 先启动一次 这次必不成功 但不重要 docker run -d -p 9000:9000 \ --name leanote \ axboy/leanote:nodb # 复制容器内data到宿主机 docker cp leanote:/data/leanote /root/docker/ # 先删除容器 docker rm leanote ``` 这里的重点是改配置文件,让leanote环境能连上mongo 修改配置文件 `/root/docker/leanote/conf/app.conf` ```conf # 内网访问地址 0.0.0.0 代表不限 http.addr=0.0.0.0 http.port=9000 # 公网访问地址 如果你有域名 改成你的域名(后续需要配合nginx反向代理才能真正访问到) # 如果你没有域名 但有服务器 填http://ip地址 也可以用ip访问 site.url=https://zzzmh.cn # admin username adminUsername=admin # mongdb配置 # 这里要改成mongodb的docker容器名称 db.host=mongo db.port=27017 # 这里是你mongodb数据库名称 db.dbname=leanote # 如果mongodb有密码 在这里配置 没有留空白即可 db.username= db.password= # 改一个任意64位随机字符串 app.secret=KsZpeVxJbcKJhqemv302JiyFpPJuxkSufclaOJP6r2qhKleCRMFzsyAKStuFEosq # 多语言改中文 i18n.default_language=zh-cn # 后面省略 ... ``` **改完配置文件以后,再次启动即可成功连上mongodb** ```shell # 内存可以根据你的实际情况给 我给100M用来测试 docker run -d -p 9000:9000 \ --link mongo \ -e "TZ=Asia/Shanghai" \ -v /root/docker/leanote:/data/leanote \ --restart=always \ -m 100M --oom-kill-disable --memory-swap=-1 \ --name leanote \ axboy/leanote:nodb ``` 检验是否已启动成功方法 ```shell docker ps -a # 返回如下 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 78913c8skjwe axboy/leanote:nodb "/bin/sh -c 'sh /dat…" 40 seconds ago Up 39 seconds 0.0.0.0:9001->9000/tcp, :::9001->9000/tcp leanote 1230387fwq12 mongo:4.2.7 "docker-entrypoint.s…" 18 hours ago Up 18 hours 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongo # 重点看 axboy/leanote:nodb 这一行 status 这一列 # 如果是 UP xx secends 就是启动成功 # 如果是 Exited (0) xx secends ago 就是启动失败 继续到配置文件和日志里找原因 ``` **至此 物理机的9000端口就可以访问蚂蚁服务了 再去 Nginx 反代到公网域名 就可以在公网使用了** 修改 Nginx 配置文件 `/etc/nginx/nginx.conf` ```conf server { listen 443 ssl http2; # 域名这里填你自己的 我这里随便填了个占位 server_name zzzmh.com; # 中间省略 ... location / { proxy_pass http://localhost:9000/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; break; } } ``` 测试并重新加载nginx ```shell nginx -t nginx -s reload ``` 最后访问你的域名 https://域名 如果出现白屏 按F12 出现3个报错 找不到style.css 说明上文的 app.conf 你配置的外网访问域名 与nginx代理的域名不同 改成一样的以后,重启docker `docker restart leanote` 如果是这个绿色的界面 说明全部搞定 大功告成 ![](https://leanote.zzzmh.cn/api/file/getImage?fileId=6538987ada7405001400beda) ## END 防止有人不会,我再讲讲怎么用 首次使用先点 Sign in 登录 默认账号密码是 admin abc123 (如果登录出错 八成是mongo配置哪里不对) 登陆以后记得修改密码 (右上角点admin 然后在个人中心进行基本配置) 配置的问题以后再讲 这里只说客户端怎么登录自建服务器 客户端打开以后点登录自建服务器 ![](/api/file/getImage?fileId=65389febda7405001400bedd) 然后第一行填域名比如 https://zzzmh.cn 第二三行填账号密码,就可以在客户端写笔记了 先写到这里 更多细节可以参考我之前写的2篇文章 或者我以后再更新 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay 关于2023年如何开发一个Java JSP JSTL项目指南 JavaFX 嵌套 WebView 加载本地 Html 与 JS 互相调用传参