飞牛 NAS 部署 flatnotes:自建 Markdown 笔记库,再配置固定公网访问
前言
笔记工具我换过不少,最后最烦的反而不是"功能不够",而是记录越积越散:临时命令在聊天窗口,部署步骤在记事本,长一点的技术笔记又丢到别的平台里。真正要找的时候,经常不是忘了内容,而是先忘了自己把它存在哪。对我来说,如果只是想长期保存命令、部署过程和一些 Markdown 资料,工具本身最好别比记笔记这件事还复杂,能打开浏览器就写、文件还能自己掌握,已经很够用。尤其是技术记录这种东西,很多时候真正有价值的不是排版,而是半年后还能搜出来、换个平台还能继续读,不会因为某个客户端停用就跟着一起失效。
这次我把 flatnotes 部署到一台 RK3566 飞牛 NAS ARM 小主机上,通过 SSH 和 Docker 直接运行 dullage/flatnotes:latest,映射 8080 端口并启用密码登录。随后实际创建笔记、切换 WYSIWYG 编辑、保存和预览,再用 一个* 测试模糊搜索,并从手机访问确认移动端页面。局域网流程跑通以后,再安装 cpolar,把 flatnotes 的 8080 Web 页面提供到公网,先验证随机地址,最后配置固定二级子域名 flatnotes。我更看重的是笔记能不能持续积累、以后还能方便迁移,而不是把一个轻量记录工具堆成复杂知识管理系统。工具越轻,反而越容易坚持用。
1. flatnotes 更适合什么样的笔记需求?

项目地址:
https://github.com/dullage/flatnotes
flatnotes 是一款开源、自托管的 Markdown 笔记应用,整体思路很直接:不依赖传统数据库,每篇笔记直接以普通 Markdown 文件保存。
这对我来说有两个比较实际的好处。
第一,笔记本身不是被锁进某个特殊格式里。以后就算换工具,这些 Markdown 文件仍然可以继续用其他编辑器打开。
第二,使用方式足够简单。浏览器就是入口,不需要为了临时记几条命令再额外安装客户端。
当前介绍里还提到这些能力:
- Markdown 源码编辑;
- WYSIWYG 所见即所得模式;
- 全文搜索;
- 标签管理;
- 笔记关联;
- 明暗主题;
- 多种身份验证方式;
- 移动端自适应。
这次实际会重点验证的是:
登录 → 新建笔记 → 编辑 / 保存 → 预览 → 模糊搜索 → 手机访问 → 公网访问。
2. 在飞牛 NAS 上先准备 Docker 和 SSH
这次使用的是一台 RK3566 小主机,已经刷好飞牛 NAS ARM 版系统。
飞牛本身支持 Docker,所以先打开桌面的【Docker】,确认服务已经开启。

然后进入【系统设置】,打开 SSH。

Windows 端按 Win + X,打开【终端(管理员)】。

通过 SSH 登录飞牛 NAS:
shell
ssh rk3566@192.168.50.212

连接成功以后切换到 root:
shell
sudo -i

到这里,后面的 Docker 部署都可以直接在终端里完成。
3. 用 Docker 直接部署 flatnotes
当前使用的 Docker 命令如下:
shell
docker run -d \
--name flatnotes \
--restart unless-stopped \
-p 8080:8080 \
-e PUID=1000 \
-e PGID=1000 \
-e FLATNOTES_AUTH_TYPE=password \
-e FLATNOTES_USERNAME=admin \
-e FLATNOTES_PASSWORD=123456 \
-e FLATNOTES_SECRET_KEY=flatnotes-secret-key-2026 \
-v flatnotes-data:/data \
dullage/flatnotes:latest
这条命令里几个参数需要看清楚:
- 容器名:
flatnotes - 重启策略:
unless-stopped - 端口:
8080:8080 PUID=1000PGID=1000- 认证方式:
FLATNOTES_AUTH_TYPE=password - 用户名:
admin - 密码:
123456 FLATNOTES_SECRET_KEY=flatnotes-secret-key-2026- 数据卷:
flatnotes-data:/data - 镜像:
dullage/flatnotes:latest
当前示例明确使用了 admin / 123456 作为登录凭据。这个组合只适合演示,源步骤本身也提醒实际使用时改成更安全的密码。
执行以后:

接着检查容器状态:
shell
docker ps

当前状态显示为 UP,并且旁边显示 healthy。
4. 先在局域网里打开 flatnotes
浏览器访问:
shell
http://192.168.50.212:8080

页面正常打开以后,使用前面设置的:
- 用户名:
admin - 密码:
123456
登录。

登录成功后的首页很简单,默认主要就是搜索入口。
我反而比较喜欢这种克制的页面。笔记工具如果首页堆太多东西,很容易从"记录"变成"整理界面本身"。
5. 实际创建一篇笔记
点击右上角:
New Note

进入编辑页面以后,可以设置标题并编辑 Markdown 正文。
右下角还能切换:
WYSIWYG
所见即所得模式。


这对不熟悉 Markdown 语法的人会更直接;如果本来就习惯 Markdown,也可以继续按源码方式写。
编辑完成以后点击:
save
保存。

回到首页后,就能看到刚才保存的笔记标题。
点击标题进入详情,可以直接预览,同时右上角还提供编辑和删除。

到这里,最基础的一条使用链已经跑通:
新建 → 编辑 → 保存 → 首页 → 预览 / 再编辑。
6. 笔记多起来以后,搜索比文件夹更重要
flatnotes 的一个特点,是不强调复杂的文件夹和笔记本层级,而是把搜索和标签放在更重要的位置。
当前示例直接在首页做模糊搜索。
输入:
shell
一个*

这里用 * 做前 / 后匹配。
如果只记得标题或正文里的一部分内容,不需要先想"当时到底放在哪个文件夹",直接搜会更符合我平时找技术笔记的习惯。
对长期积累命令、部署过程和问题记录来说,这种方式比建很多层目录更省心。
7. 手机浏览器也能直接访问
接下来使用 NAS 的局域网地址,从手机浏览器打开 flatnotes。

当前页面在移动端也能正常适配。
这一步对我来说很重要,因为"自建笔记"如果只能在电脑上舒服地用,实际记录频率很容易下降。
临时在手机上补一条命令、查一个部署步骤,本来就应该是打开页面就能做的事情。
8. 局域网能用了,再考虑公网访问
前面 flatnotes 已经通过本地 8080 端口正常运行。
如果只在家里使用,到这里其实已经够了。
但如果人在公司、出门或者不在家里的 Wi‑Fi 下,还想查看和创建笔记,就需要再增加公网入口。
cpolar 在这里的职责很清楚:
只把飞牛 NAS 上 flatnotes 的
8080Web 页面提供到公网。
笔记创建、搜索、登录和数据保存仍然由 flatnotes 自己完成,cpolar 不参与笔记业务本身。

9. 在飞牛 NAS 安装 cpolar
回到前面的 SSH 终端,执行:
shell
sudo curl https://get.cpolar.sh | sh

安装完成以后检查服务状态:
shell
sudo systemctl status cpolar

当前状态显示:
active (running)
以后,打开 cpolar Web UI。
这次飞牛 NAS 的地址是:
http://192.168.50.212:9200

进入页面后使用 cpolar 账号登录。
10. 把 flatnotes 的 8080 映射到公网
登录以后,进入【隧道管理 > 隧道列表】。
当前页面可以看到两条已有隧道。

选择 website 这条隧道进行编辑,也可以新建一条隧道。

这里的目标就是把 flatnotes 的:
8080
Web 服务作为本地访问目标。
更新完成以后,进入【状态 > 在线隧道列表】。
同一个隧道会生成:
- HTTP 地址;
- HTTPS 地址。

这里使用 HTTPS 地址测试。
可以看到,成功的访问到了flatnotes界面,这样就已经成功支持外网访问啦!
这一层确认的是:
flatnotes 8080 → cpolar → 公网浏览器
可以正常访问。
11. 随机地址适合验证,长期记笔记更适合固定入口
随机公网地址已经可以解决"人在外面能不能打开"的问题。
但当前说明里也提到,随机生成的公网地址会周期性变化。
如果 flatnotes 准备长期用,浏览器书签和手机收藏都希望保持同一个入口,那么固定二级子域名会更方便。
12. 预留固定二级子域名
进入 cpolar 的预留页面:
shell
https://dashboard.cpolar.com/reserved
在【保留二级子域名】里填写对应信息。
当前示例为:
| 配置项 | 当前填写 |
|---|---|
| 地区 | China Top |
| 名称 | flatnotes |
| 描述 | 按自己的用途填写 |
二级子域名名称需要以自己实际能保留的结果为准。

保留完成以后,就得到后面可以绑定到隧道的固定二级子域名。
13. 把 flatnotes 隧道切换成固定域名
回到【隧道管理 > 隧道列表】,编辑 flatnotes 对应的隧道。

把域名类型修改为:
二级子域名
并填写刚才保留的名称。

更新完成以后,进入【状态 > 在线隧道列表】。
flatnotes 隧道会显示固定公网地址。

复制这个地址,在浏览器中打开。

再登录并进入一篇笔记验证。

固定公网地址同样能够登录并访问笔记。
总结
flatnotes 对我来说最合适的定位,不是"功能最全的知识库",而是一个足够轻、文件格式又足够普通的自托管笔记入口。
这次实际跑通的主线是:
RK3566 飞牛 NAS → SSH → Docker → dullage/flatnotes:latest → 8080:8080 → 密码登录 → 新建笔记 → WYSIWYG / Markdown → 保存 / 预览 → 一个* 模糊搜索 → 手机访问 → cpolar → 随机公网 → 固定二级子域名 flatnotes。
几个边界也比较清楚:
- flatnotes 不依赖传统数据库,笔记以 Markdown 文件形式保存;
- 当前 Docker 命令里的
admin / 123456是示例登录凭据,实际长期使用前应按现有说明修改; - 这次真正验证的是创建、编辑、预览、搜索、移动端和公网访问;
- cpolar 只负责 Web 访问入口,不参与笔记保存和搜索;
- 固定二级子域名解决的是长期入口不变的问题,并不会改变 flatnotes 自己的认证逻辑。
如果笔记已经开始散到多个平台里,我反而不建议一上来就追求特别复杂的知识管理结构。先把最常用的命令、部署过程和技术记录放进一个长期能打开、文件也容易迁移的地方,往往比继续换下一款"全能笔记软件"更实际。