【Rin】基于 Cloudflare Pages + Workers + D1 + R2 全家桶

【Rin】基于 Cloudflare Pages + Workers + D1 + R2 全家桶
Laosia【Rin】基于 Cloudflare Pages + Workers + D1 + R2 全家桶
介绍
Rin 是一个基于 Cloudflare Pages + Workers + D1 + R2 全家桶,无需服务器无需备案,只需要一个解析到 Cloudfla
openRin/Rin: ⚡Dynamic blog based on Cloudflare Pages + Workers + D1 + R2
演示地址
特性
- 支持 Github OAuth 登录,默认第一个登录的用户拥有管理权限,其他用户均为普通用户
- 支持文章的写作与编辑
- 支持本地实时保存对任意文章的修改/编辑且多篇文章互不干扰
- 支持设置为仅自己可见,可以充当云端同步的草稿箱或者记录隐私性较强的内容
- 支持拖拽/粘贴上传图片到支持 S3 协议的存储桶并生成链接
- 支持设置文章别名,可通过形如 https://xeu.life/about 链接访问文章
- 支持文章不列出在首页列表中
- 支持添加友链,同时后端每间隔 20 分钟定期检查更新友链可访问状态
- 支持回复评论文章/删除评论
- 支持通过 Webhook 发送评论通知
- 支持自动识别文章中的第一张图片并作为头图展示在文章列表中
- 支持输入形如” #博客 #部署 #Cloudflare”之类的标签文本并自动解析为标签
- 更多特性请参考 https://xeu.life
准备工作
CloudFalre账号 [[【Rin】相关参数]]
- Cloudflare 的账户ID(账户主页,点击一个域名,找到账户ID)
- Cloudflare 用户 API 令牌 (账户ID找到API令牌进去,编辑 Cloudflare Workers模板,添加一个账户,D1,编辑)
- S3存储桶(R2对象存储,创建存储桶,返回找到api)
Github账号
- GitHub OAuth(https://github.com/settings/developers,注册一个应用。获取`Client ID
和
Client secret`
- GitHub OAuth(https://github.com/settings/developers,注册一个应用。获取`Client ID
域名(前端和后端,用不同二级域名)
- xyz后缀 大概11.18美元
- link后缀 大概7.18美元
部署
NOTE
介绍 项目分为前端和后端,前端部署到CloudFlare Pages。后端部署到CloudFlare Workers
一、Github fork项目
1.1,找到项目 https://github.com/openRin/Rin 点击fork到自己的仓库。名字可以自定义。
二、部署前端,pages
2.1,登录 Cloudflare 控制台,进入 Workers 和 Pages
页面,点击创建应用程序
,选择 Pages 2.2,点击连接到 Git 连接自己的 GitHub 账号并选择 Fork 的存储库 2.3,点击 开始设置
进入配置页面,构建设置按照填入以下内容:
1 | 框架预设:无 |
2.4,环境变量复制以下内容,根据自身情况修改变量值:
NOTE
重要提示 最后两行环境变量 SKIP_DEPENDENCY_INSTALL
和 UNSTABLE_PRE_BUILD
为配置 Cloudflare 使用 Bun 进行构建的参数,不要修改
1 | NAME=Laoisa # 昵称,显示在左上角 |
2.5,点击保存并部署
,等待构建部署,不出意外的话约 30s 后即可部署完成
2.6,==故障排除==
如遇以下错误,请检查环境变量中是否存在空格等无关内容
1 | 2024-06-07T02:24:04.979145Z Using v2 root directory strategy |
如错误提示为以下内容,请点击重试部署
再次尝试:
1 | 16:30:39.855 Using v2 root directory strategy |
三、部署后端
3.1,配置 GitHub Action
3.1.1,在自己 fork 的仓库中 > Settings
> Secrets and Variables
> Actions
> Repository secrets
点击 New repository secret
创建以下两个密钥:
NOTE
密钥生成器 秘钥生成器地址: https://www.avast.com/random-password-generator
1 | CLOUDFLARE_ACCOUNT_ID=6c33ae6fdf9f9a25c97d41f96a190a65 |
3.1.2,同时你可以在Actions secrets and variables
的 Variables
中创建以下变量:
1 | DB_NAME=<数据库名称,默认rin> |
3.2, 接入 GitHub OAuth
3.2.1,打开 https://github.com/settings/developers ,选择 New OAuth App
创建一个新的 Oauth App,填入自己的应用名称与主页地址(带http://
或https://
),Authorization callback URL
填写:https://<你的后端地址>/user/github/callback
3.3,创建存储桶
3.3.1,Cloudflare 面板中点击 R2
> 创建存储桶
,填写名称,选择距离自己近的位置: 3.3.2,创建存储桶之后进入存储桶详情页 > 设置
,复制 S3 API 地址,去除末尾的存储桶名称后填入 S3_ENDPOINT
,如:
1 | S3_BUCKET=rinbucket # 桶名称 |
3.3.3,然后在公开访问
处绑定一个域名用于访问资源,绑定的域名对应于S3_ACCESS_HOST
环境变量:
1 | S3_ACCESS_HOST=https://rinbucket.diggoo.xyz |
3.4,运行action 点击actions,Deploy,run workflow。 3.5,cloudflare就会创建一个works。