飞牛NAS部署flatnotes实战:Docker、8080端口、Markdown笔记与固定地址访问

飞牛NAS部署flatnotes实战:Docker、8080端口、Markdown笔记与固定地址访问

前言

笔记工具越换越多,最容易出现的情况不是"没地方记",而是内容散在不同App、云端和设备里:一段部署命令在电脑上,一份排错记录在手机里,真正要找的时候反而要先回忆"当时到底记在哪"。如果平时记录的主要是Markdown文本,其实不一定需要一套很重的知识库系统。

这次我把 flatnotes 部署到一台刷了飞牛NAS ARM版的RK3566小主机上。先通过SSH进入系统,用Docker启动官方镜像,把8080映射出来,并通过账号密码方式登录。

本地页面跑通以后,继续实际完成新建笔记、Markdown/WYSIWYG编辑、保存、模糊搜索和手机访问,确认它不仅是"容器Up",而是真的能承担日常记录。

最后再给8080增加外部访问入口,从随机公网地址切换到固定二级子域名。整篇重点是把飞牛NAS → flatnotes → Markdown笔记 → 搜索 → 手机/外网访问 这条链真正跑通,同时把示例账号、密码和SECRET_KEY这些安全配置单独说明清楚。

这类工具真正适合长期使用的地方,也不只是"打开就能记",而是笔记文件、搜索入口和访问方式都比较简单,后面换设备、做备份或继续迁移时,不需要先理解一套复杂的数据结构。

1 flatnotes适合解决什么问题

flatnotes更适合被理解成:

一个轻量、自托管、以Markdown文件为核心的笔记Web应用。

项目地址:

https://github.com/dullage/flatnotes

它的特点不是"功能越多越好",而是把日常记录需要的几件事集中起来:

  • 新建Markdown笔记;
  • 编辑和预览;
  • 全文搜索;
  • 标签和关联;
  • 浏览器直接访问;
  • 手机端自适应。

如果平时主要保存:

  • 命令;
  • 部署步骤;
  • 技术备忘;
  • 临时记录;
  • 简单知识整理;

这种结构反而比较直接。

2 "不依赖传统数据库"不等于"没有数据要备份"

flatnotes的笔记最终以Markdown文件形式保存。

这确实比"所有内容都锁在某个数据库里"更容易理解和迁移。

但Docker部署里仍然需要持久化:

/data

所以更准确的说法是:

笔记以普通Markdown文件保存,不需要额外部署传统数据库服务。

而不是:

系统完全没有数据层、也不用做备份。

3 本次运行环境

这次使用的是:

RK3566小主机 + 飞牛NAS ARM版

飞牛NAS本身已经可以运行Docker。

页面:

所以不需要再单独安装Docker。

4 先开启SSH

进入飞牛NAS系统设置,开启SSH:

然后在Windows里打开终端:

执行:

shell 复制代码
ssh rk3566@192.168.50.212

结果:

5 切换root

执行:

shell 复制代码
sudo -i

结果:

后面的Docker部署都在这个终端里完成。

6 用Docker启动flatnotes

执行:

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
  • 登录方式:password
  • 用户名:admin
  • 密码:123456
  • FLATNOTES_SECRET_KEY
  • 数据卷:flatnotes-data:/data
  • 镜像:dullage/flatnotes:latest

7 示例账号密码不要直接照抄长期使用

这份命令里的:

FLATNOTES_USERNAME=admin

和:

FLATNOTES_PASSWORD=123456

明显更适合作为演示值。

如果准备长期使用,尤其是后面还要开放公网,至少应该替换成:

  • 自定义用户名;
  • 强密码。

同样,FLATNOTES_SECRET_KEY=flatnotes-secret-key-2026也不适合直接作为长期公开环境里的固定示例值。

代码块按已经跑通的内容原样保留,但实际部署时更适合自己生成并保存独立密钥。

8 flatnotes-data是笔记数据的关键位置

Docker里挂载了:

flatnotes-data:/data

这意味着笔记数据并不只存在于容器临时层里。

所以后面重建容器时,数据可以继续保存在这个Docker Volume中。

但持久化不等于自动备份。

如果这些笔记有长期价值,仍然建议定期备份对应数据卷。

9 查看容器状态

执行:

shell 复制代码
docker ps

页面:

状态显示:

  • Up;
  • healthy。

说明容器进程已经正常。

但这一步只能证明:

容器在运行。

还要继续验证8080页面。

10 浏览器打开8080

访问:

shell 复制代码
http://192.168.50.212:8080

页面:

能够打开以后,可以确认:

浏览器 → 飞牛NAS:8080 → flatnotes

已经跑通。

11 使用账号密码登录

登录页面:

使用前面Docker环境变量里配置的账号密码登录。

进入以后:

首页非常简洁。

这也是flatnotes比较明显的设计取向:

先搜索,需要时再创建。

12 新建一篇笔记

点击右上角:

New Note

页面:

进入编辑页面。

13 编辑器同时照顾Markdown和可视化编辑

编辑页面:

flatnotes支持:

  • 标题;
  • Markdown正文;
  • WYSIWYG切换。

继续切换模式:

对于熟悉Markdown的人,可以直接写语法。

不熟悉Markdown时,也可以使用可视化方式编辑。

14 保存以后回到主页

点击:

Save

页面:

首页会显示刚刚保存的笔记标题。

这一层验证的是:

编辑 → 保存 → 首页展示

已经完整跑通。

15 点进笔记还能继续预览和编辑

页面:

详情页面可以继续:

  • 阅读;
  • 编辑;
  • 删除。

做到这里,flatnotes作为一个基本笔记工具已经具备日常使用能力。

16 搜索比文件夹层级更重要

flatnotes没有把复杂文件夹作为核心。

真正高频的查找方式是:

搜索。

例如输入:

shell 复制代码
一个*

页面:

这里使用*进行前后模糊匹配。

如果以后已经积累很多部署记录,只记得标题或正文里的一部分词,这种方式会比一层层翻目录更快。

17 搜索能不能找到内容,比"笔记数量多少"更重要

知识库真正容易失效的原因,不是写得少,而是:

写完以后找不到。

flatnotes的思路就是让:

  • 标题;
  • 正文;
  • 标签;

都围绕搜索组织。

所以如果你的记录习惯本来就是短笔记、命令片段和技术步骤,这种结构很合适。

18 手机端也直接测试

在手机浏览器里输入飞牛NAS的局域网地址:

页面能够正常适配。

这说明:

电脑和手机都能直接用浏览器访问同一个flatnotes。

不需要再单独安装客户端。

19 "浏览器能访问"不等于所有笔记天然安全

flatnotes本身提供认证能力。

但笔记里可能保存:

  • 服务器命令;
  • IP地址;
  • 内网服务;
  • 部署步骤;
  • 项目记录;
  • 账号相关提示。

所以后面一旦准备公网访问,认证强度就很重要。

尤其不建议继续保留:

admin / 123456

这种演示账号。

20 到这里,本地flatnotes已经跑通

当前链路是:

RK3566飞牛NAS

↓

Docker

↓

flatnotes

↓

8080

↓

账号登录

↓

新建笔记

↓

Markdown / WYSIWYG编辑

↓

保存

↓

模糊搜索

↓

手机访问

如果只在局域网里使用,到这里已经可以作为轻量笔记服务。

21 接下来解决外部访问

cpolar说明图:

本地服务已经跑在:

8080

后面的远程链路解决的是:

外部浏览器如何访问这个8080页面。

22 安装cpolar

执行:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

结果:

安装完成以后检查服务状态:

shell 复制代码
sudo systemctl status cpolar

结果:

看到:

active (running)

以后再进入Web管理页面。

23 打开cpolar Web UI

访问:

复制代码
http://192.168.50.212:9200

页面:

注册并登录以后进入隧道管理。

24 查看默认隧道

登录以后:

可以看到默认隧道。

这次处理:

website

这条HTTP隧道即可。

25 把website改给flatnotes使用

编辑隧道:

本地目标改成:

8080

这样公网入口就会指向flatnotes。

26 查看随机公网地址

进入:

状态 → 在线隧道列表

页面:

会看到HTTP和HTTPS地址。

使用HTTPS测试:

能够正常打开以后,可以确认:

外部浏览器 → 公网地址 → 飞牛8080 → flatnotes

已经跑通。

27 随机地址更适合先做连通验证

随机地址适合:

  • 临时测试;
  • 偶尔访问;
  • 先确认外网链路。

如果准备把flatnotes长期收藏到浏览器或手机,再继续配置固定二级子域名。

28 保留固定二级子域名

进入预留页面:

shell 复制代码
https://dashboard.cpolar.com/reserved

配置说明:

配置项 说明
地区 与隧道保持一致,例如China Top
名称 自定义二级子域名,例如flatnotes
描述 方便自己识别即可

页面:

实际名称以自己账号最终成功保留的结果为准。

29 编辑flatnotes隧道

回到隧道列表:

把域名类型改成:

二级子域名

填写已经保留的名称:

更新即可。

30 查看固定公网地址

进入在线隧道列表:

可以看到flatnotes隧道已经切换成固定二级子域名形式。

31 最后做一次固定地址访问

浏览器打开:

继续登录并进入笔记:

做到这里,可以确认:

固定公网地址 → flatnotes登录 → 笔记访问

已经完整跑通。

32 固定地址解决的是入口稳定

固定二级子域名主要解决:

  • 浏览器长期收藏;
  • 手机不用反复找新地址;
  • 多设备使用同一个入口。

它解决的是:

地址不频繁变化。

并不代表:

  • flatnotes账号自动安全;
  • Markdown数据绝对不会丢;
  • Docker Volume自动备份;
  • 公网地址永远不受账号或服务状态影响。

33 自托管更准确的理解是什么

把flatnotes部署到自己的NAS上以后:

  • Web服务在自己的设备上;
  • 笔记数据卷在自己的环境里;
  • 账号由自己配置;
  • 访问入口由自己维护。

这确实比完全依赖第三方笔记平台更可控。

但"自托管"不等于:

数据绝对不会泄露或丢失。

真正决定长期可靠性的还是:

  • 账号密码;
  • SECRET_KEY;
  • 数据卷备份;
  • NAS硬盘;
  • Docker环境;
  • 公网访问范围。

34 这套方案更适合什么人

比较适合:

  • 经常记录命令;
  • 保存部署步骤;
  • 想用Markdown写技术笔记;
  • 不喜欢复杂文件夹结构;
  • 想让电脑和手机共用同一套笔记;
  • 已经有NAS或小主机。

如果真正需要:

  • 多人协作;
  • 权限体系;
  • 数据库级结构化知识;
  • 大型团队文档;
  • 复杂工作流;

flatnotes就不一定是最合适的选择。

它更擅长的是:

简单、直接、随手记。

35 最后把完整技术链重新看一遍

硬件:

RK3566小主机

系统:

飞牛NAS ARM版

部署:

Docker → dullage/flatnotes:latest

端口:

8080:8080

认证:

password

数据:

flatnotes-data:/data

本地使用:

登录 → 新建 → 编辑 → 保存 → 搜索 → 手机访问

随机远程:

公网随机地址 → 8080

固定远程:

固定二级子域名 → 8080

实际完成:

  • 飞牛Docker;
  • SSH;
  • root;
  • flatnotes容器;
  • 8080访问;
  • 管理员登录;
  • 新建笔记;
  • Markdown编辑;
  • WYSIWYG编辑;
  • 保存;
  • 详情预览;
  • 模糊搜索;
  • 手机访问;
  • cpolar安装;
  • 随机公网访问;
  • 固定二级子域名;
  • 固定地址登录;
  • 笔记访问。

这样flatnotes才真正从"一个轻量Markdown项目",变成一套运行在自己NAS上的浏览器笔记入口。

总结

这次真正跑通的是一条完整的flatnotes使用链:先在RK3566飞牛NAS上通过Docker启动flatnotes,把8080映射出来,并用密码方式完成首次登录。

本地验证没有停在"容器healthy"。后面继续完成了新建笔记、Markdown和WYSIWYG两种编辑方式、保存、详情预览、模糊搜索和手机访问,确认它确实可以承担日常技术笔记和命令记录。

这篇最需要注意的是账号和密钥。Docker命令里的admin / 123456以及示例FLATNOTES_SECRET_KEY都更适合作为演示值,如果准备长期使用或开放公网,应该替换成自己的强密码和独立密钥,同时给flatnotes-data做额外备份。

远程部分是在8080本地访问正常以后再增加的能力。随机公网地址先验证链路,固定二级子域名再解决长期入口变化的问题;固定地址让电脑和手机更方便收藏,但真正决定笔记安全的仍然是flatnotes认证、NAS本身和数据备份。

相关推荐
库玛西2 小时前
外部排序全解析:败者树、置换-选择排序与最佳归并树
c语言·数据结构·c++·笔记·考研·算法
摇滚侠3 小时前
《Java并发编程之美》第 2 章 并发编程的其他基础知识 阅读笔记 3
android·java·笔记
许知珩3 小时前
Kubernetes 存储与配置管理 ——Volume、ConfigMap 与 Secret 实战详解
云原生·容器·kubernetes
ss2734 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 18 PostgreSQL基本索引原理与创建
数据库·笔记·postgresql
qq_284274055 小时前
电气控制笔记:常用低压电器符号原理与异步电动机点动、自锁、多地控制电路(含考点)
笔记·学习·自动化·制造
坤坤子吖5 小时前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习
乐橙开放平台5 小时前
不用换摄像头,如何用乐橙把海康、大华、宇视统一到一个界面
笔记·物联网·自动化·音视频·智能家居
凯凯姜5 小时前
Vue 3 深入学习笔记 16:API 请求封装与统一错误处理
vue.js·笔记·学习
ACP广源盛139246256736 小时前
HDMI2.1 同源双屏方案选型,GSV6502@ACP 工程评估笔记
笔记·硬件架构·音视频·硬件工程·hdmi·国产芯片