This commit is contained in:
cantoblanco committed 2024-05-15 02:33:37 +00:00
1 parent 8df244390b
commit 436134bd72
208 files changed
+871 -857

No files matched your search

+95 -90
View File
@@ -3,161 +3,166 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Nezha Monitoring | Nezha Monitoring</title>
<title>Install Agent | Nezha Monitoring</title>
<meta name="description" content="Nezha Monitoring is a lightweight O&M tool">
<link rel="preload stylesheet" href="/assets/style.ac216bba.css" as="style">
<script type="module" src="/assets/app.586a9009.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.44fd0451.js">
<link rel="modulepreload" href="/assets/chunks/theme.ccb07a11.js">
<link rel="modulepreload" href="/assets/en_US_guide_agent.md.cc9897a3.lean.js">
<link rel="modulepreload" href="/assets/en_US_guide_agent.md.9cc4c6a2.lean.js">
<script src="https://cdn.wwads.cn/js/makemoney.js" async="true"></script>
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-FDME8GJGTW"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-FDME8GJGTW");</script>
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-b2cf3e0b><!--[--><!--]--><!--[--><span tabindex="-1" data-v-b8b11faa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-b8b11faa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b2cf3e0b data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-7683ced7><div class="container" data-v-7683ced7><div class="title" data-v-7683ced7><div class="VPNavBarTitle has-sidebar" data-v-7683ced7 data-v-4d981103><a class="title" href="/en_US/" data-v-4d981103><!--[--><!--]--><!----><!--[-->Nezha Monitoring<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-7683ced7><div class="curtain" data-v-7683ced7></div><div class="content-body" data-v-7683ced7><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-7683ced7><!--[--><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-7683ced7 data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en_US/" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->User Guide<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/case/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Community Projects<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/developer/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Development Manual<!--]--><!----></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-7683ced7 data-v-74abcbb9 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-764effdf><span class="text" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-764effdf><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-764effdf><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>English</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-2f2cfafc><a class="VPLink link" href="/guide/agent.html" data-v-2f2cfafc data-v-8f4dc553><!--[-->简体中文<!--]--><!----></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-7683ced7 data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.Line truncated
<div id="app"><div class="Layout" data-v-b2cf3e0b><!--[--><!--]--><!--[--><span tabindex="-1" data-v-b8b11faa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-b8b11faa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b2cf3e0b data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-7683ced7><div class="container" data-v-7683ced7><div class="title" data-v-7683ced7><div class="VPNavBarTitle has-sidebar" data-v-7683ced7 data-v-4d981103><a class="title" href="/en_US/" data-v-4d981103><!--[--><!--]--><!----><!--[-->Nezha Monitoring<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-7683ced7><div class="curtain" data-v-7683ced7></div><div class="content-body" data-v-7683ced7><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-7683ced7><!--[--><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-7683ced7 data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en_US/" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->User Guide<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/case/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Community Projects<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en_US/developer/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->Development Manual<!--]--><!----></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-7683ced7 data-v-74abcbb9 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-764effdf><span class="text" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-764effdf><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-764effdf><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>English</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-2f2cfafc><a class="VPLink link" href="/guide/agent.html" data-v-2f2cfafc data-v-8f4dc553><!--[-->简体中文<!--]--><!----></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-7683ced7 data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.Line truncated
<span class="line"><span style="color:#C3E88D;">#!/sbin/openrc-run</span></span>
<span class="line"><span style="color:#C3E88D;">SERVER=&quot;&quot; #Dashboard address ip:port</span></span>
<span class="line"><span style="color:#C3E88D;">SECRET=&quot;&quot; #SECRET</span></span>
<span class="line"><span style="color:#C3E88D;">TLS=&quot;&quot; # Enable tls? yes:&quot;--tls&quot; no:&quot;&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">SERVER=&quot;&quot; # Dashboard domain ip:port</span></span>
<span class="line"><span style="color:#C3E88D;">SECRET=&quot;&quot; # SECRET</span></span>
<span class="line"><span style="color:#C3E88D;">TLS=&quot;&quot; # Enable TLS if yes &quot;--tls&quot;, leave empty if no</span></span>
<span class="line"><span style="color:#C3E88D;">NZ_BASE_PATH=&quot;/opt/nezha&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">NZ_AGENT_PATH=&quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_BASE_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/agent&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">pidfile=&quot;/run/</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RC_SVCNAME</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.pid&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command=&quot;/opt/nezha/agent/nezha-agent&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command_args=&quot;-s </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -p </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">TLS</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command_args=&quot;-s </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -p </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">TLS</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;">command_background=true</span></span>
<span class="line"><span style="color:#C3E88D;">depend() {</span></span>
<span class="line"><span style="color:#C3E88D;"> need net</span></span>
<span class="line"><span style="color:#C3E88D;"> need net</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#C3E88D;">checkconfig() {</span></span>
<span class="line"><span style="color:#C3E88D;"> GITHUB_URL=&quot;github.com&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -f &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">x86_64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;amd64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">i386\|i686</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;386&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">aarch64\|armv8b\|armv8l</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">arm</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s390x</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;s390x&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">riscv64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;riscv64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> local version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://api.github.com/repos/nezhahq/agent/releases/latest</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">tag_name</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">head</span><span style="color:#C3E88D;"> -n </span><span style="color:#F78C6C;">1</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">:</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/\&quot;//g;s/,//g;s/ //g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://fastly.jsdelivr.net/gh/nezhahq/agent/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/nezhahq\/agent@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://gcore.jsdelivr.net/gh/nezhahq/agent/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/nezhahq\/agent@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Failed to get the version number, please check if the network can connect to https://api.github.com/repos/nezhahq/agent/releases/latest&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> else</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;The current latest version is: </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> wget -t 2 -T 10 -O nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip https://</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezhahq/agent/releases/download/</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &gt;/dev/null 2&gt;&amp;1</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#A6ACCD;">$?</span><span style="color:#C3E88D;"> != 0 ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Release download failed, please check if the network can connect to </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}${</span><span style="color:#A6ACCD;">plain</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> mkdir -p </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod 755 -R </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> unzip -qo nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &amp;&amp; mv nezha-agent </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span><span style="color:#C3E88D;"> &amp;&amp; rm -rf nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip README.md</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -x &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod +x </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> GITHUB_URL=&quot;github.com&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -f &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">x86_64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;amd64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">i386\|i686</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;386&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">aarch64\|armv8b\|armv8l</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">arm</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;arm&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s390x</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;s390x&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> elif [[ </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">uname</span><span style="color:#C3E88D;"> -m </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">riscv64</span><span style="color:#89DDFF;">&#39;)</span><span style="color:#C3E88D;"> != &quot;&quot; ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> os_arch=&quot;riscv64&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> local version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://api.github.com/repos/nezhahq/agent/releases/latest</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">tag_name</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">head</span><span style="color:#C3E88D;"> -n </span><span style="color:#F78C6C;">1</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">:</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/\&quot;//g;s/,//g;s/ //g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://fastly.jsdelivr.net/gh/nezhahq/agent/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/nezhahq\/agent@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> version=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">curl</span><span style="color:#C3E88D;"> -m </span><span style="color:#F78C6C;">10</span><span style="color:#C3E88D;"> -sL </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://gcore.jsdelivr.net/gh/nezhahq/agent/</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">option\.value</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">awk</span><span style="color:#C3E88D;"> -F </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">&#39;</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{print $2}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#C3E88D;"> </span><span style="color:#FFCB6B;">sed</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">s/nezhahq\/agent@/v/g</span><span style="color:#89DDFF;">&#39;)</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -n &quot;</span><span style="color:#A6ACCD;">$version</span><span style="color:#C3E88D;">&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Failed to get the version number. Please check if the server can connect to https://api.github.com/repos/nezhahq/agent/releases/latest&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> else</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;The latest version is: </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> wget -t 2 -T 10 -O nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip https://</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezhahq/agent/releases/download/</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">version</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &gt;/dev/null 2&gt;&amp;1</span></span>
<span class="line"><span style="color:#C3E88D;"> if [[ </span><span style="color:#A6ACCD;">$?</span><span style="color:#C3E88D;"> != 0 ]]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> echo -e &quot;Failed to download Release. Please check if the server can connect to </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">GITHUB_URL</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot;</span></span>
<span class="line"><span style="color:#C3E88D;"> return 0</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> mkdir -p </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod 755 -R </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span></span>
<span class="line"><span style="color:#C3E88D;"> unzip -qo nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip &amp;&amp; mv nezha-agent </span><span style="color:#A6ACCD;">$NZ_AGENT_PATH</span><span style="color:#C3E88D;"> &amp;&amp; rm -rf nezha-agent_linux_</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">os_arch</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.zip README.md</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ ! -x &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> chmod +x </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">NZ_AGENT_PATH</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">/nezha-agent</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#C3E88D;">start_pre() {</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RC_CMD</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot; != &quot;restart&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> checkconfig || return </span><span style="color:#A6ACCD;">$?</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;"> if [ &quot;</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RC_CMD</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">&quot; != &quot;restart&quot; ]; then</span></span>
<span class="line"><span style="color:#C3E88D;"> checkconfig || return </span><span style="color:#A6ACCD;">$?</span></span>
<span class="line"><span style="color:#C3E88D;"> fi</span></span>
<span class="line"><span style="color:#C3E88D;">}</span></span>
<span class="line"><span style="color:#89DDFF;">EOF</span></span></code></pre></div><ul><li><p>Add execute permission</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/init.d/nezha-agent</span></span></code></pre></div></li><li><p>Run Nezha-Agent</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-service</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent-hy</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span></span></code></pre></div></li><li><p>Set self-start after boot</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-update</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div></li></ul><h3 id="installing-agent-on-windows" tabindex="-1">Installing Agent on Windows <a class="header-anchor" href="#installing-agent-on-windows" aria-label="Permalink to &quot;Installing Agent on Windows&quot;">​</a></h3><ul><li>Please refer to the community article:<br><a href="https://nyko.me/2020/12/13/nezha-windows-client.html" target="_blank" rel="noreferrer">哪吒探针 - Windows 客户端安装</a> (Chinese)<br><br></li></ul><h3 id="installing-agent-on-synology-dsm" tabindex="-1">Installing Agent on Synology DSM <a class="header-anchor" href="#installing-agent-on-synology-dsm" aria-label="Permalink to &quot;Installing Agent on Synology DSM&quot;">​</a></h3><ul><li><p>Please refer to the community article:<br><a href="https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/" target="_blank" rel="noreferrer">群晖 DSM 7.x 安装 哪吒监控 Agent</a> (Chinese)<br><a href="https://wl.gta5pdx.cn/archives/546/" target="_blank" rel="noreferrer">哪吒探针——群晖客户端(被控端)安装教程</a> (Chinese)</p></li><li><p>Using Systemd <em>Only available on DSM7</em>:</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># Path of the agent binary file.</span></span>
<span class="line"><span style="color:#89DDFF;">EOF</span></span></code></pre></div><ol start="2"><li>Add execute permissions</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/init.d/nezha-agent</span></span></code></pre></div><ol start="3"><li>Start Nezha-Agent</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-service</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span></span></code></pre></div><ol start="4"><li>Add to startup</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rc-update</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div></details><h3 id="manual-installation-of-the-agent-on-windows" tabindex="-1">Manual Installation of the Agent on Windows <a class="header-anchor" href="#manual-installation-of-the-agent-on-windows" aria-label="Permalink to &quot;Manual Installation of the Agent on Windows&quot;">​</a></h3><ul><li>Refer to the community article:<br><a href="https://nyko.me/2020/12/13/nezha-windows-client.html" target="_blank" rel="noreferrer">Nezha - Windows Client Installation</a> (Chinese)</li></ul><h3 id="installing-the-agent-on-synology-dsm" tabindex="-1">Installing the Agent on Synology DSM <a class="header-anchor" href="#installing-the-agent-on-synology-dsm" aria-label="Permalink to &quot;Installing the Agent on Synology DSM&quot;">​</a></h3><details><summary>Click to expand/collapse</summary><ul><li><p>Refer to community articles:<br><a href="https://blog.mitsea.com/3929551d08bd4bb0a8baa453e2d92b0c/" target="_blank" rel="noreferrer">Installing Nezha Monitoring Agent on Synology DSM 7.x</a> (Chinese)<br><a href="https://wl.gta5pdx.cn/archives/546/" target="_blank" rel="noreferrer">Nezha - Synology Client (Agent) Installation Tutorial</a> (Chinese)</p></li><li><p>Using Systemd <em>for DSM7 only</em>:</p></li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># Agent path</span></span>
<span class="line"><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">/PATH/TO/nezha-agent</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Path of the agent&#39;s log.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Log path</span></span>
<span class="line"><span style="color:#A6ACCD;">LOG</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;${</span><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;">.log</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Extend arguments, can be blank.</span></span>
<span class="line"><span style="color:#A6ACCD;">ARGS</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">--disable-command-execute</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># The address of nezha server&#39;s GRPC.</span></span>
<span class="line"><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">HOST_OR_IP:GRPC_PORT</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># The token of host.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Additional execution parameters, can be empty</span></span>
<span class="line"><span style="color:#A6ACCD;">ARGS</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Nezha server gRPC address</span></span>
<span class="line"><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">HOST_OR_IP:gRPC_PORT</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># The secret key obtained in the previous step</span></span>
<span class="line"><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">APP_SECRET</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Specify `run_as` user. * Strongly suggest NOT use `root`! *</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># User running the service, *strongly recommended to use non-root user*</span></span>
<span class="line"><span style="color:#A6ACCD;">RUN_USER</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">nezha</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Create the service file.</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Write to systemd service file</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;&lt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">EOF</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> /usr/lib/systemd/system/nezha.service</span></span>
<span class="line"><span style="color:#C3E88D;">[Unit]</span></span>
<span class="line"><span style="color:#C3E88D;">Description=Nezha Agent Service</span></span>
<span class="line"><span style="color:#C3E88D;">After=network.target</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;">[Service]</span></span>
<span class="line"><span style="color:#C3E88D;">Type=simple</span></span>
<span class="line"><span style="color:#C3E88D;">ExecStart=/bin/nohup </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">EXEC</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">ARGS</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -s </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SERVER</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> -p </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">SECRET</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> &amp;&gt;&gt; </span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">LOG</span><span style="color:#89DDFF;">}</span><span style="color:#C3E88D;"> &amp;</span></span>
<span class="line"><span style="color:#C3E88D;">ExecStop=ps -fe |grep nezha-agent|awk &#39;{print </span><span style="color:#A6ACCD;">\$</span><span style="color:#C3E88D;">2}&#39;|xargs kill</span></span>
<span class="line"><span style="color:#C3E88D;">User=</span><span style="color:#89DDFF;">${</span><span style="color:#A6ACCD;">RUN_USER</span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;">Restart=on-abort</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;">[Install]</span></span>
<span class="line"><span style="color:#C3E88D;">WantedBy=multi-user.target</span></span>
<span class="line"><span style="color:#89DDFF;">EOF</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Reload services</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Reload service</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">daemon-reload</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Start the agent service</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Start service</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Enable auto-start</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha</span></span></code></pre></div><p>‼️DO IT WHEN YOU HAVE MODIFIED THE ENVS‼️</p><p>Using <code>root</code> to execute command above, that&#39;s all.</p></li></ul><br><h3 id="installing-agent-on-macos" tabindex="-1">Installing Agent on MacOS <a class="header-anchor" href="#installing-agent-on-macos" aria-label="Permalink to &quot;Installing Agent on MacOS&quot;">​</a></h3><p><em><strong>This section is adapted from <a href="https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5" target="_blank" rel="noreferrer">Mitsea Blog</a>, with permission from the original author</strong></em><br><br></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you are prompted with &quot;macOS cannot verify this app&quot; during installation, please go to system settings to allow the app to run.</p></div><ul><li>First add a server in the admin panel</li><li>Go to the <a href="https://github.com/nezhahq/agent/releases" target="_blank" rel="noreferrer">Release</a> page to download the Agent binary and choose whether to download the darwin amd64 or arm64 Agent depending on the CPU architecture<br> For example, download the amd64 version for Intel CPU and the arm64 version for Apple Silicon. After downloading, extract the Agent binary file, e.g. to the Download folder</li><li>Create a new file named <code>nezha_agent.plist</code> and save it, edit the contents of the file:</li></ul><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;?</span><span style="color:#F07178;">xml</span><span style="color:#C792EA;"> version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;"> encoding</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">UTF-8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">?&gt;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Enable service startup</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha</span></span></code></pre></div><p>‼️ Modify the corresponding information before running the above commands with the <code>root</code> account to complete the installation.</p></details><h3 id="installing-the-agent-on-macos" tabindex="-1">Installing the Agent on macOS <a class="header-anchor" href="#installing-the-agent-on-macos" aria-label="Permalink to &quot;Installing the Agent on macOS&quot;">​</a></h3><details><summary>Click to expand/collapse</summary><p><em><strong>This section is adapted from <a href="https://blog.mitsea.com/e796f93db38d49e4b18df234c6ee75f5" target="_blank" rel="noreferrer">Mitsea Blog</a> with the author&#39;s permission</strong></em></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you are prompted &quot;macOS cannot verify this app&quot; during installation, manually allow the program to run in System Settings.</p></div><ol><li>First, add a server in the admin panel.</li><li>Go to the <a href="https://github.com/nezhahq/agent/releases" target="_blank" rel="noreferrer">Release</a> page to download the Agent binary file. Choose to download the darwin amd64 or arm64 Agent according to your CPU architecture. Download the amd64 version for Intel CPU, or the arm64 version for Apple Silicon. After downloading, unzip the Agent binary file, such as unzipping it to the Downloads folder.</li><li>Create a file named <code>nezha_agent.plist</code> and save it with the following content:</li></ol><div class="language-xml"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;?</span><span style="color:#F07178;">xml</span><span style="color:#C792EA;"> version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C792EA;"> encoding</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">UTF-8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">?&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;!</span><span style="color:#F78C6C;">DOCTYPE</span><span style="color:#89DDFF;"> </span><span style="color:#A6ACCD;">plist</span><span style="color:#89DDFF;"> PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">plist</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">version</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">1.0</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">dict</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">KeepAlive</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Label</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">nezha_agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Program</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Change the path of the Agent binary here, e.g. /Users/123/Downloads/nezha-agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">ProgramArguments</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Change the path of the Agent binary here, e.g. /Users/123/Downloads/nezha-agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--password</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Communication Secret, eg: 529664783eeb23cc25</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--server</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Communication URL and RPC port, eg:data.example.com:5555</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">RunAtLoad</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">KeepAlive</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Label</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">nezha_agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Program</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Modify the path to the Agent binary file here, such as: /Users/123/Downloads/nezha-agent</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">ProgramArguments</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">Modify the path to the Agent binary file here, same as above</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--password</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">The communication secret, such as: 529664783eeb23cc25</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">--server</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">The communication URL and gRPC port, such as: data.example.com:5555</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">string</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">array</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;">RunAtLoad</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">key</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">true</span><span style="color:#89DDFF;">/&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">dict</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">plist</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><ul><li>Use the following command in Terminal to load the plist file into launchd<br><strong>Be sure to change the file path</strong></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">load</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/Users/123/Desktop/nezha_agent.plist</span></span></code></pre></div><ul><li>Start Service</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ul><li>Check if the service is running</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">list</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ul><li>Stop service and remove</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">remove</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><br><p>Using Homebrew to install the Agent on macOS</p><p>The content of this section is adapted from <a href="https://blog.mre.red/archives/install_nezha_monitoring_agent_service_with_homebrew" target="_blank" rel="noreferrer">🐿️松鼠收集🌰</a>, with the permission of the original author.</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>Please ensure to set environment variables first, and then proceed with the installation of Nezha-agent using Homebrew!</p><p>Due to the creation of service configuration files (PLIST) by Homebrew during software installation, if you install first and then add environment variables, it will fail to start due to missing parameters!</p></div><ul><li>Adding environment variables</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">export HOMEBREW_NEZHA_AGENT_PASSWORD=&quot;your key, obtained from your service page&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">export HOMEBREW_NEZHA_AGENT_SERVER=&quot;your server and port, in the format your.domain:5555&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span>
<span class="line"><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span></code></pre></div><ul><li>Installing the Nezha Agent</li></ul><p>As the package has not yet been submitted to the official Homebrew Core repository, it is currently available in the <a href="https://github.com/Brewforge/homebrew-chinese" target="_blank" rel="noreferrer">third-party Homebrew repository</a> maintained by the author of the blog mentioned above.</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">brewforge/chinese/nezha-agent</span></span></code></pre></div><ul><li>Starting the Nezha Agent service through Homebrew</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ul><li>Checking the service status</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">info</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ul><li>Stopping the service</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ul><li>Uninstalling the Nezha Agent</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ul><li>Error handling first check environment variables</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $HOMEBREW_NEZHA_AGENT_PASSWORD</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $HOMEBREW_NEZHA_AGENT_SERVER</span></span></code></pre></div><ul><li>If the environment variable configuration is correct, attempt reinstallation</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">plist</span><span style="color:#89DDFF;">&gt;</span></span></code></pre></div><ol start="4"><li>Load the plist file into launchd using the following command in Terminal, <strong>make sure to replace the file path</strong>:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">load</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/Users/123/Desktop/nezha_agent.plist</span></span></code></pre></div><ol start="5"><li>Start the process:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ol start="6"><li>Check if the process is running:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">list</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><ol start="7"><li>Stop the process and remove it:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">launchctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">remove</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha_agent</span></span></code></pre></div></details><h3 id="installing-the-agent-on-macos-using-homebrew" tabindex="-1">Installing the Agent on macOS Using Homebrew <a class="header-anchor" href="#installing-the-agent-on-macos-using-homebrew" aria-label="Permalink to &quot;Installing the Agent on macOS Using Homebrew&quot;">​</a></h3><details><summary>Click to expand/collapse</summary><p><em><strong>This section is adapted from <a href="https://blog.mre.red/archives/install_nezha_monitoring_agent_service_with_homebrew" target="_blank" rel="noreferrer">🐿️松鼠收集🌰</a> with the author&#39;s permission</strong></em></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Please be sure to add environment variables before installing nezha-agent through Homebrew! Homebrew creates the service-required plist file during software installation, and if you add the environment variables after installation, it will fail to start due to missing parameters.</p></div><ol><li>Add environment variables:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">export HOMEBREW_NEZHA_AGENT_PASSWORD=&quot;Communication key, obtained from the service page&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">export HOMEBREW_NEZHA_AGENT_SERVER=&quot;Your server and port, format your.domain:5555 &quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span>
<span class="line"><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.zshrc</span></span></code></pre></div><ol start="2"><li>Install Nezha Agent:</li></ol><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>Note that this Homebrew repository is maintained by a third party and is unrelated to Nezha Monitoring. The Nezha project team does not endorse this repository&#39;s usability, security, etc. Please evaluate the risks yourself before using!</p></div><p>Since it has not yet been submitted to the Homebrew Core official library, it is temporarily placed in the <a href="https://github.com/Brewforge/homebrew-chinese" target="_blank" rel="noreferrer">third-party Homebrew repository</a> maintained by the author of the blog:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">brewforge/chinese/nezha-agent</span></span></code></pre></div><ol start="3"><li>Start Nezha Agent service through Homebrew:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ol start="4"><li>Check the service status:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">info</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ol start="5"><li>Stop the service:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ol start="6"><li>Uninstall Nezha Agent:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ol start="7"><li>If there is an error, first check the environment variables:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $HOMEBREW_NEZHA_AGENT_PASSWORD</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $HOMEBREW_NEZHA_AGENT_SERVER</span></span></code></pre></div><ol start="8"><li>If the environment variables are configured correctly, try reinstalling:</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">reinstall</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ul><li>If the issue persists, please proceed to the <a href="https://github.com/Brewforge/homebrew-chinese" target="_blank" rel="noreferrer">third-party Homebrew repository</a> and submit a ticket</li></ul><br><h3 id="installing-agent-on-openwrt" tabindex="-1">Installing Agent on OpenWRT <a class="header-anchor" href="#installing-agent-on-openwrt" aria-label="Permalink to &quot;Installing Agent on OpenWRT&quot;">​</a></h3><p><strong>How to solve various problems during the installation process in one step</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/dysf888/NZ-OpenWrt" target="_blank" rel="noreferrer">NZ-OpenWrt</a> (Chinese) <br></li></ul><p><strong>How to make the old version of OpenWRT/LEDE self-boot?</strong></p><ul><li>Please refer to the project:<br><a href="https://github.com/Erope/openwrt_nezha" target="_blank" rel="noreferrer">哪吒监控 For OpenWRT</a> (Chinese) <br></li></ul><p><strong>How to make the new version of OpenWRT self-boot? By @艾斯德斯</strong></p><ul><li>First download the corresponding binary from the release, unzip the zip package and place it in <code>/root</code></li><li>Then run <code>chmod +x /root/nezha-agent</code> to give it execute access, create file <code>/etc/init.d/nezha-service</code>:</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">#!/bin/sh /etc/rc.common</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">services</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span></code></pre></div><ol start="9"><li>If the issue persists, submit a issue to the <a href="https://github.com/Brewforge/homebrew-chinese" target="_blank" rel="noreferrer">third-party Homebrew repository</a>.</li></ol></details><h3 id="installing-the-agent-on-openwrt" tabindex="-1">Installing the Agent on OpenWRT <a class="header-anchor" href="#installing-the-agent-on-openwrt" aria-label="Permalink to &quot;Installing the Agent on OpenWRT&quot;">​</a></h3><details><summary>Click to expand/collapse</summary><p><strong>How to solve installation difficulties and issues in one step?</strong></p><ul><li>Refer to the project:<br><a href="https://github.com/dysf888/NZ-OpenWrt" target="_blank" rel="noreferrer">NZ-OpenWrt</a></li></ul><p><strong>How to enable autostart on older OpenWRT/LEDE?</strong></p><ul><li>Refer to the project:<br><a href="https://github.com/Erope/openwrt_nezha" target="_blank" rel="noreferrer">Nezha Monitoring for OpenWRT</a></li></ul><p><strong>How to enable autostart on newer OpenWRT? Contributor: @艾斯德斯</strong></p><ul><li>First, download the corresponding binary from the release, unzip the zip package, and place it in <code>/root</code>.</li><li>Run <code>chmod +x /root/nezha-agent</code> to grant execution permission, then create <code>/etc/init.d/nezha-service</code>:</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">#!/bin/sh /etc/rc.common</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">START</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">99</span></span>
<span class="line"><span style="color:#A6ACCD;">USE_PROCD</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">1</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">start_service</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_open_instance</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_set_param</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">command</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/nezha-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">data.example.com:5555</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">secreat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_set_param</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">command</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/nezha-agent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Dashboard</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">communication</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">domain:port</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Key</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_set_param</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">respawn</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">procd_close_instance</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">stop_service</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">killall</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">killall</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nezha-agent</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#82AAFF;">restart</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">stop</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sleep</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">start</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><ul><li>Give it permission to execute: <code>chmod +x /etc/init.d/nezha-service</code></li><li>Start the service <code>/etc/init.d/nezha-service enable &amp;&amp; /etc/init.d/nezha-service start</code><br><br></li></ul><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to &quot;FAQ&quot;">​</a></h2><h3 id="is-there-a-docker-image-for-agent" tabindex="-1">Is there a Docker image for Agent? <a class="header-anchor" href="#is-there-a-docker-image-for-agent" aria-label="Permalink to &quot;Is there a Docker image for Agent?&quot;">​</a></h3><p><strong>There is currently no Docker image for Agent.</strong><br> The Agent is designed to be the opposite of the Dashboard, in that the Dashboard is designed to work without affecting the server as much as possible, while the Agent needs to execute monitoring services and run commands in the server.<br> Putting the Agent in a container does continue to execute monitoring services, but features such as WebShell do not work, so we do not provide Docker image of the Agent.</p></div></div></main><footer class="VPDocFooter" data-v-c4b0d3cf data-v-face870a><!--[--><!--]--><div class="edit-info" data-v-face870a><div class="edit-link" data-v-face870a><a class="VPLink link edit-link-button" href="https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/en_US/guide/agent.md" target="_blank" rel="noreferrer" data-v-face870a data-v-8f4dc553><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-face870a><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Edit this page on GitHub<!--]--><!----></a></div><div class="last-updated" data-v-face870a><p class="VPLastUpdated" data-v-face870a data-v-7b3ebfe1>Last Updated: <time datetime="2024-05-14T15:46:29.000Z" data-v-7b3ebfe1></time></p></div></div><div class="prev-next" data-v-face870a><div class="pager" data-v-face870a><a class="pager-link prev" href="/en_US/guide/dashboard.html" data-v-face870a><span class="desc" data-v-face870a>Previous page</span><span class="title" data-v-face870a>Install Dashboard</span></a></div><div class="has-prev pager" data-v-face870a><a class="pager-link next" href="/en_US/guide/servers.html" data-v-face870a><span class="desc" data-v-face870a>Next page</span><span class="title" data-v-face870a>Servers</span></a></div></div></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b2cf3e0b data-v-f7fc41f4><div class="container" data-v-f7fc41f4><p class="message" data-v-f7fc41f4>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License</p><p class="copyright" data-v-f7fc41f4>Copyright © 2022-present NezhaHQ</p></div></footer><!--[--><!--]--></div></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"developer_index.md\":\"111a68f3\",\"en_us_guide_loginq.md\":\"cbcb363e\",\"en_us_case_case4.md\":\"9e4f3127\",\"en_us_guide_q8.md\":\"babff2f0\",\"case_case2.md\":\"1b519ed4\",\"developer_theme.md\":\"650aa830\",\"developer_l10n.md\":\"82b6ef01\",\"en_us_guide_q6.md\":\"88b5afe3\",\"en_us_guide_agent.md\":\"cc9897a3\",\"guide_q8.md\":\"3f79bbbf\",\"en_us_guide_q3.md\":\"2c8f5905\",\"guide_q6.md\":\"2387732f\",\"guide_q4.md\":\"385e3441\",\"en_us_guide_q2.md\":\"f03cfb16\",\"guide_q7.md\":\"5f75b305\",\"guide_q5.md\":\"f2042fe7\",\"guide_tasks.md\":\"8f7f039f\",\"en_us_case_case2.md\":\"04a1553e\",\"en_us_developer_theme.md\":\"02a748b8\",\"en_us_case_index.md\":\"e0cbd391\",\"en_us_guide_agentq.md\":\"d6149542\",\"en_us_developer_l10n.md\":\"9c7c5854\",\"guide_q2.md\":\"266cd01b\",\"case_case1.md\":\"5ca7d527\",\"case_case3.md\":\"7b739806\",\"en_us_guide_q5.md\":\"a97be7a8\",\"en_us_guide_q7.md\":\"43c5a1a6\",\"en_us_guide_q4.md\":\"b3bf1aae\",\"en_us_case_case1.md\":\"feb3e39a\",\"en_us_guide_tasks.md\":\"bb6ba1f3\",\"en_us_guide_notifications.md\":\"26ba83c4\",\"en_us_guide_dashboardq.md\":\"0c4d5040\",\"en_us_case_case5.md\":\"3d7ef894\",\"guide_agentq.md\":\"658b47c5\",\"en_us_developer_index.md\":\"11878279\",\"guide_loginq.md\":\"74c0b434\",\"case_case5.md\":\"e585c67c\",\"case_index.md\":\"87221e96\",\"guide_dashboardq.md\":\"23ea658c\",\"en_us_index.md\":\"b913a84e\",\"guide_agent.md\":\"543f423f\",\"guide_api.md\":\"ad4b295f\",\"en_us_case_case3.md\":\"1ac3d51f\",\"case_case4.md\":\"b184f4de\",\"en_us_guide_servers.md\":\"f9e06964\",\"guide_q3.md\":\"a7ac5ff7\",\"guide_services.md\":\"460da91d\",\"en_us_guide_dashboard.md\":\"b5a70b91\",\"guide_settings.md\":\"330c6934\",\"guide_notifications.md\":\"a70fdddd\",\"guide_q1.md\":\"d83a745a\",\"index.md\":\"c944995f\",\"en_us_guide_services.md\":\"2500cf90\",\"guide_servers.md\":\"e4f7abb2\",\"en_us_guide_settings.md\":\"8c07b41e\",\"guide_dashboard.md\":\"f6e4d1f8\",\"en_us_guide_api.md\":\"381d03f9\"}")
__VP_SITE_DATA__ = JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/nezhahq/nezhahq.github.io\"}],\"algolia\":{\"appId\":\"HP6QF6KMZD\",\"apiKey\":\"fb8bae9ed373d1057e0c07fcf32b3f1a\",\"indexName\":\"nezhahq\"},\"footer\":{\"message\":\"This work is licensed under a <a rel=\\\"license\\\" href=\\\"http://creativecommons.org/licenses/by-nc-sa/4.0/\\\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License\",\"copyright\":\"Copyright © 2022-present NezhaHQ\"}},\"locales\":{\"root\":{\"lang\":\"zh-CN\",\"label\":\"简体中文\",\"title\":\"哪吒监控\",\"description\":\"哪吒监控是一个轻量化的运维工具\",\"link\":\"/\",\"themeConfig\":{\"lastUpdatedText\":\"上次更新\",\"editLink\":{\"pattern\":\"https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/:path\",\"text\":\"在GitHub中编辑\"},\"nav\":[{\"text\":\"使用指南\",\"link\":\"/\",\"activeMatch\":\"^/$|^/guide/\"},{\"text\":\"社区项目\",\"link\":\"/case/index.html\",\"activeMatch\":\"^/case/\"},{\"text\":\"开发手册\",\"link\":\"/developer/index.html\",\"activeMatch\":\"^/developer/\"}],\"sidebar\":{\"/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"服务器\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"告警\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"反向代理 Telegram API\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 启动/上线 问题自检流程\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"面板数据迁移、备份和恢复\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目\",\"link\":\"/guide/q7.html\"},{\"text\":\"使用 Cloudflare Access 作为 OAuth2 提供方\",\"link\":\"/guide/q8\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/guide/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"服务器\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"告警\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"反向代理 Telegram API\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 启动/上线 问题自检流程\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"面板数据迁移、备份和恢复\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目\",\"link\":\"/guide/q7.html\"},{\"text\":\"使用 Cloudflare Access 作为 OAuth2 提供方\",\"link\":\"/guide/q8\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/case/\":[{\"text\":\"社区项目\",\"items\":[{\"text\":\"1. 搭建哪吒 Telegram 机器人\",\"link\":\"/case/case1.html\"},{\"text\":\"2. 使用 Siri 语音运行快捷指令查询服务器状态\",\"link\":\"/case/case2.html\"},{\"text\":\"3. 自建多用户多语言 Telegram 服务器状态查询机器人\",\"link\":\"/case/case3.html\"},{\"text\":\"4. Fake-agent,监控数据作弊器\",\"link\":\"/case/case4.html\"},{\"text\":\"5. 使用 Argo 隧道的哪吒服务端\",\"link\":\"/case/case5.html\"}]}],\"/developer/\":[{\"text\":\"开发手册\",\"items\":[{\"text\":\"创建新主题\",\"link\":\"/developer/theme.html\"},{\"text\":\"l10n\",\"link\":\"/developer/l10n.html\"}]}]}}},\"en_US\":{\"lang\":\"en-US\",\"label\":\"English\",\"title\":\"Nezha MoniLine truncated
<span class="line"><span style="color:#89DDFF;">}</span></span></code></pre></div><ul><li>Run <code>chmod +x /etc/init.d/nezha-service</code> to grant execution permission.</li><li>Start the service: <code>/etc/init.d/nezha-service enable &amp;&amp; /etc/init.d/nezha-service start</code></li></ul></details><h2 id="does-the-agent-have-a-docker-image" tabindex="-1">Does the Agent Have a Docker Image? <a class="header-anchor" href="#does-the-agent-have-a-docker-image" aria-label="Permalink to &quot;Does the Agent Have a Docker Image?&quot;">​</a></h2><p><strong>The Agent does not currently have a Docker image.</strong><br> The design philosophy of the Agent is opposite to that of the Dashboard. While the Dashboard should minimally impact the server, the Agent needs to execute monitoring services and run commands within the server.<br> Running the Agent inside a container can still perform monitoring tasks, but features like WebShell will not function properly, so no Docker image is provided.</p></div></div></main><footer class="VPDocFooter" data-v-c4b0d3cf data-v-face870a><!--[--><!--]--><div class="edit-info" data-v-face870a><div class="edit-link" data-v-face870a><a class="VPLink link edit-link-button" href="https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/en_US/guide/agent.md" target="_blank" rel="noreferrer" data-v-face870a data-v-8f4dc553><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-face870a><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Edit this page on GitHub<!--]--><!----></a></div><div class="last-updated" data-v-face870a><p class="VPLastUpdated" data-v-face870a data-v-7b3ebfe1>Last Updated: <time datetime="2024-05-15T02:32:59.000Z" data-v-7b3ebfe1></time></p></div></div><div class="prev-next" data-v-face870a><div class="pager" data-v-face870a><a class="pager-link prev" href="/en_US/guide/dashboard.html" data-v-face870a><span class="desc" data-v-face870a>Previous page</span><span class="title" data-v-face870a>Install Dashboard</span></a></div><div class="has-prev pager" data-v-face870a><a class="pager-link next" href="/en_US/guide/servers.html" data-v-face870a><span class="desc" data-v-face870a>Next page</span><span class="title" data-v-face870a>Servers</span></a></div></div></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b2cf3e0b data-v-f7fc41f4><div class="container" data-v-f7fc41f4><p class="message" data-v-f7fc41f4>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License</p><p class="copyright" data-v-f7fc41f4>Copyright © 2022-present NezhaHQ</p></div></footer><!--[--><!--]--></div></div>
<script>__VP_HASH_MAP__ = JSON.parse("{\"en_us_guide_agentq.md\":\"5dff1cae\",\"developer_index.md\":\"8dd0d4ce\",\"en_us_guide_api.md\":\"f398ffac\",\"case_case3.md\":\"700617c7\",\"case_case4.md\":\"8c8c6510\",\"en_us_case_case3.md\":\"1d0b03ce\",\"en_us_case_case2.md\":\"ba36c1ea\",\"case_case2.md\":\"a48ed6af\",\"en_us_case_case4.md\":\"7fa644c7\",\"en_us_case_index.md\":\"06fe85e6\",\"en_us_developer_index.md\":\"89dead46\",\"en_us_developer_l10n.md\":\"9dc8061a\",\"en_us_developer_theme.md\":\"bb8f2da4\",\"developer_l10n.md\":\"93690476\",\"en_us_case_case5.md\":\"cdd04896\",\"en_us_guide_tasks.md\":\"41e3d75c\",\"developer_theme.md\":\"fd933b01\",\"en_us_index.md\":\"fb1080e2\",\"en_us_guide_dashboard.md\":\"e44a1fe6\",\"case_index.md\":\"2849e83b\",\"en_us_case_case1.md\":\"37bc70c7\",\"en_us_guide_agent.md\":\"9cc4c6a2\",\"case_case5.md\":\"258885f4\",\"case_case1.md\":\"63108b24\",\"en_us_guide_dashboardq.md\":\"190c26f2\",\"en_us_guide_notifications.md\":\"5677b74f\",\"en_us_guide_q2.md\":\"24e1c4ce\",\"en_us_guide_q7.md\":\"913c9a89\",\"en_us_guide_q3.md\":\"b54f6d21\",\"en_us_guide_q6.md\":\"f72b6edb\",\"en_us_guide_loginq.md\":\"34231f03\",\"en_us_guide_servers.md\":\"b1f6b9bf\",\"en_us_guide_q5.md\":\"2cda75bb\",\"en_us_guide_services.md\":\"16e17c91\",\"en_us_guide_q4.md\":\"ed096799\",\"en_us_guide_q8.md\":\"24401c9b\",\"en_us_guide_settings.md\":\"dd24cd79\",\"guide_agentq.md\":\"61a707dd\",\"guide_dashboard.md\":\"2d9ea238\",\"guide_q2.md\":\"f30c66aa\",\"guide_loginq.md\":\"b1aa0e4e\",\"guide_q6.md\":\"34659a64\",\"guide_q3.md\":\"57836670\",\"guide_dashboardq.md\":\"b935b35b\",\"guide_q1.md\":\"995ec01c\",\"guide_q8.md\":\"f59daf2c\",\"guide_q4.md\":\"9fa3763a\",\"guide_api.md\":\"fdbf645f\",\"guide_notifications.md\":\"ad9fa2da\",\"guide_tasks.md\":\"9c9a1acc\",\"guide_services.md\":\"92dd7c60\",\"guide_q5.md\":\"30f2ce23\",\"guide_agent.md\":\"cd146bdd\",\"guide_q7.md\":\"c3187b64\",\"guide_settings.md\":\"1e3d125c\",\"index.md\":\"84ae6b37\",\"guide_servers.md\":\"ce53cd79\"}")
__VP_SITE_DATA__ = JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/nezhahq/nezhahq.github.io\"}],\"algolia\":{\"appId\":\"HP6QF6KMZD\",\"apiKey\":\"fb8bae9ed373d1057e0c07fcf32b3f1a\",\"indexName\":\"nezhahq\"},\"footer\":{\"message\":\"This work is licensed under a <a rel=\\\"license\\\" href=\\\"http://creativecommons.org/licenses/by-nc-sa/4.0/\\\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License\",\"copyright\":\"Copyright © 2022-present NezhaHQ\"}},\"locales\":{\"root\":{\"lang\":\"zh-CN\",\"label\":\"简体中文\",\"title\":\"哪吒监控\",\"description\":\"哪吒监控是一个轻量化的运维工具\",\"link\":\"/\",\"themeConfig\":{\"lastUpdatedText\":\"上次更新\",\"editLink\":{\"pattern\":\"https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/:path\",\"text\":\"在GitHub中编辑\"},\"nav\":[{\"text\":\"使用指南\",\"link\":\"/\",\"activeMatch\":\"^/$|^/guide/\"},{\"text\":\"社区项目\",\"link\":\"/case/index.html\",\"activeMatch\":\"^/case/\"},{\"text\":\"开发手册\",\"link\":\"/developer/index.html\",\"activeMatch\":\"^/developer/\"}],\"sidebar\":{\"/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"服务器\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"告警\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"反向代理 Telegram API\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 启动/上线 问题自检流程\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"面板数据迁移、备份和恢复\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目\",\"link\":\"/guide/q7.html\"},{\"text\":\"使用 Cloudflare Access 作为 OAuth2 提供方\",\"link\":\"/guide/q8\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/guide/\":[{\"text\":\"安装手册\",\"items\":[{\"text\":\"安装 Dashboard\",\"link\":\"/guide/dashboard.html\"},{\"text\":\"安装 Agent\",\"link\":\"/guide/agent.html\"}]},{\"text\":\"管理面板配置\",\"items\":[{\"text\":\"服务器\",\"link\":\"/guide/servers.html\"},{\"text\":\"服务\",\"link\":\"/guide/services.html\"},{\"text\":\"任务\",\"link\":\"/guide/tasks.html\"},{\"text\":\"告警\",\"link\":\"/guide/notifications.html\"},{\"text\":\"设置\",\"link\":\"/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/guide/api.html\"}]},{\"text\":\"常见问题\",\"items\":[{\"text\":\"反向代理 Telegram API\",\"link\":\"/guide/q1.html\"},{\"text\":\"Agent 启动/上线 问题自检流程\",\"link\":\"/guide/q2.html\"},{\"text\":\"反向代理 gRPC 端口\",\"link\":\"/guide/q3.html\"},{\"text\":\"实时通道断开/在线终端连接失败\",\"link\":\"/guide/q4.html\"},{\"text\":\"面板数据迁移、备份和恢复\",\"link\":\"/guide/q5.html\"},{\"text\":\"设置每月重置流量统计\",\"link\":\"/guide/q6.html\"},{\"text\":\"自定义 Agent 监控项目\",\"link\":\"/guide/q7.html\"},{\"text\":\"使用 Cloudflare Access 作为 OAuth2 提供方\",\"link\":\"/guide/q8\"}]},{\"text\":\"排障指南\",\"items\":[{\"text\":\"Dashboard 相关\",\"link\":\"/guide/dashboardq.html\"},{\"text\":\"Agent 相关\",\"link\":\"/guide/agentq.html\"},{\"text\":\"登录相关\",\"link\":\"/guide/loginq.html\"}]}],\"/case/\":[{\"text\":\"社区项目\",\"items\":[{\"text\":\"1. 搭建哪吒 Telegram 机器人\",\"link\":\"/case/case1.html\"},{\"text\":\"2. 使用 Siri 语音运行快捷指令查询服务器状态\",\"link\":\"/case/case2.html\"},{\"text\":\"3. 自建多用户多语言 Telegram 服务器状态查询机器人\",\"link\":\"/case/case3.html\"},{\"text\":\"4. Fake-agent,监控数据作弊器\",\"link\":\"/case/case4.html\"},{\"text\":\"5. 使用 Argo 隧道的哪吒服务端\",\"link\":\"/case/case5.html\"}]}],\"/developer/\":[{\"text\":\"开发手册\",\"items\":[{\"text\":\"创建新主题\",\"link\":\"/developer/theme.html\"},{\"text\":\"l10n\",\"link\":\"/developer/l10n.html\"}]}]}}},\"en_US\":{\"lang\":\"en-US\",\"label\":\"English\",\"title\":\"Nezha MoniLine truncated
</body>
</html>