Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: twikoojs/twikoo
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.6.34
Choose a base ref
...
head repository: twikoojs/twikoo
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Loading
Showing with 12,990 additions and 227 deletions.
  1. +3 −0 .eslintignore
  2. +5 −2 .github/workflows/docs.yml
  3. +0 −1 .gitignore
  4. +1 −0 .npmignore
  5. +3 −3 Dockerfile
  6. +1 −1 demo/demo.html
  7. +30 −1 docs/.vitepress/config.ts
  8. +3 −3 docs/.vitepress/theme/Twikoo.vue
  9. +94 −66 docs/backend.md
  10. +1 −1 docs/en/faq.md
  11. +28 −2 docs/faq.md
  12. +30 −7 docs/frontend.md
  13. +1 −0 docs/link.md
  14. +21 −0 docs/mongodb-atlas.md
  15. BIN docs/static/faq-1.png
  16. BIN docs/static/hugging-7.png
  17. BIN docs/static/hugging-8.png
  18. BIN docs/static/hugging-9.png
  19. +1 −1 docs/update.md
  20. +3 −2 package.json
  21. +12 −2 src/client/utils/highlight.js
  22. +96 −60 src/client/utils/i18n/i18n.js
  23. +1 −1 src/client/version.js
  24. +5 −2 src/client/view/components/TkAdminComment.vue
  25. +3 −0 src/client/view/components/TkAdminConfig.vue
  26. +16 −10 src/client/view/components/TkAvatar.vue
  27. +74 −16 src/client/view/components/TkComment.vue
  28. +30 −1 src/client/view/components/TkComments.vue
  29. +22 −3 src/client/view/components/TkSubmit.vue
  30. +21 −0 src/server/aws-lambda/LICENSE
  31. +15 −0 src/server/aws-lambda/README.md
  32. +50 −0 src/server/aws-lambda/src/index.js
  33. +16 −0 src/server/aws-lambda/src/package.json
  34. +4 −0 src/server/aws-lambda/terraform/.gitignore
  35. +34 −0 src/server/aws-lambda/terraform/main.tf
  36. +9 −0 src/server/aws-lambda/terraform/variables.tf
  37. +5 −2 src/server/function/twikoo/index.js
  38. +1 −1 src/server/function/twikoo/package.json
  39. +27 −3 src/server/function/twikoo/utils/image.js
  40. +40 −9 src/server/function/twikoo/utils/index.js
  41. +14 −1 src/server/function/twikoo/utils/lib.js
  42. +7 −2 src/server/function/twikoo/utils/notify.js
  43. +19 −6 src/server/function/twikoo/utils/spam.js
  44. +17 −0 src/server/hf-space/Dockerfile
  45. +9 −0 src/server/hf-space/README.md
  46. +4 −0 src/server/hf-space/src/start.sh
  47. +1 −1 src/server/netlify/package.json
  48. +1 −1 src/server/pkg/package.json
  49. +5 −2 src/server/self-hosted/index.js
  50. +20 −8 src/server/self-hosted/mongo.js
  51. +2 −2 src/server/self-hosted/package.json
  52. +5 −2 src/server/vercel/api/index.js
  53. +2 −2 src/server/vercel/package.json
  54. +12,178 −0 yarn.lock
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
*.css
*.json
*.md
*.sh
*.tf
LICENSE
src/client/lib/marked/*
src/server/self-hosted/data/*
@@ -9,4 +11,5 @@ src/server/pkg/dist/*
src/server/pkg/patches/*
src/server/pkg/web.config
pnpm-lock.yaml
Dockerfile
Spacefile
7 changes: 5 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -4,8 +4,11 @@
name: Docs

on:
release:
types: [released]
push:
branches:
- main
paths:
- 'docs/**'
workflow_dispatch:

jobs:
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -69,7 +69,6 @@ typings/

# Yarn Integrity file
.yarn-integrity
yarn.lock

# dotenv environment variables file
.env
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
.DS_Store
.babelrc
.editorconfig
.env
.eslintignore
.eslintrc.js
.github
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
ARG NODE_IMAGE=node
FROM ${NODE_IMAGE}:lts AS build
WORKDIR /app
ENV NODE_ENV production
ENV NODE_ENV=production
RUN set -eux; \
npm install --production tkserver@latest; \
mkdir -p data
FROM ${NODE_IMAGE}:lts-buster-slim
FROM ${NODE_IMAGE}:lts-alpine
WORKDIR /app
ENV NODE_ENV production
ENV NODE_ENV=production
COPY --from=build /app .
EXPOSE 8080
CMD ["/app/node_modules/.bin/tkserver"]
2 changes: 1 addition & 1 deletion demo/demo.html
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<title>Twikoo Demo</title>
<link rel="stylesheet" type="text/css" href="https://cdn.staticfile.net/bulma/0.8.2/css/bulma.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.8.2/css/bulma.min.css" integrity="sha384-ot6RguV46OXVI/scORL3MF0W76aCi4XLFeX3mRArMs/+rNzCpVaOFDtfitKy47nn" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css" integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="demo.css">
</head>
31 changes: 30 additions & 1 deletion docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -17,13 +17,42 @@ export default defineConfig({
sidebar: [
{ text: '简介', link: '/intro' },
{ text: '快速上手', link: '/quick-start' },
{ text: 'MongoDB Atlas', link: '/mongodb-atlas' },
{ text: '云函数部署', link: '/backend' },
{ text: '前端部署', link: '/frontend' },
{ text: '版本更新', link: '/update' },
{ text: '常见问题', link: '/faq' },
{ text: 'API 文档', link: '/api' },
{ text: '相关文档', link: '/link' }
]
],
editLink: {
pattern: 'https://github.com/twikoojs/twikoo/edit/main/docs/:path',
text: '在 GitHub 上编辑此页面'
},
footer: {
message: '基于 MIT 许可发布',
copyright: `版权所有 © 2020 至今 iMaeGoo`
},
docFooter: {
prev: '上一篇',
next: '下一篇'
},
outline: {
label: '本页导航'
},
lastUpdated: {
text: '最后更新于',
formatOptions: {
dateStyle: 'short',
timeStyle: 'medium'
}
},
langMenuLabel: '多语言',
returnToTopLabel: '回到顶部',
sidebarMenuLabel: '菜单',
darkModeSwitchLabel: '主题',
lightModeSwitchTitle: '切换到浅色模式',
darkModeSwitchTitle: '切换到深色模式'
}
},
en: {
6 changes: 3 additions & 3 deletions docs/.vitepress/theme/Twikoo.vue
Original file line number Diff line number Diff line change
@@ -68,11 +68,11 @@ onMounted(() => {
<component :is="'script'" defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js" integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"></component>

<!-- lightGallery -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@2.1.8/css/lightgallery.css">
<component :is="'script'" src="https://cdn.jsdelivr.net/npm/lightgallery@2.1.8/lightgallery.min.js"></component>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@2.1.8/css/lightgallery.css" integrity="sha384-U8ohOXEVyF0NGY2LQnH83V4wGxOmFhim4U5xhfE/WDCHdPO2iUKPPYkhpDl9U/Yf" crossorigin="anonymous">
<component :is="'script'" src="https://cdn.jsdelivr.net/npm/lightgallery@2.1.8/lightgallery.min.js" integrity="sha384-l5lFB9srHFAyvfCoHya9X1JwGGTNPvDtikieqZp7qu/bomCw0e0+yoyiL0f7UXLD" crossorigin="anonymous"></component>

<!-- Twikoo -->
<div id="twikoo"></div>
<component :is="'script'" src="https://cdn.jsdelivr.net/npm/twikoo@1.6.34/dist/twikoo.min.js" ref="twikooJs"></component>
<component :is="'script'" src="https://cdn.jsdelivr.net/npm/twikoo@1.6.41/dist/twikoo.min.js" crossorigin="anonymous" ref="twikooJs"></component>
</div>
</template>
160 changes: 94 additions & 66 deletions docs/backend.md
Original file line number Diff line number Diff line change
@@ -9,7 +9,9 @@
| [Railway 部署](#railway-部署) | ★★☆☆☆ | 有免费额度但不足以支持一个月连续运行,部署简单,适合全球访问。 |
| [Zeabur 部署](#zeabur-部署) | ★☆☆☆☆ | 需要绑定支付宝或信用卡,部署简单,适合中国大陆访问,免费计划环境随时可能会被删除。 |
| [Netlify 部署](#netlify-部署) | ★★★★☆ | 有充足的免费额度,中国大陆访问速度不错。 |
| [Hugging Face 部署](#hugging-face-部署) | ★★★★☆ | 免费,中国大陆访问速度不错。 |
| [Hugging Face 部署](#hugging-face-部署) | ★★★★☆ | 免费,中国大陆访问速度不错。允许通过 Cloudflare Tunnels 自定义域名。 |
| [AWS Lambda 部署](#aws-lambda-部署) | ★★★☆☆ | 全球最大的云平台,适合已经使用 AWS 全家桶的用户。 |
| [Cloudflare workers 部署](#cloudflare-workers-部署) | ★★☆☆☆ | 部署需使用命令行,冷启动时间较短,功能有部分限制。 |
| [私有部署](#私有部署) | ★★☆☆☆ | 适用于有服务器的用户,需要自行申请 HTTPS 证书。 |
| [私有部署 (Docker)](#私有部署-docker) | ★★★☆☆ | 适用于有服务器的用户,需要自行申请 HTTPS 证书。 |

@@ -43,7 +45,7 @@ exports.main = require('twikoo-func').main
8. 创建完成后,点击“twikoo"进入云函数详情页,进入“函数代码”标签,点击“文件 - 新建文件”,输入 `package.json`,回车
9. 复制以下代码、粘贴到代码框中,点击“保存并安装依赖”
``` json
{ "dependencies": { "twikoo-func": "1.6.34" } }
{ "dependencies": { "twikoo-func": "1.6.41" } }
```

## 腾讯云命令行部署
@@ -82,43 +84,50 @@ yarn run login
yarn deploy -e 您的环境id
```

## Vercel 部署
## 宝塔面板 部署

::: warning 注意
Vercel 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用

默认域名 `*.vercel.app` 在中国大陆访问速度较慢甚至无法访问,绑定自己的域名可以提高访问速度
宝塔面板 (适用 9.2.0 及以上的版本)
:::

[查看视频教程](https://www.bilibili.com/video/BV1Fh411e7ZH)
前往 [宝塔面板官网](https://www.bt.cn/new/download.html),选择正式版的脚本下载安装(如果已安装,请跳过此步)

1. 安装后登录宝塔面板,在左侧导航栏点击 Docker,首先进入会提示安装 Docker 服务,点击立即安装,按提示完成安装

1. 申请 [MongoDB](https://www.mongodb.com/cloud/atlas/register) 账号
2. 创建免费 MongoDB 数据库,区域推荐选择 `AWS / N. Virginia (us-east-1)`
3. 在 Database Access 页面点击 Add New Database User 创建数据库用户,Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名和密码,用户名和密码可包含数字和大小写字母,请勿包含特殊符号。点击 Database User Privileges 下方的 Add Built In Role,Select Role 选择 Atlas Admin,最后点击 Add User
![20241010103723](https://github.com/user-attachments/assets/d15d3422-b2c0-4bd0-a889-4f275565d9cd)

![](./static/mongodb-1.png)
2. 完成安装后在应用商店中找到 Twikoo ,点击安装,配置域名、端口等基本信息即可完成安装

4. 在 Network Access 页面点击 Add IP Address,Access List Entry 输入 `0.0.0.0/0`(允许所有 IP 地址的连接),点击 Confirm
![1730860915662](https://github.com/user-attachments/assets/fca433b3-5ba9-4424-af0e-4063df341833)

![](./static/mongodb-2.png)
注意:域名为非必填,如果填写了域名则通过【网站】-【反向代理】来管理,填写域名后不需要勾选【允许外部访问】,否则需要勾选后才可以通过端口访问

5. 在 Database 页面点击 Connect,连接方式选择 Drivers,并记录数据库连接字符串,请将连接字符串中的 `<username>:<password>` 修改为刚刚创建的数据库 `用户名:密码`
3. 安装后在浏览器输入上一步设置的域名或者 IP + 端口即可访问。

![](./static/mongodb-3.png)
## Vercel 部署

::: warning 注意
Vercel 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用

6. 申请 [Vercel](https://vercel.com/signup) 账号
7. 点击以下按钮将 Twikoo 一键部署到 Vercel<br>
默认域名 `*.vercel.app` 在中国大陆访问速度较慢甚至无法访问,绑定自己的域名可以提高访问速度
:::

[查看视频教程](https://www.bilibili.com/video/BV1Fh411e7ZH)

1. 申请 [MongoDB Atlas](./mongodb-atlas.md) 账号,获取 MongoDB 连接字符串
2. 申请 [Vercel](https://vercel.com/signup) 账号
3. 点击以下按钮将 Twikoo 一键部署到 Vercel<br>

[![Deploy](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/twikoojs/twikoo/tree/main/src/server/vercel-min)

8. 进入 Settings - Environment Variables,添加环境变量 `MONGODB_URI`,值为前面记录的数据库连接字符串
9. 进入 Settings - Deployment Protection,设置 Vercel Authentication 为 Disabled,并 Save
4. 进入 Settings - Environment Variables,添加环境变量 `MONGODB_URI`,值为前面记录的数据库连接字符串
5. 进入 Settings - Deployment Protection,设置 Vercel Authentication 为 Disabled,并 Save

![](./static/vercel-1.png)

10. 进入 Deployments , 然后在任意一项后面点击更多(三个点) , 然后点击 Redeploy , 最后点击下面的 Redeploy
11. 进入 Overview,点击 Domains 下方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示
12. Vercel Domains(包含 `https://` 前缀,例如 `https://xxx.vercel.app`)即为您的环境 id
6. 进入 Deployments , 然后在任意一项后面点击更多(三个点) , 然后点击 Redeploy , 最后点击下面的 Redeploy
7. 进入 Overview,点击 Domains 下方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示
8. Vercel Domains(包含 `https://` 前缀,例如 `https://xxx.vercel.app`)即为您的环境 id

## Railway 部署

@@ -159,78 +168,56 @@ Netlify 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用
Netlify 免费等级(Functions Level 0)支持每月 125,000 请求次数和 100 小时函数计算时长
:::

1. 申请 [MongoDB](https://www.mongodb.com/cloud/atlas/register) 账号
2. 创建免费 MongoDB 数据库,区域推荐选择 `AWS / N. Virginia (us-east-1)`
3. 在 Database Access 页面点击 Add New Database User 创建数据库用户,Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名和密码,用户名和密码可包含数字和大小写字母,请勿包含特殊符号。点击 Database User Privileges 下方的 Add Built In Role,Select Role 选择 Atlas Admin,最后点击 Add User

![](./static/mongodb-1.png)

4. 在 Network Access 页面点击 Add IP Address,Access List Entry 输入 `0.0.0.0/0`(允许所有 IP 地址的连接),点击 Confirm

![](./static/mongodb-2.png)

5. 在 Database 页面点击 Connect,连接方式选择 Drivers,并记录数据库连接字符串,请将连接字符串中的 `<username>:<password>` 修改为刚刚创建的数据库 `用户名:密码`

![](./static/mongodb-3.png)

6. 申请并登录 [Netlify](https://app.netlify.com) 账号,创建一个 Team
7. 打开 [twikoojs/twikoo-netlify](https://github.com/twikoojs/twikoo-netlify) 点击 fork 将仓库 fork 到自己的账号下
8. 回到 Netlify,点击 Add new site - Import an existing project
1. 申请 [MongoDB Atlas](./mongodb-atlas.md) 账号,获取 MongoDB 连接字符串
2. 申请并登录 [Netlify](https://app.netlify.com) 账号,创建一个 Team
3. 打开 [twikoojs/twikoo-netlify](https://github.com/twikoojs/twikoo-netlify) 点击 fork 将仓库 fork 到自己的账号下
4. 回到 Netlify,点击 Add new site - Import an existing project

![](./static/netlify-1.png)

9. 点击 Deploy with GitHub,如果未授权 GitHub 账号,先授权,然后选择前面 fork 的 twikoo-netlify 项目
5. 点击 Deploy with GitHub,如果未授权 GitHub 账号,先授权,然后选择前面 fork 的 twikoo-netlify 项目

![](./static/netlify-2.png)

10. 点击 Add environment variables - New variable,Key 输入 `MONGODB_URI`,Value 输入前面记录的数据库连接字符串,点击 Deploy twikoo-netlify
6. 点击 Add environment variables - New variable,Key 输入 `MONGODB_URI`,Value 输入前面记录的数据库连接字符串,点击 Deploy twikoo-netlify

![](./static/netlify-3.png)

11. 部署完成后,点击 Domain settings - 右侧 Options - Edit site name,可以设置属于自己的三级域名(`https://xxx.netlify.app`
7. 部署完成后,点击 Domain settings - 右侧 Options - Edit site name,可以设置属于自己的三级域名(`https://xxx.netlify.app`

![](./static/netlify-4.png)

12. 进入 Site overview,点击上方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示
8. 进入 Site overview,点击上方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示

![](./static/netlify-5.png)

13. 云函数地址(包含 `https://` 前缀和 `/.netlify/functions/twikoo` 后缀,例如 `https://xxx.netlify.app/.netlify/functions/twikoo`)即为您的环境 id
9. 云函数地址(包含 `https://` 前缀和 `/.netlify/functions/twikoo` 后缀,例如 `https://xxx.netlify.app/.netlify/functions/twikoo`)即为您的环境 id

## Hugging Face 部署

1. 申请 [MongoDB](https://www.mongodb.com/cloud/atlas/register) 账号
2. 创建免费 MongoDB 数据库
3. 在 Database Access 页面点击 Add New Database User 创建数据库用户,Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名和密码,用户名和密码可包含数字和大小写字母,请勿包含特殊符号。点击 Database User Privileges 下方的 Add Built In Role,Select Role 选择 Atlas Admin,最后点击 Add User

![](./static/mongodb-1.png)

4. 在 Network Access 页面点击 Add IP Address,Access List Entry 输入 `0.0.0.0/0`(允许所有 IP 地址的连接),点击 Confirm

![](./static/mongodb-2.png)

5. 在 Database 页面点击 Connect,连接方式选择 Drivers,并记录数据库连接字符串,请将连接字符串中的 `<username>:<password>` 修改为刚刚创建的数据库 `用户名:密码`

![](./static/mongodb-3.png)
::: warning 注意
Hugging Face 部署的环境,由于默认的邮件端口被屏蔽,无法使用邮件功能。详见 [twikoo/issues/638](https://github.com/twikoojs/twikoo/issues/638)
:::

6. 申请 [Hugging Face](https://huggingface.co/join) 账号
7. 登录,点击 Spaces - Create new Space
1. 申请 [MongoDB Atlas](./mongodb-atlas.md) 账号,获取 MongoDB 连接字符串
2. 申请 [Hugging Face](https://huggingface.co/join) 账号
3. 登录,点击 Spaces - Create new Space

![](./static/hugging-1.png)

8. 输入 Space name,Select the Space SDK 选择 Docker,Choose a Docker template 选择 Blank,Space hardware 选择 FREE,选择 Public,点击 Create Space
4. 输入 Space name,Select the Space SDK 选择 Docker,Choose a Docker template 选择 Blank,Space hardware 选择 FREE,选择 Public,点击 Create Space

![](./static/hugging-2.png)

9. 进入刚刚创建的 Space,点击页面上方的 Settings,滚动到 Variables and secrets 部分,点击 New secret,Name 输入 `MONGODB_URI`,Value 输入前面记录的数据库连接字符串,点击 Save
5. 进入刚刚创建的 Space,点击页面上方的 Settings,滚动到 Variables and secrets 部分,点击 New secret,Name 输入 `MONGODB_URI`,Value 输入前面记录的数据库连接字符串,点击 Save

![](./static/hugging-3.png)

10. 点击页面上方的 Files - Add file - Create a new file
6. 点击页面上方的 Files - Add file - Create a new file

![](./static/hugging-4.png)

11. 在 Name your file 中输入 `Dockerfile`,在 Edit 区域输入以下内容
7. 在 Name your file 中输入 `Dockerfile`,在 Edit 区域输入以下内容

```Dockerfile
FROM imaegoo/twikoo
@@ -240,11 +227,52 @@ EXPOSE 7860

![](./static/hugging-5.png)

12. 点击 Commit new file to main
13. 点击右上角 Settings 右方的菜单(三个点)图标 - Embed this Space,Direct URL 下的内容(例如 `https://xxx-xxx.hf.space`)即为您的环境 id
8. 点击 Commit new file to main
9. 点击右上角 Settings 右方的菜单(三个点)图标 - Embed this Space,Direct URL 下的内容(例如 `https://xxx-xxx.hf.space`)即为您的环境 id

![](./static/hugging-6.png)

### 如果你需要自定义域名

> 自定义域名教程由 [Hoshino-Yumetsuki](https://github.com/Hoshino-Yumetsuki) 提供
>
> ps:除了 `CF_ZERO_TRUST_TOKEN` 这个环境变量以外,其他环境变量的配置方式与上一步相同
1. 申请 Cloudflare Zero Trust,关于申请方式请自行查找

![](./static/hugging-7.png)

2. 添加一条隧道,连接方式选择 Cloudflared,名称任意

![](./static/hugging-8.png)

3. 添加一个 Public Hostname,回源选择 HTTP,端口选择 8080
4. Clone Twikoo 仓库,找到 `src\server\hf-space`
5. 去 Hugging Face 创建一个 Space,然后 Clone 下来,将 hf-space 文件夹内的所有内容复制进去
6. 在 Hugging Face Space 的设置中添加一个环境变量,变量名 `CF_ZERO_TRUST_TOKEN`,值是 Tunnels 给的令牌(删掉 `cloudflared.exe service install`,只保留令牌部分)

![](./static/hugging-9.png)

7. Push 到 Hugging Face Space 仓库

## AWS Lambda 部署

1. 注册 AWS 账号并配置 Terraform CLI。
2. 如需使用托管的 MongoDB 数据库,可申请 [MongoDB Atlas](./mongodb-atlas.md) 账号。
3. 参考 `src/server/aws-lambda/terraform` 目录中 Terraform 代码创建 AWS 资源。
4. 部署完成后,Terraform 会将 `lambda_function_url` 打印在屏幕上,您也可以使用 `terraform output` 获取这一 URL,如:

```
$ terraform output
lambda_function_url = "https://axtoiiithbcexamplegq7ozalu0cnkii.lambda-url.us-west-2.on.aws/"
```

该 URL 即为您的环境 ID,请记下这一 URL 用于前端配置。

## Cloudflare workers 部署

请参考 [github.com/twikoojs/twikoo-cloudflare](https://github.com/twikoojs/twikoo-cloudflare)

## 私有部署

::: warning 注意
@@ -268,7 +296,7 @@ EXPOSE 7860
| `TWIKOO_THROTTLE` | IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误 | `250` |
| `TWIKOO_LOCALHOST_ONLY` |`true`时只监听本地请求,使得 nginx 等服务器反代之后不暴露原始端口 | `null` |
| `TWIKOO_LOG_LEVEL` | 日志级别,支持 `verbose` / `info` / `warn` / `error` | `info` |
| `TWIKOO_IP_HEADERS` | 在一些特殊情况下使用,如使用了`CloudFlare CDN` 它会将请求 IP 写到请求头的 `cf-connecting-ip` 字段上,为了能够正确的获取请求 IP 你可以写成 `['headers.cf-connecting-ip']` | `[]` |
| `TWIKOO_IP_HEADERS` | 在一些特殊情况下使用,如使用了 `CloudFlare CDN` 它会将请求 IP 写到请求头的 `cf-connecting-ip` 字段上,为了能够正确的获取请求 IP 你可以写成 `["headers.cf-connecting-ip"]` | `[]` |

4. 启动 Twikoo server: `tkserver`
5. 访问 `http://服务端IP:8080` 测试服务是否启动成功
Loading