飞牛 NAS 部署 flatnotes:自建 Markdown 笔记库,再配置固定公网访问

飞牛 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=1000
  • PGID=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 的 8080 Web 页面提供到公网。

笔记创建、搜索、登录和数据保存仍然由 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:latest8080:8080 → 密码登录 → 新建笔记 → WYSIWYG / Markdown → 保存 / 预览 → 一个* 模糊搜索 → 手机访问 → cpolar → 随机公网 → 固定二级子域名 flatnotes

几个边界也比较清楚:

  • flatnotes 不依赖传统数据库,笔记以 Markdown 文件形式保存;
  • 当前 Docker 命令里的 admin / 123456 是示例登录凭据,实际长期使用前应按现有说明修改;
  • 这次真正验证的是创建、编辑、预览、搜索、移动端和公网访问;
  • cpolar 只负责 Web 访问入口,不参与笔记保存和搜索;
  • 固定二级子域名解决的是长期入口不变的问题,并不会改变 flatnotes 自己的认证逻辑。

如果笔记已经开始散到多个平台里,我反而不建议一上来就追求特别复杂的知识管理结构。先把最常用的命令、部署过程和技术记录放进一个长期能打开、文件也容易迁移的地方,往往比继续换下一款"全能笔记软件"更实际。

相关推荐
是隼人2 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
山东科恩光电2 小时前
折弯机保护装置提升操作安全与效率的关键创新
安全
2601_962364973 小时前
不止指纹和人脸:Windows Hello如何重塑PC生物识别安全?
windows·安全·电脑
其实防守也摸鱼4 小时前
Codex 下载与本地部署实战:从安装到运行全指南
android·大数据·运维·安全·自动化
jimmyleeee5 小时前
大模型安全之十九:从黑箱到透明:Observability 与 AI Evaluation Tool 完全指南
人工智能·安全
我不是程序员三三7 小时前
企业反舞弊的调查手段,终端技术工具该怎么用
安全·域智盾·域智盾软件·企业反舞弊·反舞弊
是隼人8 小时前
buuctf-pwn PWN8题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
hasty8 小时前
未登录也能读取服务器文件:GitLab CVE-2026-85706 深度解析
安全·代码复审