优化中文文档,修改了一些排版,更新内容

This commit is contained in:
Kris 2024-05-06 19:22:56 +02:00
parent 49f5f572e6
commit 29fe30eef8
No known key found for this signature in database
GPG Key ID: 36AFAA97D2910652
9 changed files with 273 additions and 238 deletions

View File

@ -19,7 +19,6 @@ Agent 二进制文件仓库地址为:<https://github.com/nezhahq/agent/release
<br/> <br/>
### 在 Linux 中一键安装 (Ubuntu、Debian、CentOS) ### 在 Linux 中一键安装 (Ubuntu、Debian、CentOS)
* 首先在管理面板中添加一台服务器 * 首先在管理面板中添加一台服务器
* 点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令 * 点击新添加的服务器旁,绿色的 Linux 图标按钮,复制一键安装命令
* 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线 * 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到 Dashboard 主页查看服务器是否上线
@ -42,6 +41,8 @@ Agent 二进制文件仓库地址为:<https://github.com/nezhahq/agent/release
## 其他方式安装 Agent ## 其他方式安装 Agent
### 在 Linux 中安装 Agent (Ubuntu、Debian、CentOS) ### 在 Linux 中安装 Agent (Ubuntu、Debian、CentOS)
<details>
<summary>点击展开/收起</summary>
* 首先在管理面板中添加一台服务器 * 首先在管理面板中添加一台服务器
* 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像): * 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
@ -61,9 +62,12 @@ curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh
* 输入面板通信端口gRPC 端口),默认为 5555 * 输入面板通信端口gRPC 端口),默认为 5555
* 输入 Agent 密钥Agent 密钥在管理面板中添加服务器时生成,可以在管理面板中的“服务器”页中找到 * 输入 Agent 密钥Agent 密钥在管理面板中添加服务器时生成,可以在管理面板中的“服务器”页中找到
* 等待安装完成后返回 Dashboard 主页查看服务器是否上线 * 等待安装完成后返回 Dashboard 主页查看服务器是否上线
</details>
<br/> <br/>
### 在 其他 Linux 如 Alpine 使用 Openrc 的发行版 安装 Agent ### 在 其他 Linux 如 Alpine 使用 Openrc 的发行版 安装 Agent
<details>
<summary>点击展开/收起</summary>
本节内容由 [unknown0054](https://github.com/unknwon0054) 贡献 本节内容由 [unknown0054](https://github.com/unknwon0054) 贡献
@ -151,6 +155,7 @@ EOF
```shell ```shell
rc-update add nezha-agent rc-update add nezha-agent
``` ```
</details>
### 在 Windows 中手动安装 Agent ### 在 Windows 中手动安装 Agent
@ -159,6 +164,8 @@ EOF
<br/> <br/>
### 在 群晖DSM 中安装 Agent ### 在 群晖DSM 中安装 Agent
<details>
<summary>点击展开/收起</summary>
* 请参考社区文章: * 请参考社区文章:
[群晖 DSM 7.x 安装 哪吒监控 Agent](https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/) [群晖 DSM 7.x 安装 哪吒监控 Agent](https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/)
@ -208,10 +215,12 @@ EOF
‼️修改对应信息后‼️ ‼️修改对应信息后‼️
使用 `root` 账号执行上述命令即可安装完成 使用 `root` 账号执行上述命令即可安装完成
</details>
<br/> <br/>
### 在 MacOS 中安装 Agent ### 在 macOS 中安装 Agent
<details>
<summary>点击展开/收起</summary>
***本节内容改编自 [Mitsea Blog](https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5),改编已获得原作者授权*** ***本节内容改编自 [Mitsea Blog](https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5),改编已获得原作者授权***
<br/> <br/>
@ -276,16 +285,22 @@ launchctl stop nezha_agent
```shell ```shell
launchctl remove nezha_agent launchctl remove nezha_agent
``` ```
</details>
<br/> <br/>
### 在 macOS 中使用 Homebrew 安装 Agent ### 在 macOS 中使用 Homebrew 安装 Agent
<details>
<summary>点击展开/收起</summary>
***本节内容改编自 [🐿️松鼠收集🌰](https://blog.mre.red/archives/install_nezha_monitoring_agent_service_with_homebrew),改编已获得原作者授权*** ***本节内容改编自 [🐿️松鼠收集🌰](https://blog.mre.red/archives/install_nezha_monitoring_agent_service_with_homebrew),改编已获得原作者授权***
* 添加 Homebrew 第三方仓库 * 添加 Homebrew 第三方仓库
::: danger
请注意,此 Homebrew 仓库由第三方维护,与哪吒监控无关。
Nezha 项目组不对该仓库的可用性和安全性等方面作出背书。在使用前,请自行评估风险!!
:::
*由于暂未提交到 Homebrew Core 官方库,暂时放在上述博客作者参与维护的第三方 Homebrew 仓库中*
***由于暂未提交到 Homebrew Core 官方库,暂时放在上述博客作者参与维护的第三方 Homebrew 仓库中***
```sh ```sh
brew tap brewforge/chinese brew tap brewforge/chinese
@ -300,7 +315,7 @@ brew install nezha-agent
* 添加环境变量 * 添加环境变量
```sh ```sh
echo 'export HOMEBREW_NEZHA_AGENT_PASSWORD="你的密钥,在你的服务页面获取"' >> ~/.zshrc echo 'export HOMEBREW_NEZHA_AGENT_PASSWORD="通信密钥,在服务页面获取"' >> ~/.zshrc
echo 'export HOMEBREW_NEZHA_AGENT_SERVER="你的服务器和端口,格式 your.domain:5555 "' >> ~/.zshrc echo 'export HOMEBREW_NEZHA_AGENT_SERVER="你的服务器和端口,格式 your.domain:5555 "' >> ~/.zshrc
source ~/.zshrc source ~/.zshrc
``` ```
@ -328,10 +343,12 @@ brew services stop nezha-agent
```sh ```sh
brew rm nezha-agent brew rm nezha-agent
``` ```
</details>
<br/> <br/>
### 在 OpenWRT 中安装 Agent ### 在 OpenWRT 中安装 Agent
<details>
<summary>点击展开/收起</summary>
**如何 一步到位,解决安装过程疑难杂症** **如何 一步到位,解决安装过程疑难杂症**
* 请参考项目: * 请参考项目:
@ -374,11 +391,10 @@ restart() {
* 运行 `chmod +x /etc/init.d/nezha-service` 赋予执行权限 * 运行 `chmod +x /etc/init.d/nezha-service` 赋予执行权限
* 启动服务: `/etc/init.d/nezha-service enable && /etc/init.d/nezha-service start` * 启动服务: `/etc/init.d/nezha-service enable && /etc/init.d/nezha-service start`
</details>
<br/> <br/>
<br/> ## 常见问题
## FAQ
### Agent 有 Docker 镜像吗? ### Agent 有 Docker 镜像吗?

View File

@ -9,7 +9,8 @@ outline: deep
## 一键脚本安装时出错 ## 一键脚本安装时出错
### curl: Failed to connect to raw.githubusercontent.com...... ### curl: Failed to connect to raw.githubusercontent.com......
多出现在国内主机中,目前一键脚本只从 Github 直接获取安装脚本,您可以多尝试几次,或者[手动安装 Agent](/guide/agent.html#其他方式安装agent),别忘了使用镜像。 多出现在国内主机中,目前一键脚本只从 Github 直接获取安装脚本,您可以多尝试几次,或者[手动安装 Agent](/guide/agent.html#其他方式安装agent)。
另外,也可以自行寻找第三方 Github 加速服务或者镜像,并在一键安装脚本中设置。
### sudo: command not found ### sudo: command not found
请先手动安装 sudo。 请先手动安装 sudo。

43
docs/guide/dashboard.md Normal file → Executable file
View File

@ -9,7 +9,7 @@ outline: deep
2. 一个已经设置好 A 记录,指向 Dashboard 服务器 ip 的域名 2. 一个已经设置好 A 记录,指向 Dashboard 服务器 ip 的域名
::: tip ::: tip
如果你想使用 CDN请准备两个域名一个配置好 CDN 用作公开访问CDN 需要支持 WebSocket 协议;另一个域名不要使用 CDN用作 Agent 端与 Dashboard 的通信 如果你想使用 CDN请准备两个域名一个配置好 CDN 用作公开访问CDN 需要支持 WebSocket 协议;另一个域名不要使用 CDN用作 Agent 端与 Dashboard 的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示 本文档分别以 "dashboard.example.com" 和 "data.example.com" 两个域名来演示
::: :::
3. 一个 Github 账号Gitlab、Gitee 3. 一个 Github 账号Gitlab、Gitee
@ -24,12 +24,27 @@ outline: deep
## 获取 Github 的 Client ID 和密钥 ## 获取 Github 的 Client ID 和密钥
哪吒监控接入 Github、Gitlab、Gitee 作为后台管理员账号 哪吒监控接入 Github、Gitlab、Gitee 作为后台管理员账号
+ 首先我们需要新建一个验证应用,以 Github 为例,登录 Github 后,打开 https://github.com/settings/developers 依次选择“OAuth Apps” - “New OAuth App” 1. 首先我们需要新建一个验证应用,以 Github 为例,登录 Github 后,打开 https://github.com/settings/developers 依次选择“OAuth Apps” - “New OAuth App”
`Application name` - 随意填写 `Application name` - 随意填写
`Homepage URL` - 填写面板的访问域名,如:"http://cdn.example.com" (你的域名) `Homepage URL` - 填写面板的访问域名,如:"http://dashboard.example.com" (你的域名)
`Authorization callback URL` - 填写回调地址,如:"http://cdn.example.com/oauth2/callback" (不要忘记`/oauth2/callback` `Authorization callback URL` - 填写回调地址,如:"http://dashboard.example.com/oauth2/callback" (不要忘记`/oauth2/callback`
+ 点击 “Register application” 2. 点击 “Register application”
+ 保存页面中的 Client ID然后点击 “Generate a new client secret“创建一个新的 Client Secret新建的密钥仅会显示一次**请妥善保存** 3. 保存页面中的 Client ID然后点击 “Generate a new client secret“创建一个新的 Client Secret新建的密钥仅会显示一次**请妥善保存**
## 获取 Cloudflare Access 作为 OAuth2 提供方
位于中国大陆的用户可能无法直接连接 Github如您在使用 Github、Gitlab、Gitee 作为管理员账户登录时遇到问题,您可以优先考虑切换 [使用 Cloudflare Access 作为 OAuth2 提供方](/guide/q8.html)作为登录方式
**新建 SaaS-OIDC 应用流程**
1. 前往 [Zero Trust Dashboard](https://one.dash.cloudflare.com),使用 Cloudflare 账号登录;
2. `My Team` -> `Users` -> `<具体用户>` -> 获取 `User ID` 并保存;
3. `Access` -> `Application` -> `Add an Application`
4. 选择 `SaaS`,在 `Application` 中输入自定义的应用名称(例如 nezha选择 `OIDC` 后点击 `Add application`
5. `Scopes` 选择 `openid`, `email`, `profile`, `groups`
6. `Redirect URLs` 填写你的 callback 地址,例如 `https://dashboard.example.com/oauth2/callback`
7. 保存 `Client ID``Client Secret``Issuer` 地址中协议与域名的部分,例如 `https://xxxxx.cloudflareaccess.com`
**如使用此方式,安装 Dashboard 完成后,需要修改配置文件 `/opt/nezha/dashboard/data/config.yaml`,将 `Endpoint` 配置修改为之前保存的`Issuer`地址,例如 `https://xxxxx.cloudflareaccess.com`,保存后需重启 Dashboard**
<br/> <br/>
## 在服务器中安装 Dashboard ## 在服务器中安装 Dashboard
@ -44,16 +59,16 @@ curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh
```` ````
* 等待 Docker 安装完毕后,分别输入以下值: * 等待 Docker 安装完毕后,分别输入以下值:
`OAuth提供商` - GithubGitlabGitee 中选择一个 `OAuth提供商` - githubcloudflaregitlabgitee 中选择一个
`Client ID` - 之前保存的 Client ID `Client ID` - 之前保存的 Client ID
`Client Secret` - 之前保存的密钥 `Client Secret` - 之前保存的 Client Secret
`用户名` - OAuth 提供商中的用户名 `用户名` - OAuth 提供商中的用户名/User ID
`站点标题` - 自定义站点标题 `站点标题` - 自定义站点标题
`访问端口` - 公开访问端口,可自定义,默认 8008 `访问端口` - 公开访问端口,可自定义,默认 8008
`Agent的通信端口` - Agent 与 Dashboard 的通信端口,默认 5555 `Agent的通信端口` - Agent 与 Dashboard 的通信端口,默认 5555
* 输入完成后,等待拉取镜像 * 输入完成后,等待拉取镜像
安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板 安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://dashboard.example.com:8008” 来查看面板
* 将来如果需要再次运行脚本,可以运行: * 将来如果需要再次运行脚本,可以运行:
```bash ```bash
@ -65,7 +80,7 @@ curl -L https://gitee.com/naibahq/nezha/raw/master/script/install.sh -o nezha.sh
## 配置反向代理 ## 配置反向代理
* 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理” * 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://dashboard.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”
* 自定义一个代理名称,在下方“目标 URL”中填入 `http://127.0.0.1` 然后点击“保存” * 自定义一个代理名称,在下方“目标 URL”中填入 `http://127.0.0.1` 然后点击“保存”
@ -87,7 +102,7 @@ location ~ ^/(ws|terminal/.+)$ {
#PROXY-END/ #PROXY-END/
```` ````
* 点击“保存” * 点击“保存”
现在你应该可以直接使用域名“http://cdn.example.com“ 来访问面板了 现在你应该可以直接使用域名“http://dashboard.example.com“ 来访问面板了
<br/> <br/>
#### 扩展内容: #### 扩展内容:
@ -112,9 +127,9 @@ location ~ ^/(ws|terminal/.+)$ {
首先,先暂时关闭反向代理 首先,先暂时关闭反向代理
正如在其他网站中配置 SSL 证书一样,进入站点设置中的 “SSL”你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书 正如在其他网站中配置 SSL 证书一样,进入站点设置中的 “SSL”你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成 SSL 的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的 "Homepage URL" 和 "Authorization callback URL" 中的域名全部从`http`改为`https`,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" **不更改此项可能会导致你无法登录面板后台** 完成 SSL 的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的 "Homepage URL" 和 "Authorization callback URL" 中的域名全部从`http`改为`https`,如:"https://dashboard.example.com" 和 "https://dashboard.example.com/oauth2/callback" **不更改此项可能会导致你无法登录面板后台**
## FAQ ## 常见问题
### 启用 HTTPS 后 /terminal 或 /ws 不能正常连接怎么办? ### 启用 HTTPS 后 /terminal 或 /ws 不能正常连接怎么办?
常常是由于证书不完整造成的,请在 agent 运行参数中添加 -d若 log 中有 x509:certificate signed by unknown authority,更换完整证书则可解决该问题。 常常是由于证书不完整造成的,请在 agent 运行参数中添加 -d若 log 中有 x509:certificate signed by unknown authority,更换完整证书则可解决该问题。

View File

@ -32,7 +32,7 @@ systemctl status docker
这个问题也可能与内核有关,也可以尝试更换官方内核。 这个问题也可能与内核有关,也可以尝试更换官方内核。
## 面板重启失败Invalid hostPort: nz_site_port 等 ## 面板重启失败Invalid hostPort: nz_site_port 等
通常不会出现这个情况,如出现可以通过安装脚本修改配置,或者直接修改 `/opt/nezha/dashboard/docker-compose.yaml`文件。 如出现可以通过安装脚本修改配置,或者直接修改 `/opt/nezha/dashboard/docker-compose.yaml`文件。
## 面板布局错误、CSS 资源无法被加载 ## 面板布局错误、CSS 资源无法被加载
如果出现 Dashboard 页面布局出现错误,通常的原因是 CSS 文件丢失或无法被加载 如果出现 Dashboard 页面布局出现错误,通常的原因是 CSS 文件丢失或无法被加载
@ -55,3 +55,7 @@ location ~ .*\.(js|css)?$
## 面板更新DDNS崩溃panic: interface conversion: interface {} is nil, not []interface {} ## 面板更新DDNS崩溃panic: interface conversion: interface {} is nil, not []interface {}
填入的DDNS `AccessID``AccessSecret` 有误。 填入的DDNS `AccessID``AccessSecret` 有误。
## 打开网络监控页显示server monitor history not found
出现此错误说明没有在服务页中设置 TCP-Ping 和 ICMP-Ping 类型的监控或者监控数据还未生成。
如已经设置完毕,可以等待一段时间后再查看。

View File

@ -4,7 +4,7 @@ outline: deep
## 登录回调后页面卡住\拒绝连接\响应时间过长 ## 登录回调后页面卡住\拒绝连接\响应时间过长
还有其他一些表现形式,总之登录后浏览器无法正常显示。 还有其他一些表现形式,总之登录后浏览器无法正常显示。
1. 您的服务器无法连接到 Github/Gitee最常见于国内服务器配置 Github 情况下,可以考虑多尝试几次或者切换到 Gitee 1. 您的服务器无法连接到 Github/Gitee最常见于国内服务器配置 Github 情况下,可以考虑多尝试几次或者切换到 Cloudflare Access
2. 您配置错了回调地址,确保您的回调地址正确且**端口与协议**均正确! 2. 您配置错了回调地址,确保您的回调地址正确且**端口与协议**均正确!
3. Dashboard 发生未知错误,您可以使用脚本查看日志。 3. Dashboard 发生未知错误,您可以使用脚本查看日志。
@ -37,10 +37,11 @@ outline: deep
### 该用户不是本站点管理员,无法登录 ### 该用户不是本站点管理员,无法登录
您登陆错了账号或者配置错了用户名,注意**用户名不是邮箱**,可使用脚本修改。 您登陆错了账号或者配置错了用户名,注意**用户名不是邮箱**,可使用脚本修改。
Cloudflare Access 用户请注意您的用户名不是邮箱而是User ID。
### dial tcp xxx:443 i/o timeout ### dial tcp xxx:443 i/o timeout
网络问题,可先重启 Docker`sudo systemctl restart docker`,再使用脚本重启面板。 网络问题,可先重启 Docker`sudo systemctl restart docker`,再使用脚本重启面板。
如为国内服务器配置 Github 登陆方式,则建议切换到Jihulab以避免网络干扰。 如为国内服务器配置 Github 登陆方式,则建议切换到 Cloudflare Access 以避免网络干扰。
### net/http: TLS handshake timeout ### net/http: TLS handshake timeout
同上。 同上。

63
docs/guide/notifications.md Normal file → Executable file
View File

@ -7,37 +7,41 @@ outline: deep
<br/> <br/>
## 灵活的通知方式 ## 灵活的通知方式
在面板消息中,占位符 `#DATETIME#` 代表事件发生的时间戳。当通知被触发时,面板会自动将 `#DATETIME#` 替换为事件的实际时间。 - 在面板消息中,占位符 `#DATETIME#` 代表事件发生的时间戳。当通知被触发时,面板会自动将 `#DATETIME#` 替换为事件的实际时间。
- `#NEZHA#` 是面板消息占位符,面板触发通知时会自动用实际消息替换占位符
- Body 内容是`JSON` 格式的:**当请求类型为 FORM 时**,值为 `key:value` 的形式,`value` 里面可放置占位符,通知时会自动替换。**当请求类型为 JSON 时** 只会简单进行字符串替换后直接提交到`URL`
- URL 里面也可放置占位符,请求时会进行简单的字符串替换。
`#NEZHA#` 是面板消息占位符,面板触发通知时会自动用实际消息替换占位符 **请参考以下的通知方式示例,也可以根据自己的需求灵活设置推送方式**
Body 内容是`JSON` 格式的:**当请求类型为 FORM 时**,值为 `key:value` 的形式,`value` 里面可放置占位符,通知时会自动替换。**当请求类型为 JSON 时** 只会简单进行字符串替换后直接提交到`URL` ### Bark 示例
<details>
URL 里面也可放置占位符,请求时会进行简单的字符串替换。 <summary>点击展开/收起</summary>
**- 你可以参考以下的通知方式示例,也可以根据自己的需求灵活设置推送方式**
- **Bark 示例**
- 名称Bark - 名称Bark
- URL 组成: 第一个部分是 key,之后有三个匹配 /:key/:body or /:key/:title/:body or /:key/:category/:title/:body - URL 组成: 第一个部分是 key,之后有三个匹配 /:key/:body or /:key/:title/:body or /:key/:category/:title/:body
- 请求方式: GET - 请求方式: GET
- 请求类型: 默认 - 请求类型: 默认
- Body: 空 - Body: 空
- 名称Bark - 名称Bark
- URL 组成: /push - URL 组成: /push
- 请求方式: POST - 请求方式: POST
- 请求类型: form - 请求类型: form
- Body: `{"title": "#SERVER.NAME#","device_key":"xxxxxxxxx","body":"#NEZHA#","icon":"https://xxxxxxxx/nz.png"}` - Body: `{"title": "#SERVER.NAME#","device_key":"xxxxxxxxx","body":"#NEZHA#","icon":"https://xxxxxxxx/nz.png"}`
</details>
- **Server 酱示例** ### Server 酱示例
<details>
<summary>点击展开/收起</summary>
- 名称Server 酱 - 名称Server 酱
- URLhttps://sc.ftqq.com/SCUrandomkeys.send?title=哪吒告警信息&desp=#NEZHA# - URLhttps://sc.ftqq.com/SCUrandomkeys.send?title=哪吒告警信息&desp=#NEZHA#
- 请求方式: GET - 请求方式: GET
- 请求类型: 默认 - 请求类型: 默认
- Body: 空 - Body: 空
- **Server 酱进阶**
**Server 酱进阶**
- 名称Server 酱 - 名称Server 酱
- URLhttps://sc.ftqq.com/SCUrandomkeys.send - URLhttps://sc.ftqq.com/SCUrandomkeys.send
- 请求方式: POST - 请求方式: POST
@ -53,16 +57,23 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
} }
``` ```
![展示](https://github.com/iilemon/nezhahq.github.io/blob/main/docs/images/photo_2023-03-16_00-22-47a.jpg?raw=true) ![展示](https://github.com/iilemon/nezhahq.github.io/blob/main/docs/images/photo_2023-03-16_00-22-47a.jpg?raw=true)
</details>
- **wxpusher 示例,需要关注你的应用** ### wxpusher 示例
**需要提前关注你的应用**
<details>
<summary>点击展开/收起</summary>
- 名称: wxpusher - 名称: wxpusher
- URLhttp://wxpusher.zjiecode.com/api/send/message - URLhttp://wxpusher.zjiecode.com/api/send/message
- 请求方式: POST - 请求方式: POST
- 请求类型: JSON - 请求类型: JSON
- Body: `{"appToken":"你的appToken","topicIds":[],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}` - Body: `{"appToken":"你的appToken","topicIds":[],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}`
</details>
- **Telegram 示例 贡献者:[@haitau](https://github.com/haitau)** ### Telegram 示例 贡献者:[@haitau](https://github.com/haitau)
<details>
<summary>点击展开/收起</summary>
- 名称telegram 机器人消息通知 - 名称telegram 机器人消息通知
- URLhttps://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA# - URLhttps://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
@ -70,8 +81,12 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
- 请求类型: 默认 - 请求类型: 默认
- Body: 空 - Body: 空
- URL 参数获取说明botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot 创建新的机器人bot会提供的 token在提示 Use this token to access the HTTP API:后面一行)这里 'bot' 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。 - URL 参数获取说明botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot 创建新的机器人bot会提供的 token在提示 Use this token to access the HTTP API:后面一行)这里 'bot' 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。
</details>
### 邮件通知示例 - SendCloud 贡献者:[@白歌](https://github.com/cantoblanco)
<details>
<summary>点击展开/收起</summary>
- **邮件通知示例 - SendCloud 贡献者:[@白歌](https://github.com/cantoblanco)**
**注意SendCloud 有每日免费发送邮件限额限制,这里仅作示例,你可以选择付费服务或其他类似的免费服务,使用方法类似。** **注意SendCloud 有每日免费发送邮件限额限制,这里仅作示例,你可以选择付费服务或其他类似的免费服务,使用方法类似。**
- 名称:邮件告警 - 名称:邮件告警
@ -82,8 +97,11 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
- Body: 留空 - Body: 留空
URL 参数获取说明:此方式需提前在 [SendCloud](https://www.sendcloud.net/) 注册账号,创建发件邮箱,然后在[这里](https://www.sendcloud.net/sendSetting/apiuser)获取 APIUSER 和 APIKEY替换 URL 中的 <替换APIUSER><替换APIKEY> 为自己的 APIUSER 和 APIKEY替换 URL 中的 <自定义发件邮箱><自定义收件邮箱> 为自己的发件邮箱和收件邮箱。 URL 参数获取说明:此方式需提前在 [SendCloud](https://www.sendcloud.net/) 注册账号,创建发件邮箱,然后在[这里](https://www.sendcloud.net/sendSetting/apiuser)获取 APIUSER 和 APIKEY替换 URL 中的 <替换APIUSER><替换APIKEY> 为自己的 APIUSER 和 APIKEY替换 URL 中的 <自定义发件邮箱><自定义收件邮箱> 为自己的发件邮箱和收件邮箱。
</details>
- **钉钉群机器人配置 示例** ### 钉钉群机器人配置 示例
<details>
<summary>点击展开/收起</summary>
- 名称: 哪吒探针小跟班 - 名称: 哪吒探针小跟班
- URLhttps://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx - URLhttps://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx
@ -92,8 +110,11 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
- Header: `{"Content-Type": "application/json"}` - Header: `{"Content-Type": "application/json"}`
- Body: `{"msgtype": "text","text": {"content":"哪吒探针:\n#NEZHA#"}}` - Body: `{"msgtype": "text","text": {"content":"哪吒探针:\n#NEZHA#"}}`
- URL 参数获取说明机器人URL在钉钉群-管理机器人-创建机器人后获取安全方式选择自定义关键词Body中content中需包含该关键词 - URL 参数获取说明机器人URL在钉钉群-管理机器人-创建机器人后获取安全方式选择自定义关键词Body中content中需包含该关键词
</details>
- **企业微信 群机器人 示例 贡献者:[@ChowRex](https://github.com/ChowRex)** ### 企业微信 群机器人 示例 贡献者:[@ChowRex](https://github.com/ChowRex)
<details>
<summary>点击展开/收起</summary>
支持的占位符一览 支持的占位符一览
@ -144,15 +165,19 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
根据需求删减相关内容信息即可 根据需求删减相关内容信息即可
![通知效果](https://user-images.githubusercontent.com/30169860/223605620-eac53ee6-09f9-4583-94fa-9b0cdedba81c.png) ![通知效果](https://user-images.githubusercontent.com/30169860/223605620-eac53ee6-09f9-4583-94fa-9b0cdedba81c.png)
</details>
### 飞书群机器人配置 示例 贡献者:[@eya46](https://github.com/eya46)
<details>
<summary>点击展开/收起</summary>
- **飞书群机器人配置 示例 贡献者:[@eya46](https://github.com/eya46)**
- 名称: 哪吒面板Bot - 名称: 哪吒面板Bot
- URLhttps://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx - URLhttps://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx
- 请求方式: POST - 请求方式: POST
- 请求类型: JSON - 请求类型: JSON
- Body: `{"content":{"text":"#NEZHA#\n#DATETIME#"},"msg_type":"text"}` - Body: `{"content":{"text":"#NEZHA#\n#DATETIME#"},"msg_type":"text"}`
- URL 参数获取说明机器人URL通过飞书群-群机器人-添加机器人-自定义机器人(webhook)创建后获取 - URL 参数获取说明机器人URL通过飞书群-群机器人-添加机器人-自定义机器人(webhook)创建后获取
</details>
<br/> <br/>
<br/> <br/>
@ -239,7 +264,7 @@ URL 里面也可放置占位符,请求时会进行简单的字符串替换。
> >
>`[{"type":"transfer_out_cycle","max":1099511627776,"cycle_start":"2022-01-01T00:00:00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true,"4":true}}]` >`[{"type":"transfer_out_cycle","max":1099511627776,"cycle_start":"2022-01-01T00:00:00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true,"4":true}}]`
## 通知触发模式说明 ## 通知触发模式
- 始终触发:每当 Agent 上报的状态符合告警的规则时,都会触发一次通知 - 始终触发:每当 Agent 上报的状态符合告警的规则时,都会触发一次通知
- 单次触发:仅状态改变时触发一次通知,如从正常状态改变为异常状态,或异常状态恢复为正常状态 - 单次触发:仅状态改变时触发一次通知,如从正常状态改变为异常状态,或异常状态恢复为正常状态

22
docs/guide/q8.md Normal file → Executable file
View File

@ -1,3 +1,4 @@
相较于 GithubCloudflare Access 对于中国大陆用户更加友好。如您当前使用 Github、Gitlab、Gitee 作为管理员账户登录时遇到问题,您可以考虑切换 Cloudflare Access 作为 OAuth2 提供方
## 示例配置: ## 示例配置:
```yaml ```yaml
@ -5,7 +6,7 @@ Oauth2:
Admin: 701b9ea6-9f56-48cd-af3e-cbb4bfc1475c Admin: 701b9ea6-9f56-48cd-af3e-cbb4bfc1475c
ClientID: 3516291f53eca9b4901a01337e41be7dc52f565c8657d08a3fddb2178d13c5bf ClientID: 3516291f53eca9b4901a01337e41be7dc52f565c8657d08a3fddb2178d13c5bf
ClientSecret: 0568b67c7b6d0ed51c663e2fe935683007c28f947a27b7bd47a5ad3d8b56fb67 ClientSecret: 0568b67c7b6d0ed51c663e2fe935683007c28f947a27b7bd47a5ad3d8b56fb67
Endpoint: "https://akkia.cloudflareaccess.com" Endpoint: "https://xxxxx.cloudflareaccess.com"
Type: cloudflare Type: cloudflare
``` ```
@ -19,11 +20,16 @@ Oauth2:
### 新建 SaaS-OIDC 应用流程 ### 新建 SaaS-OIDC 应用流程
Zero Trust Dashboard: https://one.dash.cloudflare.com 前往 Zero Trust Dashboard: https://one.dash.cloudflare.com
1. `Access` -> `Application` -> `Add an Application`; 1. `My Team` -> `Users` -> `<具体用户>` -> 获取 `User ID` 并保存;
2. 选择 `SaaS`,在`Application`中输入自定义的应用名称例如nezha选择`OIDC`后点击`Add application`; 2. `Access` -> `Application` -> `Add an Application`;
3. `Scopes`选择`openid`, `email`, `profile`, `groups`; 3. 选择 `SaaS`,在 `Application` 中输入自定义的应用名称(例如 nezha选择 `OIDC`后点击 `Add application`;
4. `Redirect URLs`填写你的CallBack地址例如 `https://monitor.example.com/oauth2/callback`; 4. `Scopes` 选择 `openid`, `email`, `profile`, `groups`;
5. 记录`Client ID``Client Secret``Issuer`地址中协议与域名的部分,例如`https://akkia.cloudflareaccess.com` 5. `Redirect URLs` 填写你的 CallBack 地址,例如 `https://dashboard.example.com/oauth2/callback`;
6. 编辑Dashboard配置文件(通常在`/opt/nezha/dashboard/data/config.yaml)`,参考示例配置修改`Oauth2`配置并重启Dashboard服务 6. 记录 `Client ID``Client Secret``Issuer` 地址中协议与域名的部分,例如 `https://xxxxx.cloudflareaccess.com`
7. 编辑 Dashboard 配置文件(通常在`/opt/nezha/dashboard/data/config.yaml)`,参考示例配置修改 `Oauth2` 配置,并重启 Dashboard 服务
<br>
### 身份验证策略配置
在完成 Dashboard 的设置后,您还需要在 Zero Trust Dashboard 中 `Access`-> `Applications` -> `<应用名>` -> `Policies` 配置验证策略。您可以选择包括邮件OTP验证、硬件密钥验证、等十多种 SSO 验证方式,详细配置请参考 [Cloudflare Zero Trust 文档](https://developers.cloudflare.com/cloudflare-one/)

View File

@ -36,14 +36,14 @@ Linux 和 Windows 均可用,可使用 Ctrl+Shift+V 粘贴。
注意在线终端功能中Agent 也是通过 WebSocket 连接到**公开访问域名**,而非通过 gRPC 交互。 注意在线终端功能中Agent 也是通过 WebSocket 连接到**公开访问域名**,而非通过 gRPC 交互。
## DDNS 功能 ## DDNS 功能
DDNS 功能适用于使用动态 IP 的服务器,当 Agent 上报了一个新的 IPDashboard 会根据配置自动更新 DNS 记录 DDNS 功能适用于使用动态 IP 的服务器,当 Agent 上报了一个新的 IPDashboard 会根据配置自动更新 DNS 记录
### 为什么我要使用哪吒监控的 DDNS 功能? ### 为什么我要使用哪吒监控的 DDNS 功能?
- 方便集中管理 DDNS 设置,而不是在每台机器上都部署一个 DDNS 服务 - 方便集中管理 DDNS 设置,而不是在每台机器上都部署一个 DDNS 服务
- 仅在面板机上保存您的机密信息,防止外泄 - 仅在面板机上保存您的机密信息,防止外泄
### 配置说明 ### 配置说明
目前 DDNS 功能支持两种形式的配置:单配置和多配置。如使用单配置,则所有 Agent 服务器都使用相同的配置更新 DDNS如使用多配置则可为每台服务器指定一个配置更新 DDNS灵活性更强 目前 DDNS 功能支持两种形式的配置:单配置和多配置。如使用单配置,则所有 Agent 服务器都使用相同的配置更新 DDNS如使用多配置则可为每台服务器指定一个配置更新 DDNS灵活性更强
#### 单配置 #### 单配置
```yaml ```yaml
@ -59,63 +59,35 @@ DDNS:
MaxRetries: 3 MaxRetries: 3
Profiles: null Profiles: null
``` ```
##### Enable - `Enable` 布尔值,选择是否开启 DDNS 功能
布尔值,选择是否开启 DDNS 功能。 - `Provider` DDNS 供应商的名称;目前支持 `webhook``cloudflare` 以及 `tencentcloud`
##### Provider - `AccessID` DDNS 供应商的令牌 ID仅适用于供应商 `tencentcloud`
DDNS 供应商的名称。目前支持 `webhook``cloudflare` 以及 `tencentcloud` - `AccessSecret` DDNS 供应商的令牌 Secret仅适用于供应商 `cloudflare``tencentcloud`
##### AccessID - `WebhookMethod` Webhook 的请求方法。例如 `GET``POST`等;仅适用于供应商 `webhook`
DDNS 供应商的令牌 ID。 - `WebhookURL` Webhook 的请求地址;仅适用于供应商 `webhook`
- `WebhookRequestBody` Webhook 的请求体;仅适用于供应商 `webhook`
- `WebhookHeaders` Webhook 的请求头;仅适用于供应商 `webhook`
- `MaxRetries`当请求失败时,重试请求的次数
- `Profiles` 多配置设定;在单配置设定中,此项忽略
仅适用于供应商 `tencentcloud` `WebhookURL``WebhookRequestBody` 以及`WebhookHeaders`可以包含以下参数:
##### AccessSecret - `{ip}` - 主机当前IP
DDNS 供应商的令牌 Secret。 - `{domain}` - ddns域名
- `{type}` - IP类型可能为"ipv4"和"ipv6"
- `{access_id}` - 凭据1
- `{access_secret}` - 凭据2
仅适用于供应商 `cloudflare``tencentcloud` 配置示例:
##### WebhookMethod
Webhook 的请求方法。例如 `GET``POST`等。
仅适用于供应商 `webhook`
##### WebhookURL
Webhook 的请求地址。
仅适用于供应商 `webhook`
##### WebhookRequestBody
Webhook 的请求体。
仅适用于供应商 `webhook`
##### WebhookHeaders
Webhook 的请求头。
仅适用于供应商 `webhook`
##### MaxRetries
当请求失败时,重试请求的次数。
##### Profiles
多配置设定。在单配置设定中,此项不进行处理。
:::tip
`WebhookURL``WebhookRequestBody` 以及`WebhookHeaders`可以使用如下参数:
`{ip}` - 主机当前IP
`{domain}` - ddns域名
`{type}` - IP类型可能为"ipv4"和"ipv6"
`{access_id}` - 凭据1
`{access_secret}` - 凭据2
例如以下配置:
``` ```
WebhookHeaders: | WebhookHeaders: |
a:{access_id} a:{access_id}
b:{access_secret} b:{access_secret}
WebhookRequestBody: '{"domain": "{domain}", "ip": "{ip}", "type": "{type}"}' WebhookRequestBody: '{"domain": "{domain}", "ip": "{ip}", "type": "{type}"}'
``` ```
::: <br>
#### 多配置 #### 多配置
当使用多配置时,请将 `DDNS.Provider` 留空。如 `DDNS.Provider` 的值不为空,多配置设定将被无视。 当使用多配置时,请将 `DDNS.Provider` 留空。如 `DDNS.Provider` 的值不为空,多配置设定将被忽略
```yaml ```yaml
DDNS: DDNS:
Enable: true Enable: true
@ -130,36 +102,31 @@ DDNS:
WebhookRequestBody: "" WebhookRequestBody: ""
WebhookHeaders: "" WebhookHeaders: ""
``` ```
##### Profiles - `Profiles` 多配置设定
多配置设定。 - `example` 可替换为 DDNS 配置名,可填任意字符串
##### example
你的 DDNS 配置名,可填任意字符串。
其它选项请参考[单配置](#单配置)段。 其它选项请参考[单配置](#单配置)段。
<br>
### Dashboard 配置 #### Dashboard 配置
修改好配置文件后,还需要在 Dashboard 中修改服务器设置才能使 DDNS 生效。 修改配置文件后,还需要在 Dashboard 中修改服务器设置才能使 DDNS 生效
<br>
DDNS 相关选项说明: DDNS 相关选项说明:
- 启用DDNS - `启用DDNS` 为此服务器启用 DDNS 功能
为此服务器启用 DDNS 功能。 - `启用DDNS IPv4` 更新 DDNS 记录时,启用 IPv4 解析
- 启用DDNS IPv4 - `启用DDNS IPv6` 更新 DDNS 记录时,启用 IPv6 解析
更新 DDNS 记录时,启用 IPv4 解析。 - `DDNS域名` 记录指向的域名
- 启用DDNS IPv6 - `DDNS配置` 在多配置情况下,要使用的 DDNS 配置名
更新 DDNS 记录时,启用 IPv6 解析。
- DDNS域名
记录指向的域名。
- DDNS配置
在多配置情况下,要使用的 DDNS 配置。
::: tip ::: warning
在 Dashboard 设置中修改配置并保存时,会在 `config.yaml` 中填入默认配置选项,此时 DDNS 段中会同时存在单配置和多配置的选项。 在 Dashboard 设置中修改配置并保存时,会在 `config.yaml` 中填入默认配置选项,此时 DDNS 段中会同时存在单配置和多配置
如需使用单配置,请无视 `Profiles` 选项相关内容。 - 如需使用单配置,请配置`DDNS.Provider`,并忽略 `Profiles` 选项相关内容。
- 如需使用多配置,请将 `DDNS.Provider` 留空。如 `DDNS.Provider` 的值不为空,多配置设定将被忽略。
如需使用多配置,请将 `DDNS.Provider` 留空。如 `DDNS.Provider` 的值不为空,多配置设定将被无视。
::: :::
<br>
### 查看日志 #### 查看日志
在 Dashboard 的日志中,可以看到 DDNS 功能的相关日志,配置正确时,更新 DNS 记录时会有相应的日志记录。 在 Dashboard 的日志中,可以看到 DDNS 功能的相关日志,配置正确时,更新 DNS 记录时会有相应的日志记录。
```shell ```shell
dashboard_1 | 2024/03/16 23:16:25 NEZHA>> 正在尝试更新域名(ddns.example.com)DDNS(1/3) dashboard_1 | 2024/03/16 23:16:25 NEZHA>> 正在尝试更新域名(ddns.example.com)DDNS(1/3)

0
docs/guide/services.md Normal file → Executable file
View File