PassNAT LogoPassNAT

自托管笔记应用Flatnotes极简部署,无数据库Markdown笔记库远程访问方案

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Flatnotes 是一款自托管、无数据库的极简笔记应用,采用扁平化的 Markdown 文件存储方案。它提供了一个简洁优雅的网页界面,让你可以轻松管理和搜索所有笔记。无论是个人知识库、日常记录还是工作备忘,Flatnotes 都能胜任。

这个项目的核心理念是'笔记自由'——你的笔记就是普通的 Markdown 文件,没有数据库锁定,没有复杂的文件夹结构,完全开放。你随时可以把文件移到其他地方继续使用,不用担心被应用绑定。同时,Flatnotes 还提供了强大的全文搜索、标签系统、WikiLink 链接、WYSIWYG 编辑器等功能,让笔记管理变得轻松高效。

项目地址:点我跳转

部署安装

flatnotes 装在自己的 NAS 上之后,只能在家里的网络访问。想在外面也能打开,家里又没有公网 IP,可以用 帕斯内网穿透 把它开放到公网 —— 飞牛的应用中心里就能直接装到插件,不用另外找工具。下面这套流程在飞牛 NAS 上从头到尾走一遍。

第一步:准备编排文件

作者在 Docker Hub 上发了官方镜像,还带版本 tag,直接拉就行,不用自己构建。下面这份编排可以直接用,三处需要你按自己的情况改:端口、以及最后那三个环境变量。

1services:
2 flatnotes:
3 image: dullage/flatnotes:v5.5.5
4 restart: always
5 ports:
6 - "8085:8080"
7 volumes:
8 - ./data:/data
9 environment:
10 PUID: 1000
11 PGID: 1000
12 FLATNOTES_AUTH_TYPE: password
13 FLATNOTES_USERNAME: 改成你自己的
14 FLATNOTES_PASSWORD: 改成你自己的
15 FLATNOTES_SECRET_KEY: 换一串随机字符
16

端口:冒号左边的 8085 是待会儿在浏览器里输的宿主端口,右边的 8080 是容器内部的端口,不要动。8085 如果和你机器上别的服务撞了,换一个没被占用的即可。

数据目录:./data 是相对于项目目录的路径,你记的每一条笔记都会以 .md 文件的形式落在这里。用相对路径的好处是,在飞牛的「文件管理」里就能直接看到这些文件。

最后三个变量必须改成你自己的:FLATNOTES_USERNAME 和 FLATNOTES_PASSWORD 是登录用的用户名和密码,FLATNOTES_SECRET_KEY 换一串足够长的随机字符就行,它用来签发登录凭据。

第二步:在飞牛里建 Compose 项目

打开飞牛桌面上的 Docker,切到上面的「Compose」,点右上角的「新增项目」。项目名称填 flatnotes。

路径这一栏点开,在「我的文件」下面新建一个空文件夹并选中它。这个文件夹就是这个项目以后放数据的地方,上面编排里那个 ./data 就会建在它下面。

来源选「创建docker-compose.yml」,把上面那段编排整段贴进去,勾上「创建项目后立即启动」,点确认。镜像拉完项目就会自己跑起来,回到列表能看到它是运行中。

第三步:用 PassNAT 插件开放到公网

在飞牛的应用中心里搜 PassNAT,装上,用账号登一次。打开插件切到「隧道」,点「创建隧道」。

隧道名称随便起(注意不能超过 12 个字符),接入节点和传输协议保持默认。本地 IP 这一栏不用动,留空默认就是 127.0.0.1 —— 插件本来就跑在 NAS 上,回环地址天然指向本机。本地端口填 8085,也就是上面编排里冒号左边那个。

创建完回到隧道列表,点开这条隧道的详情,按标题行最左边那个电源图标启动它,状态转成「运行中」。详情里「公网连接」那一列的地址,就是你在外面要访问的地址。

第四步:笔记就是普通文件

用公网地址打开 flatnotes,右上角「New Note」新建一条笔记,标题和正文写完它自己就存了,不用点保存。

然后回飞牛的文件管理,进到刚才那个项目文件夹下面的 data 目录 —— 你会看到刚写的笔记就是一个 .md 文件,文件名就是笔记标题。想备份就直接拷走,想换个编辑器打开也随时可以,不存在被应用绑住的问题。

一些说明

flatnotes 的界面目前只有英文,不过它对中文内容的支持是完整的:标题、表格、清单这些 Markdown 写法都能正常渲染,笔记标题用中文也没问题。

另外它没有多用户,一套用户名密码对应一个笔记库。自己用或者家里人共用一个库都可以,需要各自独立的笔记本就得起多个实例。