diff --git a/.editorconfig b/.editorconfig
index 682d7abda..e300bdb00 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -7,4 +7,3 @@ charset = utf-8
[{*.js,*.json,*.vue,*.html,*.css}]
indent_style = space
indent_size = 2
-
\ No newline at end of file
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 0ee016f1d..fbcf10dfe 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -31,6 +31,10 @@ jobs:
run: cd src/server/vercel && yarn publish --tag beta
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
+ - if: "github.event.release.prerelease"
+ run: cd src/server/self-hosted && yarn publish --tag beta
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.npm_token}}
- if: "!github.event.release.prerelease"
run: yarn publish
env:
@@ -43,3 +47,7 @@ jobs:
run: cd src/server/vercel && yarn publish
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
+ - if: "!github.event.release.prerelease"
+ run: cd src/server/self-hosted && yarn publish
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.npm_token}}
diff --git a/docs/.vuepress/theme/layouts/Layout.vue b/docs/.vuepress/theme/layouts/Layout.vue
index ad68d29fc..d91807252 100644
--- a/docs/.vuepress/theme/layouts/Layout.vue
+++ b/docs/.vuepress/theme/layouts/Layout.vue
@@ -13,7 +13,7 @@
-
+
diff --git a/docs/quick-start.md b/docs/quick-start.md
index 091f27c9c..1c9af45b1 100644
--- a/docs/quick-start.md
+++ b/docs/quick-start.md
@@ -2,7 +2,7 @@
Twikoo 分为云函数和前端两部分,部署时请注意保持二者版本一致。
-* [云函数部署](#云函数部署)有 4 种方式,[一键部署](#一键部署)、[手动部署](#手动部署)、[命令行部署](#命令行部署)和[Vercel 部署](#vercel-部署)。
+* [云函数部署](#云函数部署)有 4 种方式,[一键部署](#一键部署)、[手动部署](#手动部署)、[命令行部署](#命令行部署)、[Vercel 部署](#vercel-部署)和[私有部署](#私有部署)。
* [前端部署](#前端部署)有 2 种方式,如果您的网站主题支持 Twikoo,您只需在配置文件中指定 Twikoo 即可;如果您的网站主题不支持 Twikoo,您需要修改源码手动引入 Twikoo 的 js 文件并初始化。
## 云函数部署
@@ -13,6 +13,7 @@ Twikoo 分为云函数和前端两部分,部署时请注意保持二者版本
| [手动部署](#手动部署) | [ 建议 ] 手动部署到腾讯云云开发环境,在中国大陆访问速度较快。由于基础版 1 已从 0 元涨价至 6.9 元 / 月,需要付费购买环境才能部署。 |
| [命令行部署](#命令行部署) | [ 不建议 ] 仅针对有 Node.js 经验的开发者。 |
| [Vercel 部署](#vercel-部署) | [ 建议 ] 适用于想要免费部署的用户,在中国大陆访问速度较慢。 |
+| [私有部署](#私有部署) | [ 建议 ] 适用于有服务器的用户,需要自行申请 HTTPS 证书。 |
### 一键部署
@@ -102,6 +103,32 @@ Vercel 部署的环境需配合 1.4.0 以上版本的 twikoo.js 使用
8. 进入 Overview,点击 Domains 下方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示
9. Vercel Domains(包含 `https://` 前缀,例如 `https://xxx.vercel.app`)即为您的环境 id
+### 私有部署
+
+::: warning 注意
+私有部署的环境需配合 1.6.0 或以上版本的 twikoo.js 使用
+:::
+
+1. 服务端下载安装 [Node.js](https://nodejs.org/zh-cn/)
+2. 安装 Twikoo server: `npm i -g tkserver`
+3. 根据需要配置环境变量
+
+ | 名称 | 描述 | 默认值 |
+ | ---- | ---- | ---- |
+ | `TWIKOO_DATA` | 数据库存储路径 | `./data` |
+ | `TWIKOO_PORT` | 端口号 | `8080` |
+ | `TWIKOO_THROTTLE` | IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误 | `250` |
+
+4. 启动 Twikoo server: `tkserver`
+5. 访问 `http://服务端IP:8080`
+6. 若能正常访问,服务端地址(包含 `http://` 和端口号,例如 `http://12.34.56.78:8080`)即为您的环境 id
+
+::: info 其他事项
+1. Linux 服务器可以用 `nohup tkserver >> tkserver.log 2>&1 &` 命令后台启动
+2. 强烈建议配置前置 nginx 服务器并配置 https 证书
+3. 数据在服务器上,请注意定期备份数据
+:::
+
## 前端部署
### 在 Hexo 中使用
@@ -249,6 +276,11 @@ yarn deploy -e 您的环境id
4. 将 `"twikoo-vercel": "x.x.x"` 其中的版本号修改为最新版本号。点击 Commit changes
5. 部署会自动触发,可以回到 [Vercel 仪表板](https://vercel.com/dashboard),查看部署状态
+### 针对私有部署的更新方式
+
+1. 在服务器上执行 `npm i -g tkserver@latest`
+2. 重新启动 `tkserver`
+
### 自动更新
考虑到可用性和安全性问题,Twikoo 没有实现自动更新,也没有计划实现自动更新。如果您希望实现自动更新,可以参考 MHuiG 基于 Github 工作流的 [twikoo-update](https://github.com/MHuiG/twikoo-update) 的实现方式。
diff --git a/package.json b/package.json
index cc6bd774e..4d5bd0a25 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "twikoo",
- "version": "1.6.0-beta.1",
+ "version": "1.6.0-beta.2",
"description": "A simple comment system.",
"keywords": [
"twikoojs",
diff --git a/src/client/version.js b/src/client/version.js
index e56971ae0..bb2806607 100644
--- a/src/client/version.js
+++ b/src/client/version.js
@@ -1,3 +1,3 @@
-const version = '1.6.0-beta.1'
+const version = '1.6.0-beta.2'
export { version }
diff --git a/src/server/function/twikoo/index.js b/src/server/function/twikoo/index.js
index fe8b6d14c..5073c1fd7 100644
--- a/src/server/function/twikoo/index.js
+++ b/src/server/function/twikoo/index.js
@@ -63,7 +63,7 @@ const requestTimes = {}
// 云函数入口点 / entry point
exports.main = async (event, context) => {
console.log('请求 IP:', auth.getClientIP())
- console.log('请求方法:', event.event)
+ console.log('请求函数:', event.event)
console.log('请求参数:', event)
let res = {}
try {
diff --git a/src/server/function/twikoo/package.json b/src/server/function/twikoo/package.json
index 3648a1779..8a2830186 100644
--- a/src/server/function/twikoo/package.json
+++ b/src/server/function/twikoo/package.json
@@ -1,6 +1,6 @@
{
"name": "twikoo-func",
- "version": "1.6.0-beta.1",
+ "version": "1.6.0-beta.2",
"description": "A simple comment system.",
"author": "imaegoo (https://github.com/imaegoo)",
"license": "MIT",
diff --git a/src/server/self-hosted/README.md b/src/server/self-hosted/README.md
new file mode 100644
index 000000000..d807273d3
--- /dev/null
+++ b/src/server/self-hosted/README.md
@@ -0,0 +1,21 @@
+# Twikoo 私有部署服务端
+
+## 安装
+
+```
+npm i -g tkserver
+```
+
+## 启动
+
+```
+tkserver
+```
+
+## 环境变量
+
+| 名称 | 描述 | 默认值 |
+| ---- | ---- | ---- |
+| `TWIKOO_DATA` | 数据库存储路径 | `./data` |
+| `TWIKOO_PORT` | 端口号 | `8080` |
+| `TWIKOO_THROTTLE` | IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误 | `250` |
diff --git a/src/server/self-hosted/data/.gitkeep b/src/server/self-hosted/data/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/server/self-hosted/index.js b/src/server/self-hosted/index.js
index cb7b6d5c2..f13510356 100644
--- a/src/server/self-hosted/index.js
+++ b/src/server/self-hosted/index.js
@@ -61,7 +61,7 @@ module.exports = async (request, response) => {
let accessToken
const event = request.body || {}
console.log('请求 IP:', getIp(request))
- console.log('请求方法:', event.event)
+ console.log('请求函数:', event.event)
console.log('请求参数:', event)
let res = {}
try {
diff --git a/src/server/self-hosted/package.json b/src/server/self-hosted/package.json
index 0fc14ce2a..534f51461 100644
--- a/src/server/self-hosted/package.json
+++ b/src/server/self-hosted/package.json
@@ -1,21 +1,31 @@
{
- "name": "twikoo-server",
- "version": "1.6.0-beta.1",
+ "name": "tkserver",
+ "version": "1.6.0-beta.2",
"description": "A simple comment system.",
+ "keywords": [
+ "twikoo",
+ "twikoojs",
+ "comment",
+ "comment-system"
+ ],
"author": "imaegoo (https://github.com/imaegoo)",
"license": "MIT",
"main": "server.js",
"bin": {
- "twikoo": "server.js"
+ "tkserver": "server.js"
},
"repository": {
"type": "git",
"url": "https://github.com/imaegoo/twikoo.git"
},
"homepage": "https://twikoo.js.org",
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org/"
+ },
"dependencies": {
"lokijs": "^1.5.12",
- "twikoo-func": "1.6.0-beta.1",
+ "twikoo-func": "1.6.0-beta.2",
"uuid": "^8.3.2"
}
}
diff --git a/src/server/self-hosted/server.js b/src/server/self-hosted/server.js
old mode 100644
new mode 100755
index e17b37780..d72ed7377
--- a/src/server/self-hosted/server.js
+++ b/src/server/self-hosted/server.js
@@ -1,4 +1,15 @@
+#!/usr/bin/env node
+
+const fs = require('fs')
+const path = require('path')
const http = require('http')
+
+const dataDir = path.resolve(process.cwd(), process.env.TWIKOO_DATA || './data')
+if (!fs.existsSync(dataDir)) {
+ fs.mkdirSync(dataDir)
+}
+console.log(`Twikoo database stored at ${dataDir}`)
+
const twikoo = require('./index')
const server = http.createServer()
@@ -10,6 +21,7 @@ server.on('request', async function (request, response) {
}
request.body = JSON.parse(Buffer.concat(buffers).toString())
} catch (e) {
+ console.error(e.message)
request.body = {}
}
response.status = function (code) {
diff --git a/src/server/vercel/api/index.js b/src/server/vercel/api/index.js
index 72c0cc10d..0f6da4669 100644
--- a/src/server/vercel/api/index.js
+++ b/src/server/vercel/api/index.js
@@ -59,7 +59,7 @@ const requestTimes = {}
module.exports = async (request, response) => {
const event = request.body || {}
console.log('请求 IP:', request.headers['x-real-ip'])
- console.log('请求方法:', event.event)
+ console.log('请求函数:', event.event)
console.log('请求参数:', event)
let res = {}
try {
diff --git a/src/server/vercel/package.json b/src/server/vercel/package.json
index f6c6d3ae2..58a687f2a 100644
--- a/src/server/vercel/package.json
+++ b/src/server/vercel/package.json
@@ -1,6 +1,6 @@
{
"name": "twikoo-vercel",
- "version": "1.6.0-beta.1",
+ "version": "1.6.0-beta.2",
"description": "A simple comment system.",
"author": "imaegoo (https://github.com/imaegoo)",
"license": "MIT",
@@ -12,7 +12,7 @@
"homepage": "https://twikoo.js.org",
"dependencies": {
"mongodb": "^3.6.3",
- "twikoo-func": "1.6.0-beta.1",
+ "twikoo-func": "1.6.0-beta.2",
"uuid": "^8.3.2"
}
}