- 项目源码地址:
https://github.com/dnote/dnote
dnote是一款功能强大的命令行笔记应用,支持跨设备数据同步和全文内容检索。该工具采用客户端与服务端分离架构,用户既可选择仅安装客户端连接官方服务器,也能自行部署私有服务端实现完全自主的数据管理。
官方应用效果预览图:

为获得完整的功能体验,我们将同时部署服务端与客户端组件,下面详细介绍配置过程。
服务端部署指南
首先准备Docker Compose配置文件:
services:
postgres:
image: postgres:13
environment:
- POSTGRES_USER=dnote
- POSTGRES_PASSWORD=dnote
- POSTGRES_DB=dnote
volumes:
- ./data:/var/lib/postgresql/data
dnote:
image: dnote/dnote:latest
environment:
- GO_ENV=PRODUCTION
- DBSkipSSL=true
- DBHost=postgres
- DBPort=5432
- DBName=dnote
- DBUser=dnote
- DBPassword=dnote
- WebURL=localhost:3000
- OnPremises=true
- SmtpHost=smtp.163.com
- SmtpPort=25
- SmtpUsername=myusername@163.com
- SmtpPassword=mypasswd
- DisableRegistration=false
ports:
- 3200:3000
depends_on:
- postgres
配置注意事项:
- 数据库用户名与密码需保持一致性,若需修改请同步调整两个容器的对应参数
- SMTP邮件服务配置可根据实际需求设置,本示例中虽已配置但未成功实现邮件发送功能
接下来登录阿里云服务器,执行docker compose up -d启动服务,随后配置Nginx反向代理:
server {
listen 80;
server_name <自定义域名>;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
# 注意端口映射:因服务器3000端口已被占用,Docker中映射至3200端口,此处需保持一致
proxy_pass http://127.0.0.1:3200;
}
}
配置完成后执行:nginx -t && nginx -s reload。在浏览器中输入自定义域名访问:

首次访问需点击"Create account"创建账户,按照提示输入邮箱和密码后,系统会发送激活邮件。但实际操作中未能成功接收激活邮件。
检查Docker日志发现邮件发送过程出现错误,经过多方查询仍未找到解决方案。如有读者了解此问题的处理方法,欢迎留言交流。这实际上是一个长期存在的技术难题,之前部署其他服务时也遇到过类似情况。
基于既往经验,我们采用数据库直接修改的解决方案:
docker exec -it dnote-postgres-1 bash # 进入容器,具体容器名称需通过docker ps命令确认
psql -h localhost -d dnote -U dnote # 连接数据库,若修改过docker-compose.yml中的数据库配置,此处需相应调整
update accounts set email_verified=true; # 将所有账户标记为已验证状态
\q # 退出数据库
exit # 退出容器
返回浏览器登录界面,使用先前注册的邮箱和密码即可成功登录。登录后界面仅显示账户信息,暂无笔记内容:

服务端主要承担笔记数据同步功能,不提供直接操作界面,至此服务端部署工作全部完成。
客户端安装与使用
- 安装步骤(以NAS设备为例,通过SSH登录操作)
## 下载最新版本客户端
curl -OL https://github.com/dnote/dnote/releases/download/cli-v0.15.1/dnote_0.15.1_linux_amd64.tar.gz
## 解压安装包
tar -zxf dnote_0.15.1_linux_amd64.tar.gz
## 将可执行文件移至系统目录
sudo mv dnote /usr/bin/dnote
sudo chmod +x /usr/bin/dnote
## 安装完成
- 初始化配置,连接自建服务端
## 执行任意命令生成基础配置文件
dnote v
## 编辑配置文件~/.config/dnote/dnoterc
$ cat ~/.config/dnote/dnoterc
editor: vim # 按个人习惯设置默认编辑器
apiEndpoint: http://<自定义域名>/api # 连接私有云服务,确保数据安全
enableUpgradeCheck: true
- 创建笔记本和笔记内容
## 语法:使用 'dnote a 笔记本名称' 命令可连续添加多条笔记
nas:~$ dnote a nas上手指南
✔ added to nas上手指南
book name: nas上手指南
created at: Jan 1, 2025 12:01 am (CST)
note id: 5
note uuid: cd202e6e-0536-4378-8655-b1e5ff593d12
------------------------content------------------------
- 硬件设备采购
- 系统安装部署
- 加入用户社群
-------------------------------------------------------
nas:~$ dnote a nas上手指南
✔ added to nas上手指南
book name: nas上手指南
created at: Jan 1, 2025 12:02 am (CST)
note id: 6
note uuid: c9befc36-d2ec-4be5-8d29-9c645fb7a2b3
------------------------content------------------------
- 软件应用安装
- 技术问题求助
- 技能提升目标
-------------------------------------------------------
- 查看笔记内容
## 语法:通过 'dnote v 笔记本名称' 查看指定笔记本下的笔记列表
nas:~$ dnote v 'nas上手指南'
on book nas上手指南
(5)-硬件设备采购[---More---]
(6)-软件应用安装[---More---]
## 语法:使用 'dnote v 笔记本名称 笔记ID' 查看具体笔记详情
nas:~$ dnote v 'nas上手指南' 6
DEPRECATED: you no longer need to pass book name to the view command. e.g.`dnote view 123`.
book name: nas上手指南
created at: Jan 1, 2025 12:02 am (CST)
note id: 6
note uuid: c9befc36-d2ec-4be5-8d29-9c645fb7a2b3
------------------------content------------------------
- 软件应用安装
- 技术问题求助
- 技能提升目标
-------------------------------------------------------
- 编辑现有笔记
## 首先通过 dnote v 命令确认笔记本和笔记ID
## 语法:执行 'dnote v 笔记本名称 笔记ID' 可打开笔记并进入编辑模式
- 搜索笔记内容
nas:~$ dnote find house # 根据关键词搜索,显示匹配的笔记本、笔记ID及内容片段
(house) (3) new house
(house) (4) another house, hoho
nas:~$ dnote find ano # 注意:仅支持完整词汇匹配
nas:~$ dnote find another -b house # 限定在指定笔记本内搜索
(house) (4) another house, hoho
- 账户登录与数据同步
## 使用已注册账户登录服务端
dnote login -u myusername@163.com -p mypasswd
## 执行数据同步操作
dnote sync -f # 全量同步所有笔记
dnote sync # 增量同步最新变更
使用总结与建议
dnote特别适合开发运维人员在工作中使用,当突发灵感或需要记录技术要点时,可直接在终端快速记录,无需切换至浏览器或其他图形界面应用。
该工具与tmux终端复用器搭配使用效果更佳,通过窗口分割或新建面板,实现灵感即时捕捉与记录。
如果追求极致的终端使用体验,建议配合时尚的终端模拟器(如近期流行的waveterm),开启炫酷视觉效果,同时使用机械键盘,在清脆的敲击声中享受高效笔记的乐趣。这种组合不仅能提升工作效率,也能为工作环境增添专业氛围。