Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
586725a15c | ||
|
|
34300a19a6 | ||
|
|
11def7e42a | ||
|
|
4f3fb3766e | ||
|
|
cbc3eb9453 | ||
|
|
c31bc0266a | ||
|
|
b6176d7629 | ||
|
|
bc2e78db39 | ||
|
|
fdda8985de | ||
|
|
be2f0aa435 | ||
|
|
513a5b49c1 | ||
|
|
0c50ede129 | ||
|
|
d5a17f9e6a | ||
|
|
4b09a0a27f | ||
|
|
cba38f6e12 | ||
|
|
a672043e2e | ||
|
|
e1c6d8a2d0 | ||
|
|
9041602cfd | ||
|
|
bcbefaaa35 | ||
|
|
925edef0a5 | ||
|
|
90c54fd9e0 | ||
|
|
95df56cc5c | ||
|
|
ebced940d4 | ||
|
|
b21db8da6b | ||
|
|
55c76cb89c | ||
|
|
de62abf0e7 | ||
|
|
0e859d32ee | ||
|
|
5840247f3e |
13
.github/workflows/deploy-demo.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
- uses: GuillaumeFalourd/wait-sleep-action@v1
|
||||
with:
|
||||
time: '10' # for 60 seconds
|
||||
- name: Send HTTP request
|
||||
- name: deploy-certd-demo
|
||||
id: request
|
||||
uses: tyrrrz/action-http-request@master
|
||||
with:
|
||||
@@ -52,4 +52,13 @@ jobs:
|
||||
retry-count: 3
|
||||
retry-delay: 5000
|
||||
|
||||
|
||||
- name: deploy-certd-doc
|
||||
id: request
|
||||
uses: tyrrrz/action-http-request@master
|
||||
with:
|
||||
url: http://flow-openapi.aliyun.com/pipeline/webhook/IiSxLDp9aOhgDUxJPytv
|
||||
method: POST
|
||||
headers: |
|
||||
Content-Type: application/json
|
||||
retry-count: 3
|
||||
retry-delay: 5000
|
||||
|
||||
12
CHANGELOG.md
@@ -3,6 +3,18 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复对话框全屏按钮与关闭按钮重叠的bug ([95df56c](https://github.com/certd/certd/commit/95df56cc5ca5e3eb843cd17cb7078cde47729f1e))
|
||||
* deprecated的运行时不要报错,只报警告 ([bcbefaa](https://github.com/certd/certd/commit/bcbefaaa35cf6d0eec085b3a2c5bfc7c6a8de9e1))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 更新certd本身的证书文档说明 ([0c50ede](https://github.com/certd/certd/commit/0c50ede129337b82df54575cbd2f4c2a783a0732))
|
||||
* 支持同时监听https端口,7002 ([d5a17f9](https://github.com/certd/certd/commit/d5a17f9e6afd63fda2df0981118480f25a1fac2e))
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
157
README.md
@@ -17,6 +17,8 @@ Certd 是一个免费全自动申请和自动部署更新SSL证书的管理系
|
||||
* 支持sqlite,postgresql数据库
|
||||
|
||||
|
||||
|
||||
|
||||
## 二、在线体验
|
||||
|
||||
官方Demo地址,自助注册后体验
|
||||
@@ -27,6 +29,10 @@ https://certd.handsfree.work/
|
||||
> 包含敏感信息,务必自己本地部署进行生产使用
|
||||
|
||||
## 三、使用教程
|
||||
|
||||
更多教程请访问文档网站 [certd.docmirror.cn](https://certd.docmirror.cn/)
|
||||
|
||||
|
||||
本案例演示,如何配置自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署
|
||||
|
||||

|
||||
@@ -40,64 +46,20 @@ https://certd.handsfree.work/
|
||||
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
||||
|
||||
当前支持的部署插件列表
|
||||

|
||||

|
||||
|
||||
## 四、私有化部署
|
||||
|
||||
由于证书、授权信息等属于高度敏感数据,请务必私有化部署,保障数据安全
|
||||
由于证书、授权信息等属于高度敏感数据,请务必私有化部署,保障数据安全
|
||||
|
||||
### 4.1 宝塔面板一键部署
|
||||
您可以根据实际情况从如下方式中选择一种方式进行私有化部署:
|
||||
|
||||
1. 安装宝塔面板,前往 [宝塔面板](https://www.bt.cn/u/CL3JHS) 官网,选择9.2.0以上正式版的脚本下载安装
|
||||
1. [宝塔面板方式部署](./install/baota/)
|
||||
2. [1Panel面板方式部署](./install/1panel/)
|
||||
2. [Docker方式部署](./install/docker/)
|
||||
3. [源码方式部署](./install/source/)
|
||||
|
||||
2. 安装后登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装Docker服务,点击立即安装,按提示完成安装
|
||||
|
||||
3. 安装完成后在应用商店中找到`certd`(要先点右上角更新应用),点击安装,配置域名等基本信息即可完成安装
|
||||
|
||||
### 4.2 宝塔面板容器编排部署
|
||||
|
||||
[宝塔面板容器编排部署教程](./doc/deploy/baota/baota.md)
|
||||
|
||||
### 4.3 Docker部署
|
||||
#### 1. 安装docker、docker-compose
|
||||
|
||||
1.1 准备一台云服务器
|
||||
* 【阿里云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://www.aliyun.com/benefit?scm=20140722.M_10244282._.V_1&source=5176.11533457&userCode=qya11txb )】
|
||||
* 【腾讯云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://cloud.tencent.com/act/cps/redirect?redirect=6094&cps_key=b3ef73330335d7a6efa4a4bbeeb6b2c9&from=console)】
|
||||
|
||||
1.2 安装docker
|
||||
|
||||
https://docs.docker.com/engine/install/
|
||||
选择对应的操作系统,按照官方文档执行命令即可
|
||||
|
||||
#### 2. 运行certd
|
||||
|
||||
[docker-compose.yaml 下载](https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml)
|
||||
|
||||
当前版本号: 
|
||||
|
||||
```bash
|
||||
# 随便创建一个目录
|
||||
mkdir certd
|
||||
# 进入目录
|
||||
cd certd
|
||||
# 下载docker-compose.yaml文件,或者手动下载放到certd目录下
|
||||
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
# 可以根据需要修改里面的配置
|
||||
# 1.修改镜像版本号【可选】
|
||||
# 2.配置数据保存路径【可选】
|
||||
# 3.修改端口号【可选】
|
||||
vi docker-compose.yaml # 【可选】
|
||||
|
||||
# 启动certd
|
||||
docker compose up -d
|
||||
|
||||
```
|
||||
> 如果提示 没有compose命令,请安装docker-compose
|
||||
> https://docs.docker.com/compose/install/linux/
|
||||
|
||||
#### 3. 镜像说明:
|
||||
#### Docker镜像说明:
|
||||
* 国内镜像地址:
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest`
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7`、`[version]-armv7`
|
||||
@@ -109,25 +71,7 @@ docker compose up -d
|
||||
* 镜像构建通过`Actions`自动执行,过程公开透明,请放心使用
|
||||
* [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml)
|
||||
|
||||

|
||||
|
||||
#### 4. 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
### 4.4 源码部署
|
||||
```shell
|
||||
# 克隆代码
|
||||
git clone https://github.com/certd/certd
|
||||
git checkout v1.26.7 # 这里换成最新版本号
|
||||
cd certd
|
||||
# 启动服务
|
||||
./start.sh
|
||||
# 数据默认保存在 ./packages/ui/certd-server/data 目录下,注意数据备份
|
||||
```
|
||||
如果是windows,请先安装`git for windows` ,然后右键,选择`open git bash here`打开终端,再执行`./start.sh`命令
|
||||

|
||||
|
||||
|
||||
## 五、 升级
|
||||
@@ -151,7 +95,7 @@ docker compose up -d
|
||||
|
||||
|
||||
## 六、一些说明
|
||||
* 本项目ssl证书提供商为letencrypt
|
||||
* 本项目ssl证书提供商为letencrypt/Google/ZeroSSL
|
||||
* 申请过程遵循acme协议
|
||||
* 需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01)
|
||||
* http-01: 在网站根目录下放置一份txt文件
|
||||
@@ -165,48 +109,26 @@ docker compose up -d
|
||||
|
||||
## 七、不同平台的设置说明
|
||||
|
||||
* [Cloudflare](./docs/plugins/cf/cf.md)
|
||||
* [腾讯云](./docs/plugins/tencent/tencent.md)
|
||||
* [windows主机](./docs/plugins/host/host.md)
|
||||
* [google证书](./docs/plugins/google/google.md)
|
||||
* [群晖部署certd及证书更新教程](./docs/plugins/synology/index.md)
|
||||
|
||||
* [CNAME证书校验方式说明](./docs/feature/cname/index.md)
|
||||
* 已迁移到新的文档网站,请到常见问题章节查看
|
||||
* [最新文档站链接 https://certd.docmirror.cn](https://certd.docmirror.cn/)
|
||||
|
||||
## 八、问题处理
|
||||
### 7.1 忘记管理员密码
|
||||
解决方法如下:
|
||||
1. 修改docker-compose.yaml文件,将环境变量`certd_system_resetAdminPasswd`改为`true`
|
||||
```yaml
|
||||
services:
|
||||
certd:
|
||||
environment: # 环境变量
|
||||
- certd_system_resetAdminPasswd=false
|
||||
```
|
||||
2. 重启容器
|
||||
```shell
|
||||
docker compose up -d
|
||||
docker logs -f --tail 500 certd
|
||||
# 观察日志,当日志中输出“重置1号管理员用户的密码完成”,即可操作下一步
|
||||
```
|
||||
3. 修改docker-compose.yaml,将`certd_system_resetAdminPasswd`改回`false`
|
||||
4. 再次重启容器
|
||||
```shell
|
||||
docker compose up -d
|
||||
```
|
||||
5. 使用`admin/123456`登录系统,请及时修改管理员密码
|
||||
[重置管理员密码方法](https://certd.docmirror.cn/guide/use/forgotpasswd/)
|
||||
|
||||
## 九、联系作者
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
* QQ群:141236433
|
||||
* 微信群:
|
||||

|
||||
|
||||
| 加群 | 微信群 | QQ群 |
|
||||
|---------|-------|-------|
|
||||
| 二维码 | <img height="230" src="./docs/guide/contact/images/wx.png"> | <img height="230" src="./docs/guide/contact/images/qq.png"> |
|
||||
|
||||
也可以加作者好友
|
||||
|
||||
| 加作者好友 | 微信 QQ |
|
||||
|---------|-------------------------------------------------------------|
|
||||
| 二维码 | <img height="230" src="./docs/guide/contact/images/me.png"> |
|
||||
|
||||
加作者好友
|
||||
<p align="center">
|
||||
<img height="230" src="./doc/images/me.png">
|
||||
</p>
|
||||
|
||||
## 十、捐赠
|
||||
************************
|
||||
@@ -222,18 +144,18 @@ https://afdian.com/a/greper
|
||||
|
||||
专业版特权对比
|
||||
|
||||
| 功能 | 免费版 | 专业版 |
|
||||
|---------|------------------------|-----------------------|
|
||||
| 免费证书申请 | 免费无限制 | 免费无限制 |
|
||||
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 |
|
||||
| 发邮件功能 | 需要配置 | 免配置 |
|
||||
| 证书流水线条数 | 10条 | 无限制 |
|
||||
| 功能 | 免费版 | 专业版 |
|
||||
|---------|-------------------|-----------------------|
|
||||
| 免费证书申请 | 免费无限制 | 免费无限制 |
|
||||
| 自动部署插件 | 阿里云、腾讯云、七牛云、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 |
|
||||
| 发邮件功能 | 需要配置 | 免配置 |
|
||||
| 证书流水线条数 | 10条 | 无限制 |
|
||||
|
||||
************************
|
||||
|
||||
## 十一、贡献代码
|
||||
|
||||
1. 本地开发 [贡献插件教程](./doc/dev/development.md)
|
||||
1. 本地开发 [贡献插件教程](https://certd.docmirror.cn/guide/development/)
|
||||
2. 作为贡献者,代表您同意您贡献的代码如下许可:
|
||||
1. 可以调整开源协议以使其更严格或更宽松。
|
||||
2. 可以用于商业用途。
|
||||
@@ -247,9 +169,12 @@ https://afdian.com/a/greper
|
||||
* 如需商业授权,请联系作者。
|
||||
|
||||
## 十三、我的其他项目(求Star)
|
||||
* [袖手GPT](https://ai.handsfree.work/) ChatGPT,国内可用,无需FQ,每日免费额度
|
||||
* [fast-crud](https://gitee.com/fast-crud/fast-crud/) 基于vue3的crud快速开发框架
|
||||
* [dev-sidecar](https://github.com/docmirror/dev-sidecar/) 直连访问github工具,无需FQ,解决github无法访问的问题
|
||||
|
||||
| 项目名称 | stars | 项目描述 |
|
||||
|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------|-----------------------------------|
|
||||
| [袖手AI](https://ai.handsfree.work/) | | 袖手GPT,国内可用,无需FQ,每日免费额度 |
|
||||
| [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | 基于vue3的crud快速开发框架 |
|
||||
| [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | 直连访问github工具,无需FQ,解决github无法访问的问题 |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
10:38
|
||||
00:01
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# 宝塔部署教程
|
||||
|
||||
## 编排模版部署
|
||||
|
||||
### 创建docker模版
|
||||
打开docker-compose.yaml,
|
||||
https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
整个内容复制下来
|
||||
|
||||
然后到宝塔里面进到docker的编排模版,新建模版
|
||||

|
||||
|
||||
### 启动应用
|
||||
|
||||

|
||||
|
||||
等待启动完成
|
||||
|
||||
### 打开应用
|
||||
|
||||
http://ip:7001
|
||||
|
||||
|
||||
## 二、一键应用部署
|
||||
需要宝塔9.2.0版本
|
||||
|
||||
### 应用商店
|
||||
进入应用商店,更新应用列表
|
||||
|
||||
### 搜索certd
|
||||
点击安装
|
||||
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,96 +0,0 @@
|
||||
# 本地开发
|
||||
欢迎贡献插件
|
||||
|
||||
## 1.本地调试运行
|
||||
|
||||
### 克隆代码
|
||||
```shell
|
||||
|
||||
# 克隆代码
|
||||
git clone https://github.com/certd/certd
|
||||
|
||||
#进入项目目录
|
||||
cd certd
|
||||
|
||||
# 切换到最新版本代码
|
||||
git checkout v1.26.7 # 这里换成最新版本号
|
||||
|
||||
```
|
||||
|
||||
### 修改pnpm-workspace.yaml文件
|
||||
重要:否则无法正确加载专业版的access和plugin
|
||||
```yaml
|
||||
# pnpm-workspace.yaml
|
||||
packages:
|
||||
- 'packages/**' # <--------------注释掉这一行,PR时不要提交此修改
|
||||
- 'packages/ui/**'
|
||||
```
|
||||
|
||||
### 安装依赖和初始化:
|
||||
```shell
|
||||
# 安装pnpm,如果提示npm命令不存在,就需要先安装nodejs
|
||||
npm install -g pnpm@8.15.7 --registry=https://registry.npmmirror.com
|
||||
|
||||
# 使用国内镜像源,如果有代理,就不需要
|
||||
pnpm config set registry https://registry.npmmirror.com
|
||||
# 安装依赖
|
||||
pnpm install
|
||||
|
||||
# 初始化构建
|
||||
npm run init
|
||||
```
|
||||
|
||||
### 启动 server:
|
||||
```shell
|
||||
cd packages/ui/certd-server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 启动 client:
|
||||
```shell
|
||||
cd packages/ui/certd-client
|
||||
npm run dev
|
||||
|
||||
# 会自动打开浏览器,确认正常运行
|
||||
|
||||
```
|
||||
|
||||
## 开发插件
|
||||
进入 `packages/ui/certd-server/src/plugins`
|
||||
|
||||
### 1.复制`plugin-demo`目录作为你的插件目录
|
||||
比如你想做`cloudflare`的插件,那么你可以复制`plugin-demo`目录,将其命名成`plugin-cloudflare`。
|
||||
以下均以`plugin-cloudflare`为例进行说明,你需要将其替换成你的插件名称
|
||||
|
||||
### 2. access授权
|
||||
如果这是一个新的平台,它应该有授权方式,比如accessKey accessSecret之类的
|
||||
参考`plugin-cloudflare/access.ts` 修改为你要做的平台的`access`
|
||||
这样用户就可以在`certd`后台中创建这种授权凭证了
|
||||
|
||||
### 3. dns-provider
|
||||
如果域名是这个平台进行解析的,那么你需要实现dns-provider,(申请证书需要)
|
||||
参考`plugin-cloudflare/dns-provider.ts` 修改为你要做的平台的`dns-provider`
|
||||
|
||||
### 4. plugin-deploy
|
||||
如果这个平台有需要部署证书的地方
|
||||
参考`plugin-cloudflare/plugins/plugin-deploy-to-xx.ts` 修改为你要做的平台的`plugin-deploy-to-xx`
|
||||
|
||||
### 5. 增加导入
|
||||
在`plugin-cloudflare/index.ts`中增加你的插件的`import`
|
||||
```ts
|
||||
export * from './dns-provider'
|
||||
export * from './access'
|
||||
export * from './plugins/plugin-deploy-to-xx'
|
||||
````
|
||||
|
||||
在`./src/plugins/index.ts`中增加`import`
|
||||
|
||||
```ts
|
||||
export * from "./plugin-cloudflare.js"
|
||||
```
|
||||
|
||||
## 重启服务进行调试
|
||||
刷新浏览器,检查你的插件是否工作正常, 确保能够正常进行证书申请和部署
|
||||
|
||||
## 提交PR
|
||||
我们将尽快审核PR
|
||||
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 374 KiB |
|
Before Width: | Height: | Size: 327 KiB |
@@ -11,6 +11,8 @@ services:
|
||||
ports: # 端口映射
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号
|
||||
- "7001:7001"
|
||||
# ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露相关服务端口
|
||||
- "7002:7002"
|
||||
dns:
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果出现getaddrinfo ENOTFOUND等错误,可以尝试修改或注释dns配置
|
||||
- 223.5.5.5
|
||||
|
||||
@@ -23,12 +23,11 @@ export default defineConfig({
|
||||
// ],
|
||||
["meta", {
|
||||
name: "keywords",
|
||||
content: "证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具、Certd、SSL证书自动部署、证书自动化,https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署"
|
||||
}],
|
||||
["meta", {
|
||||
name: "google-site-verification",
|
||||
content: "V5XLTSnXoT15uQotwpxJoQolUo2d5UbSL-TacsyOsC0"
|
||||
content: "证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具、Certd、SSL证书自动部署、证书自动化,https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署,SSL平台,证书管理平台"
|
||||
}],
|
||||
["meta", { name: "google-site-verification",content: "V5XLTSnXoT15uQotwpxJoQolUo2d5UbSL-TacsyOsC0"}],
|
||||
//<meta name="baidu-site-verification" content="codeva-MiWN8Y07Ua" />
|
||||
["meta", {name: "baidu-site-verification",content: "codeva-MiWN8Y07Ua"}],
|
||||
["link", { rel: "icon", href: "/static/logo/logo.svg" }]
|
||||
],
|
||||
themeConfig: {
|
||||
@@ -95,8 +94,10 @@ export default defineConfig({
|
||||
{ text: "腾讯云密钥获取", link: "/guide/use/tencent/" },
|
||||
{ text: "连接windows主机", link: "/guide/use/host/windows.md" },
|
||||
{ text: "Google EAB获取", link: "/guide/use/google/" },
|
||||
{ text: "阿里云相关", link: "/guide/use/aliyun/" },
|
||||
{ text: "忘记密码", link: "/guide/use/forgotpasswd/" },
|
||||
{ text: "数据备份", link: "/guide/use/backup/" },
|
||||
{ text: "Certd本身的证书更新", link: "/guide/use/https/index.md" },
|
||||
{ text: "如何贡献代码", link: "/guide/development/index.md" },
|
||||
]
|
||||
},
|
||||
|
||||
@@ -2,19 +2,14 @@
|
||||
|
||||
## 1. 交流群
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
### QQ群:141236433
|
||||
<p align="center">
|
||||
<img height="230" src="./images/qq.png">
|
||||
</p>
|
||||
|
||||
|
||||
### 微信群:
|
||||
<p align="center">
|
||||
<img height="230" src="./images/wx.png">
|
||||
</p>
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
|
||||
| 加群 | 微信群 | QQ群 |
|
||||
|---------|-------|-------|
|
||||
| 二维码 | <img height="230" src="./images/wx.png"> | <img height="230" src="./images/qq.png"> |
|
||||
|
||||
## 2. 加作者好友
|
||||
<p align="center">
|
||||
<img height="230" src="./images/me.png">
|
||||
</p>
|
||||
|
||||
| 加作者好友 | 微信 QQ |
|
||||
|---------|-------------------------------------------------------------|
|
||||
| 二维码 | <img height="230" src="./images/me.png"> |
|
||||
|
||||
@@ -23,8 +23,11 @@ https://1panel.cn/docs/installation/online_installation/
|
||||
|
||||
3. 访问测试
|
||||
|
||||
http://ip:7001
|
||||
|
||||
http://ip:7001
|
||||
https://ip:7002
|
||||
默认账号密码
|
||||
admin/123456
|
||||
登录后请及时修改密码
|
||||
|
||||
## 三、升级
|
||||
|
||||
@@ -42,3 +45,7 @@ http://ip:7001
|
||||
|
||||
> 默认数据保存在`/data/certd`目录下,可以手动备份
|
||||
> 建议配置一条 [数据库备份流水线](../../use/backup/),自动备份
|
||||
|
||||
## 五、备份恢复
|
||||
|
||||
将备份的`db.sqlite`覆盖到原来的位置即可
|
||||
|
||||
BIN
docs/guide/install/baota/images/upgrade.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
@@ -31,19 +31,26 @@
|
||||
|
||||
## 二、访问应用
|
||||
|
||||
http://ip:7001
|
||||
|
||||
http://ip:7001
|
||||
https://ip:7002
|
||||
默认账号密码
|
||||
admin/123456
|
||||
登录后请及时修改密码
|
||||
|
||||
## 三、如何升级
|
||||
|
||||
### 1. 通用方式
|
||||
### 1. 应用商店安装,直接更新镜像即可
|
||||
|
||||
先主机上拉取最新镜像,然后面板上重启容器
|
||||

|
||||
|
||||
|
||||
### 2. latest更新方式
|
||||
在主机上拉取最新镜像,然后面板上重启容器
|
||||
```shell
|
||||
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
```
|
||||
|
||||
### 2. 固定版本号方式
|
||||
### 3. 固定版本号方式
|
||||
|
||||
修改容器编排模版中的镜像版本号,然后面板上重启容器
|
||||
```shell
|
||||
@@ -71,3 +78,7 @@ services:
|
||||
### 4.3 自动备份
|
||||
|
||||
> 建议配置一条 [数据库备份流水线](../../use/backup/),自动备份
|
||||
|
||||
## 五、备份恢复
|
||||
|
||||
将备份的`db.sqlite`覆盖到原来的位置即可
|
||||
|
||||
@@ -45,9 +45,10 @@ docker compose up -d
|
||||
|
||||
### 3. 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
http://your_server_ip:7001
|
||||
https://your_server_ip:7002
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
|
||||
## 二、升级
|
||||
@@ -64,6 +65,10 @@ docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 三、数据备份
|
||||
> 数据默认存在`/data/certd`目录下,不用担心数据丢失
|
||||
> 建议配置一条[数据库备份流水线](../../use/backup/) 自动备份
|
||||
|
||||
## 四、备份恢复
|
||||
|
||||
将备份的`db.sqlite`覆盖到原来的位置即可
|
||||
@@ -17,7 +17,8 @@ cd certd
|
||||
|
||||
### 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
http://your_server_ip:7001
|
||||
https://your_server_ip:7002
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
@@ -33,8 +34,12 @@ kill -9 $(lsof -t -i:7001)
|
||||
# 重新编译启动
|
||||
./start.sh
|
||||
```
|
||||
|
||||
## 三、数据备份
|
||||
> 数据默认保存在 `./packages/ui/certd-server/data` 目录下
|
||||
> 建议配置一条[数据库备份流水线](../../use/backup/) 自动备份
|
||||
|
||||
|
||||
## 四、备份恢复
|
||||
|
||||
将备份的`db.sqlite`覆盖到原来的位置即可
|
||||
|
||||
@@ -25,7 +25,8 @@ https://certd.handsfree.work/
|
||||
|
||||
### 2. 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
http://your_server_ip:7001
|
||||
https://your_server_ip:7002
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# 数据库自动备份
|
||||
|
||||
## 一、手动备份
|
||||
数据库文件根据不同的部署方式保存的位置不一样,您可以手动复制出来进行备份
|
||||
|
||||
* docker: 默认保存在`/data/certd/db.sqlite`
|
||||
* 源码: 默认保存在 `./packages/ui/certd-server/data/db.sqlite`
|
||||
* 宝塔: [手动数据备份位置](https://certd.docmirror.cn/guide/install/baota/#%E5%9B%9B%E3%80%81%E6%95%B0%E6%8D%AE%E5%A4%87%E4%BB%BD)
|
||||
* 1panel: 默认保存在`/data/certd/db.sqlite`
|
||||
|
||||
|
||||
## 二、自动备份
|
||||
通过配置数据库自动备份流水线实现数据备份
|
||||
|
||||
## 1. 创建自动备份流水线
|
||||

|
||||
|
||||
@@ -7,7 +19,12 @@
|
||||

|
||||
|
||||
## 3. 选择备份方法
|
||||

|
||||

|
||||
|
||||
## 4. 配置定时和失败通知
|
||||

|
||||

|
||||
|
||||
|
||||
## 三、备份恢复
|
||||
|
||||
将备份的`db.sqlite`覆盖到原来的位置即可
|
||||
BIN
docs/guide/use/https/images/1.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/guide/use/https/images/2.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/guide/use/https/images/3.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/guide/use/https/images/ok.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
38
docs/guide/use/https/index.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Certd本身的https证书配置
|
||||
|
||||
## 一、启用https
|
||||
|
||||
`Certd`默认启用https,监听7002端口
|
||||
如果你想关闭https,或者修改端口,可以在环境变量中配置
|
||||
```shell
|
||||
CERTD_HTTPS_ENABLE=true
|
||||
CERTD_HTTPS_port=7002
|
||||
|
||||
```
|
||||
|
||||
## 二、自动更新Certd的https证书
|
||||
|
||||
### 1、创建证书流水线
|
||||
|
||||
参考Certd顶部的创建证书流水线教程
|
||||
|
||||
### 2、配置复制到本机任务
|
||||
将证书复制到certd的证书安装位置
|
||||
|
||||

|
||||

|
||||
|
||||
### 3、配置重启Certd任务
|
||||
重启certd的https server,让证书生效
|
||||

|
||||
|
||||
|
||||
|
||||
### 4、配置定时任务
|
||||
每天定时执行,最终效果如下
|
||||
|
||||

|
||||
|
||||
:::warning
|
||||
建议将本流水线的触发时间与其他流水线时间错开,避免重启时影响其他流水线的执行
|
||||
:::
|
||||
2
docs/public/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
@@ -9,5 +9,5 @@
|
||||
}
|
||||
},
|
||||
"npmClient": "pnpm",
|
||||
"version": "1.26.12"
|
||||
"version": "1.26.13"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/publishlab/node-acme-client/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/acme-client
|
||||
|
||||
## [1.26.12](https://github.com/publishlab/node-acme-client/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/acme-client
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"description": "Simple and unopinionated ACME client",
|
||||
"private": false,
|
||||
"author": "nmorsman",
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"main": "src/index.js",
|
||||
"types": "types/index.d.ts",
|
||||
"license": "MIT",
|
||||
@@ -60,5 +60,5 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/publishlab/node-acme-client/issues"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/basic
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
@@ -1 +1 @@
|
||||
23:57
|
||||
20:27
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/basic",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
@@ -64,5 +64,5 @@
|
||||
"vite": "^4.3.8",
|
||||
"vue-tsc": "^1.6.5"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ export function createAxiosService({ logger }: { logger: Logger }) {
|
||||
service.interceptors.request.use(
|
||||
(config: any) => {
|
||||
logger.info(`http request:${config.url},method:${config.method}`);
|
||||
if (config.logParams !== false) {
|
||||
if (config.logParams !== false && config.params) {
|
||||
logger.info(`params:${JSON.stringify(config.params)}`);
|
||||
}
|
||||
if (config.timeout == null) {
|
||||
@@ -182,7 +182,7 @@ export function createAxiosService({ logger }: { logger: Logger }) {
|
||||
|
||||
export const http = createAxiosService({ logger }) as HttpClient;
|
||||
export type HttpClientResponse<R> = any;
|
||||
export type HttpRequestConfig<D=any> = {
|
||||
export type HttpRequestConfig<D = any> = {
|
||||
skipSslVerify?: boolean;
|
||||
skipCheckRes?: boolean;
|
||||
logParams?: boolean;
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/pipeline
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/pipeline
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/pipeline",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -15,8 +15,8 @@
|
||||
"test": "mocha --loader=ts-node/esm"
|
||||
},
|
||||
"dependencies": {
|
||||
"@certd/basic": "^1.26.12",
|
||||
"@certd/plus-core": "^1.26.12",
|
||||
"@certd/basic": "^1.26.13",
|
||||
"@certd/plus-core": "^1.26.13",
|
||||
"axios": "^1.7.2",
|
||||
"dayjs": "^1.11.7",
|
||||
"fix-path": "^4.0.0",
|
||||
@@ -66,5 +66,5 @@
|
||||
"vite": "^4.3.8",
|
||||
"vue-tsc": "^1.6.5"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-huawei
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-huawei
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-huawei",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"main": "./dist/bundle.js",
|
||||
"module": "./dist/bundle.js",
|
||||
"types": "./dist/d/index.d.ts",
|
||||
@@ -17,5 +17,5 @@
|
||||
"rimraf": "^5.0.5",
|
||||
"rollup": "^3.7.4"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-iframe
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-iframe
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-iframe",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -39,5 +39,5 @@
|
||||
"tslib": "^2.5.2",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-jdcloud
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-jdcloud
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-jdcloud",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"main": "./dist/bundle.mjs",
|
||||
"module": "./dist/bundle.mjs",
|
||||
"types": "./dist/d/index.d.ts",
|
||||
@@ -27,5 +27,5 @@
|
||||
"rimraf": "^5.0.5",
|
||||
"rollup": "^3.7.4"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-k8s
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-k8s
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-k8s",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -18,7 +18,7 @@
|
||||
"@kubernetes/client-node": "0.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@certd/pipeline": "^1.26.12",
|
||||
"@certd/pipeline": "^1.26.13",
|
||||
"@rollup/plugin-commonjs": "^23.0.4",
|
||||
"@rollup/plugin-json": "^6.0.0",
|
||||
"@rollup/plugin-node-resolve": "^15.0.1",
|
||||
@@ -40,5 +40,5 @@
|
||||
"tslib": "^2.5.2",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-server
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-server
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/lib-server",
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"description": "midway with flyway, sql upgrade way ",
|
||||
"private": false,
|
||||
"type": "module",
|
||||
@@ -26,9 +26,9 @@
|
||||
],
|
||||
"license": "AGPL",
|
||||
"dependencies": {
|
||||
"@certd/acme-client": "^1.26.12",
|
||||
"@certd/basic": "^1.26.12",
|
||||
"@certd/pipeline": "^1.26.12",
|
||||
"@certd/acme-client": "^1.26.13",
|
||||
"@certd/basic": "^1.26.13",
|
||||
"@certd/pipeline": "^1.26.13",
|
||||
"@midwayjs/cache": "~3.14.0",
|
||||
"@midwayjs/core": "~3.17.1",
|
||||
"@midwayjs/i18n": "~3.17.3",
|
||||
@@ -69,5 +69,5 @@
|
||||
"typeorm": "^0.3.11",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
**Note:** Version bump only for package @certd/midway-flyway-js
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
**Note:** Version bump only for package @certd/midway-flyway-js
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/midway-flyway-js",
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"description": "midway with flyway, sql upgrade way ",
|
||||
"private": false,
|
||||
"type": "module",
|
||||
@@ -56,5 +56,5 @@
|
||||
"typeorm": "^0.3.11",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* deprecated的运行时不要报错,只报警告 ([bcbefaa](https://github.com/certd/certd/commit/bcbefaaa35cf6d0eec085b3a2c5bfc7c6a8de9e1))
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/plugin-cert",
|
||||
"private": false,
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -15,9 +15,9 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@certd/acme-client": "^1.26.12",
|
||||
"@certd/basic": "^1.26.12",
|
||||
"@certd/pipeline": "^1.26.12",
|
||||
"@certd/acme-client": "^1.26.13",
|
||||
"@certd/basic": "^1.26.13",
|
||||
"@certd/pipeline": "^1.26.13",
|
||||
"@google-cloud/publicca": "^1.3.0",
|
||||
"dayjs": "^1.11.7",
|
||||
"jszip": "^3.10.1",
|
||||
@@ -57,5 +57,5 @@
|
||||
"vite": "^3.1.0",
|
||||
"vue-tsc": "^0.38.9"
|
||||
},
|
||||
"gitHead": "3a78cb9929fd63bb72f0e00f4389e775c926c789"
|
||||
"gitHead": "11d0daa59ae409c229037189066414f29b787de0"
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ export async function createDnsProvider(opts: { dnsProviderType: string; context
|
||||
const DnsProviderClass = dnsProviderPlugin.target;
|
||||
const dnsProviderDefine = dnsProviderPlugin.define as DnsProviderDefine;
|
||||
if (dnsProviderDefine.deprecated) {
|
||||
throw new Error(dnsProviderDefine.deprecated);
|
||||
context.logger.warn(dnsProviderDefine.deprecated);
|
||||
}
|
||||
// @ts-ignore
|
||||
const dnsProvider: IDnsProvider = new DnsProviderClass();
|
||||
|
||||
@@ -3,6 +3,16 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复对话框全屏按钮与关闭按钮重叠的bug ([95df56c](https://github.com/certd/certd/commit/95df56cc5ca5e3eb843cd17cb7078cde47729f1e))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 支持同时监听https端口,7002 ([d5a17f9](https://github.com/certd/certd/commit/d5a17f9e6afd63fda2df0981118480f25a1fac2e))
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/ui-client",
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite --open",
|
||||
@@ -63,8 +63,8 @@
|
||||
"vuedraggable": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@certd/lib-iframe": "^1.26.12",
|
||||
"@certd/pipeline": "^1.26.12",
|
||||
"@certd/lib-iframe": "^1.26.13",
|
||||
"@certd/pipeline": "^1.26.13",
|
||||
"@rollup/plugin-commonjs": "^25.0.7",
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@types/chai": "^4.3.12",
|
||||
|
||||
@@ -124,7 +124,7 @@ function createRequestFunction(service: any) {
|
||||
headers: {
|
||||
"Content-Type": get(config, "headers.Content-Type", "application/json")
|
||||
},
|
||||
timeout: 10000,
|
||||
timeout: 20000,
|
||||
baseURL: env.API,
|
||||
data: {}
|
||||
};
|
||||
|
||||
@@ -27,5 +27,5 @@
|
||||
}
|
||||
|
||||
.fs-form-wrapper .fs-form-header {
|
||||
padding-right: 30px;
|
||||
padding-right: 30px !important;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ process.env.VITE_APP_VERSION = require("./package.json").version;
|
||||
process.env.VITE_APP_BUILD_TIME = require("dayjs")().format("YYYY-M-D HH:mm:ss");
|
||||
|
||||
import { theme } from "ant-design-vue";
|
||||
import * as https from "node:https";
|
||||
|
||||
const { defaultAlgorithm, defaultSeed } = theme;
|
||||
|
||||
@@ -103,7 +104,9 @@ export default ({ command, mode }) => {
|
||||
// with options
|
||||
"/api": {
|
||||
//配套后端 https://github.com/fast-crud/fs-server-js
|
||||
target: "http://127.0.0.1:7001"
|
||||
target: "https://127.0.0.1:7002",
|
||||
//忽略证书
|
||||
agent: new https.Agent({ rejectUnauthorized: false })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 更新certd本身的证书文档说明 ([0c50ede](https://github.com/certd/certd/commit/0c50ede129337b82df54575cbd2f4c2a783a0732))
|
||||
* 支持同时监听https端口,7002 ([d5a17f9](https://github.com/certd/certd/commit/d5a17f9e6afd63fda2df0981118480f25a1fac2e))
|
||||
|
||||
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/ui-server",
|
||||
"version": "1.26.12",
|
||||
"version": "1.26.13",
|
||||
"description": "fast-server base midway",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
@@ -27,17 +27,17 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alicloud/pop-core": "^1.7.10",
|
||||
"@certd/acme-client": "^1.26.12",
|
||||
"@certd/commercial-core": "^1.26.12",
|
||||
"@certd/lib-huawei": "^1.26.12",
|
||||
"@certd/lib-jdcloud": "^1.26.12",
|
||||
"@certd/lib-k8s": "^1.26.12",
|
||||
"@certd/lib-server": "^1.26.12",
|
||||
"@certd/midway-flyway-js": "^1.26.12",
|
||||
"@certd/pipeline": "^1.26.12",
|
||||
"@certd/plugin-cert": "^1.26.12",
|
||||
"@certd/plugin-plus": "^1.26.12",
|
||||
"@certd/plus-core": "^1.26.12",
|
||||
"@certd/acme-client": "^1.26.13",
|
||||
"@certd/commercial-core": "^1.26.13",
|
||||
"@certd/lib-huawei": "^1.26.13",
|
||||
"@certd/lib-jdcloud": "^1.26.13",
|
||||
"@certd/lib-k8s": "^1.26.13",
|
||||
"@certd/lib-server": "^1.26.13",
|
||||
"@certd/midway-flyway-js": "^1.26.13",
|
||||
"@certd/pipeline": "^1.26.13",
|
||||
"@certd/plugin-cert": "^1.26.13",
|
||||
"@certd/plugin-plus": "^1.26.13",
|
||||
"@certd/plus-core": "^1.26.13",
|
||||
"@koa/cors": "^5.0.0",
|
||||
"@midwayjs/bootstrap": "~3.17.1",
|
||||
"@midwayjs/cache": "~3.14.0",
|
||||
@@ -74,6 +74,7 @@
|
||||
"md5": "^2.3.0",
|
||||
"mwtsc": "^1.4.0",
|
||||
"nanoid": "^5.0.7",
|
||||
"node-forge": "^1.3.1",
|
||||
"nodemailer": "^6.9.3",
|
||||
"pg": "^8.12.0",
|
||||
"psl": "^1.9.0",
|
||||
|
||||
@@ -24,6 +24,12 @@ const development = {
|
||||
koa: {
|
||||
port: 7001,
|
||||
},
|
||||
https: {
|
||||
enabled: true,
|
||||
port: 7002,
|
||||
key: './data/ssl/cert.key',
|
||||
cert: './data/ssl/cert.crt',
|
||||
},
|
||||
staticFile: {
|
||||
usePrecompiledGzip: true,
|
||||
buffer: true,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { App, Configuration } from '@midwayjs/core';
|
||||
import * as koa from '@midwayjs/koa';
|
||||
import { IMidwayKoaContext, NextFunction } from '@midwayjs/koa';
|
||||
import * as orm from '@midwayjs/typeorm';
|
||||
import * as cache from '@midwayjs/cache';
|
||||
import * as validate from '@midwayjs/validate';
|
||||
@@ -18,7 +19,7 @@ import * as libServer from '@certd/lib-server';
|
||||
import * as commercial from '@certd/commercial-core';
|
||||
import * as upload from '@midwayjs/upload';
|
||||
import { setLogger } from '@certd/acme-client';
|
||||
import { IMidwayKoaContext, NextFunction } from '@midwayjs/koa';
|
||||
|
||||
process.on('uncaughtException', error => {
|
||||
console.error('未捕获的异常:', error);
|
||||
// 在这里可以添加日志记录、发送错误通知等操作
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { Autoload, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core';
|
||||
import { App, Autoload, Config, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core';
|
||||
import { getPlusInfo, isPlus, logger } from '@certd/pipeline';
|
||||
import { SysInstallInfo, SysSettingsService } from '@certd/lib-server';
|
||||
import { getVersion } from '../../utils/version.js';
|
||||
import dayjs from 'dayjs';
|
||||
import { Application } from '@midwayjs/koa';
|
||||
import { httpsServer, HttpsServerOptions } from './https/server.js';
|
||||
|
||||
@Autoload()
|
||||
@Scope(ScopeEnum.Singleton)
|
||||
@@ -10,8 +12,17 @@ export class AutoZPrint {
|
||||
@Inject()
|
||||
sysSettingsService: SysSettingsService;
|
||||
|
||||
@App()
|
||||
app: Application;
|
||||
|
||||
@Config('https')
|
||||
httpsConfig: HttpsServerOptions;
|
||||
|
||||
@Init()
|
||||
async init() {
|
||||
//监听https
|
||||
this.startHttpsServer();
|
||||
|
||||
const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo);
|
||||
logger.info('=========================================');
|
||||
logger.info('当前站点ID:', installInfo.siteId);
|
||||
@@ -24,4 +35,15 @@ export class AutoZPrint {
|
||||
logger.info('Certd已启动');
|
||||
logger.info('=========================================');
|
||||
}
|
||||
|
||||
async startHttpsServer() {
|
||||
if (!this.httpsConfig.enabled) {
|
||||
logger.info('Https server is not enabled');
|
||||
return;
|
||||
}
|
||||
httpsServer.start({
|
||||
...this.httpsConfig,
|
||||
app: this.app,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import { logger } from '@certd/pipeline';
|
||||
import fs from 'fs';
|
||||
// @ts-ignore
|
||||
import forge from 'node-forge';
|
||||
|
||||
export function createSelfCertificate(opts: { crtPath: string; keyPath: string }) {
|
||||
// 生成密钥对
|
||||
const keypair = forge.pki.rsa.generateKeyPair(2048);
|
||||
|
||||
// 创建自签名证书
|
||||
const cert = forge.pki.createCertificate();
|
||||
cert.publicKey = keypair.publicKey;
|
||||
cert.serialNumber = '01';
|
||||
cert.validFrom = new Date(Date.now() - 1000 * 60 * 60 * 24).toISOString(); // 1天前
|
||||
cert.validTo = new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 10).toISOString(); // 10年后
|
||||
// 创建主题
|
||||
const attrs = [
|
||||
{
|
||||
name: 'commonName',
|
||||
value: 'self-certificate.certd', // 或者你的域名
|
||||
},
|
||||
];
|
||||
cert.setSubject(attrs);
|
||||
cert.setIssuer(attrs);
|
||||
cert.sign(keypair.privateKey, forge.md.sha256.create());
|
||||
|
||||
// 导出证书和私钥
|
||||
const pemCert = forge.pki.certificateToPem(cert);
|
||||
const pemKey = forge.pki.privateKeyToPem(keypair.privateKey);
|
||||
|
||||
// 写入文件
|
||||
logger.info('生成自签名证书成功');
|
||||
logger.info(`自签证书保存路径: ${opts.crtPath}`);
|
||||
logger.info(`自签私钥保存路径: ${opts.keyPath}`);
|
||||
fs.writeFileSync(opts.crtPath, pemCert);
|
||||
fs.writeFileSync(opts.keyPath, pemKey);
|
||||
|
||||
return {
|
||||
crtPath: opts.crtPath,
|
||||
keyPath: opts.keyPath,
|
||||
crt: pemCert,
|
||||
key: pemKey,
|
||||
};
|
||||
}
|
||||
78
packages/ui/certd-server/src/modules/auto/https/server.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import https from 'node:https';
|
||||
import fs from 'fs';
|
||||
import { Application } from '@midwayjs/koa';
|
||||
import { createSelfCertificate } from './self-certificate.js';
|
||||
import { logger } from '@certd/pipeline';
|
||||
|
||||
export type HttpsServerOptions = {
|
||||
enabled: boolean;
|
||||
app?: Application;
|
||||
port: number;
|
||||
key: string;
|
||||
cert: string;
|
||||
};
|
||||
|
||||
export class HttpsServer {
|
||||
server: https.Server;
|
||||
opts: HttpsServerOptions;
|
||||
constructor() {}
|
||||
|
||||
async restart() {
|
||||
await this.close();
|
||||
return this.start(this.opts);
|
||||
}
|
||||
|
||||
async close() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.server.close(() => {
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
start(opts: HttpsServerOptions) {
|
||||
if (!opts) {
|
||||
logger.error('https配置不能为空');
|
||||
return;
|
||||
}
|
||||
this.opts = opts;
|
||||
logger.info('=========================================');
|
||||
if (!opts.key || !opts.cert) {
|
||||
logger.error('证书路径未配置,无法启动https服务,请先配置:koa.https.key和koa.https.cert');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!fs.existsSync(opts.key) || !fs.existsSync(opts.cert)) {
|
||||
logger.info('证书文件不存在,将生成自签名证书');
|
||||
createSelfCertificate({
|
||||
crtPath: opts.cert,
|
||||
keyPath: opts.key,
|
||||
});
|
||||
}
|
||||
logger.info('准备启动https服务');
|
||||
const httpServer = https.createServer(
|
||||
{
|
||||
cert: fs.readFileSync(opts.cert),
|
||||
key: fs.readFileSync(opts.key),
|
||||
},
|
||||
opts.app.callback()
|
||||
);
|
||||
this.server = httpServer;
|
||||
const hostname = '0.0.0.0';
|
||||
// A function that runs in the context of the http server
|
||||
// and reports what type of server listens on which port
|
||||
function listeningReporter() {
|
||||
// `this` refers to the http server here
|
||||
logger.info(`Https server is listening on https://${hostname}:${opts.port}`);
|
||||
}
|
||||
|
||||
try {
|
||||
httpServer.listen(opts.port, hostname, listeningReporter);
|
||||
return httpServer;
|
||||
} catch (e) {
|
||||
logger.error('启动https服务失败', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const httpsServer = new HttpsServer();
|
||||
@@ -1,10 +1,11 @@
|
||||
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
|
||||
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy } from '@certd/pipeline';
|
||||
import { httpsServer } from '../../../modules/auto/https/server.js';
|
||||
|
||||
@IsTaskPlugin({
|
||||
name: 'RestartCertd',
|
||||
title: '重启Certd',
|
||||
title: '重启 Certd',
|
||||
icon: 'mdi:restart',
|
||||
desc: '【仅管理员】延迟一定时间后自动杀死自己,然后通过Docker来自动重启',
|
||||
desc: '【仅管理员可用】 重启 certd的https服务,用于更新 Certd 的 ssl 证书',
|
||||
group: pluginGroups.other.key,
|
||||
default: {
|
||||
strategy: {
|
||||
@@ -13,26 +14,14 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput
|
||||
},
|
||||
})
|
||||
export class RestartCertdPlugin extends AbstractTaskPlugin {
|
||||
@TaskInput({
|
||||
title: '延迟时间',
|
||||
value: 30,
|
||||
component: {
|
||||
placeholder: '30',
|
||||
},
|
||||
helper: '延迟多少秒后执行',
|
||||
required: true,
|
||||
})
|
||||
delay = 30;
|
||||
async onInstance() {}
|
||||
async execute(): Promise<void> {
|
||||
if (!this.isAdmin()) {
|
||||
throw new Error('只有管理员才能运行此任务');
|
||||
}
|
||||
this.logger.info(`Certd 将在 ${this.delay} 秒后关闭`);
|
||||
setTimeout(() => {
|
||||
this.logger.info('重启 Certd');
|
||||
process.exit(1);
|
||||
}, this.delay * 1000);
|
||||
this.logger.info('Certd https server 将在 3 秒后重启');
|
||||
await this.ctx.utils.sleep(3000);
|
||||
await httpsServer.restart();
|
||||
}
|
||||
}
|
||||
new RestartCertdPlugin();
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
|
||||
import { AbstractPlusTaskPlugin } from '@certd/plugin-plus';
|
||||
|
||||
@IsTaskPlugin({
|
||||
name: 'DeployCertToTencentAll',
|
||||
title: '部署证书到腾讯云任意云资源',
|
||||
needPlus: true,
|
||||
icon: 'svg:icon-tencentcloud',
|
||||
group: pluginGroups.tencent.key,
|
||||
desc: '需要【上传到腾讯云】作为前置任务',
|
||||
default: {
|
||||
strategy: {
|
||||
runStrategy: RunStrategy.SkipWhenSucceed,
|
||||
},
|
||||
},
|
||||
})
|
||||
export class DeployCertToTencentAll extends AbstractPlusTaskPlugin {
|
||||
/**
|
||||
* AccessProvider的key,或者一个包含access的具体的对象
|
||||
*/
|
||||
@TaskInput({
|
||||
title: 'Access授权',
|
||||
helper: 'access授权',
|
||||
component: {
|
||||
name: 'access-selector',
|
||||
type: 'tencent',
|
||||
},
|
||||
required: true,
|
||||
})
|
||||
accessId!: string;
|
||||
|
||||
@TaskInput({
|
||||
title: '腾讯云证书id',
|
||||
helper: '请选择“上传证书到腾讯云”前置任务的输出',
|
||||
component: {
|
||||
name: 'output-selector',
|
||||
from: 'UploadCertToTencent',
|
||||
},
|
||||
required: true,
|
||||
})
|
||||
tencentCertId!: string;
|
||||
|
||||
@TaskInput({
|
||||
title: '云资源实例Id列表',
|
||||
component: {
|
||||
name: 'a-select',
|
||||
vModel: 'value',
|
||||
open: false,
|
||||
mode: 'tags',
|
||||
},
|
||||
helper: '',
|
||||
})
|
||||
instanceIdList!: string[];
|
||||
|
||||
async onInstance() {}
|
||||
async execute(): Promise<void> {
|
||||
const accessProvider = await this.accessService.getById(this.accessId);
|
||||
|
||||
const sdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/ssl/v20191205/index.js');
|
||||
const Client = sdk.v20191205.Client;
|
||||
const client = new Client({
|
||||
credential: {
|
||||
secretId: accessProvider.secretId,
|
||||
secretKey: accessProvider.secretKey,
|
||||
},
|
||||
region: '',
|
||||
profile: {
|
||||
httpProfile: {
|
||||
endpoint: 'ssl.tencentcloudapi.com',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const params = {
|
||||
CertificateId: this.tencentCertId,
|
||||
InstanceIdList: this.instanceIdList,
|
||||
};
|
||||
|
||||
const res = await client.DeployCertificateInstance(params);
|
||||
this.checkRet(res);
|
||||
this.logger.info('部署成功');
|
||||
}
|
||||
|
||||
checkRet(ret: any) {
|
||||
if (!ret || ret.Error) {
|
||||
throw new Error('执行失败:' + ret.Error.Code + ',' + ret.Error.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import dayjs from 'dayjs';
|
||||
},
|
||||
},
|
||||
})
|
||||
export class DeployToClbPlugin extends AbstractTaskPlugin {
|
||||
export class DeployCertToTencentCLB extends AbstractTaskPlugin {
|
||||
@TaskInput({
|
||||
title: '大区',
|
||||
component: {
|
||||
|
||||
@@ -162,4 +162,4 @@ export class DeployCertToTencentCosPlugin extends AbstractPlusTaskPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
// new DeployCertToTencentCosPlugin()
|
||||
new DeployCertToTencentCosPlugin();
|
||||
|
||||
@@ -13,7 +13,7 @@ import { TencentAccess } from '@certd/plugin-plus';
|
||||
},
|
||||
},
|
||||
})
|
||||
export class DeployToEOPlugin extends AbstractTaskPlugin {
|
||||
export class DeployCertToTencentEO extends AbstractTaskPlugin {
|
||||
@TaskInput({
|
||||
title: '已上传证书ID',
|
||||
helper: '请选择前置任务上传到腾讯云的证书',
|
||||
@@ -131,3 +131,5 @@ export class DeployToEOPlugin extends AbstractTaskPlugin {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
new DeployCertToTencentEO();
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
export * from './deploy-to-all/index.js';
|
||||
export * from './deploy-to-clb/index.js';
|
||||
export * from './deploy-to-cdn/index.js';
|
||||
export * from './upload-to-tencent/index.js';
|
||||
export * from './deploy-to-cdn-v2/index.js';
|
||||
export * from './upload-to-tencent/index.js';
|
||||
export * from './deploy-to-cos/index.js';
|
||||
export * from './deploy-to-eo/index.js';
|
||||
|
||||
@@ -13,7 +13,7 @@ import dayjs from 'dayjs';
|
||||
},
|
||||
},
|
||||
})
|
||||
export class UploadToTencentPlugin extends AbstractTaskPlugin {
|
||||
export class UploadCertToTencent extends AbstractTaskPlugin {
|
||||
@TaskInput({ title: '证书名称' })
|
||||
name!: string;
|
||||
|
||||
|
||||