你有没有过这样的经历:突然想到一个创意、记下一个临时密码,或者看到一段值得收藏的网页片段,却找不到一个既轻量又私密的记录工具?手机自带备忘录很好用,但跨设备同步总需要折腾;第三方笔记应用功能强大,却往往过度复杂,而且数据存储在别人服务器上。今天,我们就用飞牛NAS来部署Flatnotes——一个极简、自托管的记事本应用,让你拥有完全属于自己的笔记系统。
为什么选择Flatnotes?
Flatnotes最大的特点就是“极简”。它没有复杂的目录结构、没有标签系统、没有Markdown编辑器里那些花哨的按钮——只有纯粹的文本编辑和搜索。但它有几个让你爱不释手的功能:
- 纯文本 + Markdown:支持Markdown语法,写代码片段、列表、标题都很方便
- 全文本搜索:瞬间搜索所有笔记内容,比文件管理器快得多
- 移动端适配:手机浏览器打开体验很好,相当于一个私有云笔记
- 零数据库依赖:笔记直接存储为Markdown文件,随时可以用其他工具读取
- Docker部署:一个容器搞定,资源占用极低
准备工作
在开始之前,请确保你的飞牛NAS满足以下条件:
- 已安装Docker(飞牛NAS系统默认安装或可在应用商店安装)
- 有一个存放笔记数据的文件夹(建议放在共享目录下,方便管理)
- 网络环境正常,能拉取Docker镜像
第一步:创建数据目录
SSH登录到你的飞牛NAS,或者直接在文件管理器中操作。这里我建议使用命令行,更清晰:
# 登录飞牛NAS后,进入共享存储目录
cd /vol1/1000/ # 根据你的实际存储卷调整
# 创建flatnotes的数据目录
mkdir -p docker/flatnotes/data
# 查看目录是否创建成功
ls -la docker/flatnotes/
如果你习惯用文件管理器,就在共享文件夹下创建 docker/flatnotes/data 目录。
第二步:编写Docker Compose配置
我们不直接使用docker run命令,而是用docker-compose.yml来管理,这样以后升级或迁移都很方便。
在 docker/flatnotes 目录下创建 docker-compose.yml 文件:
cd /vol1/1000/docker/flatnotes # 进入刚才创建的目录
nano docker-compose.yml # 用nano编辑,你也可以用vi
粘贴以下内容:
version: '3.8'
services:
flatnotes:
image: dullage/flatnotes:latest
container_name: flatnotes
restart: unless-stopped
ports:
- "8080:8080" # 左边是宿主机端口,可按需修改
volumes:
- ./data:/data # 映射笔记数据目录
environment:
- FLATNOTES_AUTH_TYPE=password
- FLATNOTES_USERNAME=admin
- FLATNOTES_PASSWORD=your_strong_password
- PUID=1000 # 飞牛NAS的用户ID,通常为1000
- PGID=1000 # 飞牛NAS的用户组ID
重要说明:
- 修改 FLATNOTES_USERNAME 和 FLATNOTES_PASSWORD 为你自己的账号密码
- 如果8080端口被占用,可以改成其他端口,比如 "8090:8080"
- PUID和PGID确保容器内创建的文件归属正确,避免权限问题
保存文件(nano中按 Ctrl+O,回车,然后 Ctrl+X 退出)。
第三步:启动容器
执行以下命令启动服务:
# 确保在 docker/flatnotes 目录下
docker compose up -d
如果一切正常,你会看到类似输出:
[+] Running 2/2
✔ Network flatnotes_default Created
✔ Container flatnotes Started
检查容器运行状态:
docker ps | grep flatnotes
应该能看到容器状态为 Up,正常运行。
第四步:访问与配置
打开浏览器,输入 http://你的飞牛NAS的IP地址:8080,比如 http://192.168.1.100:8080。
你会看到Flatnotes简洁的登录界面:
- 输入你设置的 FLATNOTES_USERNAME 和 FLATNOTES_PASSWORD
- 点击登录,进入主界面

界面上方是搜索框,下方是笔记列表,点击“New Note”创建新笔记。左侧是笔记预览,右侧是Markdown编辑器——就这么简单。
进阶配置:HTTPS与反向代理
如果你希望通过域名在外网安全访问Flatnotes,建议使用飞牛NAS自带的Nginx反向代理功能(或部署Nginx Proxy Manager)。这里提供一个简单的Nginx配置示例:
server {
listen 443 ssl;
server_name notes.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这样就能通过 https://notes.yourdomain.com 安全访问你的笔记了。
日常使用技巧
- 笔记命名:Flatnotes以文件名作为笔记标题,建议用英文或拼音命名,避免特殊字符
- 批量导入:直接把
.md 文件复制到 data 目录下,重启容器即可自动识别
- 备份策略:只需备份
data 目录下的所有 .md 文件,没有任何数据库依赖
- 移动端使用:把网页添加到手机桌面,体验接近原生App
可能遇到的问题
Q:容器启动后无法访问?
A:检查飞牛NAS的防火墙是否开放了8080端口,或者尝试更换其他端口(如8090)。
Q:创建笔记后,文件权限不对?
A:检查docker-compose.yml中的PUID和PGID是否与你的飞牛NAS用户一致(通常为1000)。
Q:搜索功能不生效?
A:确保笔记内容为纯文本或Markdown格式,Flatnotes暂不支持PDF等二进制文件搜索。
总结
Flatnotes虽然功能简单,但正是这种“少即是多”的设计理念,让它成为日常快速记事的利器。部署在飞牛NAS上,你的笔记数据完全由自己掌控,不用担心第三方服务关闭、隐私泄露等问题。整个部署过程不超过10分钟,值得一试。
现在,打开你的浏览器,写下第一个笔记吧——比如这篇教程的地址,或者你今天灵光一现的创意。毕竟,最好的笔记系统就是那个你愿意经常使用的系统。