自然流畅的笔记体验:深入探索NoteFlow

简介

什么是 NoteFlow ?

NoteFlow 是一个轻量级的、基于 Markdown 的笔记应用程序,具有任务管理功能。它将单个 Markdown 文件转化为现代网页界面,使笔记和任务能够无缝共存。它提供了一个简洁的界面,用于创建、查看和管理笔记,支持任务、图像、文件和代码片段。

主要特点:

  • 📝 一个大的 Markdown 文件:所有笔记汇聚到一个 Markdown 文件中,形成自然的时间线
  • 活动任务跟踪:活动任务自动显示在专用面板上
  • 🔍 **纯 Markdown**:使用普通 Markdown 编写,并利用复选框管理任务
  • 💾 零数据库:您的所有笔记历史存储在一个便携的 Markdown 文件中
  • 🚀 即时启动:无需配置,只需启动即可开始写作
  • 🔒 隐私优先:完全在本地运行,您的笔记永远不会离开您的设备
  • 现代/复古界面:使用 FastAPI 构建的干净、响应式设计
  • 📚 网站链接和归档:保存网站链接,并生成链接网站的静态 HTML 归档版本
  • 🎨 多种主题:可选择多种主题
  • 🔗 保存文件/图片:在本地归档文件和图片
  • 🖥️ 多个实例:可以打开多个 NoteFlow 实例,在不同目录中记录笔记

总之,NoteFlow 为用户提供了一个简单、高效的方式来记录和管理笔记与任务。

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

官方没有提供 docker 镜像,也没有 Dockerfile,所以老苏弄了一个,但是不知道哪里没弄好,路径中出现了 --port,目前没发现有什么影响,就这样凑合用吧,反正也只是为了看看软件功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 使用 Python 3.9 的基础镜像
FROM python:3.9-slim
LABEL authors="wbsu2003@gmail.com"

# 设置工作目录
WORKDIR /app

# 复制项目文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 安装 noteflow
RUN pip install noteflow

# 暴露应用所需的端口
EXPOSE 8000

# 启动 NoteFlow 应用
CMD ["noteflow", "--port", "8000"]

另外在 requirements.txt 中新增了一行 mdit-py-plugins>=0.3.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fastapi>=0.104.1  
uvicorn>=0.24.0
markdown-it-py>=3.0.0
python-multipart>=0.0.6
pydantic>=2.4.2
pathlib>=1.0.1
typing>=3.7.4.3
aiofiles>=23.2.1
jinja2>=3.1.2
requests>=2.31.0
beautifulsoup4>=4.12.0
platformdirs>=3.0.0
psutil>=5.9.5
mdit-py-plugins>=0.3.0

构建镜像和容器运行的基本命令如下👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 下载代码
git clone https://github.com/Xafloc/NoteFlow.git

# 进入目录
cd NoteFlow

# 将 Dockerfile 放入当前目录
# 修改 requirements.txt 文件

# 构建镜像
docker build -t wbsu2003/noteflow:v1 .

# 运行容器
docker run -d \
--name noteflow \
-p 8406:8000 \
-v $(pwd)/app:/app/--port \
wbsu2003/noteflow:v1

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 noteflow ,选择第一个 wbsu2003/noteflow,版本选择 latest

本镜像基于 NoteFlow v0.2.4 构建

docker 文件夹中,创建一个新文件夹 noteflow,并在其中建一个子文件夹 app

文件夹 装载路径 说明
docker/noteflow/app /app/--port 存放 md 、图片等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8406 8000

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 noteflow 和 子目录
mkdir -p /volume1/docker/noteflow/app

# 进入 noteflow 目录
cd /volume1/docker/noteflow

# 运行容器
docker run -d \
--restart unless-stopped \
--name noteflow \
-p 8406:8000 \
-v $(pwd)/app:/app/--port \
wbsu2003/noteflow

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
version: '3'

services:
rediary:
image: wbsu2003/noteflow
container_name: noteflow
restart: unless-stopped
ports:
- 8406:8000
volumes:
- ./app:/app/--port

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 noteflow 和 子目录
mkdir -p /volume1/docker/noteflow/app

# 进入 noteflow 目录
cd /volume1/docker/noteflow

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8406 就能看到主界面

右下角是设置,可以设置主题和停止服务

做笔记

上面是 Markdown 编辑器,拖过拖拽边角可以改变编辑区的高度

NoteFlow 支持标准 Markdown 语法,包括:

  • 标头
  • 列表(项目符号和编号)
  • 复选框
  • 粗体/斜体文本
  • 代码块
  • 划痕
  • 表格
  • 引用
  • 数学(使用MathJax

点编辑器的 Save Note 或者  Ctrl+Enter 可以保存笔记

标题是可选的

图像和文件

本地图片直接拖入编辑器即可自动嵌入到笔记中

保存后会显示出来

文件也是一样的,但不会显示预览

文件分别被保存在 assets/images

assets/files 文件夹中

创建任务

  • 使用 Markdown 复选框:

    1
    2
    - [ ] New task
    - [x] Completed task
  • 任务自动显示在活动任务面板中

  • 点击复选框将任务标记为完成

网站链接

在笔记中输入 + 后跟 URL 创建链接(例如:+https://laosu.tech

Save Note

站点链接将在 assets/sites 文件夹中本地保存并存档

直接点链接

FileStation

文件结构

你的笔记存储在notes.md

文件格式很简单:

1
2
3
4
5
6
7
8
9
## 2024-10-30 12:34:56 - Optional Title

Your note content here...

---

## 2024-10-30 12:33:45

Another note...

参考文档

Xafloc/NoteFlow: A lightweight note-taking application that lets your thoughts flow naturally while keeping your tasks in check. NoteFlow transforms a single Markdown file into a modern web interface where notes and tasks coexist seamlessly.
地址:https://github.com/Xafloc/NoteFlow