基于阿里云OSS搭建私人笔记

整体规划

目前,市场上各类笔记产品都挺多的,有道云笔记、印象笔记、简书、notion都是比较成熟、且已经市场化的产品,作为一个普通的用户使用这些学习成本更低,大厂的备份应该更安全(理论如此)。本地的MD编辑器有VScode、Typora、marktext等工具。因此,这就是个自己瞎折腾的记录与总结~

成品分享地址:跳转。由于是走内网穿透,链接可能会挂,内容一致。

目标

  1. 易用性上,B/S架构,公网随时可以开写,当作随手记。支持分享。
  2. 构建上,服务端轻量化,搭建简单。
  3. 安全上,源文件自行控制,加密存储。公网访问密码保护。

实现方式与整体流程

本次就是使用开源、基于S3存储的笔记应用Notea,与阿里云OSS的存储,搭建属于自己的笔记平台。

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

阿里云OSS:阿里云对象存储 OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,支持多种存储类型。(简单理解,高可靠的”网盘“,可别真当网盘用了,成本太高,富哥请忽视)

S3存储:S3是AmazonWebServices(AWS)提供的一项服务,全名是 Simple Storage Service,简便的存储服务,通过基于RESTfulAPI的接口提供对象存储。

整体设计流程图如下,加上标记的是本次选择的方式。


开始动手

存储篇

以阿里云OSS为例,技术步骤分为开通对象存储→创建与配置bucket→创建子权限账号。具体费用可以购买阿里云的套餐包,或者按量收费。费用不做介绍,自行查看OSS的计费方式定价详情

ps:不同于云盘仅按照容量收费,OSS按照存储类型,存储空间、请求次数、流量大小等项计费。

开通对象存储

  1. 打开OSS网站,注册、登录。
  2. 勾选服务协议,然后点击立即开通,有警告的话点击确定(不然能咋办呢╮(╯▽╰)╭)。

创建与配置bucket

  1. 登录OSS控制台
  2. 创建bucket与基础设置(下图,绿框重点关注,甚至需要记下;红框涉及费用)。

各项的注意事项,本身提示已经写了,需要关注的有:

  • Bucekt名称唯一、地域属性(endpoint)不可修改。
  • 存储类型建议”标准存储“,其余的对于笔记不太合适,不要因为价格便宜而选了不合适自己的。
  • 存储冗余类型如果需要更高可靠,选择”同城冗余存储“(当然更贵一些),一般选择”本地冗余存储“就行。
  • 读写权限,一定选择私有,你也不想你的笔记被其他人看到吧?
  • 其他功能随便点点就行了,看好是否收费就行。

需要重点记下的内容有

Bucket名称:chdz
Endpoint:oss-cn-beijing.aliyuncs.com

创建完成后,还有很多进阶配置,例如版本控制、域名管理、传输加速……,有些是收费的,有些目前免费使用,具体不做赘述,自行摸索吧。

创建子账号

空间创建好了,接下来创建一个子账号,可以用来访问,管理这个bucket空间。

  1. 打开阿里云的访问控制界面。
  2. 在RAM 访问控制-身份管理-用户界面,选择”创建用户“,创建一个登录名称。

因为此步骤涉及到你阿里云账号权限配置,会二次验证身份。

创建完成后,千万别关闭创建用户界面。这里需要复制并记下AccessKey ID和AccessKey Secret。一旦关闭后,无法找回,只能删除重新创建一个吧。

复制后,内容形式如下:

用户登录名称 chdz@1265201209348675.onaliyun.com

AccessKey ID LTAxxxxx

AccessKey Secret h0nExxxx

  1. 配置此账号的权限,让其可以访问我们创建的bucket空间,如下图所示。

    需要注意的是,为了方便(偷懒),这块我配置的是让此账号可以管理所有OSS。如果要精细化权限,可以设置资源组,把bucket加入资源组,然后授权此账号可以访问指定资源组。

  2. 完成

    总结下,需要重点记录下的信息有:

    Bucket名称:chdz
    Endpoint:oss-cn-beijing.aliyuncs.com
    AccessKey ID: LTAxxxxx
    AccessKey Secret: h0nxxxx

注:为了安全,本次记录的所有bucket、账号信息均已删除,失效。大家在创建的时候注意信息安全,避免数据泄露造成的经济损失。

基础设施篇

notea笔记应用支持docker部署,且占用资源少,所以对部署的设备、环境兼容性高。搭建所选择的基础设施可以是云服务器、云主机,也可以是支持docker的NAS、个人PC、软路由等设备中。

本次选择的是“随身wifi”,去年比较火的时候,十几块包邮买了一个。高通410的CPU,刷入debian后,随便找个插座就是一台“服务器”了。关于这个棒子,网上刷机教程、玩法特别多,已有大佬总结版本:https://blog.csdn.net/weixin_41099712/article/details/130711724 。我目前这个棒子刷入debian后docker跑了一个GPT,一个notea,具体信息如下,不得不说这个棒子还挺能打的。

注:使用随身WiFi只是“兴趣使然”,完全可以在更稳定的环境下部署使用。这也体现自建笔记的一个优势,就算这个设备坏了,数据存在OSS中,在其他环境重新搭建一个即可,不存在数据丢失的风险。

应用搭建篇

  1. docker基本环境的安装。

    docker的安装本文不做赘述了,引用几个大佬的分享。

    菜鸟教程-Docker的介绍、部署与使用CSDN Docker入门

    如果你是小白,当你正确用到docker version,就可以了。

  2. notea笔记的安装与运行。

    首先放上notea开源地址:https://github.com/notea-org/notea ,然后抱着选新不选旧的态度,本次选用的是main而不是latest,因为latest对应的版本为0.3.6,已经有两年没有更新了,版本差异应该不大,部署方式GitHub上有详细介绍,本文安装个人的安装过程进行记录,按照最方便的方式来,具体步骤分两步。

    第一步,拉取notea main版本的镜像,使用“docker pull cinwell/notea:main”命令拉取镜像,由于我这边已经下载好了,提示已更新。下载完成后可以使用“docker images”查看拉取的镜像信息。

    第二步,写好docker命令,复制到控制台中,一键运行容器。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    docker run -d \
    --name notea \
    -p 4000:3000 \
    -e STORE_ACCESS_KEY=LTAxxxxx \
    -e STORE_SECRET_KEY=h0nxxxxx \
    -e STORE_BUCKET=chdz \
    -e STORE_END_POINT=https://oss-cn-beijing.aliyuncs.com \
    -e STORE_REGION=oss-cn-beijing \
    -e PASSWORD=notea \
    -e COOKIE_SECURE=false \
    cinwell/notea:main

    命令介绍与注意事项:

    第一行、第二行,不用管;

    第三行-p 指的是容器的端口映射,主机(宿主)端口:容器端口。4000:3000 指的是容器内的3000端口指向主机的4000端口。即,如果主机的IP地址是192.168.1.2,在局域网下,用192.168.1.2:4000 即可访问;

    第四行“STORE_ACCESS_KEY”对应让你记下的“AccessKey ID”;

    第五行“STORE_SECRET_KEY”对应“AccessKey Secret”;

    第六行“STORE_BUCKET”对应“Bucket名称”;

    第七行“STORE_END_POINT”对应“Endpoint”,注意,由于阿里云自身的安全考虑,此处必需要加上 https://

    第八行“STORE_REGION”,选择Endpoint的对应的地址即可。

    第九行是笔记的密码,自行设置;

    第十行是设定是否走的https,一般选择false;

    第十一行是本容器选择的镜像(第一步拉取notea的main版本)。

    执行完成后,可以查看容器的运行状态。

  3. docker与容器的自启。

    这一步或许你在docker的安装环境已经设置过了,那就可以跳过。

    docker开机自启命令“systemctl enable docker”;

    notea容器自启命令“docker update –restart=always notea”

  4. 局域网环境下,使用主机IP:4000就可以访问了,设置中文,版式,导入导出等用法,可自行摸索。

网络篇

若基础设施使用的云服务器、ECS等有公网IP,或者IPv6地址的,可直接访问即可。

本次使用的 使用FRP作为内网穿透方式,实现公网访问。

FRP教程,等有空继续写~~~

  • Copyrights © 2015-2024 Denzel.Chen

请我喝杯咖啡吧~

支付宝
微信