Moments 私有笔记部署指南
笔记的「隐私保护」是个很敏感的话题,我们都想要无压力地记录自己的想法,又不想自己的想法被人审视。但是现在市面上的笔记软件,出于法律、商业上的考虑,笔记会明文保存在他们的服务器上(直接或间接)。开源的笔记产品往往需要自己购买服务器、部署前端、后端,对于个人用户来说,成本很高。我做了 Moments 这个开源项目,基于 Next.js 开发,可以免费私有部署到 Vercel 的服务器上,并且还能内嵌到自己的 Blog 上(比如本博客的「闲聊」页面)。这篇文章手把手讲解一下如何走完整个部署流程。
克隆项目
首先 Fork 项目到自己的 GitHub 账号,然后将此 repo 克隆到自己电脑上,执行 pnpm install
安装依赖。
配置环境变量
Moments 需要配置以下环境变量:
1. 数据库
Moments 使用 PostgreSQL 作为数据库,打开 Neon 官网,登录,创建一个免费数据库,地址选择 Asia Pacific (Singapore),然后点击创建。
点击进入刚刚创建的数据库,选中 Pooled connection,然后复制 Connection String 中的内容到项目中的 .env.local 文件中作为 DATABASE_URL 的值(如果没有 .env.local 文件则通过 cp .env.example .env.local
创建)。!image-1.png然后在命令行中执行 pnpm db:push
即可将数据库结构推送到刚刚创建的数据库中。
2. 身份验证
打开 Clerk 官网,注册一个账号,然后进入 Dashboard 创建一个应用,选择 Sign in with email 或者通过 Github、Google 登录。
点击 Dashboard 中的 API Keys ,复制 Next.js 的环境变量,填入项目中的 .env.local 文件中。
3. 限流
打开 Upstash 官网,注册一个账号,创建一个数据库,地区选择新加坡,复制 REST API,填入项目中的 .env.local 文件中作为 UPSTASH_REDIS_REST_TOKEN
和 UPSTASH_REDIS_REST_URL
的值。
部署到 Vercel
在 Vercel 项目中关联第一步 Fork 的 Moments 仓库,展开 Environment variables,并将刚才的 .env.local 文件中的环境变量粘贴进 Vercel 中。
地区选择新加坡,保存配置点击 Deploy,坐下来等个几分钟,等待 Vercel 完成部署。
一切顺利的话,你的私有 Moments 已经上线了,可以直接通过 Vercel 提供的二级域名访问,后面你可以通过 Vercel 来配置自定义域名,想要同步主仓库的更新,只需要在 GitHub 上点击 Sync 即可。