抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

很久很久之前就一直在找一些好用的并且开源的note app,尝试过trilium、蚂蚁笔记、notion、语雀 都没有找到我心仪的那一款,要么是数据是存储在境外,一旦国家的墙更厚了,就尬了,另外一些就是数据很分散,备份出来的数据无法很顺利的导入到其他的app中。
直到有一天我发现了Standard notes。

关于Standard notes

Standard notes是一款免费、开源且完全加密的笔记应用程序。

简单介绍一些它的优点:

  • 开源 代码开源,可以自己创建对应的服务,将数据存储在自己的自建数据库中,这也是我最看重的一点
  • 免费 知识付费时代,有一些免费的可维护的项目也是很难得,该产品也是通过开源的形式,然后使用官方的服务队插件进行收费
  • 完全加密 按照文档的说法是完全的端到端加密,数据在浏览器进行接口传输之前就已经进行了加密,避免网络传输过程中被拦截后数据泄露的场景

部署Standard notes

Standard notes大部分语言是使用node写的,按照微服务的方式进行拆分,分为几大块:

服务层:

  • 同步服务器 业务逻辑的核心,负责对用户数据的所有操作。
  • 同步服务器 work 同步服务器 JS Worker 负责同步服务器 JS 可能为后台处理卸载的所有异步任务。这包括例如处理电子邮件备份、解决笔记重复问题、将笔记发送到扩展服务器等等。
  • 身份验证 该服务器负责所有授权和认证机制。身份验证是处理和处理所有与帐户相关的元数据的地方。
  • 身份验证 work Auth Worker 负责所有与认证和授权领域相关的异步任务例如,处理帐户删除请求和用户的注册后任务。
  • API网关 这是整个架构的主要“入口点”。API 网关充当所有无法直接访问的服务的路由器和代理。

    数据层:

  • 数据库 MySQL 数据库服务器。这是存储所有数据的地方。
  • 缓存 Redis 缓存节点,其中保留所有临时数据以进行性能优化和自动过期功能。在自托管模式下,Redis 默认用作服务与其work之间的通信队列。

部署步骤

我是使用的docker-compose 加上自己的公有云数据库和缓存进行部署的,官方给出的docker-compose文件可以参见:文档

  • 第一步:将https://github.com/standardnotes/standalone git仓库的内容clone或者下载下来放到服务器的对应目录
  • 第二步:进行对应的文件夹,然后执行:./server.sh init
  • 第三步:编辑 .env文件配置自己的数据库以及对应的token,编辑docker文件内的api-gatewat.env文件和auth.env文件,修改对应的token
  • 第四步:当配置文件修改完成以后,执行./server.sh start 启动服务
  • 第五步:执行./server.sh logs 查看服务日志,如果出现问题根据对应的提示进行解决
  • 第六步:给api-gateway服务配置对应的代理,我是使用的nginx,用域名进行代理即可

以上的所有步骤都可以在官方文档中看到。

注意:

我的docker-compose根据官方的文件修改而来,使用的是自己的数据层,所以没有启动对应的数据库,如下,具体步骤可以参考以上文档。

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
version: '3.5'
services:
syncing-server-js:
image: standardnotes/syncing-server-js:1.35.1
entrypoint: [
"./docker/entrypoint.sh", "start-web"
]
env_file: .env
environment:
PORT: 3000
restart: unless-stopped
networks:
- standardnotes_standalone

syncing-server-js-worker:
image: standardnotes/syncing-server-js:1.35.1
depends_on:
- syncing-server-js
entrypoint: [
"./wait-for.sh", "syncing-server-js", "3000",
"./docker/entrypoint.sh", "start-worker"
]
env_file: .env
environment:
PORT: 3000
restart: unless-stopped
networks:
- standardnotes_standalone

api-gateway:
image: standardnotes/api-gateway:1.19.0
depends_on:
- auth
- syncing-server-js
env_file: docker/api-gateway.env
ports:
- ${EXPOSED_PORT}:3000
environment:
PORT: 3000
AUTH_JWT_SECRET: '${AUTH_JWT_SECRET}'
entrypoint: [
"./wait-for.sh", "auth", "3000",
"./wait-for.sh", "syncing-server-js", "3000",
"./docker/entrypoint.sh", "start-web"
]
networks:
- standardnotes_standalone

auth:
image: standardnotes/auth:1.11.0
depends_on:
- syncing-server-js
entrypoint: [
"./wait-for.sh", "syncing-server-js", "3000",
"./docker/entrypoint.sh", "start-web"
]
env_file: docker/auth.env
environment:
PORT: 3000
DB_HOST: '${DB_HOST}'
DB_REPLICA_HOST: '${DB_REPLICA_HOST}'
DB_PORT: '${DB_PORT}'
DB_DATABASE: '${DB_DATABASE}'
DB_USERNAME: '${DB_USERNAME}'
DB_PASSWORD: '${DB_PASSWORD}'
DB_DEBUG_LEVEL: '${DB_DEBUG_LEVEL}'
DB_MIGRATIONS_PATH: '${DB_MIGRATIONS_PATH}'
REDIS_URL: '${REDIS_URL}'
AUTH_JWT_SECRET: '${AUTH_JWT_SECRET}'
networks:
- standardnotes_standalone

auth-worker:
image: standardnotes/auth:1.11.0
depends_on:
- auth
entrypoint: [
"./wait-for.sh", "auth", "3000",
"./docker/entrypoint.sh", "start-worker"
]
env_file: docker/auth.env
environment:
PORT: 3000
DB_HOST: '${DB_HOST}'
DB_REPLICA_HOST: '${DB_REPLICA_HOST}'
DB_PORT: '${DB_PORT}'
DB_DATABASE: '${DB_DATABASE}'
DB_USERNAME: '${DB_USERNAME}'
DB_PASSWORD: '${DB_PASSWORD}'
DB_DEBUG_LEVEL: '${DB_DEBUG_LEVEL}'
DB_MIGRATIONS_PATH: '${DB_MIGRATIONS_PATH}'
REDIS_URL: '${REDIS_URL}'
AUTH_JWT_SECRET: '${AUTH_JWT_SECRET}'
networks:
- standardnotes_standalone

networks:
standardnotes_standalone:
name: standardnotes_standalone

使用Standard notes

当所有的部署步骤完成,并且配置好反向代理之后,就可以正式启用对应的服务了,使用步骤如下:

  • 打开 https://app.standardnotes.org/ 链接
  • 点击Account,然后点击注册,在高级配置里面配置上自己的服务域名
  • 填上自己的账号,然后就可以开始使用了
  • 初始情况下的编辑器是默认的官方编辑器,可以引入markdown编辑器,文档如下:https://yjk.im.sb/sn-markdown/

使用感受

感觉使用起来很清爽,数据备份也很容易,备份出来的数据是我想要的样子,这样以后即使这个软件不可用了我还可以迁移到其他的服务中,也遇到了一些问题:

  • 断网情况下可能同步的不是特别及时,所以如果断网情况下编辑内容话尽量在客户端中进行,它支持各个终端的客户端,我一般是习惯网页型的
  • 如果不放心它们的官方网页,也可以进行自建,文档如下:https://github.com/standardnotes/web
    还有更多的可以自己定义的地方可以发掘。。。

结语

我理想中的笔记本是随时拿来可用,我想记录一个东西的时候立刻能让我创建对应的文档并且进行记录,特别是一些零碎的内容,如果文档打开的过慢,或者操作很复杂,甚至能让我的灵感消失,所以我选用了这么一款部署起来比较折腾,但是使用起来却让我很喜欢的note app,
备份也是全量的很简单的text格式,如果有更好用的,欢迎给我推荐,如果想要联系我,也可以直接给我发邮件:songbo2021@outlook.com

评论