Skip to content

Commit 0db4f71

Browse files
committedJun 7, 2024·
fix: can not add env start with GITHUB_
* by add `RIN_` prefix,now `GITHUB_CLIENT_ID` is `RIN_GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` is `RIN_GITHUB_CLIENT_SECRET`
1 parent 6592e4d commit 0db4f71

File tree

6 files changed

+66
-46
lines changed

6 files changed

+66
-46
lines changed
 

‎docs/DEPLOY.md

+53-35
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,23 @@
33
项目目前处于开发阶段,文档可能未及时更新或存在描述不清,如遇部署失败请提 [Issue](https://github.com/OXeu/Rin/issues/new?assignees=&labels=help+wanted&projects=&template=need-help.md&title=%5BHelp%5D+%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0)
44

55
## 更新日志
6+
67
### v0.2.0 2024-06-07 更新
7-
* 新增 `S3_CACHE_FOLDER` 环境变量
8-
* 环境变量加密列表与变量列表更新,仅保留必须加密的环境变量
9-
* 加密变量现在可以通过 Github 直接配置
10-
* Github 变量配置更新,新增必须通过 Github 配置的加密变量(S3 存储,用于 SEO 索引保存)
8+
9+
- 新增 `S3_CACHE_FOLDER` 环境变量
10+
- 环境变量加密列表与变量列表更新,仅保留必须加密的环境变量
11+
- 加密变量现在可以通过 Github 直接配置
12+
- Github 变量配置更新,新增必须通过 Github 配置的加密变量(S3 存储,用于 SEO 索引保存)
13+
- `GITHUB_CLIENT_ID``GITHUB_CLIENT_SECRET`现在添加了前缀`RIN_``RIN_GITHUB_CLIENT_ID`,`RIN_GITHUB_CLIENT_SECRET`),以解决 Github 变量不能以 `GITHUB_` 开头的问题,使用 Cloudflare 面板配置的 `GITHUB_CLIENT_ID``GITHUB_CLIENT_SECRET` 不受影响
1114

1215
## 迁移指南
16+
1317
无特别说明时正常的版本更新直接同步 frok 的仓库即可
1418

1519
### v0.2.0 迁移指南
16-
* 由于引入 SEO 优化导致需要在 Github 中配置 S3 存储的环境变量,因此需要额外在 Github 中配置以下环境变量(明文,添加到 Variables):
20+
21+
- 由于引入 SEO 优化导致需要在 Github 中配置 S3 存储的环境变量,因此需要额外在 Github 中配置以下环境变量(明文,添加到 Variables):
22+
1723
```ini
1824
SEO_BASE_URL=<SEO 基础地址,用于 SEO 索引,默认为 FRONTEND_URL>
1925
SEO_CONTAINS_KEY=<SEO 索引时只索引以 SEO_BASE_URL 开头或包含SEO_CONTAINS_KEY 关键字的链接,默认为空>
@@ -24,36 +30,44 @@ S3_REGION=<S3 存储桶所在区域,如使用 Cloudflare R2 填写 auto 即可
2430
S3_ENDPOINT=<S3 存储桶接入点地址>
2531
S3_ACCESS_HOST=<S3 存储桶访问地址,末尾无'/'>
2632
```
33+
2734
同时添加以下加密环境变量(加密,添加到 Secrets):
35+
2836
```ini
2937
S3_ACCESS_KEY_ID=<你的S3AccessKeyID>
3038
S3_SECRET_ACCESS_KEY=<你的S3SecretAccessKey>
3139
```
32-
以上环境变量在之前的版本中是通过 Cloudflare 面板配置的,现在需要迁移到 Github 中配置,新版本的部署 Github Action 会自动其上传到 Cloudflare,之后就不再需要在 Cloudflare 面板中配置这些环境变量了
3340

41+
以上环境变量在之前的版本中是通过 Cloudflare 面板配置的,现在需要迁移到 Github 中配置,新版本的部署 Github Action 会自动其上传到 Cloudflare,之后就不再需要在 Cloudflare 面板中配置这些环境变量了
3442

3543
## 其他文档
44+
3645
[环境变量列表](./ENV.md)
3746

38-
>[!TIP]
47+
> [!TIP]
3948
> 下文代码块中若出现形如 <文字> 的内容表示需要根据文字提示替换为自己的内容(`<``>`不要保留),如:
49+
>
4050
> ```
4151
> bun wrangler d1 create <数据库名称>
4252
> ```
43-
> 表示将 <数据库名称> 替换为你喜欢的名称,这里使用 rin替换:
53+
>
54+
> 表示将 <数据库名称> 替换为你喜欢的名称,这里使用 rin 替换:
55+
>
4456
> ```
4557
> bun wrangler d1 create rin
4658
> ```
59+
>
4760
> 这就是最终的命令
4861
49-
5062
打开仓库页面:https://github.com/OXeu/Rin
51-
## Fork
63+
64+
## Fork
65+
5266
点击 Fork 按钮 fork 出一个新仓库
5367
![1000000657](https://github.com/OXeu/Rin/assets/36541432/df3607ca-a8a9-49b8-92ce-6b348afeb13f)
5468
55-
5669
## 前端
70+
5771
登录 [Cloudflare](https://dash.cloudflare.com) 控制台,进入 `Workers 和 Pages` 页面,点击`创建应用程序`,选择 Pages
5872
5973
![1000000658](https://github.com/OXeu/Rin/assets/36541432/35d4f9e3-3af3-4ec8-8060-2a352f4d51ae)
@@ -62,22 +76,24 @@ S3_SECRET_ACCESS_KEY=<你的S3SecretAccessKey>
6276
6377
![1000000666](https://github.com/OXeu/Rin/assets/36541432/e3b6da75-1a5f-46ec-9820-636cc5238023)
6478
65-
6679
点击 `开始设置` 进入配置页面:
6780
6881
构建设置按照填入以下内容:
82+
6983
```
7084
框架预设:无
7185
构建命令:bun b
7286
构建输出目录:client/dist
7387
路径:<留空>
7488
```
75-
![1000000659](https://github.com/OXeu/Rin/assets/36541432/98fb3021-932b-4bfa-8118-3378f98ff628)
7689
90+
![1000000659](https://github.com/OXeu/Rin/assets/36541432/98fb3021-932b-4bfa-8118-3378f98ff628)
7791
7892
环境变量复制以下内容,根据自身情况修改变量值:
79-
>[!IMPORTANT]
80-
最后两行环境变量 `SKIP_DEPENDENCY_INSTALL` 和 `UNSTABLE_PRE_BUILD` 为配置 Cloudflare 使用 Bun 进行构建的参数,不要修改
93+
94+
> [!IMPORTANT]
95+
> 最后两行环境变量 `SKIP_DEPENDENCY_INSTALL` 和 `UNSTABLE_PRE_BUILD` 为配置 Cloudflare 使用 Bun 进行构建的参数,不要修改
96+
8197
```ini
8298
NAME=Xeu # 昵称,显示在左上角
8399
DESCRIPTION=杂食动物 # 个人描述,显示在左上角昵称下方
@@ -87,8 +103,8 @@ PAGE_SIZE=5 # 默认分页大小,推荐 5
87103
SKIP_DEPENDENCY_INSTALL=true
88104
UNSTABLE_PRE_BUILD=asdf install bun latest && asdf global bun latest && bun i
89105
```
90-
![1000000660](https://github.com/OXeu/Rin/assets/36541432/0fe9276f-e16f-4b8a-87c5-14de582c9a3a)
91106

107+
![1000000660](https://github.com/OXeu/Rin/assets/36541432/0fe9276f-e16f-4b8a-87c5-14de582c9a3a)
92108

93109
点击`保存并部署`,等待构建部署,不出意外的话约 30s 后即可部署完成:
94110

@@ -98,8 +114,7 @@ UNSTABLE_PRE_BUILD=asdf install bun latest && asdf global bun latest && bun i
98114

99115
![1000000662](https://github.com/OXeu/Rin/assets/36541432/57c61ad6-c324-48e4-a28f-a1708fd7d41a)
100116

101-
102-
前端就全部部署完成啦🎉
117+
前端就全部部署完成啦 🎉
103118

104119
### 故障排除
105120

@@ -130,14 +145,14 @@ UNSTABLE_PRE_BUILD=asdf install bun latest && asdf global bun latest && bun i
130145
后端部署比较繁琐,但经过几次的优化部署流程,现在已经大大简化了
131146

132147
### 获取用户 ID 与 API 令牌
148+
133149
参照 https://developers.cloudflare.com/workers/wrangler/ci-cd/ 来配置 Github Actions 所需的 Cloudflare 登录环境变量
134150

135151
ID 随意点击一个自己绑定的域名,进入后在右侧(需要向下滑动一段距离)可以找到`账户ID`
136152

137153
创建 API 令牌:点击右上角`头像` > `我的个人资料` > `API 令牌` > `创建令牌`,模板选择`编辑 Cloudflare Workers`
138154
![1000000663](https://github.com/OXeu/Rin/assets/36541432/3a34a2ad-b993-47fe-965d-31cca4a8e92a)
139155

140-
141156
创建完成后保存令牌
142157

143158
### 配置 Github Action
@@ -150,6 +165,7 @@ CLOUDFLARE_API_TOKEN=<你的令牌>
150165
```
151166

152167
同时你可以在`Actions secrets and variables``Variables` 中创建以下变量:
168+
153169
```ini
154170
DB_NAME=<数据库名称,默认rin>
155171
WORKER_NAME=<Cloudflare Worker 名称,默认rin-server>
@@ -163,26 +179,27 @@ S3_REGION=<S3 存储桶所在区域,如使用 Cloudflare R2 填写 auto 即可
163179
S3_ENDPOINT=<S3 存储桶接入点地址>
164180
S3_ACCESS_HOST=<S3 存储桶访问地址,末尾无'/'>
165181
```
182+
166183
> [!TIP]
167184
> 关于 SEO 工作原理与配置请参考 [SEO 文档](./SEO.md)
168185
169186
完成准备工作以后即可在 Github Action 中手动触发一次 Workflow,一切正常的话很快就能部署完成
170187

171-
这样服务端就部署好了,但是目前仍然不能运行,我们还需要配置 Github OAuth用于登录和 S3 存储用于存储图片
172-
188+
这样服务端就部署好了,但是目前仍然不能运行,我们还需要配置 Github OAuth 用于登录和 S3 存储用于存储图片
173189

174190
> [!TIP]
175191
> 在 v0.2.0 版本后,不再需要回到 Cloudflare 面板配置后端域名与一些敏感的环境变量,所有环境变量都可以通过 Github 创建对应的密钥来添加,如果你在更早的版本中部署过,需要将环境变量迁移到 Github 中
176192
177193
> ~~回到 Cloudflare 面板配置后端域名与一些敏感的环境变量~~
178-
>
194+
>
179195
> ~~`设置` > `触发器` > `自定义域` 处可以自定义后端的域名,默认也有分配一个`workers.dev`的域名~~
180-
>
196+
>
181197
> ~~`设置` > `变量` > `环境变量` 处编辑变量,点击添加变量,复制粘贴以下内容至变量名处即可自动添加上所有环境变量,之后再根据自己的具体配置修改变量值:~~
182-
在 v0.2.0 版本后,以下所有环境变量都建议通过在 Github 创建对应的密钥来添加,添加方式与上文添加 `CLOUDFLARE_ACCOUNT_ID``CLOUDFLARE_API_TOKEN` 相同,以下是环境变量列表:
198+
> 在 v0.2.0 版本后,以下所有环境变量都建议通过在 Github 创建对应的密钥来添加,添加方式与上文添加 `CLOUDFLARE_ACCOUNT_ID``CLOUDFLARE_API_TOKEN` 相同,以下是环境变量列表:
199+
183200
```ini
184-
GITHUB_CLIENT_ID=<你的GithubClientID>
185-
GITHUB_CLIENT_SECRET=<你的GithubClientSecret>
201+
RIN_GITHUB_CLIENT_ID=<你的GithubClientID>
202+
RIN_GITHUB_CLIENT_SECRET=<你的GithubClientSecret>
186203
JWT_SECRET=<JWT 认证所需密钥,可为常规格式的任意密码>
187204
S3_ACCESS_KEY_ID=<你的S3AccessKeyID>
188205
S3_SECRET_ACCESS_KEY=<你的S3SecretAccessKey>
@@ -196,15 +213,12 @@ S3_SECRET_ACCESS_KEY=<你的S3SecretAccessKey>
196213
https://<你的后端地址>/user/github/callback
197214
```
198215

199-
这里附上我的参数
216+
这里附上我的参数
200217
![Github OAuth 配置](https://github.com/OXeu/Rin/assets/36541432/74ab8d16-93ca-4919-beec-4beb7a2003a6)
201218

219+
随后配置环境变量中 OAuth 部分
202220

203-
204-
205-
随后配置环境变量中 OAuth 部分
206-
207-
以下是具体的配置,`GITHUB_CLIENT_ID`填写 Github OAuth App 中的`Client ID`,`GITHUB_CLIENT_SECRET`填写在 Github OAuth App 点击 `Generate a new client secret` 后的 `Client secret`,注意每次创建后只展示一次,后续无法查看,如果不慎丢失重新生成一个新的即可
221+
以下是具体的配置,`RIN_GITHUB_CLIENT_ID`填写 Github OAuth App 中的`Client ID`,`RIN_GITHUB_CLIENT_SECRET`填写在 Github OAuth App 点击 `Generate a new client secret` 后的 `Client secret`,注意每次创建后只展示一次,后续无法查看,如果不慎丢失重新生成一个新的即可
208222

209223
## 创建 R2 桶
210224

@@ -213,25 +227,29 @@ https://<你的后端地址>/user/github/callback
213227
Cloudflare 面板中点击 `R2` > `创建存储桶`,填写名称,选择距离自己近的位置:
214228
![1000000665](https://github.com/OXeu/Rin/assets/36541432/17c5ad7b-8a3a-49b2-845a-8d043484aa63)
215229

216-
217230
创建存储桶之后进入存储桶详情页 > `设置`,复制 S3 API 地址,去除末尾的存储桶名称后填入 `S3_ENDPOINT`,如:
231+
218232
```ini
219233
S3_BUCKET=image # 桶名称
220234
S3_REGION=auto # 地区 auto 不用修改
221235
S3_ENDPOINT=https://8879900e5e1219fb745c9f69b086565a.r2.cloudflarestorage.com
222236
```
237+
223238
然后在`公开访问`处绑定一个域名用于访问资源,绑定的域名对应于`S3_ACCESS_HOST`环境变量:
239+
224240
```ini
225241
S3_ACCESS_HOST=https://image.xeu.life
226242
```
243+
227244
然后创建一个 API 令牌用于访问存储桶,可参考 https://developers.cloudflare.com/r2/api/s3/tokens/ ,这里不再赘述,拿到 ID 和 TOKEN 对应于`S3_ACCESS_KEY_ID``S3_SECRET_ACCESS_KEY` 变量,填入 Workers 的环境变量中
228245

229246
至此后端就已经部署完成了,记得将前端的 API_URL 修改为后端的地址,与此同时,如果你需要 WebHook 通知的话,还可在后端配置环境变量`WEBHOOK_URL`为你的 Webhook 地址,在新增评论时会像目标 URL 发送一条 POST 消息,消息格式为:
247+
230248
```json
231249
{
232250
"content": "消息内容"
233251
}
234252
```
235253

236-
>[!TIP]
237-
在所有环境变量调试完毕后可点击加密按钮加密环境变量(只保留FRONTEND_URL和S3_FOLDER),这样下次部署时加密的环境变量就不会覆盖/删除了
254+
> [!TIP]
255+
> 在所有环境变量调试完毕后可点击加密按钮加密环境变量(只保留 FRONTEND_URL 和 S3_FOLDER),这样下次部署时加密的环境变量就不会覆盖/删除了

‎docs/ENV.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
4848
| 名称 | 描述 | 示例值 |
4949
| -------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
50-
| GITHUB_CLIENT_ID | Github OAuth 的客户端 ID | Ux66poMrKi1k11M1Q1b2 |
51-
| GITHUB_CLIENT_SECRET | Github OAuth 的客户端密钥 | 1234567890abcdef1234567890abcdef12345678 |
50+
| RIN_GITHUB_CLIENT_ID | Github OAuth 的客户端 ID | Ux66poMrKi1k11M1Q1b2 |
51+
| RIN_GITHUB_CLIENT_SECRET | Github OAuth 的客户端密钥 | 1234567890abcdef1234567890abcdef12345678 |
5252
| JWT_SECRET | JWT 认证所需密钥,可为常规格式的任意密码 | J0sT%Ch@nge#Me1 |
5353
| S3_ACCESS_KEY_ID | S3 存储桶访问所需的 KEY ID,使用 Cloudflare R2 时为拥有 R2 编辑权限的 API 令牌 ID | 1234567890abcdef1234567890abcd |
5454
| S3_SECRET_ACCESS_KEY | S3 存储桶访问所需的 Secret,使用 Cloudflare R2 时为拥有 R2 编辑权限的 API 令牌 | 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef |

‎scripts/migrator.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ const S3_REGION = renv("S3_REGION")
2828
const accessKeyId = env("S3_ACCESS_KEY_ID")
2929
const secretAccessKey = env("S3_SECRET_ACCESS_KEY")
3030
const jwtSecret = env("JWT_SECRET")
31-
const githubClientId = env("GITHUB_CLIENT_ID")
32-
const githubClientSecret = env("GITHUB_CLIENT_SECRET")
31+
const githubClientId = env("RIN_GITHUB_CLIENT_ID")
32+
const githubClientSecret = env("RIN_GITHUB_CLIENT_SECRET")
3333

3434
Bun.write('wrangler.toml', stripIndent(`
3535
#:schema node_modules/wrangler/config-schema.json
@@ -119,8 +119,8 @@ async function putSecret(name: string, value?: string) {
119119

120120
await putSecret('S3_ACCESS_KEY_ID', accessKeyId)
121121
await putSecret('S3_SECRET_ACCESS_KEY', secretAccessKey)
122-
await putSecret('GITHUB_CLIENT_ID', githubClientId)
123-
await putSecret('GITHUB_CLIENT_SECRET', githubClientSecret)
122+
await putSecret('RIN_GITHUB_CLIENT_ID', githubClientId)
123+
await putSecret('RIN_GITHUB_CLIENT_SECRET', githubClientSecret)
124124
await putSecret('JWT_SECRET', jwtSecret)
125125

126126
console.log(`Put Done.`)

‎server/.env.test

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
NODE_ENV=TEST
22
DB_PATH=test.db
3-
GITHUB_CLIENT_ID=YourGithubClientID
4-
GITHUB_CLIENT_SECRET=YourGithubClientSecret
3+
RIN_GITHUB_CLIENT_ID=YourGithubClientID
4+
RIN_GITHUB_CLIENT_SECRET=YourGithubClientSecret
55
JWT_SECRET=YourJWTSecret
66
FRONTEND_URL=http://localhost:5173
77
S3_BUCKET=YourBucketName

‎server/src/db/db.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { drizzle } from 'drizzle-orm/d1';
22

33
export interface Env {
44
DB: D1Database;
5+
RIN_GITHUB_CLIENT_ID: string;
6+
RIN_GITHUB_CLIENT_SECRET: string;
57
GITHUB_CLIENT_ID: string;
68
GITHUB_CLIENT_SECRET: string;
79
JWT_SECRET: string;

‎server/src/setup.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import jwt from "./utils/jwt";
99

1010
const anyUser = async (db: DB) => (await db.query.users.findMany())?.length > 0
1111
export const setup = (db: DB, env: Env) => {
12-
let gh_client_id = env.GITHUB_CLIENT_ID;
13-
let gh_client_secret = env.GITHUB_CLIENT_SECRET;
12+
let gh_client_id = env.RIN_GITHUB_CLIENT_ID || env.GITHUB_CLIENT_ID;
13+
let gh_client_secret = env.RIN_GITHUB_CLIENT_SECRET || env.GITHUB_CLIENT_SECRET;
1414
let jwt_secret = env.JWT_SECRET;
1515

1616
if (!gh_client_id || !gh_client_secret) {
17-
throw new Error('Please set GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET');
17+
throw new Error('Please set RIN_GITHUB_CLIENT_ID and RIN_GITHUB_CLIENT_SECRET');
1818
}
1919
if (!jwt_secret) {
2020
throw new Error('Please set JWT_SECRET');

0 commit comments

Comments
 (0)
Please sign in to comment.