nezhahq.github.io/case/case5.html

74 lines
58 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>使用 Argo 隧道的哪吒服务端 | 哪吒监控</title>
<meta name="description" content="哪吒监控是一个轻量化的运维工具">
<link rel="preload stylesheet" href="/assets/style.ac216bba.css" as="style">
<script type="module" src="/assets/app.52883806.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.1625126e.js">
<link rel="modulepreload" href="/assets/chunks/theme.776be62d.js">
<link rel="modulepreload" href="/assets/case_case5.md.fa575d37.lean.js">
<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="/" data-v-4d981103><!--[--><!--]--><!----><!--[-->哪吒监控<!--]--><!--[--><!--]--></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" href="/" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->使用指南<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/case/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->社区项目<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/developer/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618 data-v-8f4dc553><!--[-->开发手册<!--]--><!----></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>简体中文</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-2f2cfafc><a class="VPLink link" href="/en_US/case/case5.html" data-v-2f2cfafc data-v-8f4dc553><!--[-->English<!--]--><!----></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.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-7683ced7 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink" href="https://github.com/nezhahq/nezhahq.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-36371990><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-7683ced7 data-v-40855f84 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-764effdf><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="group translations" data-v-40855f84><p class="trans-title" data-v-40855f84>简体中文</p><!--[--><div class="VPMenuLink" data-v-40855f84 data-v-2f2cfafc><a class="VPLink link" href="/en_US/case/case5.html" data-v-2f2cfafc data-v-8f4dc553><!--[-->English<!--]--><!----></a></div><!--]--></div><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-40855f84 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.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-7bc22406><!--[--><a class="VPSocialLink" href="https://github.com/nezhahq/nezhahq.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-36371990><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-7683ced7 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav" data-v-b2cf3e0b data-v-9074c407><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9074c407><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9074c407><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9074c407>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9074c407 data-v-687955bc><button data-v-687955bc>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-b2cf3e0b data-v-af16598e><div class="curtain" data-v-af16598e></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-af16598e><span class="visually-hidden" id="sidebar-aria-label" data-v-af16598e> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-af16598e><section class="VPSidebarItem level-0 has-active" data-v-af16598e data-v-c4656e6d><div class="item" role="button" tabindex="0" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><h2 class="text" data-v-c4656e6d>社区项目</h2><!----></div><div class="items" data-v-c4656e6d><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/case/case1.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>1. 搭建哪吒 Telegram 机器人</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/case/case2.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>2. 使用Siri语音运行快捷指令查询服务器状态</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/case/case3.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>3. 自建多用户多语言 Telegram 服务器状态查询机器人</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/case/case4.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>4. Fake-agent监控数据作弊器</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link is-active has-active" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/case/case5.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>5. 使用 Argo 隧道的哪吒服务端</p><!--]--><!----></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b2cf3e0b data-v-a494bd1d><div class="VPDoc has-sidebar has-aside" data-v-a494bd1d data-v-c4b0d3cf><!--[--><!--]--><div class="container" data-v-c4b0d3cf><div class="aside" data-v-c4b0d3cf><div class="aside-curtain" data-v-c4b0d3cf></div><div class="aside-container" data-v-c4b0d3cf><div class="aside-content" data-v-c4b0d3cf><div class="VPDocAside" data-v-c4b0d3cf data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-9a431c33><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c4b0d3cf><div class="content-container" data-v-c4b0d3cf><!--[--><!--]--><!----><main class="main" data-v-c4b0d3cf><div style="position:relative;" class="vp-doc _case_case5" data-v-c4b0d3cf><div><h1 id="使用-argo-隧道的哪吒服务端" tabindex="-1">使用 Argo 隧道的哪吒服务端 <a class="header-anchor" href="#使用-argo-隧道的哪吒服务端" aria-label="Permalink to &quot;使用 Argo 隧道的哪吒服务端&quot;"></a></h1><p>贡献者:</p><ul><li><a href="https://github.com/fscarmen2" target="_blank" rel="noreferrer">fscarmen</a></li></ul><p>项目地址:<a href="https://github.com/fscarmen2/Argo-Nezha-Service-Container" target="_blank" rel="noreferrer">Argo-Nezha-Service-Container</a></p><p>镜像备份(非实时更新):<a href="https://github.com/nezhahq/Argo-Nezha-Service-Container" target="_blank" rel="noreferrer">Argo-Nezha-Service-Container</a></p><hr><h1 id="目录" tabindex="-1">目录 <a class="header-anchor" href="#目录" aria-label="Permalink to &quot;目录&quot;"></a></h1><ul><li><a href="./case5.html#项目特点">项目特点</a></li><li><a href="./case5.html#argo-认证的获取方式-json-或-token">Argo 认证的获取方式: json 或 token</a></li><li><a href="./case5.html#准备需要用的变量">准备需要用的变量</a></li><li><a href="./case5.html#PaaS-部署实例">PaaS 部署实例</a></li><li><a href="./case5.html#VPS-部署实例">VPS 部署实例</a></li><li><a href="./case5.html#客户端接入">客户端接入</a></li><li><a href="./case5.html#ssh-接入">SSH 接入</a></li><li><a href="./case5.html#自动还原备份">自动还原备份</a></li><li><a href="./case5.html#手动还原备份">手动还原备份</a></li><li><a href="./case5.html#完美搬家">完美搬家</a></li><li><a href="./case5.html#主体目录文件及说明">主体目录文件及说明</a></li><li><a href="./case5.html#鸣谢下列作者的文章和项目">鸣谢下列作者的文章和项目</a></li><li><a href="./case5.html#免责声明">免责声明</a></li></ul><hr><h2 id="项目特点" tabindex="-1">项目特点: <a class="header-anchor" href="#项目特点" aria-label="Permalink to &quot;项目特点:&quot;"></a></h2><ul><li>适用范围更广 --- 只要能连通网络,就能安装哪吒服务端,如 Nas 虚拟机 , Container PaaS 等</li><li>Argo 隧道突破需要公网入口的限制 --- 传统的哪吒需要有两个公网端口,一个用于面板的访问,另一个用于客户端上报数据,本项目借用 Cloudflare Argo 隧道,使用内网穿透的办法</li><li>IPv4 / v6 具备更高的灵活性 --- 传统哪吒需要处理服务端和客户端的 IPv4/v6 兼容性问题,还需要通过 warp 等工具来解决不对应的情况。然而,本项目可以完全不需要考虑这些问题,可以任意对接,更加方便和简便</li><li>一条 Argo 隧道分流多个域名和协议 --- 建立一条内网穿透的 Argo 隧道,即可分流三个域名(hostname)和协议(protocal),分别用于面板的访问(http),客户端上报数据(tcp)和 ssh可选</li><li>GrpcWebProxy 反向代理的 gRPC 数据端口 --- 配上证书做 tls 终结,然后 Argo 的隧道配置用 https 服务指向这个反向代理启用http2回源grpc(nezha)-&gt;GrpcWebProxy-&gt;h2(argo)-&gt;cf cdn edge-&gt;agent</li><li>每天自动备份 --- 北京时间每天 4 时 0 分自动备份整个哪吒面板文件夹到指定的 github 私库,包括面板主题,面板设置,探针数据和隧道信息,备份保留近 5 天数据;鉴于内容十分重要,必须要放在私库</li><li>每天自动更新面板 -- 北京时间每天 4 时 0 分自动检测最新的官方面板版本,有升级时自动更新</li><li>手/自一体还原备份 --- 每分钟检测一次在线还原文件的内容,遇到有更新立刻还原</li><li>默认内置本机探针 --- 能很方便的监控自身服务器信息</li><li>数据更安全 --- Argo 隧道使用TLS加密通信可以将应用程序流量安全地传输到 Cloudflare 网络提高了应用程序的安全性和可靠性。此外Argo Tunnel也可以防止IP泄露和DDoS攻击等网络威胁</li></ul><img width="1298" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/a1192434-fb60-4944-b6d0-de4235323e3d"><h2 id="argo-认证的获取方式-json-或-token" tabindex="-1">Argo 认证的获取方式: json 或 token <a class="header-anchor" href="#argo-认证的获取方式-json-或-token" aria-label="Permalink to &quot;Argo 认证的获取方式: json 或 token&quot;"></a></h2><p>Argo 隧道认证方式有 json 和 token使用两个方式其中之一</p><h3 id="方式-1-josn" tabindex="-1">(方式 1 - Josn): <a class="header-anchor" href="#方式-1-josn" aria-label="Permalink to &quot;(方式 1 - Josn):&quot;"></a></h3><h4 id="通过-cloudflare-json-生成网轻松获取-argo-隧道-json-信息-https-fscarmen-cloudflare-now-cc" tabindex="-1">通过 Cloudflare Json 生成网轻松获取 Argo 隧道 json 信息: <a href="https://fscarmen.cloudflare.now.cc" target="_blank" rel="noreferrer">https://fscarmen.cloudflare.now.cc</a> <a class="header-anchor" href="#通过-cloudflare-json-生成网轻松获取-argo-隧道-json-信息-https-fscarmen-cloudflare-now-cc" aria-label="Permalink to &quot;通过 Cloudflare Json 生成网轻松获取 Argo 隧道 json 信息: https://fscarmen.cloudflare.now.cc&quot;"></a></h4><img width="893" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/5b734a9d-b4fd-40ca-b7e6-5a1732a53175"><h4 id="到-cloudflare-官网-在相应的域名-dns-记录里加上客户端上报数据-tcp-和-ssh-可选-的域名-打开橙色云启用-cdn" tabindex="-1">到 Cloudflare 官网,在相应的域名 <code>DNS</code> 记录里加上客户端上报数据(tcp)和 ssh可选的域名打开橙色云启用 CDN <a class="header-anchor" href="#到-cloudflare-官网-在相应的域名-dns-记录里加上客户端上报数据-tcp-和-ssh-可选-的域名-打开橙色云启用-cdn" aria-label="Permalink to &quot;到 Cloudflare 官网,在相应的域名 `DNS` 记录里加上客户端上报数据(tcp)和 ssh可选的域名打开橙色云启用 CDN&quot;"></a></h4><img width="1651" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/d5efb33d-b2a3-484c-b058-346c3e229088"><img width="1618" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/c44b638f-9984-47a7-a342-166549f6092e"><h3 id="方式-2-token-通过-cloudflare-官网-手动生成-argo-隧道-token-信息" tabindex="-1">(方式 2 - Token): 通过 Cloudflare 官网,手动生成 Argo 隧道 token 信息 <a class="header-anchor" href="#方式-2-token-通过-cloudflare-官网-手动生成-argo-隧道-token-信息" aria-label="Permalink to &quot;(方式 2 - Token): 通过 Cloudflare 官网,手动生成 Argo 隧道 token 信息&quot;"></a></h3><h4 id="到-cf-官网-https-dash-cloudflare-com-进入-zero-trust-里生成-token-隧道和信息。" tabindex="-1">到 cf 官网:<a href="https://dash.cloudflare.com/" target="_blank" rel="noreferrer">https://dash.cloudflare.com/</a> ,进入 zero trust 里生成 token 隧道和信息。 <a class="header-anchor" href="#到-cf-官网-https-dash-cloudflare-com-进入-zero-trust-里生成-token-隧道和信息。" aria-label="Permalink to &quot;到 cf 官网https://dash.cloudflare.com/ ,进入 zero trust 里生成 token 隧道和信息。&quot;"></a></h4><img width="1672" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/0c467d8b-5fbc-4bde-ac8a-db70ed8798f0"><img width="1659" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/5aa4df19-f277-4582-8a4d-eef34a00085c"><img width="1470" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/ec06ec20-a68d-405c-b6de-cd4c52cbd8c0"><img width="1652" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/d0fba15c-f41b-4ee4-bea3-f0506d9b2d23"><img width="1394" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/ab526fae-7a71-4a7c-9aee-a3bfe4774958"><img width="1671" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/c6bcc511-e2f9-4616-bcca-47e1a8a25313"><img width="1670" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/7fbe3ef7-fb43-4925-9478-89ee08e44941"><h2 id="准备需要用的变量" tabindex="-1">准备需要用的变量 <a class="header-anchor" href="#准备需要用的变量" aria-label="Permalink to &quot;准备需要用的变量&quot;"></a></h2><ul><li>到 Cloudflare 官网,选择使用的域名,打开 <code>网络</code> 选项将 <code>gRPC</code> 开关打开</li></ul><img width="1590" alt="image" src="https://user-images.githubusercontent.com/92626977/233138703-faab8596-a64a-40bb-afe6-52711489fbcf.png"><ul><li>获取 github 认证授权: <a href="https://github.com/settings/applications/new" target="_blank" rel="noreferrer">https://github.com/settings/applications/new</a></li></ul><p>面板域名加上 <code>https://</code> 开头,回调地址再加上 <code>/oauth2/callback</code> 结尾</p><img width="916" alt="image" src="https://user-images.githubusercontent.com/92626977/231099071-b6676f2f-6c7b-4e2f-8411-c134143cab24.png"><img width="1122" alt="image" src="https://user-images.githubusercontent.com/92626977/231086319-1b625dc6-713b-4a62-80b1-cc5b2b7ef3ca.png"><ul><li>获取 github 的 PAT (Personal Access Token): <a href="https://github.com/settings/tokens/new" target="_blank" rel="noreferrer">https://github.com/settings/tokens/new</a></li></ul><img width="1226" alt="image" src="https://user-images.githubusercontent.com/92626977/233346036-60819f98-c89a-4cef-b134-0d47c5cc333d.png"><img width="1148" alt="image" src="https://user-images.githubusercontent.com/92626977/233346508-273c422e-05c3-4c91-9fae-438202364787.png"><ul><li>创建 github 用于备份的私库: <a href="https://github.com/new" target="_blank" rel="noreferrer">https://github.com/new</a></li></ul><img width="814" alt="image" src="https://user-images.githubusercontent.com/92626977/233345537-c5b9dc27-35c4-407b-8809-b0ef68d9ad55.png"><h2 id="paas-部署实例" tabindex="-1">PaaS 部署实例 <a class="header-anchor" href="#paas-部署实例" aria-label="Permalink to &quot;PaaS 部署实例&quot;"></a></h2><p>镜像 <code>fscarmen/argo-nezha:latest</code> 支持 amd64 和 arm64 架构</p><p>用到的变量</p><table><thead><tr><th>变量名</th><th>是否必须</th><th>备注</th></tr></thead><tbody><tr><td>GH_USER</td><td></td><td>github 的用户名,用于面板管理授权</td></tr><tr><td>GH_CLIENTID</td><td></td><td>在 github 上申请</td></tr><tr><td>GH_CLIENTSECRET</td><td></td><td>在 github 上申请</td></tr><tr><td>GH_BACKUP_USER</td><td></td><td>在 github 上备份哪吒服务端数据库的 github 用户名,不填则与面板管理授权的账户 GH_USER 一致</td></tr><tr><td>GH_REPO</td><td></td><td>在 github 上备份哪吒服务端数据库文件的 github 库</td></tr><tr><td>GH_EMAIL</td><td></td><td>github 的邮箱,用于备份的 git 推送到远程库</td></tr><tr><td>GH_PAT</td><td></td><td>github 的 PAT</td></tr><tr><td>ARGO_AUTH</td><td></td><td>Json: 从 <a href="https://fscarmen.cloudflare.now.cc" target="_blank" rel="noreferrer">https://fscarmen.cloudflare.now.cc</a> 获取的 Argo Json<br> Token: 从 Cloudflare 官网获取</td></tr><tr><td>DATA_DOMAIN</td><td></td><td>客户端与服务端的通信 argo 域名</td></tr><tr><td>WEB_DOMAIN</td><td></td><td>面板 argo 域名</td></tr><tr><td>SSH_DOMAIN</td><td></td><td>ssh 用的 argo 域名</td></tr><tr><td>SSH_PASSWORD</td><td></td><td>ssh 的密码,只有在设置 SSH_JSON 后才生效,默认值 password</td></tr></tbody></table><p>Koyeb</p><p><a href="https://app.koyeb.com/deploy?type=docker&amp;name=nezha&amp;ports=80;http;/&amp;env%5BGH_USER%5D=&amp;env%5BGH_CLIENTID%5D=&amp;env%5BGH_CLIENTSECRET%5D=&amp;env%5BGH_REPO%5D=&amp;env%5BGH_EMAIL%5D=&amp;env%5BGH_PAT%5D=&amp;env%5BARGO_AUTH%5D=&amp;env%5BDATA_DOMAIN%5D=&amp;env%5BWEB_DOMAIN%5D=&amp;env%5BSSH_DOMAIN%5D=&amp;env%5BSSH_PASSWORD%5D=&amp;image=docker.io/fscarmen/argo-nezha" target="_blank" rel="noreferrer"><img src="https://www.koyeb.com/static/images/deploy/button.svg" alt="Deploy to Koyeb"></a></p><img width="927" alt="image" src="https://user-images.githubusercontent.com/92626977/231088411-fbac3e6e-a8a6-4661-bcf8-7c777aa8ffeb.png"><img width="750" alt="image" src="https://user-images.githubusercontent.com/92626977/231088973-7134aefd-4c80-4559-8e40-17c3be11d27d.png"><img width="755" alt="image" src="https://github.com/fscarmen2/Argo-Nezha-Service-Container/assets/92626977/27a26b1b-6934-41a8-aca4-8a094c905850"><img width="1187" alt="image" src="https://user-images.githubusercontent.com/92626977/231092893-c8f017a2-ee0e-4e28-bee3-7343158f0fa7.png"><img width="500" alt="image" src="https://user-images.githubusercontent.com/92626977/231094144-df6715bc-c611-47ce-a529-03c43f38102e.png"><h2 id="vps-部署实例" tabindex="-1">VPS 部署实例 <a class="header-anchor" href="#vps-部署实例" aria-label="Permalink to &quot;VPS 部署实例&quot;"></a></h2><ul><li>注意: ARGO_JSON= 后面需要有单引号,不能去掉</li><li>如果 VPS 是 IPv6 only 的,请先安装 WARP IPv4 或者双栈: <a href="https://github.com/fscarmen/warp" target="_blank" rel="noreferrer">https://github.com/fscarmen/warp</a></li><li>备份目录为当前路径的 dashboard 文件夹</li></ul><h3 id="docker-部署" tabindex="-1">docker 部署 <a class="header-anchor" href="#docker-部署" aria-label="Permalink to &quot;docker 部署&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker run -dit \</span></span>
<span class="line"><span style="color:#A6ACCD;"> --name nezha_dashboard \</span></span>
<span class="line"><span style="color:#A6ACCD;"> --restart always \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_USER=&lt;填 github 用户名&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_EMAIL=&lt;填 github 邮箱&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_PAT=&lt;填获取的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_REPO=&lt;填自定义的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_CLIENTID=&lt;填获取的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e GH_CLIENTSECRET=&lt;填获取的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e ARGO_AUTH=&#39;&lt;填获取的 Argo json 或者 token&gt;&#39; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e WEB_DOMAIN=&lt;填自定义的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e DATA_DOMAIN=&lt;填自定义的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e SSH_DOMAIN=&lt;填自定义的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> -e SSH_PASSWORD=&lt;填自定义的&gt; \</span></span>
<span class="line"><span style="color:#A6ACCD;"> fscarmen/argo-nezha</span></span></code></pre></div><h3 id="docker-compose-部署" tabindex="-1">docker-compose 部署 <a class="header-anchor" href="#docker-compose-部署" aria-label="Permalink to &quot;docker-compose 部署&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">version: &#39;3.8&#39;</span></span>
<span class="line"><span style="color:#A6ACCD;">services:</span></span>
<span class="line"><span style="color:#A6ACCD;"> argo-nezha:</span></span>
<span class="line"><span style="color:#A6ACCD;"> image: fscarmen/argo-nezha</span></span>
<span class="line"><span style="color:#A6ACCD;"> container_name: nezha_dashboard</span></span>
<span class="line"><span style="color:#A6ACCD;"> restart: always</span></span>
<span class="line"><span style="color:#A6ACCD;"> environment:</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_USER=&lt;填 github 用户名&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_EMAIL=&lt;&lt;填 github 邮箱&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_PAT=&lt;填获取的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_REPO=&lt;填自定义的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_CLIENTID=&lt;填获取的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - GH_CLIENTSECRET=&lt;填获取的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - ARGO_AUTH=&#39;&lt;填获取的 Argo json 或者 token&gt;&#39;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - WEB_DOMAIN=&lt;填自定义的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - DATA_DOMAIN=&lt;填自定义的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - SSH_DOMAIN=&lt;填自定义的&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"> - SSH_PASSWORD=&lt;填自定义的&gt;</span></span></code></pre></div><h2 id="客户端接入" tabindex="-1">客户端接入 <a class="header-anchor" href="#客户端接入" aria-label="Permalink to &quot;客户端接入&quot;"></a></h2><p>通过gRPC传输无需额外配置。使用面板给到的安装方式举例</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh &amp;&amp; chmod +x nezha.sh &amp;&amp; sudo ./nezha.sh install_agent data.seales.nom.za 443 eAxO9IF519fKFODlW0 --tls</span></span></code></pre></div><h2 id="ssh-接入" tabindex="-1">SSH 接入 <a class="header-anchor" href="#ssh-接入" aria-label="Permalink to &quot;SSH 接入&quot;"></a></h2><ul><li>以 macOS + WindTerm 为例,其他根据使用的 SSH 工具,结合官方官方说明文档: <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/use_cases/ssh/#2-connect-as-a-user" target="_blank" rel="noreferrer">https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/use_cases/ssh/#2-connect-as-a-user</a></li><li>官方 cloudflared 下载: <a href="https://github.com/cloudflare/cloudflared/releases" target="_blank" rel="noreferrer">https://github.com/cloudflare/cloudflared/releases</a></li><li>以下输入命令举例</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">&lt;file path&gt;/cloudflared access ssh --hostname ssh.seales.nom.za</span></span></code></pre></div><img width="834" alt="image" src="https://user-images.githubusercontent.com/92626977/233349393-cec79e11-346e-4a57-8357-8d153d75ee40.png"><img width="830" alt="image" src="https://user-images.githubusercontent.com/92626977/233350601-73de67f9-19ca-451f-b395-8721abbb3342.png"><img width="955" alt="image" src="https://user-images.githubusercontent.com/92626977/233350802-754624e0-8456-4353-8577-1f5385fb8723.png"><h2 id="自动还原备份" tabindex="-1">自动还原备份 <a class="header-anchor" href="#自动还原备份" aria-label="Permalink to &quot;自动还原备份&quot;"></a></h2><ul><li>把需要还原的文件名改到 github 备份库里的 <code>README.md</code>,定时服务会每分钟检测更新,并把上次同步的文件名记录在本地 <code>/dbfile</code> 处以与在线的文件内容作比对</li></ul><p>下图为以还原文件名为 <code>dashboard-2023-04-23-13:08:37.tar.gz</code> 作示例</p><p><img src="https://user-images.githubusercontent.com/92626977/233822466-c24e94f6-ba8a-47c9-b77d-aa62a56cc929.png" alt="image"></p><h2 id="手动还原备份" tabindex="-1">手动还原备份 <a class="header-anchor" href="#手动还原备份" aria-label="Permalink to &quot;手动还原备份&quot;"></a></h2><ul><li>ssh 进入容器后运行github 备份库里的 tar.gz 文件名,格式: dashboard-2023-04-22-21:42:10.tar.gz</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">bash /dashboard/restore.sh &lt;文件名&gt;</span></span></code></pre></div><img width="1209" alt="image" src="https://user-images.githubusercontent.com/92626977/233792709-fb37b79c-c755-4db1-96ec-1039309ff932.png"><h2 id="完美搬家" tabindex="-1">完美搬家 <a class="header-anchor" href="#完美搬家" aria-label="Permalink to &quot;完美搬家&quot;"></a></h2><ul><li>备份原哪吒的 <code>/dashboard</code> 文件夹,压缩备份为 <code>dashboard.tar.gz</code> 文件</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tar czvf dashboard.tar.gz /dashboard</span></span></code></pre></div><ul><li>下载文件并放入私库,这个私库名要与新哪吒 &lt;GH_REPO&gt; 完全一致,并把该库的 README.md 的内容编辑为 <code>dashboard.tar.gz</code></li><li>部署本项目新哪吒,完整填入变量即可。部署完成后,自动还原脚本会每分钟作检测,发现有新的内容即会自动还原,全程约 3 分钟</li></ul><h2 id="主体目录文件及说明" tabindex="-1">主体目录文件及说明 <a class="header-anchor" href="#主体目录文件及说明" aria-label="Permalink to &quot;主体目录文件及说明&quot;"></a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">.</span></span>
<span class="line"><span style="color:#A6ACCD;">|-- dashboard</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- app # 哪吒面板主程序</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- argo.json # Argo 隧道 json 文件,记录着使用隧道的信息</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- argo.yml # Argo 隧道 yml 文件,用于在一同隧道下,根据不同域名来分流 web, gRPC 和 ssh 协议的作用</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- backup.sh # 备份数据脚本</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- data</span></span>
<span class="line"><span style="color:#A6ACCD;">| | |-- config.yaml # 哪吒面板的配置,如 Github OAuth2 / gRPC 域名 / 端口 / 是否启用 TLS 等信息</span></span>
<span class="line"><span style="color:#A6ACCD;">| | `-- sqlite.db # SQLite 数据库文件,记录着面板设置的所有 severs 和 cron 等信息</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- entrypoint.sh # 主脚本,容器运行后执行</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- nezha.csr # SSL/TLS 证书签名请求</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- nezha.key # SSL/TLS 证书的私钥信息</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- nezha.pem # SSL/TLS 隐私增强邮件</span></span>
<span class="line"><span style="color:#A6ACCD;">| `-- restore.sh # 还原备份脚本</span></span>
<span class="line"><span style="color:#A6ACCD;">|-- usr</span></span>
<span class="line"><span style="color:#A6ACCD;">| `-- local</span></span>
<span class="line"><span style="color:#A6ACCD;">| `-- bin</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- cloudflared # Cloudflare Argo 隧道主程序</span></span>
<span class="line"><span style="color:#A6ACCD;">| |-- grpcwebproxy # gRPC 反代主程序</span></span>
<span class="line"><span style="color:#A6ACCD;">| `-- nezha-agent # 哪吒客户端,用于监控本地 localhost</span></span>
<span class="line"><span style="color:#A6ACCD;">|-- dbfile # 记录最新的还原或备份文件名</span></span>
<span class="line"><span style="color:#A6ACCD;">`-- version # 记录当前的面板 app 版本</span></span></code></pre></div><h2 id="鸣谢下列作者的文章和项目" tabindex="-1">鸣谢下列作者的文章和项目: <a class="header-anchor" href="#鸣谢下列作者的文章和项目" aria-label="Permalink to &quot;鸣谢下列作者的文章和项目:&quot;"></a></h2><ul><li>热心的朝阳群众 Robin讨论哪吒服务端与客户端的关系从而诞生了此项目</li><li>哪吒官网: <a href="https://nezha.wiki/" target="_blank" rel="noreferrer">https://nezha.wiki/</a> , TG 群: <a href="https://t.me/nezhamonitoring" target="_blank" rel="noreferrer">https://t.me/nezhamonitoring</a></li><li>共穷国际老中医: <a href="http://solitud.es/" target="_blank" rel="noreferrer">http://solitud.es/</a></li><li>Akkia&#39;s Blog: <a href="https://blog.akkia.moe/" target="_blank" rel="noreferrer">https://blog.akkia.moe/</a></li><li>HiFeng&#39;s Blog: <a href="https://www.hicairo.com/" target="_blank" rel="noreferrer">https://www.hicairo.com/</a></li><li>用 Cloudflare Tunnel 进行内网穿透: <a href="https://blog.outv.im/2021/cloudflared-tunnel/" target="_blank" rel="noreferrer">https://blog.outv.im/2021/cloudflared-tunnel/</a></li><li>如何给 GitHub Actions 添加自己的 Runner 主机: <a href="https://cloud.tencent.com/developer/article/1756690" target="_blank" rel="noreferrer">https://cloud.tencent.com/developer/article/1756690</a></li><li>github self-hosted runner 添加与启动: <a href="https://blog.csdn.net/sinat_32188225/article/details/125978331" target="_blank" rel="noreferrer">https://blog.csdn.net/sinat_32188225/article/details/125978331</a></li><li>如何从Docker镜像中导出文件: <a href="https://www.pkslow.com/archives/extract-files-from-docker-image" target="_blank" rel="noreferrer">https://www.pkslow.com/archives/extract-files-from-docker-image</a></li><li>grpcwebproxy: <a href="https://github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy" target="_blank" rel="noreferrer">https://github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy</a></li></ul><h2 id="免责声明" tabindex="-1">免责声明: <a class="header-anchor" href="#免责声明" aria-label="Permalink to &quot;免责声明:&quot;"></a></h2><ul><li>本程序仅供学习了解, 非盈利目的,请于下载后 24 小时内删除, 不得用作任何商业用途, 文字、数据及图片均有所属版权, 如转载须注明来源。</li><li>使用本程序必循遵守部署免责声明。使用本程序必循遵守部署服务器所在地、所在国家和用户所在国家的法律法规, 程序作者不对使用者任何不当行为负责。</li></ul></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/case/case5.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> 在GitHub中编辑<!--]--><!----></a></div><div class="last-updated" data-v-face870a><p class="VPLastUpdated" data-v-face870a data-v-7b3ebfe1>上次更新: <time datetime="2023-09-25T02:25:37.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="/case/case4.html" data-v-face870a><span class="desc" data-v-face870a>Previous page</span><span class="title" data-v-face870a>4. Fake-agent监控数据作弊器</span></a></div><div class="has-prev pager" data-v-face870a><!----></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("{\"case_case1.md\":\"72d9e007\",\"case_case2.md\":\"1901382b\",\"case_case4.md\":\"7c28e060\",\"case_case3.md\":\"735e605c\",\"case_case5.md\":\"fa575d37\",\"case_index.md\":\"cb87390a\",\"developer_index.md\":\"f5ca9a10\",\"developer_l10n.md\":\"4f2a87bc\",\"guide_q2.md\":\"71bc8d63\",\"en_us_case_case1.md\":\"6fdf4343\",\"en_us_case_case2.md\":\"8df9e418\",\"en_us_case_case3.md\":\"f41c2755\",\"en_us_case_case4.md\":\"ea4980df\",\"en_us_case_case5.md\":\"58dc5a3c\",\"en_us_case_index.md\":\"2cffd156\",\"en_us_developer_l10n.md\":\"27f92860\",\"en_us_developer_theme.md\":\"91a5f8ea\",\"en_us_guide_agentq.md\":\"46a333df\",\"en_us_guide_api.md\":\"7a6cfa84\",\"en_us_guide_dashboard.md\":\"e4ab257e\",\"en_us_guide_dashboardq.md\":\"54a3d434\",\"en_us_guide_loginq.md\":\"71f2af42\",\"en_us_guide_notifications.md\":\"f1448b4d\",\"en_us_guide_q2.md\":\"8b3617ad\",\"en_us_guide_q4.md\":\"799fab11\",\"en_us_guide_q5.md\":\"f6b97eb6\",\"en_us_guide_q6.md\":\"c7d53c51\",\"en_us_guide_q7.md\":\"87965f8c\",\"en_us_guide_servers.md\":\"232c6f2b\",\"en_us_guide_services.md\":\"b946b3ed\",\"en_us_guide_settings.md\":\"86e4e725\",\"en_us_guide_tasks.md\":\"0a64e6a2\",\"en_us_index.md\":\"d686da82\",\"guide_q4.md\":\"ebabc156\",\"guide_dashboard.md\":\"e3e15c79\",\"guide_dashboardq.md\":\"936b73b7\",\"guide_loginq.md\":\"f2a30012\",\"guide_notifications.md\":\"96525c24\",\"guide_q1.md\":\"ecee61d9\",\"en_us_guide_agent.md\":\"e82ca729\",\"developer_theme.md\":\"b009e12e\",\"guide_q3.md\":\"6e2e3c01\",\"guide_q6.md\":\"419385af\",\"guide_q7.md\":\"d429ee50\",\"guide_servers.md\":\"ac6c68ba\",\"guide_services.md\":\"743af3a9\",\"guide_agent.md\":\"75f5848a\",\"guide_q5.md\":\"f49b56a3\",\"en_us_developer_index.md\":\"0e0aeee6\",\"guide_settings.md\":\"674ffe36\",\"guide_tasks.md\":\"e2871a43\",\"index.md\":\"bde10d4f\",\"en_us_guide_q3.md\":\"3f8ec370\",\"guide_agentq.md\":\"99152d7c\",\"guide_api.md\":\"d49fd8a1\"}")
__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\":\"TG 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\":\"排障指南\",\"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\":\"TG 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\":\"排障指南\",\"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 Monitoring\",\"description\":\"Nezha Monitoring is a lightweight O&M tool\",\"link\":\"/en_US/\",\"themeConfig\":{\"lastUpdatedText\":\"Last Updated\",\"editLink\":{\"text\":\"Edit this page on GitHub\",\"pattern\":\"https://github.com/nezhahq/nezhahq.github.io/edit/main/docs/:path\"},\"nav\":[{\"text\":\"User Guide\",\"link\":\"/en_US/\",\"activeMatch\":\"^/en_US/guide/\"},{\"text\":\"Community Projects\",\"link\":\"/en_US/case/index.html\",\"activeMatch\":\"^/en_US/case/\"},{\"text\":\"Development Manual\",\"link\":\"/en_US/developer/index.html\",\"activeMatch\":\"^/en_US/developer/\"}],\"sidebar\":{\"/en_US/\":[{\"text\":\"Installation Manual\",\"items\":[{\"text\":\"Install Dashboard\",\"link\":\"/en_US/guide/dashboard.html\"},{\"text\":\"Install Agent\",\"link\":\"/en_US/guide/agent.html\"}]},{\"text\":\"Admin Panel\",\"items\":[{\"text\":\"Servers\",\"link\":\"/en_US/guide/servers.html\"},{\"text\":\"Services\",\"link\":\"/en_US/guide/services.html\"},{\"text\":\"Tasks\",\"link\":\"/en_US/guide/tasks.html\"},{\"text\":\"Notifications\",\"link\":\"/en_US/guide/notifications.html\"},{\"text\":\"Settings\",\"link\":\"/en_US/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/en_US/guide/api.html\"}]},{\"text\":\"FAQ\",\"items\":[{\"text\":\"Agent cannot start/on-line. Steps to review logs and troubleshoot\",\"link\":\"/en_US/guide/q2.html\"},{\"text\":\"Steps for Reverse Proxy gRPC Ports (support Cloudflare CDN)\",\"link\":\"/en_US/guide/q3.html\"},{\"text\":\"Real-time channel disconnection/online terminal connection failure\",\"link\":\"/en_US/guide/q4.html\"},{\"text\":\"Steps to perform data migration, backup and recovery\",\"link\":\"/en_US/guide/q5.html\"},{\"text\":\"Steps to set up monthly reset data statistics\",\"link\":\"/en_US/guide/q6.html\"},{\"text\":\"Steps to customize Agent monitoring items\",\"link\":\"/en_US/guide/q7.html\"}]},{\"text\":\"Troubleshooting Guide\",\"items\":[{\"text\":\"Dashboard\",\"link\":\"/en_US/guide/dashboardq.html\"},{\"text\":\"Agent\",\"link\":\"/en_US/guide/agentq.html\"},{\"text\":\"Login\",\"link\":\"/en_US/guide/loginq.html\"}]}],\"/en_US/guide/\":[{\"text\":\"Installation Manual\",\"items\":[{\"text\":\"Install Dashboard\",\"link\":\"/en_US/guide/dashboard.html\"},{\"text\":\"Install Agent\",\"link\":\"/en_US/guide/agent.html\"}]},{\"text\":\"Admin Panel\",\"items\":[{\"text\":\"Servers\",\"link\":\"/en_US/guide/servers.html\"},{\"text\":\"Services\",\"link\":\"/en_US/guide/services.html\"},{\"text\":\"Tasks\",\"link\":\"/en_US/guide/tasks.html\"},{\"text\":\"Notifications\",\"link\":\"/en_US/guide/notifications.html\"},{\"text\":\"Settings\",\"link\":\"/en_US/guide/settings.html\"},{\"text\":\"API\",\"link\":\"/en_US/guide/api.html\"}]},{\"text\":\"FAQ\",\"items\":[{\"text\":\"Agent cannot start/on-line. Steps to review logs and troubleshoot\",\"link\":\"/en_US/guide/q2.html\"},{\"text\":\"Steps for Reverse Proxy gRPC Ports (support Cloudflare CDN)\",\"link\":\"/en_US/guide/q3.html\"},{\"text\":\"Real-time channel disconnection/online terminal connection failure\",\"link\":\"/en_US/guide/q4.html\"},{\"text\":\"Steps to perform data migration, backup and recovery\",\"link\":\"/en_US/guide/q5.html\"},{\"text\":\"Steps to set up monthly reset data statistics\",\"link\":\"/en_US/guide/q6.html\"},{\"text\":\"Steps to customize Agent monitoring items\",\"link\":\"/en_US/guide/q7.html\"}]},{\"text\":\"Troubleshooting Guide\",\"items\":[{\"text\":\"Dashboard\",\"link\":\"/en_US/guide/dashboardq.html\"},{\"text\":\"Agent\",\"link\":\"/en_US/guide/agentq.html\"},{\"text\":\"Login\",\"link\":\"/en_US/guide/loginq.html\"}]}],\"/en_US/case/\":[{\"text\":\"Community Projects\",\"items\":[{\"text\":\"1. Build your own Telegram bot to query server information\",\"link\":\"/en_US/case/case1.html\"},{\"text\":\"2. Use Siri to run shortcut to check server status\",\"link\":\"/en_US/case/case2.html\"},{\"text\":\"3. Self-hosted, multi-user, multi-lingual server status query Telegram bot\",\"link\":\"/en_US/case/case3.html\"},{\"text\":\"4. Fake-agent, monitoring data cheater\",\"link\":\"/en_US/case/case4.html\"},{\"text\":\"5. Nezha server over Argo tunnel\",\"link\":\"/en_US/case/case5.html\"}]}],\"/en_US/developer/\":[{\"text\":\"Development Manual\",\"items\":[{\"text\":\"Create a new theme\",\"link\":\"/en_US/developer/theme.html\"},{\"text\":\"l10n\",\"link\":\"/en_US/developer/l10n.html\"}]}]}}}},\"scrollOffset\":90,\"cleanUrls\":false}")</script>
</body>
</html>