基于S3存储的笔记应用Notea

什么是 Notea ?

Notea 是存储在 S3 上的自托管笔记应用程序,Notea 不需要数据库。笔记存储在 AWS S3 存储桶或兼容的 API 中。这意味着您可以使用 MinIO(自托管)、阿里云 OSS(如 AWS S3)或 NAS 来存储您的数据。

什么是 S3 存储

S3Amazon Web Services (AWS) 提供的一项服务, 它通过基于 RESTful API 的接口提供对象存储。

Notea支持多种对象存储,包括: MinIOAmazon S3Aliyun OSSTencent COSOracle Object Storage ExoscaleCloudflare R2 ,具体的设置可以参考官方的示例:https://github.com/notea-org/notea/tree/main#storage

什么是 MinIO ?

MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。其兼容亚马逊 S3云存储服务接口,非常适合于存储大容量非结构化的数据。

下面的安装中,老苏选择了 MinIO作为 Notea 的存储桶

安装

在群晖上以 Docker 方式安装。

老苏选择的是main 而不是 latest,因为 latest 对应的版本为 0.3.6,已经有两年没有更新了;

撰写本文时,main对应的版本是 0.4.0-alpha

docker cli 安装

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 notea 和 子目录
mkdir -p /volume2/docker/notea/data

# 进入 notea 目录
cd /volume2/docker/notea

# 运行 MinIO 容器
docker run -d \
--restart unless-stopped \
--name notea-minio \
--entrypoint sh \
-v $(pwd)/data:/data \
-e MINIO_ACCESS_KEY=Q3AM3UQ867SPQQA43P2F \
-e MINIO_SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
minio/minio \
-c 'mkdir -p /data/notea && mkdir -p /data/notea-test && minio server /data'
可变
MINIO_ACCESS_KEY 访问密钥
MINIO_SECRET_KEY 秘密密钥

【注意 】:MINIO_ACCESS_KEYMINIO_SECRET_KEY 已经被弃用,取而代之的是 MINIO_ROOT_USERMINIO_ROOT_PASSWORD。这两个变量的作用和前两个一样,只是名字不同。

如果 MinIO 能正常启动了,接下来就可以运行 Notea

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 运行 Notea 容器
docker run -d \
--restart unless-stopped \
--name notea-webapp \
--link notea-minio:minio \
-p 3320:3000 \
-e STORE_ACCESS_KEY=Q3AM3UQ867SPQQA43P2F \
-e STORE_SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
-e STORE_BUCKET=notea \
-e STORE_END_POINT=http://minio:9000 \
-e STORE_FORCE_PATH_STYLE=true \
-e PASSWORD=notea \
-e COOKIE_SECURE=false \
cinwell/notea:main
可变
STORE_ACCESS_KEY MinIO的访问密钥
STORE_SECRET_KEY MinIO的秘密密钥
STORE_BUCKET MinIO的存储桶名称
STORE_END_POINT MinIO的访问地址
PASSWORD 登录网页的密码
COOKIE_SECURE 如果网站不是https,需要将其设置为 false

更多的环境变量请参考官方文档:https://github.com/notea-org/notea/tree/main#environment-variables

docker-compose 安装

Notea 涉及到两个镜像,比较简单的安装方式是编排 docker-compose.yml 文件,然后用 docker-compose up -d 命令一键启动

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: '3'

services:
minio:
image: minio/minio
container_name: notea-minio
restart: unless-stopped
#ports:
# - 9000:9000
volumes:
- ./data:/data
environment:
MINIO_ACCESS_KEY: Q3AM3UQ867SPQQA43P2F
MINIO_SECRET_KEY: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
entrypoint: sh
command: -c 'mkdir -p /data/notea && mkdir -p /data/notea-test && minio server /data'

notea:
image: cinwell/notea:main
container_name: notea-webapp
restart: unless-stopped
ports:
- 3320:3000
environment:
STORE_ACCESS_KEY: Q3AM3UQ867SPQQA43P2F
STORE_SECRET_KEY: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
STORE_BUCKET: notea
STORE_END_POINT: http://notea-minio:9000
STORE_FORCE_PATH_STYLE: "true"
PASSWORD: notea
COOKIE_SECURE: "false"
BASE_URL: http://192.168.0.197:3320/
depends_on:
- minio

然后执行下面的命令

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

# 进入 notea 目录
cd /volume2/docker/notea

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

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3320 就能看到登录界面

按前面的设置,PASSWORD设为了 notea

主界面

中文

点左下角的齿轮,进入 Settings

Settings –> Basic –> Language,选择 简体中文

即时生效,不需要保持或者刷新页面

新建页面

+ 号新建页面

文档支持 markdown 格式

支持分享

每日笔记

可以新建 每日笔记

和页面的区别在于默认以日期为文件名

笔记文件在 FileStation 中的存储

最后来张官方效果图,看起来在移动端上,显示效果也还不错

参考文档

QingWei-Li/notea: 📒 Self hosted note taking app stored on S3
地址:https://github.com/QingWei-Li/notea

Notea - Self-hosted note-taking app stored on S3 | AKA a self-hosted Notion alternative : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/n0jacf/comment/gw89iyo/?utm_source=share&utm_medium=web2x&context=3