diff --git a/assets/app.13513b34.js b/assets/app.13513b34.js deleted file mode 100644 index fc59374a..00000000 --- a/assets/app.13513b34.js +++ /dev/null @@ -1 +0,0 @@ -const Ti="modulepreload",As={},Si="/",Ai=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Si}${s}`,s in As)return;As[s]=!0;const r=s.endsWith(".css"),i=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${i}`))return;const o=document.createElement("link");if(o.rel=r?"stylesheet":Ti,r||(o.as="script",o.crossOrigin=""),o.href=s,document.head.appendChild(o),r)return new Promise((l,c)=>{o.addEventListener("load",l),o.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function es(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Li="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Pi=es(Li);function fr(e){return!!e||e===""}function ts(e){if(O(e)){const t={};for(let n=0;n{if(n){const s=n.split(Mi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ct(e){let t="";if(he(e))t=e;else if(O(e))for(let n=0;nhe(e)?e:e==null?"":O(e)||ue(e)&&(e.toString===_r||!F(e.toString))?JSON.stringify(e,dr,2):String(e),dr=(e,t)=>t&&t.__v_isRef?dr(e,t.value):mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:hr(t)?{[`Set(${t.size})`]:[...t.values()]}:ue(t)&&!O(t)&&!gr(t)?String(t):t,Z={},gt=[],Me=()=>{},Ui=()=>!1,Ri=/^on[^a-z]/,Wt=e=>Ri.test(e),ns=e=>e.startsWith("onUpdate:"),xe=Object.assign,ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Fi=Object.prototype.hasOwnProperty,q=(e,t)=>Fi.call(e,t),O=Array.isArray,mt=e=>mn(e)==="[object Map]",hr=e=>mn(e)==="[object Set]",F=e=>typeof e=="function",he=e=>typeof e=="string",rs=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",pr=e=>ue(e)&&F(e.then)&&F(e.catch),_r=Object.prototype.toString,mn=e=>_r.call(e),Ni=e=>mn(e).slice(8,-1),gr=e=>mn(e)==="[object Object]",is=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Lt=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Hi=/-(\w)/g,Ne=vn(e=>e.replace(Hi,(t,n)=>n?n.toUpperCase():"")),Bi=/\B([A-Z])/g,yt=vn(e=>e.replace(Bi,"-$1").toLowerCase()),bn=vn(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=vn(e=>e?`on${bn(e)}`:""),Ft=(e,t)=>!Object.is(e,t),Un=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ls;const ji=()=>Ls||(Ls=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Re;class qi{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Re&&(this.parent=Re,this.index=(Re.scopes||(Re.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Re;try{return Re=this,t()}finally{Re=n}}}on(){Re=this}off(){Re=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},mr=e=>(e.w&Ge)>0,vr=e=>(e.n&Ge)>0,Wi=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=s)&&l.push(c)});else switch(n!==void 0&&l.push(o.get(n)),t){case"add":O(e)?is(n)&&l.push(o.get("length")):(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"delete":O(e)||(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"set":mt(e)&&l.push(o.get(rt));break}if(l.length===1)l[0]&&Kn(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);Kn(os(c))}}function Kn(e,t){for(const n of O(e)?e:[...e])(n!==Pe||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Vi=es("__proto__,__v_isRef,__isVue"),yr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(rs)),Ji=cs(),Qi=cs(!1,!0),Yi=cs(!0),Is=Xi();function Xi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let i=0,o=this.length;i{e[t]=function(...n){wt();const s=z(this)[t].apply(this,n);return kt(),s}}),e}function cs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?po:Er:t?Cr:$r).get(s))return s;const o=O(s);if(!e&&o&&q(Is,r))return Reflect.get(Is,r,i);const l=Reflect.get(s,r,i);return(rs(r)?yr.has(r):Vi(r))||(e||Te(s,"get",r),t)?l:de(l)?!o||!is(r)?l.value:l:ue(l)?e?Tr(l):yn(l):l}}const Zi=wr(),Gi=wr(!0);function wr(e=!1){return function(n,s,r,i){let o=n[s];if(Nt(o)&&de(o)&&!de(r))return!1;if(!e&&!Nt(r)&&(Sr(r)||(r=z(r),o=z(o)),!O(n)&&de(o)&&!de(r)))return o.value=r,!0;const l=O(n)&&is(s)?Number(s)e,xn=e=>Reflect.getPrototypeOf(e);function Qt(e,t,n=!1,s=!1){e=e.__v_raw;const r=z(e),i=z(t);t!==i&&!n&&Te(r,"get",t),!n&&Te(r,"get",i);const{has:o}=xn(r),l=s?as:n?ds:Ht;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Yt(e,t=!1){const n=this.__v_raw,s=z(n),r=z(e);return e!==r&&!t&&Te(s,"has",e),!t&&Te(s,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function Xt(e,t=!1){return e=e.__v_raw,!t&&Te(z(e),"iterate",rt),Reflect.get(e,"size",e)}function Ms(e){e=z(e);const t=z(this);return xn(t).has.call(t,e)||(t.add(e),qe(t,"add",e,e)),this}function Os(e,t){t=z(t);const n=z(this),{has:s,get:r}=xn(n);let i=s.call(n,e);i||(e=z(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Ft(t,o)&&qe(n,"set",e,t):qe(n,"add",e,t),this}function Us(e){const t=z(this),{has:n,get:s}=xn(t);let r=n.call(t,e);r||(e=z(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&qe(t,"delete",e,void 0),i}function Rs(){const e=z(this),t=e.size!==0,n=e.clear();return t&&qe(e,"clear",void 0,void 0),n}function Zt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=z(o),c=t?as:e?ds:Ht;return!e&&Te(l,"iterate",rt),o.forEach((f,h)=>s.call(r,c(f),c(h),i))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=mt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),h=n?as:t?ds:Ht;return!t&&Te(i,"iterate",c?qn:rt),{next(){const{value:g,done:y}=f.next();return y?{value:g,done:y}:{value:l?[h(g[0]),h(g[1])]:h(g),done:y}},[Symbol.iterator](){return this}}}}function Ve(e){return function(...t){return e==="delete"?!1:this}}function io(){const e={get(i){return Qt(this,i)},get size(){return Xt(this)},has:Yt,add:Ms,set:Os,delete:Us,clear:Rs,forEach:Zt(!1,!1)},t={get(i){return Qt(this,i,!1,!0)},get size(){return Xt(this)},has:Yt,add:Ms,set:Os,delete:Us,clear:Rs,forEach:Zt(!1,!0)},n={get(i){return Qt(this,i,!0)},get size(){return Xt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Zt(!0,!1)},s={get(i){return Qt(this,i,!0,!0)},get size(){return Xt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Gt(i,!1,!1),n[i]=Gt(i,!0,!1),t[i]=Gt(i,!1,!0),s[i]=Gt(i,!0,!0)}),[e,n,t,s]}const[oo,lo,co,ao]=io();function us(e,t){const n=t?e?ao:co:e?lo:oo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,i)}const uo={get:us(!1,!1)},fo={get:us(!1,!0)},ho={get:us(!0,!1)},$r=new WeakMap,Cr=new WeakMap,Er=new WeakMap,po=new WeakMap;function _o(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function go(e){return e.__v_skip||!Object.isExtensible(e)?0:_o(Ni(e))}function yn(e){return Nt(e)?e:fs(e,!1,kr,uo,$r)}function mo(e){return fs(e,!1,ro,fo,Cr)}function Tr(e){return fs(e,!0,so,ho,Er)}function fs(e,t,n,s,r){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=go(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function vt(e){return Nt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function Nt(e){return!!(e&&e.__v_isReadonly)}function Sr(e){return!!(e&&e.__v_isShallow)}function Ar(e){return vt(e)||Nt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Pt(e){return sn(e,"__v_skip",!0),e}const Ht=e=>ue(e)?yn(e):e,ds=e=>ue(e)?Tr(e):e;function Lr(e){Xe&&Pe&&(e=z(e),xr(e.dep||(e.dep=os())))}function Pr(e,t){e=z(e),e.dep&&Kn(e.dep)}function de(e){return!!(e&&e.__v_isRef===!0)}function wn(e){return Ir(e,!1)}function vo(e){return Ir(e,!0)}function Ir(e,t){return de(e)?e:new bo(e,t)}class bo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:z(t),this._value=n?t:Ht(t)}get value(){return Lr(this),this._value}set value(t){t=this.__v_isShallow?t:z(t),Ft(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Ht(t),Pr(this))}}function $(e){return de(e)?e.value:e}const xo={get:(e,t,n)=>$(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return de(r)&&!de(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mr(e){return vt(e)?e:new Proxy(e,xo)}function Or(e){const t=O(e)?new Array(e.length):{};for(const n in e)t[n]=wo(e,n);return t}class yo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function wo(e,t,n){const s=e[t];return de(s)?s:new yo(e,t,n)}class ko{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new ls(t,()=>{this._dirty||(this._dirty=!0,Pr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Lr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function $o(e,t,n=!1){let s,r;const i=F(e);return i?(s=e,r=Me):(s=e.get,r=e.set),new ko(s,r,i||!r,n)}function Ze(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){kn(i,t,n)}return r}function Oe(e,t,n,s){if(F(e)){const i=Ze(e,t,n,s);return i&&pr(i)&&i.catch(o=>{kn(o,t,n)}),i}const r=[];for(let i=0;i>>1;Bt(Ee[s])je&&Ee.splice(t,1)}function Hr(e,t,n,s){O(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),Nr()}function So(e){Hr(e,At,It,ht)}function Ao(e){Hr(e,Qe,Mt,pt)}function ps(e,t=null){if(It.length){for(zn=t,At=[...new Set(It)],It.length=0,ht=0;htBt(n)-Bt(s)),pt=0;pte.id==null?1/0:e.id;function Br(e){Wn=!1,rn=!0,ps(e),Ee.sort((n,s)=>Bt(n)-Bt(s));const t=Me;try{for(je=0;jeS.trim()):g&&(r=n.map(Di))}let l,c=s[l=On(t)]||s[l=On(Ne(t))];!c&&i&&(c=s[l=On(yt(t))]),c&&Oe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Oe(f,e,6,r)}}function Dr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!F(e)){const c=f=>{const h=Dr(f,t,!0);h&&(l=!0,xe(o,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(s.set(e,null),null):(O(i)?i.forEach(c=>o[c]=null):xe(o,i),s.set(e,o),o)}function $n(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),q(e,t[0].toLowerCase()+t.slice(1))||q(e,yt(t))||q(e,t))}let $e=null,Cn=null;function ln(e){const t=$e;return $e=e,Cn=e&&e.type.__scopeId||null,t}function jr(e){Cn=e}function qr(){Cn=null}function De(e,t=$e,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&zs(-1);const i=ln(t),o=e(...r);return ln(i),s._d&&zs(1),o};return s._n=!0,s._c=!0,s._d=!0,s}function Rn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:f,render:h,renderCache:g,data:y,setupState:S,ctx:M,inheritAttrs:V}=e;let m,w;const K=ln(e);try{if(n.shapeFlag&4){const H=r||s;m=Le(h.call(H,H,g,i,S,y,M)),w=c}else{const H=t;m=Le(H.length>1?H(i,{attrs:c,slots:l,emit:f}):H(i,null)),w=t.props?c:Po(c)}}catch(H){Rt.length=0,kn(H,e,1),m=N(Ke)}let P=m;if(w&&V!==!1){const H=Object.keys(w),{shapeFlag:Y}=P;H.length&&Y&7&&(o&&H.some(ns)&&(w=Io(w,o)),P=qt(P,w))}return n.dirs&&(P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),m=P,ln(K),m}const Po=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},Io=(e,t)=>{const n={};for(const s in e)(!ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Mo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Fs(s,o,f):!!o;if(c&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function Kr(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):Ao(e)}function Ro(e,t){if(pe){let n=pe.provides;const s=pe.parent&&pe.parent.provides;s===n&&(n=pe.provides=Object.create(s)),n[e]=t}}function Ot(e,t,n=!1){const s=pe||$e;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&F(t)?t.call(s.proxy):t}}function Wr(e,t){return _s(e,null,t)}const Ns={};function it(e,t,n){return _s(e,t,n)}function _s(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=Z){const l=pe;let c,f=!1,h=!1;if(de(e)?(c=()=>e.value,f=Sr(e)):vt(e)?(c=()=>e,s=!0):O(e)?(h=!0,f=e.some(vt),c=()=>e.map(w=>{if(de(w))return w.value;if(vt(w))return _t(w);if(F(w))return Ze(w,l,2)})):F(e)?t?c=()=>Ze(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return g&&g(),Oe(e,l,3,[y])}:c=Me,t&&s){const w=c;c=()=>_t(w())}let g,y=w=>{g=m.onStop=()=>{Ze(w,l,4)}};if(Kt)return y=Me,t?n&&Oe(t,l,3,[c(),h?[]:void 0,y]):c(),Me;let S=h?[]:Ns;const M=()=>{if(!!m.active)if(t){const w=m.run();(s||f||(h?w.some((K,P)=>Ft(K,S[P])):Ft(w,S)))&&(g&&g(),Oe(t,l,3,[w,S===Ns?void 0:S,y]),S=w)}else m.run()};M.allowRecurse=!!t;let V;r==="sync"?V=M:r==="post"?V=()=>ke(M,l&&l.suspense):V=()=>{!l||l.isMounted?So(M):M()};const m=new ls(c,V);return t?n?M():S=m.run():r==="post"?ke(m.run.bind(m),l&&l.suspense):m.run(),()=>{m.stop(),l&&l.scope&&ss(l.scope.effects,m)}}function Fo(e,t,n){const s=this.proxy,r=he(e)?e.includes(".")?zr(s,e):()=>s[e]:e.bind(s,s);let i;F(t)?i=t:(i=t.handler,n=t);const o=pe;bt(this);const l=_s(r,i.bind(s),n);return o?bt(o):lt(),l}function zr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{_t(n,t)});else if(gr(e))for(const n in e)_t(e[n],t);return e}function oe(e){return F(e)?{setup:e,name:e.name}:e}const Dt=e=>!!e.type.__asyncLoader,Vr=e=>e.type.__isKeepAlive;function No(e,t){Jr(e,"a",t)}function Ho(e,t){Jr(e,"da",t)}function Jr(e,t,n=pe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(En(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Vr(r.parent.vnode)&&Bo(s,t,n,r),r=r.parent}}function Bo(e,t,n,s){const r=En(t,e,s,!0);Tn(()=>{ss(s[t],r)},n)}function En(e,t,n=pe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;wt(),bt(n);const l=Oe(t,n,e,o);return lt(),kt(),l});return s?r.unshift(i):r.push(i),i}}const We=e=>(t,n=pe)=>(!Kt||e==="sp")&&En(e,t,n),Do=We("bm"),$t=We("m"),jo=We("bu"),Qr=We("u"),qo=We("bum"),Tn=We("um"),Ko=We("sp"),Wo=We("rtg"),zo=We("rtc");function Vo(e,t=pe){En("ec",e,t)}let Vn=!0;function Jo(e){const t=Xr(e),n=e.proxy,s=e.ctx;Vn=!1,t.beforeCreate&&Hs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:h,beforeMount:g,mounted:y,beforeUpdate:S,updated:M,activated:V,deactivated:m,beforeDestroy:w,beforeUnmount:K,destroyed:P,unmounted:H,render:Y,renderTracked:X,renderTriggered:B,errorCaptured:le,serverPrefetch:ne,expose:re,inheritAttrs:_e,components:j,directives:ie,filters:ye}=t;if(f&&Qo(f,s,null,e.appContext.config.unwrapInjectedRef),o)for(const se in o){const G=o[se];F(G)&&(s[se]=G.bind(n))}if(r){const se=r.call(n,n);ue(se)&&(e.data=yn(se))}if(Vn=!0,i)for(const se in i){const G=i[se],He=F(G)?G.bind(n,n):F(G.get)?G.get.bind(n,n):Me,Pn=!F(G)&&F(G.set)?G.set.bind(n):Me,Ct=D({get:He,set:Pn});Object.defineProperty(s,se,{enumerable:!0,configurable:!0,get:()=>Ct.value,set:ut=>Ct.value=ut})}if(l)for(const se in l)Yr(l[se],s,n,se);if(c){const se=F(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{Ro(G,se[G])})}h&&Hs(h,e,"c");function we(se,G){O(G)?G.forEach(He=>se(He.bind(n))):G&&se(G.bind(n))}if(we(Do,g),we($t,y),we(jo,S),we(Qr,M),we(No,V),we(Ho,m),we(Vo,le),we(zo,X),we(Wo,B),we(qo,K),we(Tn,H),we(Ko,ne),O(re))if(re.length){const se=e.exposed||(e.exposed={});re.forEach(G=>{Object.defineProperty(se,G,{get:()=>n[G],set:He=>n[G]=He})})}else e.exposed||(e.exposed={});Y&&e.render===Me&&(e.render=Y),_e!=null&&(e.inheritAttrs=_e),j&&(e.components=j),ie&&(e.directives=ie)}function Qo(e,t,n=Me,s=!1){O(e)&&(e=Jn(e));for(const r in e){const i=e[r];let o;ue(i)?"default"in i?o=Ot(i.from||r,i.default,!0):o=Ot(i.from||r):o=Ot(i),de(o)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function Hs(e,t,n){Oe(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yr(e,t,n,s){const r=s.includes(".")?zr(n,s):()=>n[s];if(he(e)){const i=t[e];F(i)&&it(r,i)}else if(F(e))it(r,e.bind(n));else if(ue(e))if(O(e))e.forEach(i=>Yr(i,t,n,s));else{const i=F(e.handler)?e.handler.bind(n):t[e.handler];F(i)&&it(r,i,e)}}function Xr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>cn(c,f,o,!0)),cn(c,t,o)),i.set(t,c),c}function cn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&cn(e,i,n,!0),r&&r.forEach(o=>cn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Yo[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Yo={data:Bs,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:nt,directives:nt,watch:Zo,provide:Bs,inject:Xo};function Bs(e,t){return t?e?function(){return xe(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function Xo(e,t){return nt(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n0)&&!(o&16)){if(o&8){const h=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[y,S]=Gr(g,t,!0);xe(o,y),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!c)return s.set(e,gt),gt;if(O(i))for(let h=0;h-1,S[1]=V<0||M-1||q(S,"default"))&&l.push(g)}}}const f=[o,l];return s.set(e,f),f}function Ds(e){return e[0]!=="$"}function js(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function qs(e,t){return js(e)===js(t)}function Ks(e,t){return O(t)?t.findIndex(n=>qs(n,e)):F(t)&&qs(t,e)?0:-1}const ei=e=>e[0]==="_"||e==="$stable",gs=e=>O(e)?e.map(Le):[Le(e)],tl=(e,t,n)=>{const s=De((...r)=>gs(t(...r)),n);return s._c=!1,s},ti=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ei(r))continue;const i=e[r];if(F(i))t[r]=tl(r,i,s);else if(i!=null){const o=gs(i);t[r]=()=>o}}},ni=(e,t)=>{const n=gs(t);e.slots.default=()=>n},nl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),sn(t,"_",n)):ti(t,e.slots={})}else e.slots={},t&&ni(e,t);sn(e.slots,Sn,1)},sl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(xe(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ti(t,r)),o=t}else t&&(ni(e,t),o={default:1});if(i)for(const l in r)!ei(l)&&!(l in o)&&delete r[l]};function Fe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oan(y,t&&(O(t)?t[S]:t),n,s,r));return}if(Dt(s)&&!r)return;const i=s.shapeFlag&4?bs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,h=l.refs===Z?l.refs={}:l.refs,g=l.setupState;if(f!=null&&f!==c&&(he(f)?(h[f]=null,q(g,f)&&(g[f]=null)):de(f)&&(f.value=null)),F(c))Ze(c,l,12,[o,h]);else{const y=he(c),S=de(c);if(y||S){const M=()=>{if(e.f){const V=y?h[c]:c.value;r?O(V)&&ss(V,i):O(V)?V.includes(i)||V.push(i):y?(h[c]=[i],q(g,c)&&(g[c]=h[c])):(c.value=[i],e.k&&(h[e.k]=c.value))}else y?(h[c]=o,q(g,c)&&(g[c]=o)):de(c)&&(c.value=o,e.k&&(h[e.k]=o))};o?(M.id=-1,ke(M,n)):M()}}}let Je=!1;const en=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fn=e=>e.nodeType===8;function ol(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:i,remove:o,insert:l,createComment:c}}=e,f=(m,w)=>{if(!w.hasChildNodes()){n(null,m,w),on();return}Je=!1,h(w.firstChild,m,null,null,null),on(),Je&&console.error("Hydration completed but contains mismatches.")},h=(m,w,K,P,H,Y=!1)=>{const X=Fn(m)&&m.data==="[",B=()=>M(m,w,K,P,H,X),{type:le,ref:ne,shapeFlag:re}=w,_e=m.nodeType;w.el=m;let j=null;switch(le){case jt:_e!==3?j=B():(m.data!==w.children&&(Je=!0,m.data=w.children),j=r(m));break;case Ke:_e!==8||X?j=B():j=r(m);break;case Ut:if(_e!==1)j=B();else{j=m;const ie=!w.children.length;for(let ye=0;ye{Y=Y||!!w.dynamicChildren;const{type:X,props:B,patchFlag:le,shapeFlag:ne,dirs:re}=w,_e=X==="input"&&re||X==="option";if(_e||le!==-1){if(re&&Fe(w,null,K,"created"),B)if(_e||!Y||le&48)for(const ie in B)(_e&&ie.endsWith("value")||Wt(ie)&&!Lt(ie))&&s(m,ie,null,B[ie],!1,void 0,K);else B.onClick&&s(m,"onClick",null,B.onClick,!1,void 0,K);let j;if((j=B&&B.onVnodeBeforeMount)&&Se(j,K,w),re&&Fe(w,null,K,"beforeMount"),((j=B&&B.onVnodeMounted)||re)&&Kr(()=>{j&&Se(j,K,w),re&&Fe(w,null,K,"mounted")},P),ne&16&&!(B&&(B.innerHTML||B.textContent))){let ie=y(m.firstChild,w,m,K,P,H,Y);for(;ie;){Je=!0;const ye=ie;ie=ie.nextSibling,o(ye)}}else ne&8&&m.textContent!==w.children&&(Je=!0,m.textContent=w.children)}return m.nextSibling},y=(m,w,K,P,H,Y,X)=>{X=X||!!w.dynamicChildren;const B=w.children,le=B.length;for(let ne=0;ne{const{slotScopeIds:X}=w;X&&(H=H?H.concat(X):X);const B=i(m),le=y(r(m),w,B,K,P,H,Y);return le&&Fn(le)&&le.data==="]"?r(w.anchor=le):(Je=!0,l(w.anchor=c("]"),B,le),le)},M=(m,w,K,P,H,Y)=>{if(Je=!0,w.el=null,Y){const le=V(m);for(;;){const ne=r(m);if(ne&&ne!==le)o(ne);else break}}const X=r(m),B=i(m);return o(m),n(null,w,B,X,K,P,en(B),H),X},V=m=>{let w=0;for(;m;)if(m=r(m),m&&Fn(m)&&(m.data==="["&&w++,m.data==="]")){if(w===0)return r(m);w--}return m};return[f,h]}const ke=Kr;function ll(e){return cl(e,ol)}function cl(e,t){const n=ji();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:h,parentNode:g,nextSibling:y,setScopeId:S=Me,cloneNode:M,insertStaticContent:V}=e,m=(a,u,d,_=null,p=null,x=null,C=!1,b=null,k=!!u.dynamicChildren)=>{if(a===u)return;a&&!Tt(a,u)&&(_=Jt(a),ze(a,p,x,!0),a=null),u.patchFlag===-2&&(k=!1,u.dynamicChildren=null);const{type:v,ref:A,shapeFlag:E}=u;switch(v){case jt:w(a,u,d,_);break;case Ke:K(a,u,d,_);break;case Ut:a==null&&P(u,d,_,C);break;case fe:ie(a,u,d,_,p,x,C,b,k);break;default:E&1?X(a,u,d,_,p,x,C,b,k):E&6?ye(a,u,d,_,p,x,C,b,k):(E&64||E&128)&&v.process(a,u,d,_,p,x,C,b,k,ft)}A!=null&&p&&an(A,a&&a.ref,x,u||a,!u)},w=(a,u,d,_)=>{if(a==null)s(u.el=l(u.children),d,_);else{const p=u.el=a.el;u.children!==a.children&&f(p,u.children)}},K=(a,u,d,_)=>{a==null?s(u.el=c(u.children||""),d,_):u.el=a.el},P=(a,u,d,_)=>{[a.el,a.anchor]=V(a.children,u,d,_,a.el,a.anchor)},H=({el:a,anchor:u},d,_)=>{let p;for(;a&&a!==u;)p=y(a),s(a,d,_),a=p;s(u,d,_)},Y=({el:a,anchor:u})=>{let d;for(;a&&a!==u;)d=y(a),r(a),a=d;r(u)},X=(a,u,d,_,p,x,C,b,k)=>{C=C||u.type==="svg",a==null?B(u,d,_,p,x,C,b,k):re(a,u,p,x,C,b,k)},B=(a,u,d,_,p,x,C,b)=>{let k,v;const{type:A,props:E,shapeFlag:L,transition:I,patchFlag:W,dirs:te}=a;if(a.el&&M!==void 0&&W===-1)k=a.el=M(a.el);else{if(k=a.el=o(a.type,x,E&&E.is,E),L&8?h(k,a.children):L&16&&ne(a.children,k,null,_,p,x&&A!=="foreignObject",C,b),te&&Fe(a,null,_,"created"),E){for(const ee in E)ee!=="value"&&!Lt(ee)&&i(k,ee,null,E[ee],x,a.children,_,p,Be);"value"in E&&i(k,"value",null,E.value),(v=E.onVnodeBeforeMount)&&Se(v,_,a)}le(k,a,a.scopeId,C,_)}te&&Fe(a,null,_,"beforeMount");const Q=(!p||p&&!p.pendingBranch)&&I&&!I.persisted;Q&&I.beforeEnter(k),s(k,u,d),((v=E&&E.onVnodeMounted)||Q||te)&&ke(()=>{v&&Se(v,_,a),Q&&I.enter(k),te&&Fe(a,null,_,"mounted")},p)},le=(a,u,d,_,p)=>{if(d&&S(a,d),_)for(let x=0;x<_.length;x++)S(a,_[x]);if(p){let x=p.subTree;if(u===x){const C=p.vnode;le(a,C,C.scopeId,C.slotScopeIds,p.parent)}}},ne=(a,u,d,_,p,x,C,b,k=0)=>{for(let v=k;v{const b=u.el=a.el;let{patchFlag:k,dynamicChildren:v,dirs:A}=u;k|=a.patchFlag&16;const E=a.props||Z,L=u.props||Z;let I;d&&tt(d,!1),(I=L.onVnodeBeforeUpdate)&&Se(I,d,u,a),A&&Fe(u,a,d,"beforeUpdate"),d&&tt(d,!0);const W=p&&u.type!=="foreignObject";if(v?_e(a.dynamicChildren,v,b,d,_,W,x):C||He(a,u,b,null,d,_,W,x,!1),k>0){if(k&16)j(b,u,E,L,d,_,p);else if(k&2&&E.class!==L.class&&i(b,"class",null,L.class,p),k&4&&i(b,"style",E.style,L.style,p),k&8){const te=u.dynamicProps;for(let Q=0;Q{I&&Se(I,d,u,a),A&&Fe(u,a,d,"updated")},_)},_e=(a,u,d,_,p,x,C)=>{for(let b=0;b{if(d!==_){for(const b in _){if(Lt(b))continue;const k=_[b],v=d[b];k!==v&&b!=="value"&&i(a,b,v,k,C,u.children,p,x,Be)}if(d!==Z)for(const b in d)!Lt(b)&&!(b in _)&&i(a,b,d[b],null,C,u.children,p,x,Be);"value"in _&&i(a,"value",d.value,_.value)}},ie=(a,u,d,_,p,x,C,b,k)=>{const v=u.el=a?a.el:l(""),A=u.anchor=a?a.anchor:l("");let{patchFlag:E,dynamicChildren:L,slotScopeIds:I}=u;I&&(b=b?b.concat(I):I),a==null?(s(v,d,_),s(A,d,_),ne(u.children,d,A,p,x,C,b,k)):E>0&&E&64&&L&&a.dynamicChildren?(_e(a.dynamicChildren,L,d,p,x,C,b),(u.key!=null||p&&u===p.subTree)&&ri(a,u,!0)):He(a,u,d,A,p,x,C,b,k)},ye=(a,u,d,_,p,x,C,b,k)=>{u.slotScopeIds=b,a==null?u.shapeFlag&512?p.ctx.activate(u,d,_,C,k):Ln(u,d,_,p,x,C,k):we(a,u,k)},Ln=(a,u,d,_,p,x,C)=>{const b=a.component=bl(a,_,p);if(Vr(a)&&(b.ctx.renderer=ft),xl(b),b.asyncDep){if(p&&p.registerDep(b,se),!a.el){const k=b.subTree=N(Ke);K(null,k,u,d)}return}se(b,a,u,d,p,x,C)},we=(a,u,d)=>{const _=u.component=a.component;if(Mo(a,u,d))if(_.asyncDep&&!_.asyncResolved){G(_,u,d);return}else _.next=u,To(_.update),_.update();else u.component=a.component,u.el=a.el,_.vnode=u},se=(a,u,d,_,p,x,C)=>{const b=()=>{if(a.isMounted){let{next:A,bu:E,u:L,parent:I,vnode:W}=a,te=A,Q;tt(a,!1),A?(A.el=W.el,G(a,A,C)):A=W,E&&Un(E),(Q=A.props&&A.props.onVnodeBeforeUpdate)&&Se(Q,I,A,W),tt(a,!0);const ee=Rn(a),Ae=a.subTree;a.subTree=ee,m(Ae,ee,g(Ae.el),Jt(Ae),a,p,x),A.el=ee.el,te===null&&Oo(a,ee.el),L&&ke(L,p),(Q=A.props&&A.props.onVnodeUpdated)&&ke(()=>Se(Q,I,A,W),p)}else{let A;const{el:E,props:L}=u,{bm:I,m:W,parent:te}=a,Q=Dt(u);if(tt(a,!1),I&&Un(I),!Q&&(A=L&&L.onVnodeBeforeMount)&&Se(A,te,u),tt(a,!0),E&&Mn){const ee=()=>{a.subTree=Rn(a),Mn(E,a.subTree,a,p,null)};Q?u.type.__asyncLoader().then(()=>!a.isUnmounted&&ee()):ee()}else{const ee=a.subTree=Rn(a);m(null,ee,d,_,a,p,x),u.el=ee.el}if(W&&ke(W,p),!Q&&(A=L&&L.onVnodeMounted)){const ee=u;ke(()=>Se(A,te,ee),p)}u.shapeFlag&256&&a.a&&ke(a.a,p),a.isMounted=!0,u=d=_=null}},k=a.effect=new ls(b,()=>Fr(a.update),a.scope),v=a.update=k.run.bind(k);v.id=a.uid,tt(a,!0),v()},G=(a,u,d)=>{u.component=a;const _=a.vnode.props;a.vnode=u,a.next=null,el(a,u.props,_,d),sl(a,u.children,d),wt(),ps(void 0,a.update),kt()},He=(a,u,d,_,p,x,C,b,k=!1)=>{const v=a&&a.children,A=a?a.shapeFlag:0,E=u.children,{patchFlag:L,shapeFlag:I}=u;if(L>0){if(L&128){Ct(v,E,d,_,p,x,C,b,k);return}else if(L&256){Pn(v,E,d,_,p,x,C,b,k);return}}I&8?(A&16&&Be(v,p,x),E!==v&&h(d,E)):A&16?I&16?Ct(v,E,d,_,p,x,C,b,k):Be(v,p,x,!0):(A&8&&h(d,""),I&16&&ne(E,d,_,p,x,C,b,k))},Pn=(a,u,d,_,p,x,C,b,k)=>{a=a||gt,u=u||gt;const v=a.length,A=u.length,E=Math.min(v,A);let L;for(L=0;LA?Be(a,p,x,!0,!1,E):ne(u,d,_,p,x,C,b,k,E)},Ct=(a,u,d,_,p,x,C,b,k)=>{let v=0;const A=u.length;let E=a.length-1,L=A-1;for(;v<=E&&v<=L;){const I=a[v],W=u[v]=k?Ye(u[v]):Le(u[v]);if(Tt(I,W))m(I,W,d,null,p,x,C,b,k);else break;v++}for(;v<=E&&v<=L;){const I=a[E],W=u[L]=k?Ye(u[L]):Le(u[L]);if(Tt(I,W))m(I,W,d,null,p,x,C,b,k);else break;E--,L--}if(v>E){if(v<=L){const I=L+1,W=IL)for(;v<=E;)ze(a[v],p,x,!0),v++;else{const I=v,W=v,te=new Map;for(v=W;v<=L;v++){const Ce=u[v]=k?Ye(u[v]):Le(u[v]);Ce.key!=null&&te.set(Ce.key,v)}let Q,ee=0;const Ae=L-W+1;let dt=!1,Es=0;const Et=new Array(Ae);for(v=0;v=Ae){ze(Ce,p,x,!0);continue}let Ue;if(Ce.key!=null)Ue=te.get(Ce.key);else for(Q=W;Q<=L;Q++)if(Et[Q-W]===0&&Tt(Ce,u[Q])){Ue=Q;break}Ue===void 0?ze(Ce,p,x,!0):(Et[Ue-W]=v+1,Ue>=Es?Es=Ue:dt=!0,m(Ce,u[Ue],d,null,p,x,C,b,k),ee++)}const Ts=dt?al(Et):gt;for(Q=Ts.length-1,v=Ae-1;v>=0;v--){const Ce=W+v,Ue=u[Ce],Ss=Ce+1{const{el:x,type:C,transition:b,children:k,shapeFlag:v}=a;if(v&6){ut(a.component.subTree,u,d,_);return}if(v&128){a.suspense.move(u,d,_);return}if(v&64){C.move(a,u,d,ft);return}if(C===fe){s(x,u,d);for(let E=0;Eb.enter(x),p);else{const{leave:E,delayLeave:L,afterLeave:I}=b,W=()=>s(x,u,d),te=()=>{E(x,()=>{W(),I&&I()})};L?L(x,W,te):te()}else s(x,u,d)},ze=(a,u,d,_=!1,p=!1)=>{const{type:x,props:C,ref:b,children:k,dynamicChildren:v,shapeFlag:A,patchFlag:E,dirs:L}=a;if(b!=null&&an(b,null,d,a,!0),A&256){u.ctx.deactivate(a);return}const I=A&1&&L,W=!Dt(a);let te;if(W&&(te=C&&C.onVnodeBeforeUnmount)&&Se(te,u,a),A&6)Ei(a.component,d,_);else{if(A&128){a.suspense.unmount(d,_);return}I&&Fe(a,null,u,"beforeUnmount"),A&64?a.type.remove(a,u,d,p,ft,_):v&&(x!==fe||E>0&&E&64)?Be(v,u,d,!1,!0):(x===fe&&E&384||!p&&A&16)&&Be(k,u,d),_&&$s(a)}(W&&(te=C&&C.onVnodeUnmounted)||I)&&ke(()=>{te&&Se(te,u,a),I&&Fe(a,null,u,"unmounted")},d)},$s=a=>{const{type:u,el:d,anchor:_,transition:p}=a;if(u===fe){Ci(d,_);return}if(u===Ut){Y(a);return}const x=()=>{r(d),p&&!p.persisted&&p.afterLeave&&p.afterLeave()};if(a.shapeFlag&1&&p&&!p.persisted){const{leave:C,delayLeave:b}=p,k=()=>C(d,x);b?b(a.el,x,k):k()}else x()},Ci=(a,u)=>{let d;for(;a!==u;)d=y(a),r(a),a=d;r(u)},Ei=(a,u,d)=>{const{bum:_,scope:p,update:x,subTree:C,um:b}=a;_&&Un(_),p.stop(),x&&(x.active=!1,ze(C,a,u,d)),b&&ke(b,u),ke(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Be=(a,u,d,_=!1,p=!1,x=0)=>{for(let C=x;Ca.shapeFlag&6?Jt(a.component.subTree):a.shapeFlag&128?a.suspense.next():y(a.anchor||a.el),Cs=(a,u,d)=>{a==null?u._vnode&&ze(u._vnode,null,null,!0):m(u._vnode||null,a,u,null,null,null,d),on(),u._vnode=a},ft={p:m,um:ze,m:ut,r:$s,mt:Ln,mc:ne,pc:He,pbc:_e,n:Jt,o:e};let In,Mn;return t&&([In,Mn]=t(ft)),{render:Cs,hydrate:In,createApp:il(Cs,In)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ri(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const ul=e=>e.__isTeleport,ii="components";function un(e,t){return dl(ii,e,!0,t)||e}const fl=Symbol();function dl(e,t,n=!0,s=!1){const r=$e||pe;if(r){const i=r.type;if(e===ii){const l=$l(i);if(l&&(l===t||l===Ne(t)||l===bn(Ne(t))))return i}const o=Ws(r[e]||i[e],t)||Ws(r.appContext[e],t);return!o&&s?i:o}}function Ws(e,t){return e&&(e[t]||e[Ne(t)]||e[bn(Ne(t))])}const fe=Symbol(void 0),jt=Symbol(void 0),Ke=Symbol(void 0),Ut=Symbol(void 0),Rt=[];let ot=null;function T(e=!1){Rt.push(ot=e?null:[])}function hl(){Rt.pop(),ot=Rt[Rt.length-1]||null}let fn=1;function zs(e){fn+=e}function oi(e){return e.dynamicChildren=fn>0?ot||gt:null,hl(),fn>0&&ot&&ot.push(e),e}function U(e,t,n,s,r,i){return oi(R(e,t,n,s,r,i,!0))}function ge(e,t,n,s,r){return oi(N(e,t,n,s,r,!0))}function dn(e){return e?e.__v_isVNode===!0:!1}function Tt(e,t){return e.type===t.type&&e.key===t.key}const Sn="__vInternal",li=({key:e})=>e!=null?e:null,nn=({ref:e,ref_key:t,ref_for:n})=>e!=null?he(e)||de(e)||F(e)?{i:$e,r:e,k:t,f:!!n}:e:null;function R(e,t=null,n=null,s=0,r=null,i=e===fe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&li(t),ref:t&&nn(t),scopeId:Cn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ms(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=he(n)?8:16),fn>0&&!o&&ot&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&ot.push(c),c}const N=pl;function pl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===fl)&&(e=Ke),dn(e)){const l=qt(e,t,!0);return n&&ms(l,n),l}if(Cl(e)&&(e=e.__vccOpts),t){t=_l(t);let{class:l,style:c}=t;l&&!he(l)&&(t.class=ct(l)),ue(c)&&(Ar(c)&&!O(c)&&(c=xe({},c)),t.style=ts(c))}const o=he(e)?1:Uo(e)?128:ul(e)?64:ue(e)?4:F(e)?2:0;return R(e,t,n,s,r,o,i,!0)}function _l(e){return e?Ar(e)||Sn in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?vs(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&li(l),ref:t&&t.ref?n&&r?O(r)?r.concat(nn(t)):[r,nn(t)]:nn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor}}function zt(e=" ",t=0){return N(jt,null,e,t)}function ef(e,t){const n=N(Ut,null,e);return n.staticCount=t,n}function J(e="",t=!1){return t?(T(),ge(Ke,null,e)):N(Ke,null,e)}function Le(e){return e==null||typeof e=="boolean"?N(Ke):O(e)?N(fe,null,e.slice()):typeof e=="object"?Ye(e):N(jt,null,String(e))}function Ye(e){return e.el===null||e.memo?e:qt(e)}function ms(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ms(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Sn in t)?t._ctx=$e:r===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),s&64?(n=16,t=[zt(t)]):n=8);e.children=t,e.shapeFlag|=n}function vs(...e){const t={};for(let n=0;nt(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;ldn(t)?!(t.type===Ke||t.type===fe&&!ci(t.children)):!0)?e:null}const Yn=e=>e?ai(e)?bs(e)||e.proxy:Yn(e.parent):null,hn=xe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Yn(e.parent),$root:e=>Yn(e.root),$emit:e=>e.emit,$options:e=>Xr(e),$forceUpdate:e=>()=>Fr(e.update),$nextTick:e=>Rr.bind(e.proxy),$watch:e=>Fo.bind(e)}),gl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const S=o[t];if(S!==void 0)switch(S){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(s!==Z&&q(s,t))return o[t]=1,s[t];if(r!==Z&&q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return o[t]=3,i[t];if(n!==Z&&q(n,t))return o[t]=4,n[t];Vn&&(o[t]=0)}}const h=hn[t];let g,y;if(h)return t==="$attrs"&&Te(e,"get",t),h(e);if((g=l.__cssModules)&&(g=g[t]))return g;if(n!==Z&&q(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,q(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return r!==Z&&q(r,t)?(r[t]=n,!0):s!==Z&&q(s,t)?(s[t]=n,!0):q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&q(e,o)||t!==Z&&q(t,o)||(l=i[0])&&q(l,o)||q(s,o)||q(hn,o)||q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},ml=si();let vl=0;function bl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ml,i={uid:vl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new qi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Gr(s,r),emitsOptions:Dr(s,r),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:s.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Lo.bind(null,i),e.ce&&e.ce(i),i}let pe=null;const bt=e=>{pe=e,e.scope.on()},lt=()=>{pe&&pe.scope.off(),pe=null};function ai(e){return e.vnode.shapeFlag&4}let Kt=!1;function xl(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=ai(e);Go(e,n,r,t),nl(e,s);const i=r?yl(e,t):void 0;return Kt=!1,i}function yl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,gl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?kl(e):null;bt(e),wt();const i=Ze(s,e,0,[e.props,r]);if(kt(),lt(),pr(i)){if(i.then(lt,lt),t)return i.then(o=>{Vs(e,o,t)}).catch(o=>{kn(o,e,0)});e.asyncDep=i}else Vs(e,i,t)}else ui(e,t)}function Vs(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=Mr(t)),ui(e,n)}let Js;function ui(e,t,n){const s=e.type;if(!e.render){if(!t&&Js&&!s.render){const r=s.template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=xe(xe({isCustomElement:i,delimiters:l},o),c);s.render=Js(r,f)}}e.render=s.render||Me}bt(e),wt(),Jo(e),kt(),lt()}function wl(e){return new Proxy(e.attrs,{get(t,n){return Te(e,"get","$attrs"),t[n]}})}function kl(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=wl(e))},slots:e.slots,emit:e.emit,expose:t}}function bs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Mr(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)}}))}function $l(e){return F(e)&&e.displayName||e.name}function Cl(e){return F(e)&&"__vccOpts"in e}const D=(e,t)=>$o(e,t,Kt);function at(e,t,n){const s=arguments.length;return s===2?ue(t)&&!O(t)?dn(t)?N(e,null,[t]):N(e,t):N(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&dn(n)&&(n=[n]),N(e,t,n))}const El="3.2.33",Tl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,Qs=st&&st.createElement("template"),Sl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?st.createElementNS(Tl,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Qs.innerHTML=s?`${e}`:e;const l=Qs.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Al(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ll(e,t,n){const s=e.style,r=he(n);if(n&&!r){for(const i in n)Xn(s,i,n[i]);if(t&&!he(t))for(const i in t)n[i]==null&&Xn(s,i,"")}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Ys=/\s*!important$/;function Xn(e,t,n){if(O(n))n.forEach(s=>Xn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Pl(e,t);Ys.test(n)?e.setProperty(yt(s),n.replace(Ys,""),"important"):e[s]=n}}const Xs=["Webkit","Moz","ms"],Nn={};function Pl(e,t){const n=Nn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return Nn[t]=s;s=bn(s);for(let r=0;r{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Zn=0;const Ul=Promise.resolve(),Rl=()=>{Zn=0},Fl=()=>Zn||(Ul.then(Rl),Zn=fi());function Nl(e,t,n,s){e.addEventListener(t,n,s)}function Hl(e,t,n,s){e.removeEventListener(t,n,s)}function Bl(e,t,n,s,r=null){const i=e._vei||(e._vei={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Dl(t);if(s){const f=i[t]=jl(s,r);Nl(e,l,f,c)}else o&&(Hl(e,l,o,c),i[t]=void 0)}}const Gs=/(?:Once|Passive|Capture)$/;function Dl(e){let t;if(Gs.test(e)){t={};let n;for(;n=e.match(Gs);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[yt(e.slice(2)),t]}function jl(e,t){const n=s=>{const r=s.timeStamp||fi();(Ol||r>=n.attached-1)&&Oe(ql(s,n.value),t,5,[s])};return n.value=e,n.attached=Fl(),n}function ql(e,t){if(O(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const er=/^on[a-z]/,Kl=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Al(e,s,r):t==="style"?Ll(e,n,s):Wt(t)?ns(t)||Bl(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wl(e,t,s,r))?Ml(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Il(e,t,s,r))};function Wl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&er.test(t)&&F(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||er.test(t)&&he(n)?!1:t in e}const zl=xe({patchProp:Kl},Sl);let Hn,tr=!1;function Vl(){return Hn=tr?Hn:ll(zl),tr=!0,Hn}const Jl=(...e)=>{const t=Vl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ql(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ql(e){return he(e)?document.querySelector(e):e}var Yl='{"lang":"en-US","title":"VitePress","description":"A VitePress site","base":"/","head":[],"themeConfig":{"locales":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","nav":[{"text":"\u4F7F\u7528\u6307\u5357","link":"/","activeMatch":"^/$|^/guide/"},{"text":"\u5F00\u53D1\u624B\u518C","link":"/developer/basics","activeMatch":"^/developer/"}],"sidebar":{"/guide/":[{"text":"\u54EA\u5412\u76D1\u63A7","children":[{"text":"\u4ECB\u7ECD","link":"/"}]},{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"TG api\u88AB\u5899","link":"/guide/q1"},{"text":"\u95EE\u98982","link":"/guide/q2"},{"text":"\u95EE\u98983","link":"/guide/q3"},{"text":"\u95EE\u98984","link":"/guide/q4"},{"text":"\u95EE\u98985","link":"/guide/q5"}]}],"/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/developer/homepage"},{"text":"Algolia Search","link":"/developer/algolia-search"},{"text":"Carbon Ads","link":"/developer/carbon-ads"}]}],"/":[{"text":"\u54EA\u5412\u76D1\u63A7","children":[{"text":"\u4ECB\u7ECD","link":"/"}]},{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"TG api\u88AB\u5899","link":"/guide/q1"},{"text":"\u95EE\u98982","link":"/guide/q2"},{"text":"\u95EE\u98983","link":"/guide/q3"},{"text":"\u95EE\u98984","link":"/guide/q4"},{"text":"\u95EE\u98985","link":"/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"\u5728GitHub\u4E2D\u7F16\u8F91","lastUpdated":"\u4E0A\u6B21\u66F4\u65B0"},"/en_US/":{"label":"English","nav":[{"text":"User Guide","link":"/en_US/","activeMatch":"^/$|^/en_US/guide/"},{"text":"Development Manual","link":"/en_US/developer/basics","activeMatch":"^/en_US/developer/"}],"sidebar":{"/en_US/guide/":[{"text":"Nezha Monitoring","children":[{"text":"Introduction","link":"/en_US/"}]},{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Q1","link":"/en_US/guide/q1"},{"text":"Q2","link":"/en_US/guide/q2"},{"text":"Q3","link":"/en_US/guide/q3"},{"text":"Q4","link":"/en_US/guide/q4"},{"text":"Q5","link":"/en_US/guide/q5"}]}],"/en_US/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/en_US/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/en_US/developer/homepage"},{"text":"Algolia Search","link":"/en_US/developer/algolia-search"},{"text":"Carbon Ads","link":"/en_US/developer/carbon-ads"}]}],"/en_US/":[{"text":"Nezha Monitoring","children":[{"text":"Introduction","link":"/en_US/"}]},{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Q1","link":"/en_US/guide/q1"},{"text":"Q2","link":"/en_US/guide/q2"},{"text":"Q3","link":"/en_US/guide/q3"},{"text":"Q4","link":"/en_US/guide/q4"},{"text":"Q5","link":"/en_US/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"Edit this page on GitHub","lastUpdated":"Last Updated"}}},"locales":{"/":{"lang":"zh-CN","title":"\u54EA\u5412\u76D1\u63A7","description":"\u54EA\u5412\u76D1\u63A7\u662F\u4E00\u4E2A\u8F7B\u91CF\u5316\u7684\u8FD0\u7EF4\u5DE5\u5177"},"/en_US/":{"lang":"en-US","title":"Nezha Monitoring","description":"Nezha Monitoring is a lightweight O&M tool"}},"langs":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","lang":"zh-CN"},"/en_US/":{"label":"English","lang":"en-US"}},"scrollOffset":90}';const di=/^https?:/i,Ie=typeof window!="undefined";function Xl(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function nr(e,t){const n=Xl(t,Object.keys(e));return n?e[n]:void 0}function Zl(e){const{locales:t}=e.themeConfig||{},n=e.locales;return t&&n?Object.keys(t).reduce((s,r)=>(s[r]={label:t[r].label,lang:n[r].lang},s),{}):{}}function Gl(e,t){t=ec(e,t);const n=nr(e.locales||{},t),s=nr(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:Zl(e)})}function ec(e,t){if(!Ie)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const hi=Symbol(),Vt=vo(tc(Yl));function tc(e){return JSON.parse(e)}function nc(e){const t=D(()=>Gl(Vt.value,e.path));return{site:t,theme:D(()=>t.value.themeConfig),page:D(()=>e.data),frontmatter:D(()=>e.data.frontmatter),lang:D(()=>t.value.lang),localePath:D(()=>{const{langs:n,lang:s}=t.value,r=Object.keys(n).find(i=>n[i].lang===s);return xt(r||"/")}),title:D(()=>e.data.title?e.data.title+" | "+t.value.title:t.value.title),description:D(()=>e.data.description||t.value.description)}}function me(){const e=Ot(hi);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function xt(e){return di.test(e)?e:sc(Vt.value.base,e)}function pi(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t.endsWith("/")&&(t+="index"),Ie){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const _i=Symbol(),sr="http://a.com",gi={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},rc=()=>({path:"/",component:null,data:gi});function ic(e,t){const n=yn(rc());function s(o=Ie?location.href:"/"){const l=new URL(o,sr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",o=l.pathname+l.search+l.hash),Ie&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",o)),i(o)}let r=null;async function i(o,l=0,c=!1){const f=new URL(o,sr),h=r=f.pathname;try{let g=e(h);if("then"in g&&typeof g.then=="function"&&(g=await g),r===h){r=null;const{default:y,__pageData:S}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=Pt(y),n.data=Pt(JSON.parse(S)),Ie&&Rr(()=>{if(f.hash&&!l){let M=null;try{M=document.querySelector(decodeURIComponent(f.hash))}catch(V){console.warn(V)}if(M){rr(M,f.hash);return}}window.scrollTo(0,l)})}}catch(g){if(g.message.match(/fetch/)||console.error(g),!c)try{const y=await fetch(Vt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await y.json(),await i(o,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?Pt(t):null,n.data=gi)}}return Ie&&(window.addEventListener("click",o=>{const l=o.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:g,hash:y,target:S}=l,M=window.location,V=g.match(/\.\w+$/);!o.ctrlKey&&!o.shiftKey&&!o.altKey&&!o.metaKey&&S!=="_blank"&&f===M.protocol&&h===M.hostname&&!(V&&V[0]!==".html")&&(o.preventDefault(),g===M.pathname?y&&y!==M.hash&&(history.pushState(null,"",y),window.dispatchEvent(new Event("hashchange")),rr(l,y,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",o=>{i(location.href,o.state&&o.state.scrollPosition||0)}),window.addEventListener("hashchange",o=>{o.preventDefault()})),{route:n,go:s}}function oc(){const e=Ot(_i);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return oc().route}function rr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){let r=Vt.value.scrollOffset;typeof r=="string"&&(r=document.querySelector(r).getBoundingClientRect().bottom+24);const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-r+i;!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})}}function lc(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}const o=[],l=Math.min(n.length,i.length);for(let c=0;cdocument.head.removeChild(c)),i.slice(l).forEach(c=>{const f=ir(c);document.head.appendChild(f),o.push(f)}),n=o};Wr(()=>{const i=e.data,o=t.value,l=i&&i.title,c=i&&i.description,f=i&&i.frontmatter.head;document.title=(l?l+" | ":"")+o.title,document.querySelector("meta[name=description]").setAttribute("content",c||o.description),r([...f?ac(f):[]])})}function ir([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function cc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function ac(e){return e.filter(t=>!cc(t))}const uc=oe({name:"VitePressContent",setup(){const e=et();return()=>at("div",{style:{position:"relative"}},[e.component?at(e.component):null])}});var ce=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const fc=/#.*$/,dc=/(index)?\.(md|html)$/,pn=/\/$/,hc=/^[a-z]+:/i;function xs(e){return Array.isArray(e)}function ys(e){return hc.test(e)}function pc(e,t){if(t===void 0)return!1;const n=or(`/${e.data.relativePath}`),s=or(t);return n===s}function or(e){return decodeURI(e).replace(fc,"").replace(dc,"")}function _c(e,t){const n=e.endsWith("/"),s=t.startsWith("/");return n&&s?e.slice(0,-1)+t:!n&&!s?`${e}/${t}`:e+t}function Gn(e){return/^\//.test(e)?e:`/${e}`}function mi(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function gc(e){return e===!1||e==="auto"||xs(e)}function mc(e){return e.children!==void 0}function vc(e){return xs(e)?e.length===0:!e}function ws(e,t){if(gc(e))return e;t=Gn(t);for(const n in e)if(t.startsWith(Gn(n)))return e[n];return"auto"}function vi(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:mi(n.link)}),mc(n)&&(t=[...t,...vi(n.children)]),t),[])}function bi(e){const t=et(),n=ys(e.value.link);return{props:D(()=>{const r=lr(`/${t.data.relativePath}`);let i=!1;if(e.value.activeMatch)i=new RegExp(e.value.activeMatch).test(r);else{const o=lr(e.value.link);i=o==="/"?o===r:r.startsWith(o)}return{class:{active:i,isExternal:n},href:n?e.value.link:xt(e.value.link),target:e.value.target||(n?"_blank":null),rel:e.value.rel||(n?"noopener noreferrer":null),"aria-label":e.value.ariaLabel}}),isExternal:n}}function lr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const bc={},xc={class:"icon outbound",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},yc=R("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"},null,-1),wc=R("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"},null,-1),kc=[yc,wc];function $c(e,t){return T(),U("svg",xc,kc)}var ks=ce(bc,[["render",$c]]);const Cc={class:"nav-link"},Ec=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(T(),U("div",Cc,[R("a",vs({class:"item"},$(s)),[zt(be(e.item.text)+" ",1),$(r)?(T(),ge(ks,{key:0})):J("",!0)],16)]))}});var _n=ce(Ec,[["__scopeId","data-v-b8818f8c"]]);const Tc={key:0,class:"home-hero"},Sc={key:0,class:"figure"},Ac=["src","alt"],Lc={key:1,id:"main-title",class:"title"},Pc={key:2,class:"tagline"},Ic=oe({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:o,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return o||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),i=D(()=>n.value.tagline||t.value.description);return(o,l)=>$(s)?(T(),U("header",Tc,[$(n).heroImage?(T(),U("figure",Sc,[R("img",{class:"image",src:$(xt)($(n).heroImage),alt:$(n).heroAlt},null,8,Ac)])):J("",!0),$(r)?(T(),U("h1",Lc,be($(r)),1)):J("",!0),$(i)?(T(),U("p",Pc,be($(i)),1)):J("",!0),$(n).actionLink&&$(n).actionText?(T(),ge(_n,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):J("",!0),$(n).altActionLink&&$(n).altActionText?(T(),ge(_n,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):J("",!0)])):J("",!0)}});var Mc=ce(Ic,[["__scopeId","data-v-370f18c0"]]);const Oc={key:0,class:"home-features"},Uc={class:"wrapper"},Rc={class:"container"},Fc={class:"features"},Nc={key:0,class:"title"},Hc={key:1,class:"details"},Bc=oe({setup(e){const{frontmatter:t}=me(),n=D(()=>t.value.features&&t.value.features.length>0),s=D(()=>t.value.features?t.value.features:[]);return(r,i)=>$(n)?(T(),U("div",Oc,[R("div",Uc,[R("div",Rc,[R("div",Fc,[(T(!0),U(fe,null,An($(s),(o,l)=>(T(),U("section",{key:l,class:"feature"},[o.title?(T(),U("h2",Nc,be(o.title),1)):J("",!0),o.details?(T(),U("p",Hc,be(o.details),1)):J("",!0)]))),128))])])])])):J("",!0)}});var Dc=ce(Bc,[["__scopeId","data-v-e39c13e0"]]);const jc={key:0,class:"footer"},qc={class:"container"},Kc={class:"text"},Wc=oe({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(T(),U("footer",jc,[R("div",qc,[R("p",Kc,be($(t).footer),1)])])):J("",!0)}});var zc=ce(Wc,[["__scopeId","data-v-30918238"]]);const Vc={class:"home","aria-labelledby":"main-title"},Jc={class:"home-content"},Qc=oe({setup(e){return(t,n)=>{const s=un("Content");return T(),U("main",Vc,[N(Mc),ae(t.$slots,"hero",{},void 0,!0),N(Dc),R("div",Jc,[N(s)]),ae(t.$slots,"features",{},void 0,!0),N(zc),ae(t.$slots,"footer",{},void 0,!0)])}}});var Yc=ce(Qc,[["__scopeId","data-v-10122c92"]]);const Xc=["href","aria-label"],Zc=["src"],Gc=oe({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,i)=>(T(),U("a",{class:"nav-bar-title",href:$(s),"aria-label":`${$(t).title}, back to home`},[$(n).logo?(T(),U("img",{key:0,class:"logo",src:$(xt)($(n).logo),alt:"Logo"},null,8,Zc)):J("",!0),zt(" "+be($(t).title),1)],8,Xc))}});var ea=ce(Gc,[["__scopeId","data-v-cc01ef16"]]);function ta(){const{site:e,localePath:t,theme:n}=me();return D(()=>{const s=e.value.langs,r=Object.keys(s);if(r.length<2)return null;const o=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${o}`}));return{text:n.value.selectText||"Languages",items:l}})}const na=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function sa(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=ra(n);return{text:ia(s,t.repoLabel),link:s}})}function ra(e){return di.test(e)?e:`https://github.com/${e}`}function ia(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=na.find(([r,i])=>i.test(n[0]));return s&&s[0]?s[0]:"Source"}const oa=e=>(jr("data-v-bbc27490"),e=e(),qr(),e),la={class:"nav-dropdown-link-item"},ca=oa(()=>R("span",{class:"arrow"},null,-1)),aa={class:"text"},ua={class:"icon"},fa=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(T(),U("div",la,[R("a",vs({class:"item"},$(s)),[ca,R("span",aa,be(e.item.text),1),R("span",ua,[$(r)?(T(),ge(ks,{key:0})):J("",!0)])],16)]))}});var da=ce(fa,[["__scopeId","data-v-bbc27490"]]);const ha=["aria-label"],pa={class:"button-text"},_a={class:"dialog"},ga=oe({props:{item:null},setup(e){const t=et(),n=wn(!1);it(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,i)=>(T(),U("div",{class:ct(["nav-dropdown-link",{open:n.value}])},[R("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[R("span",pa,be(e.item.text),1),R("span",{class:ct(["button-arrow",n.value?"down":"right"])},null,2)],8,ha),R("ul",_a,[(T(!0),U(fe,null,An(e.item.items,o=>(T(),U("li",{key:o.text,class:"dialog-item"},[N(da,{item:o},null,8,["item"])]))),128))])],2))}});var cr=ce(ga,[["__scopeId","data-v-56bf3a3f"]]);const ma={key:0,class:"nav-links"},va={key:1,class:"item"},ba={key:2,class:"item"},xa=oe({setup(e){const{theme:t}=me(),n=ta(),s=sa(),r=D(()=>t.value.nav||s.value||n.value);return(i,o)=>$(r)?(T(),U("nav",ma,[$(t).nav?(T(!0),U(fe,{key:0},An($(t).nav,l=>(T(),U("div",{key:l.text,class:"item"},[l.items?(T(),ge(cr,{key:0,item:l},null,8,["item"])):(T(),ge(_n,{key:1,item:l},null,8,["item"]))]))),128)):J("",!0),$(n)?(T(),U("div",va,[N(cr,{item:$(n)},null,8,["item"])])):J("",!0),$(s)?(T(),U("div",ba,[N(_n,{item:$(s)},null,8,["item"])])):J("",!0)])):J("",!0)}});var xi=ce(xa,[["__scopeId","data-v-eab3edfe"]]);const ya={emits:["toggle"]},wa=R("svg",{class:"icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"},[R("path",{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z",class:""})],-1),ka=[wa];function $a(e,t,n,s,r,i){return T(),U("div",{class:"sidebar-button",onClick:t[0]||(t[0]=o=>e.$emit("toggle"))},ka)}var Ca=ce(ya,[["render",$a]]);const Ea=e=>(jr("data-v-675d8756"),e=e(),qr(),e),Ta={class:"nav-bar"},Sa=Ea(()=>R("div",{class:"flex-grow"},null,-1)),Aa={class:"nav"},La=oe({emits:["toggle"],setup(e){return(t,n)=>(T(),U("header",Ta,[N(Ca,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),N(ea),Sa,R("div",Aa,[N(xi)]),ae(t.$slots,"search",{},void 0,!0)]))}});var Pa=ce(La,[["__scopeId","data-v-675d8756"]]);function Ia(){let e=null,t=null;const n=Fa(s,300);function s(){const o=Ma(),l=Oa(o);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function i(o){o&&o.classList.remove("active")}$t(()=>{s(),window.addEventListener("scroll",n)}),Qr(()=>{r(decodeURIComponent(location.hash))}),Tn(()=>{window.removeEventListener("scroll",n)})}function Ma(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Oa(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Ua(){return document.querySelector(".nav-bar").offsetHeight}function ar(e){const t=Ua();return e.parentElement.offsetTop-t-15}function Ra(e,t,n){const s=window.scrollY;return e===0&&s===0?[!0,null]:s{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Na(){const e=et(),{site:t}=me();return Ia(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return ur(n,r);const i=ws(t.value.themeConfig.sidebar,e.data.relativePath);return i===!1?[]:i==="auto"?ur(n,r):i})}function ur(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:i,slug:o})=>{if(r-1>t)return;const l={text:i,link:`#${o}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const yi=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,i=s.value.sidebarDepth||1/0,o=t.data.headers,l=e.item.text,c=Ha(n.value.base,e.item.link),f=e.item.children,h=pc(t,e.item.link),g=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(yi,{item:r,depth:s}))):e&&n?wi(!1,Ba(n),void 0,s):null}function Ba(e){return ki(Da(e))}function Da(e){e=e.map(n=>Object.assign({},n));let t;return e.forEach(n=>{n.level===2?t=n:t&&(t.children||(t.children=[])).push(n)}),e.filter(n=>n.level===2)}function ki(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?ki(t.children):void 0}))}const ja={key:0,class:"sidebar-links"},qa=oe({setup(e){const t=Na();return(n,s)=>$(t).length>0?(T(),U("ul",ja,[(T(!0),U(fe,null,An($(t),r=>(T(),ge($(yi),{item:r},null,8,["item"]))),256))])):J("",!0)}});const Ka=oe({props:{open:{type:Boolean}},setup(e){return(t,n)=>(T(),U("aside",{class:ct(["sidebar",{open:e.open}])},[N(xi,{class:"nav"}),ae(t.$slots,"sidebar-top",{},void 0,!0),N(qa),ae(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var Wa=ce(Ka,[["__scopeId","data-v-83e92a68"]]);const za=/bitbucket.org/;function Va(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:i,docsDir:o="",docsBranch:l="master",docsRepo:c=i,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:g}=e.value;return!h||!g||!i?null:Ja(i,c,o,l,g)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function Ja(e,t,n,s,r){return za.test(e)?Ya(e,t,n,s,r):Qa(e,t,n,s,r)}function Qa(e,t,n,s,r){return(ys(t)?t:`https://github.com/${t}`).replace(pn,"")+`/edit/${s}/`+(n?n.replace(pn,"")+"/":"")+r}function Ya(e,t,n,s,r){return(ys(t)?t:e).replace(pn,"")+`/src/${s}/`+(n?n.replace(pn,"")+"/":"")+r+`?mode=edit&spa=0&at=${s}&fileviewer=file-view-default`}const Xa={class:"edit-link"},Za=["href"],Ga=oe({setup(e){const{url:t,text:n}=Va();return(s,r)=>(T(),U("div",Xa,[$(t)?(T(),U("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[zt(be($(n))+" ",1),N(ks,{class:"icon"})],8,Za)):J("",!0)]))}});var eu=ce(Ga,[["__scopeId","data-v-1ed99556"]]);const tu={key:0,class:"last-updated"},nu={class:"prefix"},su={class:"datetime"},ru=oe({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const o=t.value.lastUpdated;return o!==void 0&&o!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const o=t.value.lastUpdated;return o===!0?"Last Updated":o}),i=wn("");return $t(()=>{Wr(()=>{i.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(o,l)=>$(s)?(T(),U("p",tu,[R("span",nu,be($(r))+":",1),R("span",su,be(i.value),1)])):J("",!0)}});var iu=ce(ru,[["__scopeId","data-v-abce3432"]]);const ou={class:"page-footer"},lu={class:"edit"},cu={class:"updated"},au=oe({setup(e){const{page:t}=me();return(n,s)=>(T(),U("footer",ou,[R("div",lu,[N(eu)]),R("div",cu,[$(t).lastUpdated?(T(),ge(iu,{key:0})):J("",!0)])]))}});var uu=ce(au,[["__scopeId","data-v-07c132fc"]]);function fu(){const{page:e,theme:t}=me(),n=D(()=>mi(Gn(e.value.relativePath))),s=D(()=>{const c=ws(t.value.sidebar,n.value);return xs(c)?vi(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),i=D(()=>{if(t.value.nextLinks!==!1&&r.value>-1&&r.value{if(t.value.prevLinks!==!1&&r.value>0)return s.value[r.value-1]}),l=D(()=>!!i.value||!!o.value);return{next:i,prev:o,hasLinks:l}}const du={},hu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},pu=R("path",{d:"M19,11H7.4l5.3-5.3c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-7,7c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.1,0.1,0.2,0.2,0.3l7,7c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L7.4,13H19c0.6,0,1-0.4,1-1S19.6,11,19,11z"},null,-1),_u=[pu];function gu(e,t){return T(),U("svg",hu,_u)}var mu=ce(du,[["render",gu]]);const vu={},bu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},xu=R("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),yu=[xu];function wu(e,t){return T(),U("svg",bu,yu)}var ku=ce(vu,[["render",wu]]);const $u={key:0,class:"next-and-prev-link"},Cu={class:"container"},Eu={class:"prev"},Tu=["href"],Su={class:"text"},Au={class:"next"},Lu=["href"],Pu={class:"text"},Iu=oe({setup(e){const{hasLinks:t,prev:n,next:s}=fu();return(r,i)=>$(t)?(T(),U("div",$u,[R("div",Cu,[R("div",Eu,[$(n)?(T(),U("a",{key:0,class:"link",href:$(xt)($(n).link)},[N(mu,{class:"icon icon-prev"}),R("span",Su,be($(n).text),1)],8,Tu)):J("",!0)]),R("div",Au,[$(s)?(T(),U("a",{key:0,class:"link",href:$(xt)($(s).link)},[R("span",Pu,be($(s).text),1),N(ku,{class:"icon icon-next"})],8,Lu)):J("",!0)])])])):J("",!0)}});var Mu=ce(Iu,[["__scopeId","data-v-38ede35f"]]);const Ou={class:"page"},Uu={class:"container"},Ru=oe({setup(e){return(t,n)=>{const s=un("Content");return T(),U("main",Ou,[R("div",Uu,[ae(t.$slots,"top",{},void 0,!0),N(s,{class:"content"}),N(uu),N(Mu),ae(t.$slots,"bottom",{},void 0,!0)])])}}});var Fu=ce(Ru,[["__scopeId","data-v-7eddb2c4"]]);const Nu={key:0,id:"ads-container"},Hu=oe({setup(e){const t=()=>null,n=t,s=t,r=t,i=et(),{site:o,page:l,theme:c,frontmatter:f}=me(),h=D(()=>!!f.value.customLayout),g=D(()=>!!f.value.home),y=D(()=>Object.keys(o.value.langs).length>1),S=D(()=>{const P=c.value;return f.value.navbar===!1||P.navbar===!1?!1:o.value.title||P.logo||P.repo||P.nav}),M=wn(!1),V=D(()=>f.value.home||f.value.sidebar===!1?!1:!vc(ws(c.value.sidebar,i.data.relativePath))),m=P=>{M.value=typeof P=="boolean"?P:!M.value},w=m.bind(null,!1);it(i,w);const K=D(()=>[{"no-navbar":!S.value,"sidebar-open":M.value,"no-sidebar":!V.value}]);return(P,H)=>{const Y=un("Content"),X=un("Debug");return T(),U(fe,null,[R("div",{class:ct(["theme",$(K)])},[$(S)?(T(),ge(Pa,{key:0,onToggle:m},{search:De(()=>[ae(P.$slots,"navbar-search",{},()=>[$(c).algolia?(T(),ge($(r),{key:0,options:$(c).algolia,multilang:$(y)},null,8,["options","multilang"])):J("",!0)])]),_:3})):J("",!0),N(Wa,{open:M.value},{"sidebar-top":De(()=>[ae(P.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ae(P.$slots,"sidebar-bottom")]),_:3},8,["open"]),R("div",{class:"sidebar-mask",onClick:H[0]||(H[0]=B=>m(!1))}),$(h)?(T(),ge(Y,{key:1})):$(g)?ae(P.$slots,"home",{key:2},()=>[N(Yc,null,{hero:De(()=>[ae(P.$slots,"home-hero")]),features:De(()=>[ae(P.$slots,"home-features")]),footer:De(()=>[ae(P.$slots,"home-footer")]),_:3})]):(T(),ge(Fu,{key:3},{top:De(()=>[ae(P.$slots,"page-top-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.carbon?(T(),U("div",Nu,[(T(),ge($(n),{key:"carbon"+$(l).relativePath,code:$(c).carbonAds.carbon,placement:$(c).carbonAds.placement},null,8,["code","placement"]))])):J("",!0)]),ae(P.$slots,"page-top")]),bottom:De(()=>[ae(P.$slots,"page-bottom"),ae(P.$slots,"page-bottom-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.custom?(T(),ge($(s),{key:"custom"+$(l).relativePath,code:$(c).carbonAds.custom,placement:$(c).carbonAds.placement},null,8,["code","placement"])):J("",!0)])]),_:3}))],2),N(X)],64)}}}),Bu={class:"theme"},Du=R("h1",null,"404",-1),ju=["href"],qu=oe({setup(e){const{site:t}=me(),n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];function s(){return n[Math.floor(Math.random()*n.length)]}return(r,i)=>(T(),U("div",Bu,[Du,R("blockquote",null,be(s()),1),R("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,ju)]))}}),gn={Layout:Hu,NotFound:qu},Bn=new Set,$i=()=>document.createElement("link"),Ku=e=>{const t=$i();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Wu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const zu=Ie&&(tn=$i())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?Ku:Wu;function Vu(){if(!Ie||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Bn.has(c)){Bn.add(c);const f=pi(c);zu(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o,hostname:l,pathname:c}=i,f=c.match(/\.\w+$/);f&&f[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Bn.add(c))})})};$t(s);const r=et();it(()=>r.path,s),Tn(()=>{n&&n.disconnect()})}const Ju=oe({setup(e,{slots:t}){const n=wn(!1);return $t(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),Qu=gn.NotFound||(()=>"404 Not Found"),Yu={name:"VitePressApp",setup(){const{site:e}=me();return $t(()=>{it(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),Vu(),()=>at(gn.Layout)}};function Xu(){const e=Gu(),t=Zu();t.provide(_i,e);const n=nc(e.route);return t.provide(hi,n),t.component("Content",uc),t.component("ClientOnly",Ju),t.component("Debug",()=>null),Object.defineProperty(t.config.globalProperties,"$frontmatter",{get(){return n.frontmatter.value}}),gn.enhanceApp&&gn.enhanceApp({app:t,router:e,siteData:Vt}),{app:t,router:e,data:n}}function Zu(){return Jl(Yu)}function Gu(){let e=Ie,t;return ic(n=>{let s=pi(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Ie?(e=!1,Ai(()=>import(s),[])):require(s)},Qu)}if(Ie){const{app:e,router:t,data:n}=Xu();t.go().then(()=>{lc(t.route,n.site),e.mount("#app")})}export{ce as _,ef as a,R as b,U as c,Xu as createApp,zt as d,T as o}; diff --git a/assets/app.32957174.js b/assets/app.32957174.js new file mode 100644 index 00000000..7280758f --- /dev/null +++ b/assets/app.32957174.js @@ -0,0 +1 @@ +const Ti="modulepreload",Ps={},Ai="/",Pi=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Ai}${s}`,s in Ps)return;Ps[s]=!0;const r=s.endsWith(".css"),i=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${i}`))return;const o=document.createElement("link");if(o.rel=r?"stylesheet":Ti,r||(o.as="script",o.crossOrigin=""),o.href=s,document.head.appendChild(o),r)return new Promise((l,c)=>{o.addEventListener("load",l),o.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t())};function es(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Si="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Li=es(Si);function fr(e){return!!e||e===""}function ts(e){if(O(e)){const t={};for(let n=0;n{if(n){const s=n.split(Mi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ct(e){let t="";if(he(e))t=e;else if(O(e))for(let n=0;nhe(e)?e:e==null?"":O(e)||ue(e)&&(e.toString===_r||!F(e.toString))?JSON.stringify(e,dr,2):String(e),dr=(e,t)=>t&&t.__v_isRef?dr(e,t.value):mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:hr(t)?{[`Set(${t.size})`]:[...t.values()]}:ue(t)&&!O(t)&&!gr(t)?String(t):t,Q={},gt=[],Me=()=>{},Ri=()=>!1,Ui=/^on[^a-z]/,Wt=e=>Ui.test(e),ns=e=>e.startsWith("onUpdate:"),xe=Object.assign,ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Fi=Object.prototype.hasOwnProperty,q=(e,t)=>Fi.call(e,t),O=Array.isArray,mt=e=>mn(e)==="[object Map]",hr=e=>mn(e)==="[object Set]",F=e=>typeof e=="function",he=e=>typeof e=="string",rs=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",pr=e=>ue(e)&&F(e.then)&&F(e.catch),_r=Object.prototype.toString,mn=e=>_r.call(e),Ni=e=>mn(e).slice(8,-1),gr=e=>mn(e)==="[object Object]",is=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,St=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Hi=/-(\w)/g,Ne=vn(e=>e.replace(Hi,(t,n)=>n?n.toUpperCase():"")),Bi=/\B([A-Z])/g,yt=vn(e=>e.replace(Bi,"-$1").toLowerCase()),bn=vn(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=vn(e=>e?`on${bn(e)}`:""),Ft=(e,t)=>!Object.is(e,t),Rn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ss;const ji=()=>Ss||(Ss=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Ue;class qi{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Ue&&(this.parent=Ue,this.index=(Ue.scopes||(Ue.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Ue;try{return Ue=this,t()}finally{Ue=n}}}on(){Ue=this}off(){Ue=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},mr=e=>(e.w&Ge)>0,vr=e=>(e.n&Ge)>0,Wi=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=s)&&l.push(c)});else switch(n!==void 0&&l.push(o.get(n)),t){case"add":O(e)?is(n)&&l.push(o.get("length")):(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"delete":O(e)||(l.push(o.get(rt)),mt(e)&&l.push(o.get(qn)));break;case"set":mt(e)&&l.push(o.get(rt));break}if(l.length===1)l[0]&&Kn(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);Kn(os(c))}}function Kn(e,t){for(const n of O(e)?e:[...e])(n!==Le||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Vi=es("__proto__,__v_isRef,__isVue"),yr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(rs)),Ji=cs(),Yi=cs(!1,!0),Xi=cs(!0),Is=Zi();function Zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let i=0,o=this.length;i{e[t]=function(...n){wt();const s=z(this)[t].apply(this,n);return kt(),s}}),e}function cs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?po:Er:t?Cr:$r).get(s))return s;const o=O(s);if(!e&&o&&q(Is,r))return Reflect.get(Is,r,i);const l=Reflect.get(s,r,i);return(rs(r)?yr.has(r):Vi(r))||(e||Te(s,"get",r),t)?l:de(l)?!o||!is(r)?l.value:l:ue(l)?e?Tr(l):yn(l):l}}const Qi=wr(),Gi=wr(!0);function wr(e=!1){return function(n,s,r,i){let o=n[s];if(Nt(o)&&de(o)&&!de(r))return!1;if(!e&&!Nt(r)&&(Ar(r)||(r=z(r),o=z(o)),!O(n)&&de(o)&&!de(r)))return o.value=r,!0;const l=O(n)&&is(s)?Number(s)e,xn=e=>Reflect.getPrototypeOf(e);function Yt(e,t,n=!1,s=!1){e=e.__v_raw;const r=z(e),i=z(t);t!==i&&!n&&Te(r,"get",t),!n&&Te(r,"get",i);const{has:o}=xn(r),l=s?as:n?ds:Ht;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Xt(e,t=!1){const n=this.__v_raw,s=z(n),r=z(e);return e!==r&&!t&&Te(s,"has",e),!t&&Te(s,"has",r),e===r?n.has(e):n.has(e)||n.has(r)}function Zt(e,t=!1){return e=e.__v_raw,!t&&Te(z(e),"iterate",rt),Reflect.get(e,"size",e)}function Ms(e){e=z(e);const t=z(this);return xn(t).has.call(t,e)||(t.add(e),qe(t,"add",e,e)),this}function Os(e,t){t=z(t);const n=z(this),{has:s,get:r}=xn(n);let i=s.call(n,e);i||(e=z(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Ft(t,o)&&qe(n,"set",e,t):qe(n,"add",e,t),this}function Rs(e){const t=z(this),{has:n,get:s}=xn(t);let r=n.call(t,e);r||(e=z(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&qe(t,"delete",e,void 0),i}function Us(){const e=z(this),t=e.size!==0,n=e.clear();return t&&qe(e,"clear",void 0,void 0),n}function Qt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=z(o),c=t?as:e?ds:Ht;return!e&&Te(l,"iterate",rt),o.forEach((f,h)=>s.call(r,c(f),c(h),i))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=mt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),h=n?as:t?ds:Ht;return!t&&Te(i,"iterate",c?qn:rt),{next(){const{value:g,done:y}=f.next();return y?{value:g,done:y}:{value:l?[h(g[0]),h(g[1])]:h(g),done:y}},[Symbol.iterator](){return this}}}}function Ve(e){return function(...t){return e==="delete"?!1:this}}function io(){const e={get(i){return Yt(this,i)},get size(){return Zt(this)},has:Xt,add:Ms,set:Os,delete:Rs,clear:Us,forEach:Qt(!1,!1)},t={get(i){return Yt(this,i,!1,!0)},get size(){return Zt(this)},has:Xt,add:Ms,set:Os,delete:Rs,clear:Us,forEach:Qt(!1,!0)},n={get(i){return Yt(this,i,!0)},get size(){return Zt(this,!0)},has(i){return Xt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!1)},s={get(i){return Yt(this,i,!0,!0)},get size(){return Zt(this,!0)},has(i){return Xt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Gt(i,!1,!1),n[i]=Gt(i,!0,!1),t[i]=Gt(i,!1,!0),s[i]=Gt(i,!0,!0)}),[e,n,t,s]}const[oo,lo,co,ao]=io();function us(e,t){const n=t?e?ao:co:e?lo:oo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,i)}const uo={get:us(!1,!1)},fo={get:us(!1,!0)},ho={get:us(!0,!1)},$r=new WeakMap,Cr=new WeakMap,Er=new WeakMap,po=new WeakMap;function _o(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function go(e){return e.__v_skip||!Object.isExtensible(e)?0:_o(Ni(e))}function yn(e){return Nt(e)?e:fs(e,!1,kr,uo,$r)}function mo(e){return fs(e,!1,ro,fo,Cr)}function Tr(e){return fs(e,!0,so,ho,Er)}function fs(e,t,n,s,r){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=go(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function vt(e){return Nt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function Nt(e){return!!(e&&e.__v_isReadonly)}function Ar(e){return!!(e&&e.__v_isShallow)}function Pr(e){return vt(e)||Nt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Lt(e){return sn(e,"__v_skip",!0),e}const Ht=e=>ue(e)?yn(e):e,ds=e=>ue(e)?Tr(e):e;function Sr(e){Ze&&Le&&(e=z(e),xr(e.dep||(e.dep=os())))}function Lr(e,t){e=z(e),e.dep&&Kn(e.dep)}function de(e){return!!(e&&e.__v_isRef===!0)}function wn(e){return Ir(e,!1)}function vo(e){return Ir(e,!0)}function Ir(e,t){return de(e)?e:new bo(e,t)}class bo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:z(t),this._value=n?t:Ht(t)}get value(){return Sr(this),this._value}set value(t){t=this.__v_isShallow?t:z(t),Ft(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Ht(t),Lr(this))}}function $(e){return de(e)?e.value:e}const xo={get:(e,t,n)=>$(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return de(r)&&!de(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mr(e){return vt(e)?e:new Proxy(e,xo)}function Or(e){const t=O(e)?new Array(e.length):{};for(const n in e)t[n]=wo(e,n);return t}class yo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function wo(e,t,n){const s=e[t];return de(s)?s:new yo(e,t,n)}class ko{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new ls(t,()=>{this._dirty||(this._dirty=!0,Lr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Sr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function $o(e,t,n=!1){let s,r;const i=F(e);return i?(s=e,r=Me):(s=e.get,r=e.set),new ko(s,r,i||!r,n)}function Qe(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){kn(i,t,n)}return r}function Oe(e,t,n,s){if(F(e)){const i=Qe(e,t,n,s);return i&&pr(i)&&i.catch(o=>{kn(o,t,n)}),i}const r=[];for(let i=0;i>>1;Bt(Ee[s])je&&Ee.splice(t,1)}function Hr(e,t,n,s){O(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),Nr()}function Ao(e){Hr(e,Pt,It,ht)}function Po(e){Hr(e,Ye,Mt,pt)}function ps(e,t=null){if(It.length){for(zn=t,Pt=[...new Set(It)],It.length=0,ht=0;htBt(n)-Bt(s)),pt=0;pte.id==null?1/0:e.id;function Br(e){Wn=!1,rn=!0,ps(e),Ee.sort((n,s)=>Bt(n)-Bt(s));const t=Me;try{for(je=0;jeA.trim()):g&&(r=n.map(Di))}let l,c=s[l=On(t)]||s[l=On(Ne(t))];!c&&i&&(c=s[l=On(yt(t))]),c&&Oe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Oe(f,e,6,r)}}function Dr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!F(e)){const c=f=>{const h=Dr(f,t,!0);h&&(l=!0,xe(o,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(s.set(e,null),null):(O(i)?i.forEach(c=>o[c]=null):xe(o,i),s.set(e,o),o)}function $n(e,t){return!e||!Wt(t)?!1:(t=t.slice(2).replace(/Once$/,""),q(e,t[0].toLowerCase()+t.slice(1))||q(e,yt(t))||q(e,t))}let $e=null,Cn=null;function ln(e){const t=$e;return $e=e,Cn=e&&e.type.__scopeId||null,t}function jr(e){Cn=e}function qr(){Cn=null}function De(e,t=$e,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&zs(-1);const i=ln(t),o=e(...r);return ln(i),s._d&&zs(1),o};return s._n=!0,s._c=!0,s._d=!0,s}function Un(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:f,render:h,renderCache:g,data:y,setupState:A,ctx:M,inheritAttrs:V}=e;let m,w;const K=ln(e);try{if(n.shapeFlag&4){const H=r||s;m=Se(h.call(H,H,g,i,A,y,M)),w=c}else{const H=t;m=Se(H.length>1?H(i,{attrs:c,slots:l,emit:f}):H(i,null)),w=t.props?c:Lo(c)}}catch(H){Ut.length=0,kn(H,e,1),m=N(Ke)}let L=m;if(w&&V!==!1){const H=Object.keys(w),{shapeFlag:X}=L;H.length&&X&7&&(o&&H.some(ns)&&(w=Io(w,o)),L=qt(L,w))}return n.dirs&&(L.dirs=L.dirs?L.dirs.concat(n.dirs):n.dirs),n.transition&&(L.transition=n.transition),m=L,ln(K),m}const Lo=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},Io=(e,t)=>{const n={};for(const s in e)(!ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Mo(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Fs(s,o,f):!!o;if(c&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function Kr(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):Po(e)}function Uo(e,t){if(pe){let n=pe.provides;const s=pe.parent&&pe.parent.provides;s===n&&(n=pe.provides=Object.create(s)),n[e]=t}}function Ot(e,t,n=!1){const s=pe||$e;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&F(t)?t.call(s.proxy):t}}function Wr(e,t){return _s(e,null,t)}const Ns={};function it(e,t,n){return _s(e,t,n)}function _s(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=Q){const l=pe;let c,f=!1,h=!1;if(de(e)?(c=()=>e.value,f=Ar(e)):vt(e)?(c=()=>e,s=!0):O(e)?(h=!0,f=e.some(vt),c=()=>e.map(w=>{if(de(w))return w.value;if(vt(w))return _t(w);if(F(w))return Qe(w,l,2)})):F(e)?t?c=()=>Qe(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return g&&g(),Oe(e,l,3,[y])}:c=Me,t&&s){const w=c;c=()=>_t(w())}let g,y=w=>{g=m.onStop=()=>{Qe(w,l,4)}};if(Kt)return y=Me,t?n&&Oe(t,l,3,[c(),h?[]:void 0,y]):c(),Me;let A=h?[]:Ns;const M=()=>{if(!!m.active)if(t){const w=m.run();(s||f||(h?w.some((K,L)=>Ft(K,A[L])):Ft(w,A)))&&(g&&g(),Oe(t,l,3,[w,A===Ns?void 0:A,y]),A=w)}else m.run()};M.allowRecurse=!!t;let V;r==="sync"?V=M:r==="post"?V=()=>ke(M,l&&l.suspense):V=()=>{!l||l.isMounted?Ao(M):M()};const m=new ls(c,V);return t?n?M():A=m.run():r==="post"?ke(m.run.bind(m),l&&l.suspense):m.run(),()=>{m.stop(),l&&l.scope&&ss(l.scope.effects,m)}}function Fo(e,t,n){const s=this.proxy,r=he(e)?e.includes(".")?zr(s,e):()=>s[e]:e.bind(s,s);let i;F(t)?i=t:(i=t.handler,n=t);const o=pe;bt(this);const l=_s(r,i.bind(s),n);return o?bt(o):lt(),l}function zr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{_t(n,t)});else if(gr(e))for(const n in e)_t(e[n],t);return e}function oe(e){return F(e)?{setup:e,name:e.name}:e}const Dt=e=>!!e.type.__asyncLoader,Vr=e=>e.type.__isKeepAlive;function No(e,t){Jr(e,"a",t)}function Ho(e,t){Jr(e,"da",t)}function Jr(e,t,n=pe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(En(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Vr(r.parent.vnode)&&Bo(s,t,n,r),r=r.parent}}function Bo(e,t,n,s){const r=En(t,e,s,!0);Tn(()=>{ss(s[t],r)},n)}function En(e,t,n=pe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;wt(),bt(n);const l=Oe(t,n,e,o);return lt(),kt(),l});return s?r.unshift(i):r.push(i),i}}const We=e=>(t,n=pe)=>(!Kt||e==="sp")&&En(e,t,n),Do=We("bm"),$t=We("m"),jo=We("bu"),Yr=We("u"),qo=We("bum"),Tn=We("um"),Ko=We("sp"),Wo=We("rtg"),zo=We("rtc");function Vo(e,t=pe){En("ec",e,t)}let Vn=!0;function Jo(e){const t=Zr(e),n=e.proxy,s=e.ctx;Vn=!1,t.beforeCreate&&Hs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:h,beforeMount:g,mounted:y,beforeUpdate:A,updated:M,activated:V,deactivated:m,beforeDestroy:w,beforeUnmount:K,destroyed:L,unmounted:H,render:X,renderTracked:Z,renderTriggered:B,errorCaptured:le,serverPrefetch:ne,expose:re,inheritAttrs:_e,components:j,directives:ie,filters:ye}=t;if(f&&Yo(f,s,null,e.appContext.config.unwrapInjectedRef),o)for(const se in o){const G=o[se];F(G)&&(s[se]=G.bind(n))}if(r){const se=r.call(n,n);ue(se)&&(e.data=yn(se))}if(Vn=!0,i)for(const se in i){const G=i[se],He=F(G)?G.bind(n,n):F(G.get)?G.get.bind(n,n):Me,Ln=!F(G)&&F(G.set)?G.set.bind(n):Me,Ct=D({get:He,set:Ln});Object.defineProperty(s,se,{enumerable:!0,configurable:!0,get:()=>Ct.value,set:ut=>Ct.value=ut})}if(l)for(const se in l)Xr(l[se],s,n,se);if(c){const se=F(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{Uo(G,se[G])})}h&&Hs(h,e,"c");function we(se,G){O(G)?G.forEach(He=>se(He.bind(n))):G&&se(G.bind(n))}if(we(Do,g),we($t,y),we(jo,A),we(Yr,M),we(No,V),we(Ho,m),we(Vo,le),we(zo,Z),we(Wo,B),we(qo,K),we(Tn,H),we(Ko,ne),O(re))if(re.length){const se=e.exposed||(e.exposed={});re.forEach(G=>{Object.defineProperty(se,G,{get:()=>n[G],set:He=>n[G]=He})})}else e.exposed||(e.exposed={});X&&e.render===Me&&(e.render=X),_e!=null&&(e.inheritAttrs=_e),j&&(e.components=j),ie&&(e.directives=ie)}function Yo(e,t,n=Me,s=!1){O(e)&&(e=Jn(e));for(const r in e){const i=e[r];let o;ue(i)?"default"in i?o=Ot(i.from||r,i.default,!0):o=Ot(i.from||r):o=Ot(i),de(o)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function Hs(e,t,n){Oe(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Xr(e,t,n,s){const r=s.includes(".")?zr(n,s):()=>n[s];if(he(e)){const i=t[e];F(i)&&it(r,i)}else if(F(e))it(r,e.bind(n));else if(ue(e))if(O(e))e.forEach(i=>Xr(i,t,n,s));else{const i=F(e.handler)?e.handler.bind(n):t[e.handler];F(i)&&it(r,i,e)}}function Zr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>cn(c,f,o,!0)),cn(c,t,o)),i.set(t,c),c}function cn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&cn(e,i,n,!0),r&&r.forEach(o=>cn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Xo[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Xo={data:Bs,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:nt,directives:nt,watch:Qo,provide:Bs,inject:Zo};function Bs(e,t){return t?e?function(){return xe(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function Zo(e,t){return nt(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n0)&&!(o&16)){if(o&8){const h=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[y,A]=Gr(g,t,!0);xe(o,y),A&&l.push(...A)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!c)return s.set(e,gt),gt;if(O(i))for(let h=0;h-1,A[1]=V<0||M-1||q(A,"default"))&&l.push(g)}}}const f=[o,l];return s.set(e,f),f}function Ds(e){return e[0]!=="$"}function js(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function qs(e,t){return js(e)===js(t)}function Ks(e,t){return O(t)?t.findIndex(n=>qs(n,e)):F(t)&&qs(t,e)?0:-1}const ei=e=>e[0]==="_"||e==="$stable",gs=e=>O(e)?e.map(Se):[Se(e)],tl=(e,t,n)=>{const s=De((...r)=>gs(t(...r)),n);return s._c=!1,s},ti=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ei(r))continue;const i=e[r];if(F(i))t[r]=tl(r,i,s);else if(i!=null){const o=gs(i);t[r]=()=>o}}},ni=(e,t)=>{const n=gs(t);e.slots.default=()=>n},nl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),sn(t,"_",n)):ti(t,e.slots={})}else e.slots={},t&&ni(e,t);sn(e.slots,An,1)},sl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Q;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(xe(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ti(t,r)),o=t}else t&&(ni(e,t),o={default:1});if(i)for(const l in r)!ei(l)&&!(l in o)&&delete r[l]};function Fe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oan(y,t&&(O(t)?t[A]:t),n,s,r));return}if(Dt(s)&&!r)return;const i=s.shapeFlag&4?bs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,h=l.refs===Q?l.refs={}:l.refs,g=l.setupState;if(f!=null&&f!==c&&(he(f)?(h[f]=null,q(g,f)&&(g[f]=null)):de(f)&&(f.value=null)),F(c))Qe(c,l,12,[o,h]);else{const y=he(c),A=de(c);if(y||A){const M=()=>{if(e.f){const V=y?h[c]:c.value;r?O(V)&&ss(V,i):O(V)?V.includes(i)||V.push(i):y?(h[c]=[i],q(g,c)&&(g[c]=h[c])):(c.value=[i],e.k&&(h[e.k]=c.value))}else y?(h[c]=o,q(g,c)&&(g[c]=o)):de(c)&&(c.value=o,e.k&&(h[e.k]=o))};o?(M.id=-1,ke(M,n)):M()}}}let Je=!1;const en=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fn=e=>e.nodeType===8;function ol(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:i,remove:o,insert:l,createComment:c}}=e,f=(m,w)=>{if(!w.hasChildNodes()){n(null,m,w),on();return}Je=!1,h(w.firstChild,m,null,null,null),on(),Je&&console.error("Hydration completed but contains mismatches.")},h=(m,w,K,L,H,X=!1)=>{const Z=Fn(m)&&m.data==="[",B=()=>M(m,w,K,L,H,Z),{type:le,ref:ne,shapeFlag:re}=w,_e=m.nodeType;w.el=m;let j=null;switch(le){case jt:_e!==3?j=B():(m.data!==w.children&&(Je=!0,m.data=w.children),j=r(m));break;case Ke:_e!==8||Z?j=B():j=r(m);break;case Rt:if(_e!==1)j=B();else{j=m;const ie=!w.children.length;for(let ye=0;ye{X=X||!!w.dynamicChildren;const{type:Z,props:B,patchFlag:le,shapeFlag:ne,dirs:re}=w,_e=Z==="input"&&re||Z==="option";if(_e||le!==-1){if(re&&Fe(w,null,K,"created"),B)if(_e||!X||le&48)for(const ie in B)(_e&&ie.endsWith("value")||Wt(ie)&&!St(ie))&&s(m,ie,null,B[ie],!1,void 0,K);else B.onClick&&s(m,"onClick",null,B.onClick,!1,void 0,K);let j;if((j=B&&B.onVnodeBeforeMount)&&Ae(j,K,w),re&&Fe(w,null,K,"beforeMount"),((j=B&&B.onVnodeMounted)||re)&&Kr(()=>{j&&Ae(j,K,w),re&&Fe(w,null,K,"mounted")},L),ne&16&&!(B&&(B.innerHTML||B.textContent))){let ie=y(m.firstChild,w,m,K,L,H,X);for(;ie;){Je=!0;const ye=ie;ie=ie.nextSibling,o(ye)}}else ne&8&&m.textContent!==w.children&&(Je=!0,m.textContent=w.children)}return m.nextSibling},y=(m,w,K,L,H,X,Z)=>{Z=Z||!!w.dynamicChildren;const B=w.children,le=B.length;for(let ne=0;ne{const{slotScopeIds:Z}=w;Z&&(H=H?H.concat(Z):Z);const B=i(m),le=y(r(m),w,B,K,L,H,X);return le&&Fn(le)&&le.data==="]"?r(w.anchor=le):(Je=!0,l(w.anchor=c("]"),B,le),le)},M=(m,w,K,L,H,X)=>{if(Je=!0,w.el=null,X){const le=V(m);for(;;){const ne=r(m);if(ne&&ne!==le)o(ne);else break}}const Z=r(m),B=i(m);return o(m),n(null,w,B,Z,K,L,en(B),H),Z},V=m=>{let w=0;for(;m;)if(m=r(m),m&&Fn(m)&&(m.data==="["&&w++,m.data==="]")){if(w===0)return r(m);w--}return m};return[f,h]}const ke=Kr;function ll(e){return cl(e,ol)}function cl(e,t){const n=ji();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:h,parentNode:g,nextSibling:y,setScopeId:A=Me,cloneNode:M,insertStaticContent:V}=e,m=(a,u,d,_=null,p=null,x=null,C=!1,b=null,k=!!u.dynamicChildren)=>{if(a===u)return;a&&!Tt(a,u)&&(_=Jt(a),ze(a,p,x,!0),a=null),u.patchFlag===-2&&(k=!1,u.dynamicChildren=null);const{type:v,ref:P,shapeFlag:E}=u;switch(v){case jt:w(a,u,d,_);break;case Ke:K(a,u,d,_);break;case Rt:a==null&&L(u,d,_,C);break;case fe:ie(a,u,d,_,p,x,C,b,k);break;default:E&1?Z(a,u,d,_,p,x,C,b,k):E&6?ye(a,u,d,_,p,x,C,b,k):(E&64||E&128)&&v.process(a,u,d,_,p,x,C,b,k,ft)}P!=null&&p&&an(P,a&&a.ref,x,u||a,!u)},w=(a,u,d,_)=>{if(a==null)s(u.el=l(u.children),d,_);else{const p=u.el=a.el;u.children!==a.children&&f(p,u.children)}},K=(a,u,d,_)=>{a==null?s(u.el=c(u.children||""),d,_):u.el=a.el},L=(a,u,d,_)=>{[a.el,a.anchor]=V(a.children,u,d,_,a.el,a.anchor)},H=({el:a,anchor:u},d,_)=>{let p;for(;a&&a!==u;)p=y(a),s(a,d,_),a=p;s(u,d,_)},X=({el:a,anchor:u})=>{let d;for(;a&&a!==u;)d=y(a),r(a),a=d;r(u)},Z=(a,u,d,_,p,x,C,b,k)=>{C=C||u.type==="svg",a==null?B(u,d,_,p,x,C,b,k):re(a,u,p,x,C,b,k)},B=(a,u,d,_,p,x,C,b)=>{let k,v;const{type:P,props:E,shapeFlag:S,transition:I,patchFlag:W,dirs:te}=a;if(a.el&&M!==void 0&&W===-1)k=a.el=M(a.el);else{if(k=a.el=o(a.type,x,E&&E.is,E),S&8?h(k,a.children):S&16&&ne(a.children,k,null,_,p,x&&P!=="foreignObject",C,b),te&&Fe(a,null,_,"created"),E){for(const ee in E)ee!=="value"&&!St(ee)&&i(k,ee,null,E[ee],x,a.children,_,p,Be);"value"in E&&i(k,"value",null,E.value),(v=E.onVnodeBeforeMount)&&Ae(v,_,a)}le(k,a,a.scopeId,C,_)}te&&Fe(a,null,_,"beforeMount");const Y=(!p||p&&!p.pendingBranch)&&I&&!I.persisted;Y&&I.beforeEnter(k),s(k,u,d),((v=E&&E.onVnodeMounted)||Y||te)&&ke(()=>{v&&Ae(v,_,a),Y&&I.enter(k),te&&Fe(a,null,_,"mounted")},p)},le=(a,u,d,_,p)=>{if(d&&A(a,d),_)for(let x=0;x<_.length;x++)A(a,_[x]);if(p){let x=p.subTree;if(u===x){const C=p.vnode;le(a,C,C.scopeId,C.slotScopeIds,p.parent)}}},ne=(a,u,d,_,p,x,C,b,k=0)=>{for(let v=k;v{const b=u.el=a.el;let{patchFlag:k,dynamicChildren:v,dirs:P}=u;k|=a.patchFlag&16;const E=a.props||Q,S=u.props||Q;let I;d&&tt(d,!1),(I=S.onVnodeBeforeUpdate)&&Ae(I,d,u,a),P&&Fe(u,a,d,"beforeUpdate"),d&&tt(d,!0);const W=p&&u.type!=="foreignObject";if(v?_e(a.dynamicChildren,v,b,d,_,W,x):C||He(a,u,b,null,d,_,W,x,!1),k>0){if(k&16)j(b,u,E,S,d,_,p);else if(k&2&&E.class!==S.class&&i(b,"class",null,S.class,p),k&4&&i(b,"style",E.style,S.style,p),k&8){const te=u.dynamicProps;for(let Y=0;Y{I&&Ae(I,d,u,a),P&&Fe(u,a,d,"updated")},_)},_e=(a,u,d,_,p,x,C)=>{for(let b=0;b{if(d!==_){for(const b in _){if(St(b))continue;const k=_[b],v=d[b];k!==v&&b!=="value"&&i(a,b,v,k,C,u.children,p,x,Be)}if(d!==Q)for(const b in d)!St(b)&&!(b in _)&&i(a,b,d[b],null,C,u.children,p,x,Be);"value"in _&&i(a,"value",d.value,_.value)}},ie=(a,u,d,_,p,x,C,b,k)=>{const v=u.el=a?a.el:l(""),P=u.anchor=a?a.anchor:l("");let{patchFlag:E,dynamicChildren:S,slotScopeIds:I}=u;I&&(b=b?b.concat(I):I),a==null?(s(v,d,_),s(P,d,_),ne(u.children,d,P,p,x,C,b,k)):E>0&&E&64&&S&&a.dynamicChildren?(_e(a.dynamicChildren,S,d,p,x,C,b),(u.key!=null||p&&u===p.subTree)&&ri(a,u,!0)):He(a,u,d,P,p,x,C,b,k)},ye=(a,u,d,_,p,x,C,b,k)=>{u.slotScopeIds=b,a==null?u.shapeFlag&512?p.ctx.activate(u,d,_,C,k):Sn(u,d,_,p,x,C,k):we(a,u,k)},Sn=(a,u,d,_,p,x,C)=>{const b=a.component=bl(a,_,p);if(Vr(a)&&(b.ctx.renderer=ft),xl(b),b.asyncDep){if(p&&p.registerDep(b,se),!a.el){const k=b.subTree=N(Ke);K(null,k,u,d)}return}se(b,a,u,d,p,x,C)},we=(a,u,d)=>{const _=u.component=a.component;if(Mo(a,u,d))if(_.asyncDep&&!_.asyncResolved){G(_,u,d);return}else _.next=u,To(_.update),_.update();else u.component=a.component,u.el=a.el,_.vnode=u},se=(a,u,d,_,p,x,C)=>{const b=()=>{if(a.isMounted){let{next:P,bu:E,u:S,parent:I,vnode:W}=a,te=P,Y;tt(a,!1),P?(P.el=W.el,G(a,P,C)):P=W,E&&Rn(E),(Y=P.props&&P.props.onVnodeBeforeUpdate)&&Ae(Y,I,P,W),tt(a,!0);const ee=Un(a),Pe=a.subTree;a.subTree=ee,m(Pe,ee,g(Pe.el),Jt(Pe),a,p,x),P.el=ee.el,te===null&&Oo(a,ee.el),S&&ke(S,p),(Y=P.props&&P.props.onVnodeUpdated)&&ke(()=>Ae(Y,I,P,W),p)}else{let P;const{el:E,props:S}=u,{bm:I,m:W,parent:te}=a,Y=Dt(u);if(tt(a,!1),I&&Rn(I),!Y&&(P=S&&S.onVnodeBeforeMount)&&Ae(P,te,u),tt(a,!0),E&&Mn){const ee=()=>{a.subTree=Un(a),Mn(E,a.subTree,a,p,null)};Y?u.type.__asyncLoader().then(()=>!a.isUnmounted&&ee()):ee()}else{const ee=a.subTree=Un(a);m(null,ee,d,_,a,p,x),u.el=ee.el}if(W&&ke(W,p),!Y&&(P=S&&S.onVnodeMounted)){const ee=u;ke(()=>Ae(P,te,ee),p)}u.shapeFlag&256&&a.a&&ke(a.a,p),a.isMounted=!0,u=d=_=null}},k=a.effect=new ls(b,()=>Fr(a.update),a.scope),v=a.update=k.run.bind(k);v.id=a.uid,tt(a,!0),v()},G=(a,u,d)=>{u.component=a;const _=a.vnode.props;a.vnode=u,a.next=null,el(a,u.props,_,d),sl(a,u.children,d),wt(),ps(void 0,a.update),kt()},He=(a,u,d,_,p,x,C,b,k=!1)=>{const v=a&&a.children,P=a?a.shapeFlag:0,E=u.children,{patchFlag:S,shapeFlag:I}=u;if(S>0){if(S&128){Ct(v,E,d,_,p,x,C,b,k);return}else if(S&256){Ln(v,E,d,_,p,x,C,b,k);return}}I&8?(P&16&&Be(v,p,x),E!==v&&h(d,E)):P&16?I&16?Ct(v,E,d,_,p,x,C,b,k):Be(v,p,x,!0):(P&8&&h(d,""),I&16&&ne(E,d,_,p,x,C,b,k))},Ln=(a,u,d,_,p,x,C,b,k)=>{a=a||gt,u=u||gt;const v=a.length,P=u.length,E=Math.min(v,P);let S;for(S=0;SP?Be(a,p,x,!0,!1,E):ne(u,d,_,p,x,C,b,k,E)},Ct=(a,u,d,_,p,x,C,b,k)=>{let v=0;const P=u.length;let E=a.length-1,S=P-1;for(;v<=E&&v<=S;){const I=a[v],W=u[v]=k?Xe(u[v]):Se(u[v]);if(Tt(I,W))m(I,W,d,null,p,x,C,b,k);else break;v++}for(;v<=E&&v<=S;){const I=a[E],W=u[S]=k?Xe(u[S]):Se(u[S]);if(Tt(I,W))m(I,W,d,null,p,x,C,b,k);else break;E--,S--}if(v>E){if(v<=S){const I=S+1,W=IS)for(;v<=E;)ze(a[v],p,x,!0),v++;else{const I=v,W=v,te=new Map;for(v=W;v<=S;v++){const Ce=u[v]=k?Xe(u[v]):Se(u[v]);Ce.key!=null&&te.set(Ce.key,v)}let Y,ee=0;const Pe=S-W+1;let dt=!1,Es=0;const Et=new Array(Pe);for(v=0;v=Pe){ze(Ce,p,x,!0);continue}let Re;if(Ce.key!=null)Re=te.get(Ce.key);else for(Y=W;Y<=S;Y++)if(Et[Y-W]===0&&Tt(Ce,u[Y])){Re=Y;break}Re===void 0?ze(Ce,p,x,!0):(Et[Re-W]=v+1,Re>=Es?Es=Re:dt=!0,m(Ce,u[Re],d,null,p,x,C,b,k),ee++)}const Ts=dt?al(Et):gt;for(Y=Ts.length-1,v=Pe-1;v>=0;v--){const Ce=W+v,Re=u[Ce],As=Ce+1{const{el:x,type:C,transition:b,children:k,shapeFlag:v}=a;if(v&6){ut(a.component.subTree,u,d,_);return}if(v&128){a.suspense.move(u,d,_);return}if(v&64){C.move(a,u,d,ft);return}if(C===fe){s(x,u,d);for(let E=0;Eb.enter(x),p);else{const{leave:E,delayLeave:S,afterLeave:I}=b,W=()=>s(x,u,d),te=()=>{E(x,()=>{W(),I&&I()})};S?S(x,W,te):te()}else s(x,u,d)},ze=(a,u,d,_=!1,p=!1)=>{const{type:x,props:C,ref:b,children:k,dynamicChildren:v,shapeFlag:P,patchFlag:E,dirs:S}=a;if(b!=null&&an(b,null,d,a,!0),P&256){u.ctx.deactivate(a);return}const I=P&1&&S,W=!Dt(a);let te;if(W&&(te=C&&C.onVnodeBeforeUnmount)&&Ae(te,u,a),P&6)Ei(a.component,d,_);else{if(P&128){a.suspense.unmount(d,_);return}I&&Fe(a,null,u,"beforeUnmount"),P&64?a.type.remove(a,u,d,p,ft,_):v&&(x!==fe||E>0&&E&64)?Be(v,u,d,!1,!0):(x===fe&&E&384||!p&&P&16)&&Be(k,u,d),_&&$s(a)}(W&&(te=C&&C.onVnodeUnmounted)||I)&&ke(()=>{te&&Ae(te,u,a),I&&Fe(a,null,u,"unmounted")},d)},$s=a=>{const{type:u,el:d,anchor:_,transition:p}=a;if(u===fe){Ci(d,_);return}if(u===Rt){X(a);return}const x=()=>{r(d),p&&!p.persisted&&p.afterLeave&&p.afterLeave()};if(a.shapeFlag&1&&p&&!p.persisted){const{leave:C,delayLeave:b}=p,k=()=>C(d,x);b?b(a.el,x,k):k()}else x()},Ci=(a,u)=>{let d;for(;a!==u;)d=y(a),r(a),a=d;r(u)},Ei=(a,u,d)=>{const{bum:_,scope:p,update:x,subTree:C,um:b}=a;_&&Rn(_),p.stop(),x&&(x.active=!1,ze(C,a,u,d)),b&&ke(b,u),ke(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Be=(a,u,d,_=!1,p=!1,x=0)=>{for(let C=x;Ca.shapeFlag&6?Jt(a.component.subTree):a.shapeFlag&128?a.suspense.next():y(a.anchor||a.el),Cs=(a,u,d)=>{a==null?u._vnode&&ze(u._vnode,null,null,!0):m(u._vnode||null,a,u,null,null,null,d),on(),u._vnode=a},ft={p:m,um:ze,m:ut,r:$s,mt:Sn,mc:ne,pc:He,pbc:_e,n:Jt,o:e};let In,Mn;return t&&([In,Mn]=t(ft)),{render:Cs,hydrate:In,createApp:il(Cs,In)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ri(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const ul=e=>e.__isTeleport,ii="components";function un(e,t){return dl(ii,e,!0,t)||e}const fl=Symbol();function dl(e,t,n=!0,s=!1){const r=$e||pe;if(r){const i=r.type;if(e===ii){const l=$l(i);if(l&&(l===t||l===Ne(t)||l===bn(Ne(t))))return i}const o=Ws(r[e]||i[e],t)||Ws(r.appContext[e],t);return!o&&s?i:o}}function Ws(e,t){return e&&(e[t]||e[Ne(t)]||e[bn(Ne(t))])}const fe=Symbol(void 0),jt=Symbol(void 0),Ke=Symbol(void 0),Rt=Symbol(void 0),Ut=[];let ot=null;function T(e=!1){Ut.push(ot=e?null:[])}function hl(){Ut.pop(),ot=Ut[Ut.length-1]||null}let fn=1;function zs(e){fn+=e}function oi(e){return e.dynamicChildren=fn>0?ot||gt:null,hl(),fn>0&&ot&&ot.push(e),e}function R(e,t,n,s,r,i){return oi(U(e,t,n,s,r,i,!0))}function ge(e,t,n,s,r){return oi(N(e,t,n,s,r,!0))}function dn(e){return e?e.__v_isVNode===!0:!1}function Tt(e,t){return e.type===t.type&&e.key===t.key}const An="__vInternal",li=({key:e})=>e!=null?e:null,nn=({ref:e,ref_key:t,ref_for:n})=>e!=null?he(e)||de(e)||F(e)?{i:$e,r:e,k:t,f:!!n}:e:null;function U(e,t=null,n=null,s=0,r=null,i=e===fe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&li(t),ref:t&&nn(t),scopeId:Cn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ms(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=he(n)?8:16),fn>0&&!o&&ot&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&ot.push(c),c}const N=pl;function pl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===fl)&&(e=Ke),dn(e)){const l=qt(e,t,!0);return n&&ms(l,n),l}if(Cl(e)&&(e=e.__vccOpts),t){t=_l(t);let{class:l,style:c}=t;l&&!he(l)&&(t.class=ct(l)),ue(c)&&(Pr(c)&&!O(c)&&(c=xe({},c)),t.style=ts(c))}const o=he(e)?1:Ro(e)?128:ul(e)?64:ue(e)?4:F(e)?2:0;return U(e,t,n,s,r,o,i,!0)}function _l(e){return e?Pr(e)||An in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?vs(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&li(l),ref:t&&t.ref?n&&r?O(r)?r.concat(nn(t)):[r,nn(t)]:nn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor}}function zt(e=" ",t=0){return N(jt,null,e,t)}function ef(e,t){const n=N(Rt,null,e);return n.staticCount=t,n}function J(e="",t=!1){return t?(T(),ge(Ke,null,e)):N(Ke,null,e)}function Se(e){return e==null||typeof e=="boolean"?N(Ke):O(e)?N(fe,null,e.slice()):typeof e=="object"?Xe(e):N(jt,null,String(e))}function Xe(e){return e.el===null||e.memo?e:qt(e)}function ms(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ms(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(An in t)?t._ctx=$e:r===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),s&64?(n=16,t=[zt(t)]):n=8);e.children=t,e.shapeFlag|=n}function vs(...e){const t={};for(let n=0;nt(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;ldn(t)?!(t.type===Ke||t.type===fe&&!ci(t.children)):!0)?e:null}const Xn=e=>e?ai(e)?bs(e)||e.proxy:Xn(e.parent):null,hn=xe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xn(e.parent),$root:e=>Xn(e.root),$emit:e=>e.emit,$options:e=>Zr(e),$forceUpdate:e=>()=>Fr(e.update),$nextTick:e=>Ur.bind(e.proxy),$watch:e=>Fo.bind(e)}),gl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const A=o[t];if(A!==void 0)switch(A){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(s!==Q&&q(s,t))return o[t]=1,s[t];if(r!==Q&&q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return o[t]=3,i[t];if(n!==Q&&q(n,t))return o[t]=4,n[t];Vn&&(o[t]=0)}}const h=hn[t];let g,y;if(h)return t==="$attrs"&&Te(e,"get",t),h(e);if((g=l.__cssModules)&&(g=g[t]))return g;if(n!==Q&&q(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,q(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return r!==Q&&q(r,t)?(r[t]=n,!0):s!==Q&&q(s,t)?(s[t]=n,!0):q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Q&&q(e,o)||t!==Q&&q(t,o)||(l=i[0])&&q(l,o)||q(s,o)||q(hn,o)||q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},ml=si();let vl=0;function bl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ml,i={uid:vl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new qi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Gr(s,r),emitsOptions:Dr(s,r),emit:null,emitted:null,propsDefaults:Q,inheritAttrs:s.inheritAttrs,ctx:Q,data:Q,props:Q,attrs:Q,slots:Q,refs:Q,setupState:Q,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=So.bind(null,i),e.ce&&e.ce(i),i}let pe=null;const bt=e=>{pe=e,e.scope.on()},lt=()=>{pe&&pe.scope.off(),pe=null};function ai(e){return e.vnode.shapeFlag&4}let Kt=!1;function xl(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=ai(e);Go(e,n,r,t),nl(e,s);const i=r?yl(e,t):void 0;return Kt=!1,i}function yl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Lt(new Proxy(e.ctx,gl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?kl(e):null;bt(e),wt();const i=Qe(s,e,0,[e.props,r]);if(kt(),lt(),pr(i)){if(i.then(lt,lt),t)return i.then(o=>{Vs(e,o,t)}).catch(o=>{kn(o,e,0)});e.asyncDep=i}else Vs(e,i,t)}else ui(e,t)}function Vs(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=Mr(t)),ui(e,n)}let Js;function ui(e,t,n){const s=e.type;if(!e.render){if(!t&&Js&&!s.render){const r=s.template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=xe(xe({isCustomElement:i,delimiters:l},o),c);s.render=Js(r,f)}}e.render=s.render||Me}bt(e),wt(),Jo(e),kt(),lt()}function wl(e){return new Proxy(e.attrs,{get(t,n){return Te(e,"get","$attrs"),t[n]}})}function kl(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=wl(e))},slots:e.slots,emit:e.emit,expose:t}}function bs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Mr(Lt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)}}))}function $l(e){return F(e)&&e.displayName||e.name}function Cl(e){return F(e)&&"__vccOpts"in e}const D=(e,t)=>$o(e,t,Kt);function at(e,t,n){const s=arguments.length;return s===2?ue(t)&&!O(t)?dn(t)?N(e,null,[t]):N(e,t):N(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&dn(n)&&(n=[n]),N(e,t,n))}const El="3.2.33",Tl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,Ys=st&&st.createElement("template"),Al={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?st.createElementNS(Tl,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Ys.innerHTML=s?`${e}`:e;const l=Ys.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Pl(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Sl(e,t,n){const s=e.style,r=he(n);if(n&&!r){for(const i in n)Zn(s,i,n[i]);if(t&&!he(t))for(const i in t)n[i]==null&&Zn(s,i,"")}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Xs=/\s*!important$/;function Zn(e,t,n){if(O(n))n.forEach(s=>Zn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ll(e,t);Xs.test(n)?e.setProperty(yt(s),n.replace(Xs,""),"important"):e[s]=n}}const Zs=["Webkit","Moz","ms"],Nn={};function Ll(e,t){const n=Nn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return Nn[t]=s;s=bn(s);for(let r=0;r{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Qn=0;const Rl=Promise.resolve(),Ul=()=>{Qn=0},Fl=()=>Qn||(Rl.then(Ul),Qn=fi());function Nl(e,t,n,s){e.addEventListener(t,n,s)}function Hl(e,t,n,s){e.removeEventListener(t,n,s)}function Bl(e,t,n,s,r=null){const i=e._vei||(e._vei={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Dl(t);if(s){const f=i[t]=jl(s,r);Nl(e,l,f,c)}else o&&(Hl(e,l,o,c),i[t]=void 0)}}const Gs=/(?:Once|Passive|Capture)$/;function Dl(e){let t;if(Gs.test(e)){t={};let n;for(;n=e.match(Gs);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[yt(e.slice(2)),t]}function jl(e,t){const n=s=>{const r=s.timeStamp||fi();(Ol||r>=n.attached-1)&&Oe(ql(s,n.value),t,5,[s])};return n.value=e,n.attached=Fl(),n}function ql(e,t){if(O(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const er=/^on[a-z]/,Kl=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Pl(e,s,r):t==="style"?Sl(e,n,s):Wt(t)?ns(t)||Bl(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wl(e,t,s,r))?Ml(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Il(e,t,s,r))};function Wl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&er.test(t)&&F(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||er.test(t)&&he(n)?!1:t in e}const zl=xe({patchProp:Kl},Al);let Hn,tr=!1;function Vl(){return Hn=tr?Hn:ll(zl),tr=!0,Hn}const Jl=(...e)=>{const t=Vl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Yl(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Yl(e){return he(e)?document.querySelector(e):e}var Xl='{"lang":"en-US","title":"VitePress","description":"A VitePress site","base":"/","head":[],"themeConfig":{"locales":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","nav":[{"text":"\u4F7F\u7528\u6307\u5357","link":"/","activeMatch":"^/$|^/guide/"},{"text":"\u5F00\u53D1\u624B\u518C","link":"/developer/basics","activeMatch":"^/developer/"}],"sidebar":{"/guide/":[{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"TG api\u88AB\u5899","link":"/guide/q1"},{"text":"Agent \u542F\u52A8/\u4E0A\u7EBF \u95EE\u9898\u81EA\u68C0\u6D41\u7A0B","link":"/guide/q2"},{"text":"\u5982\u4F55\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3","link":"/guide/q3"},{"text":"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","link":"/guide/q4"},{"text":"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","link":"/guide/q5"}]}],"/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/developer/homepage"},{"text":"Algolia Search","link":"/developer/algolia-search"},{"text":"Carbon Ads","link":"/developer/carbon-ads"}]}],"/":[{"text":"\u5B89\u88C5\u624B\u518C","children":[{"text":"\u5B89\u88C5 Dashboard","link":"/guide/dashboard"},{"text":"\u5B89\u88C5 Agent","link":"/guide/agent"}]},{"text":"\u7BA1\u7406\u9762\u677F\u914D\u7F6E","children":[{"text":"\u4E3B\u673A","link":"/guide/servers"},{"text":"\u670D\u52A1","link":"/guide/services"},{"text":"\u5B9A\u65F6\u4EFB\u52A1","link":"/guide/tasks"},{"text":"\u62A5\u8B66\u901A\u77E5","link":"/guide/notifications"},{"text":"\u8BBE\u7F6E","link":"/guide/settings"}]},{"text":"\u5E38\u89C1\u95EE\u9898","children":[{"text":"TG api\u88AB\u5899","link":"/guide/q1"},{"text":"Agent \u542F\u52A8/\u4E0A\u7EBF \u95EE\u9898\u81EA\u68C0\u6D41\u7A0B","link":"/guide/q2"},{"text":"\u5982\u4F55\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3","link":"/guide/q3"},{"text":"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","link":"/guide/q4"},{"text":"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","link":"/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"\u5728GitHub\u4E2D\u7F16\u8F91","lastUpdated":"\u4E0A\u6B21\u66F4\u65B0"},"/en_US/":{"label":"English","nav":[{"text":"User Guide","link":"/en_US/","activeMatch":"^/$|^/en_US/guide/"},{"text":"Development Manual","link":"/en_US/developer/basics","activeMatch":"^/en_US/developer/"}],"sidebar":{"/en_US/guide/":[{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Let the Agent start/on-line, and the self-test process of the problem","link":"/en_US/guide/q2"},{"text":"Reverse Proxy gRPC Port (support Cloudflare CDN)","link":"/en_US/guide/q3"},{"text":"Real-time channel disconnection/online terminal connection failure","link":"/en_US/guide/q4"},{"text":"How do I migrate my data to the new server and restore my backups?","link":"/en_US/guide/q5"}]}],"/en_US/developer/":[{"text":"App Config","children":[{"text":"Basics","link":"/en_US/developer/basics"}]},{"text":"Theme Config","children":[{"text":"Homepage","link":"/en_US/developer/homepage"},{"text":"Algolia Search","link":"/en_US/developer/algolia-search"},{"text":"Carbon Ads","link":"/en_US/developer/carbon-ads"}]}],"/en_US/":[{"text":"Installation Manual","children":[{"text":"Install Dashboard","link":"/en_US/guide/dashboard"},{"text":"Install Agent","link":"/en_US/guide/agent"}]},{"text":"Admin Panel","children":[{"text":"Servers","link":"/en_US/guide/servers"},{"text":"Services","link":"/en_US/guide/services"},{"text":"Tasks","link":"/en_US/guide/tasks"},{"text":"Notifications","link":"/en_US/guide/notifications"},{"text":"Settings","link":"/en_US/guide/settings"}]},{"text":"FAQ","children":[{"text":"Let the Agent start/on-line, and the self-test process of the problem","link":"/en_US/guide/q2"},{"text":"Reverse Proxy gRPC Port (support Cloudflare CDN)","link":"/en_US/guide/q3"},{"text":"Real-time channel disconnection/online terminal connection failure","link":"/en_US/guide/q4"},{"text":"How do I migrate my data to the new server and restore my backups?","link":"/en_US/guide/q5"}]}]},"repo":"nezhahq/nezhahq.github.io","docsDir":"docs","docsBranch":"main","editLinks":true,"editLinkText":"Edit this page on GitHub","lastUpdated":"Last Updated"}}},"locales":{"/":{"lang":"zh-CN","title":"\u54EA\u5412\u76D1\u63A7","description":"\u54EA\u5412\u76D1\u63A7\u662F\u4E00\u4E2A\u8F7B\u91CF\u5316\u7684\u8FD0\u7EF4\u5DE5\u5177"},"/en_US/":{"lang":"en-US","title":"Nezha Monitoring","description":"Nezha Monitoring is a lightweight O&M tool"}},"langs":{"/":{"label":"\u7B80\u4F53\u4E2D\u6587","lang":"zh-CN"},"/en_US/":{"label":"English","lang":"en-US"}},"scrollOffset":90}';const di=/^https?:/i,Ie=typeof window!="undefined";function Zl(e,t){t.sort((n,s)=>{const r=s.split("/").length-n.split("/").length;return r!==0?r:s.length-n.length});for(const n of t)if(e.startsWith(n))return n}function nr(e,t){const n=Zl(t,Object.keys(e));return n?e[n]:void 0}function Ql(e){const{locales:t}=e.themeConfig||{},n=e.locales;return t&&n?Object.keys(t).reduce((s,r)=>(s[r]={label:t[r].label,lang:n[r].lang},s),{}):{}}function Gl(e,t){t=ec(e,t);const n=nr(e.locales||{},t),s=nr(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:Ql(e)})}function ec(e,t){if(!Ie)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const hi=Symbol(),Vt=vo(tc(Xl));function tc(e){return JSON.parse(e)}function nc(e){const t=D(()=>Gl(Vt.value,e.path));return{site:t,theme:D(()=>t.value.themeConfig),page:D(()=>e.data),frontmatter:D(()=>e.data.frontmatter),lang:D(()=>t.value.lang),localePath:D(()=>{const{langs:n,lang:s}=t.value,r=Object.keys(n).find(i=>n[i].lang===s);return xt(r||"/")}),title:D(()=>e.data.title?e.data.title+" | "+t.value.title:t.value.title),description:D(()=>e.data.description||t.value.description)}}function me(){const e=Ot(hi);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function xt(e){return di.test(e)?e:sc(Vt.value.base,e)}function pi(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t.endsWith("/")&&(t+="index"),Ie){const n="/";t=t.slice(n.length).replace(/\//g,"_")+".md";const s=__VP_HASH_MAP__[t.toLowerCase()];t=`${n}assets/${t}.${s}.js`}else t=`./${t.slice(1).replace(/\//g,"_")}.md.js`;return t}const _i=Symbol(),sr="http://a.com",gi={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},rc=()=>({path:"/",component:null,data:gi});function ic(e,t){const n=yn(rc());function s(o=Ie?location.href:"/"){const l=new URL(o,sr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",o=l.pathname+l.search+l.hash),Ie&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",o)),i(o)}let r=null;async function i(o,l=0,c=!1){const f=new URL(o,sr),h=r=f.pathname;try{let g=e(h);if("then"in g&&typeof g.then=="function"&&(g=await g),r===h){r=null;const{default:y,__pageData:A}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=Lt(y),n.data=Lt(JSON.parse(A)),Ie&&Ur(()=>{if(f.hash&&!l){let M=null;try{M=document.querySelector(decodeURIComponent(f.hash))}catch(V){console.warn(V)}if(M){rr(M,f.hash);return}}window.scrollTo(0,l)})}}catch(g){if(g.message.match(/fetch/)||console.error(g),!c)try{const y=await fetch(Vt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await y.json(),await i(o,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?Lt(t):null,n.data=gi)}}return Ie&&(window.addEventListener("click",o=>{const l=o.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:g,hash:y,target:A}=l,M=window.location,V=g.match(/\.\w+$/);!o.ctrlKey&&!o.shiftKey&&!o.altKey&&!o.metaKey&&A!=="_blank"&&f===M.protocol&&h===M.hostname&&!(V&&V[0]!==".html")&&(o.preventDefault(),g===M.pathname?y&&y!==M.hash&&(history.pushState(null,"",y),window.dispatchEvent(new Event("hashchange")),rr(l,y,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",o=>{i(location.href,o.state&&o.state.scrollPosition||0)}),window.addEventListener("hashchange",o=>{o.preventDefault()})),{route:n,go:s}}function oc(){const e=Ot(_i);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return oc().route}function rr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){let r=Vt.value.scrollOffset;typeof r=="string"&&(r=document.querySelector(r).getBoundingClientRect().bottom+24);const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-r+i;!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})}}function lc(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}const o=[],l=Math.min(n.length,i.length);for(let c=0;cdocument.head.removeChild(c)),i.slice(l).forEach(c=>{const f=ir(c);document.head.appendChild(f),o.push(f)}),n=o};Wr(()=>{const i=e.data,o=t.value,l=i&&i.title,c=i&&i.description,f=i&&i.frontmatter.head;document.title=(l?l+" | ":"")+o.title,document.querySelector("meta[name=description]").setAttribute("content",c||o.description),r([...f?ac(f):[]])})}function ir([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function cc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function ac(e){return e.filter(t=>!cc(t))}const uc=oe({name:"VitePressContent",setup(){const e=et();return()=>at("div",{style:{position:"relative"}},[e.component?at(e.component):null])}});var ce=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};const fc=/#.*$/,dc=/(index)?\.(md|html)$/,pn=/\/$/,hc=/^[a-z]+:/i;function xs(e){return Array.isArray(e)}function ys(e){return hc.test(e)}function pc(e,t){if(t===void 0)return!1;const n=or(`/${e.data.relativePath}`),s=or(t);return n===s}function or(e){return decodeURI(e).replace(fc,"").replace(dc,"")}function _c(e,t){const n=e.endsWith("/"),s=t.startsWith("/");return n&&s?e.slice(0,-1)+t:!n&&!s?`${e}/${t}`:e+t}function Gn(e){return/^\//.test(e)?e:`/${e}`}function mi(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function gc(e){return e===!1||e==="auto"||xs(e)}function mc(e){return e.children!==void 0}function vc(e){return xs(e)?e.length===0:!e}function ws(e,t){if(gc(e))return e;t=Gn(t);for(const n in e)if(t.startsWith(Gn(n)))return e[n];return"auto"}function vi(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:mi(n.link)}),mc(n)&&(t=[...t,...vi(n.children)]),t),[])}function bi(e){const t=et(),n=ys(e.value.link);return{props:D(()=>{const r=lr(`/${t.data.relativePath}`);let i=!1;if(e.value.activeMatch)i=new RegExp(e.value.activeMatch).test(r);else{const o=lr(e.value.link);i=o==="/"?o===r:r.startsWith(o)}return{class:{active:i,isExternal:n},href:n?e.value.link:xt(e.value.link),target:e.value.target||(n?"_blank":null),rel:e.value.rel||(n?"noopener noreferrer":null),"aria-label":e.value.ariaLabel}}),isExternal:n}}function lr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const bc={},xc={class:"icon outbound",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},yc=U("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"},null,-1),wc=U("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"},null,-1),kc=[yc,wc];function $c(e,t){return T(),R("svg",xc,kc)}var ks=ce(bc,[["render",$c]]);const Cc={class:"nav-link"},Ec=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(T(),R("div",Cc,[U("a",vs({class:"item"},$(s)),[zt(be(e.item.text)+" ",1),$(r)?(T(),ge(ks,{key:0})):J("",!0)],16)]))}});var _n=ce(Ec,[["__scopeId","data-v-b8818f8c"]]);const Tc={key:0,class:"home-hero"},Ac={key:0,class:"figure"},Pc=["src","alt"],Sc={key:1,id:"main-title",class:"title"},Lc={key:2,class:"tagline"},Ic=oe({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:o,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return o||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),i=D(()=>n.value.tagline||t.value.description);return(o,l)=>$(s)?(T(),R("header",Tc,[$(n).heroImage?(T(),R("figure",Ac,[U("img",{class:"image",src:$(xt)($(n).heroImage),alt:$(n).heroAlt},null,8,Pc)])):J("",!0),$(r)?(T(),R("h1",Sc,be($(r)),1)):J("",!0),$(i)?(T(),R("p",Lc,be($(i)),1)):J("",!0),$(n).actionLink&&$(n).actionText?(T(),ge(_n,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):J("",!0),$(n).altActionLink&&$(n).altActionText?(T(),ge(_n,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):J("",!0)])):J("",!0)}});var Mc=ce(Ic,[["__scopeId","data-v-370f18c0"]]);const Oc={key:0,class:"home-features"},Rc={class:"wrapper"},Uc={class:"container"},Fc={class:"features"},Nc={key:0,class:"title"},Hc={key:1,class:"details"},Bc=oe({setup(e){const{frontmatter:t}=me(),n=D(()=>t.value.features&&t.value.features.length>0),s=D(()=>t.value.features?t.value.features:[]);return(r,i)=>$(n)?(T(),R("div",Oc,[U("div",Rc,[U("div",Uc,[U("div",Fc,[(T(!0),R(fe,null,Pn($(s),(o,l)=>(T(),R("section",{key:l,class:"feature"},[o.title?(T(),R("h2",Nc,be(o.title),1)):J("",!0),o.details?(T(),R("p",Hc,be(o.details),1)):J("",!0)]))),128))])])])])):J("",!0)}});var Dc=ce(Bc,[["__scopeId","data-v-e39c13e0"]]);const jc={key:0,class:"footer"},qc={class:"container"},Kc={class:"text"},Wc=oe({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(T(),R("footer",jc,[U("div",qc,[U("p",Kc,be($(t).footer),1)])])):J("",!0)}});var zc=ce(Wc,[["__scopeId","data-v-30918238"]]);const Vc={class:"home","aria-labelledby":"main-title"},Jc={class:"home-content"},Yc=oe({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",Vc,[N(Mc),ae(t.$slots,"hero",{},void 0,!0),N(Dc),U("div",Jc,[N(s)]),ae(t.$slots,"features",{},void 0,!0),N(zc),ae(t.$slots,"footer",{},void 0,!0)])}}});var Xc=ce(Yc,[["__scopeId","data-v-10122c92"]]);const Zc=["href","aria-label"],Qc=["src"],Gc=oe({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,i)=>(T(),R("a",{class:"nav-bar-title",href:$(s),"aria-label":`${$(t).title}, back to home`},[$(n).logo?(T(),R("img",{key:0,class:"logo",src:$(xt)($(n).logo),alt:"Logo"},null,8,Qc)):J("",!0),zt(" "+be($(t).title),1)],8,Zc))}});var ea=ce(Gc,[["__scopeId","data-v-cc01ef16"]]);function ta(){const{site:e,localePath:t,theme:n}=me();return D(()=>{const s=e.value.langs,r=Object.keys(s);if(r.length<2)return null;const o=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${o}`}));return{text:n.value.selectText||"Languages",items:l}})}const na=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function sa(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=ra(n);return{text:ia(s,t.repoLabel),link:s}})}function ra(e){return di.test(e)?e:`https://github.com/${e}`}function ia(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=na.find(([r,i])=>i.test(n[0]));return s&&s[0]?s[0]:"Source"}const oa=e=>(jr("data-v-bbc27490"),e=e(),qr(),e),la={class:"nav-dropdown-link-item"},ca=oa(()=>U("span",{class:"arrow"},null,-1)),aa={class:"text"},ua={class:"icon"},fa=oe({props:{item:null},setup(e){const n=Or(e),{props:s,isExternal:r}=bi(n.item);return(i,o)=>(T(),R("div",la,[U("a",vs({class:"item"},$(s)),[ca,U("span",aa,be(e.item.text),1),U("span",ua,[$(r)?(T(),ge(ks,{key:0})):J("",!0)])],16)]))}});var da=ce(fa,[["__scopeId","data-v-bbc27490"]]);const ha=["aria-label"],pa={class:"button-text"},_a={class:"dialog"},ga=oe({props:{item:null},setup(e){const t=et(),n=wn(!1);it(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,i)=>(T(),R("div",{class:ct(["nav-dropdown-link",{open:n.value}])},[U("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[U("span",pa,be(e.item.text),1),U("span",{class:ct(["button-arrow",n.value?"down":"right"])},null,2)],8,ha),U("ul",_a,[(T(!0),R(fe,null,Pn(e.item.items,o=>(T(),R("li",{key:o.text,class:"dialog-item"},[N(da,{item:o},null,8,["item"])]))),128))])],2))}});var cr=ce(ga,[["__scopeId","data-v-56bf3a3f"]]);const ma={key:0,class:"nav-links"},va={key:1,class:"item"},ba={key:2,class:"item"},xa=oe({setup(e){const{theme:t}=me(),n=ta(),s=sa(),r=D(()=>t.value.nav||s.value||n.value);return(i,o)=>$(r)?(T(),R("nav",ma,[$(t).nav?(T(!0),R(fe,{key:0},Pn($(t).nav,l=>(T(),R("div",{key:l.text,class:"item"},[l.items?(T(),ge(cr,{key:0,item:l},null,8,["item"])):(T(),ge(_n,{key:1,item:l},null,8,["item"]))]))),128)):J("",!0),$(n)?(T(),R("div",va,[N(cr,{item:$(n)},null,8,["item"])])):J("",!0),$(s)?(T(),R("div",ba,[N(_n,{item:$(s)},null,8,["item"])])):J("",!0)])):J("",!0)}});var xi=ce(xa,[["__scopeId","data-v-eab3edfe"]]);const ya={emits:["toggle"]},wa=U("svg",{class:"icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"},[U("path",{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z",class:""})],-1),ka=[wa];function $a(e,t,n,s,r,i){return T(),R("div",{class:"sidebar-button",onClick:t[0]||(t[0]=o=>e.$emit("toggle"))},ka)}var Ca=ce(ya,[["render",$a]]);const Ea=e=>(jr("data-v-675d8756"),e=e(),qr(),e),Ta={class:"nav-bar"},Aa=Ea(()=>U("div",{class:"flex-grow"},null,-1)),Pa={class:"nav"},Sa=oe({emits:["toggle"],setup(e){return(t,n)=>(T(),R("header",Ta,[N(Ca,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),N(ea),Aa,U("div",Pa,[N(xi)]),ae(t.$slots,"search",{},void 0,!0)]))}});var La=ce(Sa,[["__scopeId","data-v-675d8756"]]);function Ia(){let e=null,t=null;const n=Fa(s,300);function s(){const o=Ma(),l=Oa(o);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function i(o){o&&o.classList.remove("active")}$t(()=>{s(),window.addEventListener("scroll",n)}),Yr(()=>{r(decodeURIComponent(location.hash))}),Tn(()=>{window.removeEventListener("scroll",n)})}function Ma(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Oa(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Ra(){return document.querySelector(".nav-bar").offsetHeight}function ar(e){const t=Ra();return e.parentElement.offsetTop-t-15}function Ua(e,t,n){const s=window.scrollY;return e===0&&s===0?[!0,null]:s{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Na(){const e=et(),{site:t}=me();return Ia(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return ur(n,r);const i=ws(t.value.themeConfig.sidebar,e.data.relativePath);return i===!1?[]:i==="auto"?ur(n,r):i})}function ur(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:i,slug:o})=>{if(r-1>t)return;const l={text:i,link:`#${o}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const yi=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,i=s.value.sidebarDepth||1/0,o=t.data.headers,l=e.item.text,c=Ha(n.value.base,e.item.link),f=e.item.children,h=pc(t,e.item.link),g=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(yi,{item:r,depth:s}))):e&&n?wi(!1,Ba(n),void 0,s):null}function Ba(e){return ki(Da(e))}function Da(e){e=e.map(n=>Object.assign({},n));let t;return e.forEach(n=>{n.level===2?t=n:t&&(t.children||(t.children=[])).push(n)}),e.filter(n=>n.level===2)}function ki(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?ki(t.children):void 0}))}const ja={key:0,class:"sidebar-links"},qa=oe({setup(e){const t=Na();return(n,s)=>$(t).length>0?(T(),R("ul",ja,[(T(!0),R(fe,null,Pn($(t),r=>(T(),ge($(yi),{item:r},null,8,["item"]))),256))])):J("",!0)}});const Ka=oe({props:{open:{type:Boolean}},setup(e){return(t,n)=>(T(),R("aside",{class:ct(["sidebar",{open:e.open}])},[N(xi,{class:"nav"}),ae(t.$slots,"sidebar-top",{},void 0,!0),N(qa),ae(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var Wa=ce(Ka,[["__scopeId","data-v-83e92a68"]]);const za=/bitbucket.org/;function Va(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:i,docsDir:o="",docsBranch:l="master",docsRepo:c=i,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:g}=e.value;return!h||!g||!i?null:Ja(i,c,o,l,g)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function Ja(e,t,n,s,r){return za.test(e)?Xa(e,t,n,s,r):Ya(e,t,n,s,r)}function Ya(e,t,n,s,r){return(ys(t)?t:`https://github.com/${t}`).replace(pn,"")+`/edit/${s}/`+(n?n.replace(pn,"")+"/":"")+r}function Xa(e,t,n,s,r){return(ys(t)?t:e).replace(pn,"")+`/src/${s}/`+(n?n.replace(pn,"")+"/":"")+r+`?mode=edit&spa=0&at=${s}&fileviewer=file-view-default`}const Za={class:"edit-link"},Qa=["href"],Ga=oe({setup(e){const{url:t,text:n}=Va();return(s,r)=>(T(),R("div",Za,[$(t)?(T(),R("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[zt(be($(n))+" ",1),N(ks,{class:"icon"})],8,Qa)):J("",!0)]))}});var eu=ce(Ga,[["__scopeId","data-v-1ed99556"]]);const tu={key:0,class:"last-updated"},nu={class:"prefix"},su={class:"datetime"},ru=oe({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const o=t.value.lastUpdated;return o!==void 0&&o!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const o=t.value.lastUpdated;return o===!0?"Last Updated":o}),i=wn("");return $t(()=>{Wr(()=>{i.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(o,l)=>$(s)?(T(),R("p",tu,[U("span",nu,be($(r))+":",1),U("span",su,be(i.value),1)])):J("",!0)}});var iu=ce(ru,[["__scopeId","data-v-abce3432"]]);const ou={class:"page-footer"},lu={class:"edit"},cu={class:"updated"},au=oe({setup(e){const{page:t}=me();return(n,s)=>(T(),R("footer",ou,[U("div",lu,[N(eu)]),U("div",cu,[$(t).lastUpdated?(T(),ge(iu,{key:0})):J("",!0)])]))}});var uu=ce(au,[["__scopeId","data-v-07c132fc"]]);function fu(){const{page:e,theme:t}=me(),n=D(()=>mi(Gn(e.value.relativePath))),s=D(()=>{const c=ws(t.value.sidebar,n.value);return xs(c)?vi(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),i=D(()=>{if(t.value.nextLinks!==!1&&r.value>-1&&r.value{if(t.value.prevLinks!==!1&&r.value>0)return s.value[r.value-1]}),l=D(()=>!!i.value||!!o.value);return{next:i,prev:o,hasLinks:l}}const du={},hu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},pu=U("path",{d:"M19,11H7.4l5.3-5.3c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-7,7c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.2-0.1,0.5,0,0.8c0.1,0.1,0.1,0.2,0.2,0.3l7,7c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L7.4,13H19c0.6,0,1-0.4,1-1S19.6,11,19,11z"},null,-1),_u=[pu];function gu(e,t){return T(),R("svg",hu,_u)}var mu=ce(du,[["render",gu]]);const vu={},bu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},xu=U("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),yu=[xu];function wu(e,t){return T(),R("svg",bu,yu)}var ku=ce(vu,[["render",wu]]);const $u={key:0,class:"next-and-prev-link"},Cu={class:"container"},Eu={class:"prev"},Tu=["href"],Au={class:"text"},Pu={class:"next"},Su=["href"],Lu={class:"text"},Iu=oe({setup(e){const{hasLinks:t,prev:n,next:s}=fu();return(r,i)=>$(t)?(T(),R("div",$u,[U("div",Cu,[U("div",Eu,[$(n)?(T(),R("a",{key:0,class:"link",href:$(xt)($(n).link)},[N(mu,{class:"icon icon-prev"}),U("span",Au,be($(n).text),1)],8,Tu)):J("",!0)]),U("div",Pu,[$(s)?(T(),R("a",{key:0,class:"link",href:$(xt)($(s).link)},[U("span",Lu,be($(s).text),1),N(ku,{class:"icon icon-next"})],8,Su)):J("",!0)])])])):J("",!0)}});var Mu=ce(Iu,[["__scopeId","data-v-38ede35f"]]);const Ou={class:"page"},Ru={class:"container"},Uu=oe({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",Ou,[U("div",Ru,[ae(t.$slots,"top",{},void 0,!0),N(s,{class:"content"}),N(uu),N(Mu),ae(t.$slots,"bottom",{},void 0,!0)])])}}});var Fu=ce(Uu,[["__scopeId","data-v-7eddb2c4"]]);const Nu={key:0,id:"ads-container"},Hu=oe({setup(e){const t=()=>null,n=t,s=t,r=t,i=et(),{site:o,page:l,theme:c,frontmatter:f}=me(),h=D(()=>!!f.value.customLayout),g=D(()=>!!f.value.home),y=D(()=>Object.keys(o.value.langs).length>1),A=D(()=>{const L=c.value;return f.value.navbar===!1||L.navbar===!1?!1:o.value.title||L.logo||L.repo||L.nav}),M=wn(!1),V=D(()=>f.value.home||f.value.sidebar===!1?!1:!vc(ws(c.value.sidebar,i.data.relativePath))),m=L=>{M.value=typeof L=="boolean"?L:!M.value},w=m.bind(null,!1);it(i,w);const K=D(()=>[{"no-navbar":!A.value,"sidebar-open":M.value,"no-sidebar":!V.value}]);return(L,H)=>{const X=un("Content"),Z=un("Debug");return T(),R(fe,null,[U("div",{class:ct(["theme",$(K)])},[$(A)?(T(),ge(La,{key:0,onToggle:m},{search:De(()=>[ae(L.$slots,"navbar-search",{},()=>[$(c).algolia?(T(),ge($(r),{key:0,options:$(c).algolia,multilang:$(y)},null,8,["options","multilang"])):J("",!0)])]),_:3})):J("",!0),N(Wa,{open:M.value},{"sidebar-top":De(()=>[ae(L.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ae(L.$slots,"sidebar-bottom")]),_:3},8,["open"]),U("div",{class:"sidebar-mask",onClick:H[0]||(H[0]=B=>m(!1))}),$(h)?(T(),ge(X,{key:1})):$(g)?ae(L.$slots,"home",{key:2},()=>[N(Xc,null,{hero:De(()=>[ae(L.$slots,"home-hero")]),features:De(()=>[ae(L.$slots,"home-features")]),footer:De(()=>[ae(L.$slots,"home-footer")]),_:3})]):(T(),ge(Fu,{key:3},{top:De(()=>[ae(L.$slots,"page-top-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.carbon?(T(),R("div",Nu,[(T(),ge($(n),{key:"carbon"+$(l).relativePath,code:$(c).carbonAds.carbon,placement:$(c).carbonAds.placement},null,8,["code","placement"]))])):J("",!0)]),ae(L.$slots,"page-top")]),bottom:De(()=>[ae(L.$slots,"page-bottom"),ae(L.$slots,"page-bottom-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.custom?(T(),ge($(s),{key:"custom"+$(l).relativePath,code:$(c).carbonAds.custom,placement:$(c).carbonAds.placement},null,8,["code","placement"])):J("",!0)])]),_:3}))],2),N(Z)],64)}}}),Bu={class:"theme"},Du=U("h1",null,"404",-1),ju=["href"],qu=oe({setup(e){const{site:t}=me(),n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."];function s(){return n[Math.floor(Math.random()*n.length)]}return(r,i)=>(T(),R("div",Bu,[Du,U("blockquote",null,be(s()),1),U("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,ju)]))}}),gn={Layout:Hu,NotFound:qu},Bn=new Set,$i=()=>document.createElement("link"),Ku=e=>{const t=$i();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Wu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const zu=Ie&&(tn=$i())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?Ku:Wu;function Vu(){if(!Ie||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Bn.has(c)){Bn.add(c);const f=pi(c);zu(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o,hostname:l,pathname:c}=i,f=c.match(/\.\w+$/);f&&f[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Bn.add(c))})})};$t(s);const r=et();it(()=>r.path,s),Tn(()=>{n&&n.disconnect()})}const Ju=oe({setup(e,{slots:t}){const n=wn(!1);return $t(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),Yu=gn.NotFound||(()=>"404 Not Found"),Xu={name:"VitePressApp",setup(){const{site:e}=me();return $t(()=>{it(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),Vu(),()=>at(gn.Layout)}};function Zu(){const e=Gu(),t=Qu();t.provide(_i,e);const n=nc(e.route);return t.provide(hi,n),t.component("Content",uc),t.component("ClientOnly",Ju),t.component("Debug",()=>null),Object.defineProperty(t.config.globalProperties,"$frontmatter",{get(){return n.frontmatter.value}}),gn.enhanceApp&&gn.enhanceApp({app:t,router:e,siteData:Vt}),{app:t,router:e,data:n}}function Qu(){return Jl(Xu)}function Gu(){let e=Ie,t;return ic(n=>{let s=pi(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Ie?(e=!1,Pi(()=>import(s),[])):require(s)},Yu)}if(Ie){const{app:e,router:t,data:n}=Zu();t.go().then(()=>{lc(t.route,n.site),e.mount("#app")})}export{ce as _,ef as a,U as b,R as c,Zu as createApp,zt as d,T as o}; diff --git a/assets/developer_algolia-search.md.f247b64d.js b/assets/developer_algolia-search.md.0e57e75f.js similarity index 98% rename from assets/developer_algolia-search.md.f247b64d.js rename to assets/developer_algolia-search.md.0e57e75f.js index bb4427e2..58473bbf 100644 --- a/assets/developer_algolia-search.md.f247b64d.js +++ b/assets/developer_algolia-search.md.0e57e75f.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,o as s,a as e}from"./app.13513b34.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e(`

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
+import{_ as a,c as n,o as s,a as e}from"./app.32957174.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e(`

Theme Config: Algolia Search

The themeConfig.algolia option allows you to use Algolia DocSearch. To enable it, you need to provide at least appId, apiKey and indexName:

module.exports = {
   themeConfig: {
     algolia: {
       appId: 'your_app_id',
diff --git a/assets/developer_algolia-search.md.f247b64d.lean.js b/assets/developer_algolia-search.md.0e57e75f.lean.js
similarity index 84%
rename from assets/developer_algolia-search.md.f247b64d.lean.js
rename to assets/developer_algolia-search.md.0e57e75f.lean.js
index 5ddbb64b..9a106639 100644
--- a/assets/developer_algolia-search.md.f247b64d.lean.js
+++ b/assets/developer_algolia-search.md.0e57e75f.lean.js
@@ -1 +1 @@
-import{_ as a,c as n,o as s,a as e}from"./app.13513b34.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e("",9),o=[p];function r(l,c,i,u,k,d){return s(),n("div",null,o)}var g=a(t,[["render",r]]);export{y as __pageData,g as default};
+import{_ as a,c as n,o as s,a as e}from"./app.32957174.js";const y='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[{"level":2,"title":"Internationalization (i18n)","slug":"internationalization-i18n"}],"relativePath":"developer/algolia-search.md"}',t={},p=e("",9),o=[p];function r(l,c,i,u,k,d){return s(),n("div",null,o)}var g=a(t,[["render",r]]);export{y as __pageData,g as default};
diff --git a/assets/developer_basics.md.b1833b91.js b/assets/developer_basics.md.934280ae.js
similarity index 98%
rename from assets/developer_basics.md.b1833b91.js
rename to assets/developer_basics.md.934280ae.js
index a47de606..a955f6b8 100644
--- a/assets/developer_basics.md.b1833b91.js
+++ b/assets/developer_basics.md.934280ae.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as s,a as t}from"./app.13513b34.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t(`

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
+import{_ as e,c as a,o as s,a as t}from"./app.32957174.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t(`

App Config: Basics

TIP

The config reference is incomplete since the config format may still receive further changes. For a complete reference of the current available options, refer to config.ts.

base

  • Type: string
  • Default: /

The base URL the site will be deployed at. You will need to set this if you plan to deploy your site under a sub path, for example, GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/, then you should set base to '/bar/'. It should always start and end with a slash.

The base is automatically prepended to all the URLs that start with / in other options, so you only need to specify it once.

module.exports = {
   base: '/base/'
 }
 

lang

  • Type: string
  • Default: en-US

The lang attribute for the site. This will render as a <html lang="en-US"> tag in the page HTML.

module.exports = {
diff --git a/assets/developer_basics.md.b1833b91.lean.js b/assets/developer_basics.md.934280ae.lean.js
similarity index 87%
rename from assets/developer_basics.md.b1833b91.lean.js
rename to assets/developer_basics.md.934280ae.lean.js
index cde824f0..a8b733a3 100644
--- a/assets/developer_basics.md.b1833b91.lean.js
+++ b/assets/developer_basics.md.934280ae.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as s,a as t}from"./app.13513b34.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t("",19),i=[o];function p(l,r,c,d,u,h){return s(),a("div",null,i)}var b=e(n,[["render",p]]);export{f as __pageData,b as default};
+import{_ as e,c as a,o as s,a as t}from"./app.32957174.js";const f='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[{"level":2,"title":"base","slug":"base"},{"level":2,"title":"lang","slug":"lang"},{"level":2,"title":"title","slug":"title"},{"level":2,"title":"description","slug":"description"}],"relativePath":"developer/basics.md"}',n={},o=t("",19),i=[o];function p(l,r,c,d,u,h){return s(),a("div",null,i)}var b=e(n,[["render",p]]);export{f as __pageData,b as default};
diff --git a/assets/developer_carbon-ads.md.b1f27f6d.js b/assets/developer_carbon-ads.md.550ab585.js
similarity index 96%
rename from assets/developer_carbon-ads.md.b1f27f6d.js
rename to assets/developer_carbon-ads.md.550ab585.js
index 4ca2db59..438eb520 100644
--- a/assets/developer_carbon-ads.md.b1f27f6d.js
+++ b/assets/developer_carbon-ads.md.550ab585.js
@@ -1,4 +1,4 @@
-import{_ as n,c as a,o as s,a as e}from"./app.13513b34.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e(`

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
+import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e(`

Theme Config: Carbon Ads

VitePress has built in native support for Carbon Ads. By defining the Carbon Ads credentials in config, VitePress will display ads on the page.

module.exports = {
   themeConfig: {
     carbonAds: {
       carbon: 'your-carbon-key',
diff --git a/assets/developer_carbon-ads.md.b1f27f6d.lean.js b/assets/developer_carbon-ads.md.550ab585.lean.js
similarity index 80%
rename from assets/developer_carbon-ads.md.b1f27f6d.lean.js
rename to assets/developer_carbon-ads.md.550ab585.lean.js
index 1c49a598..250b340c 100644
--- a/assets/developer_carbon-ads.md.b1f27f6d.lean.js
+++ b/assets/developer_carbon-ads.md.550ab585.lean.js
@@ -1 +1 @@
-import{_ as n,c as a,o as s,a as e}from"./app.13513b34.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e("",3),p=[o];function r(c,l,i,d,u,_){return s(),a("div",null,p)}var f=n(t,[["render",r]]);export{h as __pageData,f as default};
+import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const h='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"developer/carbon-ads.md"}',t={},o=e("",3),p=[o];function r(c,l,i,d,u,_){return s(),a("div",null,p)}var f=n(t,[["render",r]]);export{h as __pageData,f as default};
diff --git a/assets/developer_homepage.md.1284e614.js b/assets/developer_homepage.md.7e908f8c.js
similarity index 97%
rename from assets/developer_homepage.md.1284e614.js
rename to assets/developer_homepage.md.7e908f8c.js
index 959fc078..41aa3e6c 100644
--- a/assets/developer_homepage.md.1284e614.js
+++ b/assets/developer_homepage.md.7e908f8c.js
@@ -1,4 +1,4 @@
-import{_ as n,c as a,o as s,a as e}from"./app.13513b34.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e(`

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
+import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e(`

Theme Config: Homepage

VitePress provides a homepage layout. To use it, specify home: true plus some other metadata in your root index.md's YAML frontmatter. This is an example of how it works:

---
 home: true
 heroImage: /logo.png
 heroAlt: Logo image
diff --git a/assets/developer_homepage.md.1284e614.lean.js b/assets/developer_homepage.md.7e908f8c.lean.js
similarity index 80%
rename from assets/developer_homepage.md.1284e614.lean.js
rename to assets/developer_homepage.md.7e908f8c.lean.js
index 58f13dfe..52021931 100644
--- a/assets/developer_homepage.md.1284e614.lean.js
+++ b/assets/developer_homepage.md.7e908f8c.lean.js
@@ -1 +1 @@
-import{_ as n,c as a,o as s,a as e}from"./app.13513b34.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e("",3),p=[o];function c(u,l,i,r,k,d){return s(),a("div",null,p)}var _=n(t,[["render",c]]);export{h as __pageData,_ as default};
+import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const h='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"developer/homepage.md"}',t={},o=e("",3),p=[o];function c(u,l,i,r,k,d){return s(),a("div",null,p)}var _=n(t,[["render",c]]);export{h as __pageData,_ as default};
diff --git a/assets/en_US_developer_algolia-search.md.e1475589.js b/assets/en_US_developer_algolia-search.md.62e6f034.js
similarity index 87%
rename from assets/en_US_developer_algolia-search.md.e1475589.js
rename to assets/en_US_developer_algolia-search.md.62e6f034.js
index f8f40898..f4b9c0a6 100644
--- a/assets/en_US_developer_algolia-search.md.e1475589.js
+++ b/assets/en_US_developer_algolia-search.md.62e6f034.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default};
diff --git a/assets/en_US_developer_algolia-search.md.e1475589.lean.js b/assets/en_US_developer_algolia-search.md.62e6f034.lean.js
similarity index 87%
rename from assets/en_US_developer_algolia-search.md.e1475589.lean.js
rename to assets/en_US_developer_algolia-search.md.62e6f034.lean.js
index f8f40898..f4b9c0a6 100644
--- a/assets/en_US_developer_algolia-search.md.e1475589.lean.js
+++ b/assets/en_US_developer_algolia-search.md.62e6f034.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const m='{"title":"Theme Config: Algolia Search","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/algolia-search.md"}',c={},s=e("h1",{id:"theme-config-algolia-search",tabindex:"-1"},[r("Theme Config: Algolia Search "),e("a",{class:"header-anchor",href:"#theme-config-algolia-search","aria-hidden":"true"},"#")],-1),i=[s];function n(l,h,d,_,f,g){return t(),o("div",null,i)}var u=a(c,[["render",n]]);export{m as __pageData,u as default};
diff --git a/assets/en_US_developer_basics.md.b2add91b.js b/assets/en_US_developer_basics.md.4b39fb0b.js
similarity index 86%
rename from assets/en_US_developer_basics.md.b2add91b.js
rename to assets/en_US_developer_basics.md.4b39fb0b.js
index ab60b7f6..70239e84 100644
--- a/assets/en_US_developer_basics.md.b2add91b.js
+++ b/assets/en_US_developer_basics.md.4b39fb0b.js
@@ -1 +1 @@
-import{_ as a,c as s,o as t,b as e,d as c}from"./app.13513b34.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default};
+import{_ as a,c as s,o as t,b as e,d as c}from"./app.32957174.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default};
diff --git a/assets/en_US_developer_basics.md.b2add91b.lean.js b/assets/en_US_developer_basics.md.4b39fb0b.lean.js
similarity index 86%
rename from assets/en_US_developer_basics.md.b2add91b.lean.js
rename to assets/en_US_developer_basics.md.4b39fb0b.lean.js
index ab60b7f6..70239e84 100644
--- a/assets/en_US_developer_basics.md.b2add91b.lean.js
+++ b/assets/en_US_developer_basics.md.4b39fb0b.lean.js
@@ -1 +1 @@
-import{_ as a,c as s,o as t,b as e,d as c}from"./app.13513b34.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default};
+import{_ as a,c as s,o as t,b as e,d as c}from"./app.32957174.js";const m='{"title":"App Config: Basics","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/basics.md"}',o={},r=e("h1",{id:"app-config-basics",tabindex:"-1"},[c("App Config: Basics "),e("a",{class:"header-anchor",href:"#app-config-basics","aria-hidden":"true"},"#")],-1),i=[r];function n(d,p,_,f,h,l){return t(),s("div",null,i)}var u=a(o,[["render",n]]);export{m as __pageData,u as default};
diff --git a/assets/en_US_developer_carbon-ads.md.34f23488.js b/assets/en_US_developer_carbon-ads.md.c3d13f3d.js
similarity index 87%
rename from assets/en_US_developer_carbon-ads.md.34f23488.js
rename to assets/en_US_developer_carbon-ads.md.c3d13f3d.js
index bc969e13..f84242dd 100644
--- a/assets/en_US_developer_carbon-ads.md.34f23488.js
+++ b/assets/en_US_developer_carbon-ads.md.c3d13f3d.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default};
diff --git a/assets/en_US_developer_carbon-ads.md.34f23488.lean.js b/assets/en_US_developer_carbon-ads.md.c3d13f3d.lean.js
similarity index 87%
rename from assets/en_US_developer_carbon-ads.md.34f23488.lean.js
rename to assets/en_US_developer_carbon-ads.md.c3d13f3d.lean.js
index bc969e13..f84242dd 100644
--- a/assets/en_US_developer_carbon-ads.md.34f23488.lean.js
+++ b/assets/en_US_developer_carbon-ads.md.c3d13f3d.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const b='{"title":"Theme Config: Carbon Ads","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/carbon-ads.md"}',n={},s=e("h1",{id:"theme-config-carbon-ads",tabindex:"-1"},[r("Theme Config: Carbon Ads "),e("a",{class:"header-anchor",href:"#theme-config-carbon-ads","aria-hidden":"true"},"#")],-1),c=[s];function d(i,_,h,f,p,l){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{b as __pageData,u as default};
diff --git a/assets/en_US_developer_homepage.md.a6db7ce7.js b/assets/en_US_developer_homepage.md.8c3b632f.js
similarity index 87%
rename from assets/en_US_developer_homepage.md.a6db7ce7.js
rename to assets/en_US_developer_homepage.md.8c3b632f.js
index 2e405d92..8a5d812a 100644
--- a/assets/en_US_developer_homepage.md.a6db7ce7.js
+++ b/assets/en_US_developer_homepage.md.8c3b632f.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default};
diff --git a/assets/en_US_developer_homepage.md.a6db7ce7.lean.js b/assets/en_US_developer_homepage.md.8c3b632f.lean.js
similarity index 87%
rename from assets/en_US_developer_homepage.md.a6db7ce7.lean.js
rename to assets/en_US_developer_homepage.md.8c3b632f.lean.js
index 2e405d92..8a5d812a 100644
--- a/assets/en_US_developer_homepage.md.a6db7ce7.lean.js
+++ b/assets/en_US_developer_homepage.md.8c3b632f.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as t,b as e,d as r}from"./app.13513b34.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default};
+import{_ as a,c as o,o as t,b as e,d as r}from"./app.32957174.js";const l='{"title":"Theme Config: Homepage","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/homepage.md"}',n={},s=e("h1",{id:"theme-config-homepage",tabindex:"-1"},[r("Theme Config: Homepage "),e("a",{class:"header-anchor",href:"#theme-config-homepage","aria-hidden":"true"},"#")],-1),c=[s];function d(i,h,p,m,_,f){return t(),o("div",null,c)}var u=a(n,[["render",d]]);export{l as __pageData,u as default};
diff --git a/assets/en_US_guide_agent.md.ec593a1a.js b/assets/en_US_guide_agent.md.82a9d62c.js
similarity index 99%
rename from assets/en_US_guide_agent.md.ec593a1a.js
rename to assets/en_US_guide_agent.md.82a9d62c.js
index a6bb4f34..040611b7 100644
--- a/assets/en_US_guide_agent.md.ec593a1a.js
+++ b/assets/en_US_guide_agent.md.82a9d62c.js
@@ -1,4 +1,4 @@
-import{_ as n,c as e,o as a,a as t}from"./app.13513b34.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

Install Agent using one-click script

\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C


\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent



Linux\u5B89\u88C5Agent


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+import{_ as n,c as e,o as a,a as t}from"./app.32957174.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

Install Agent using one-click script

\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C


\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent



Linux\u5B89\u88C5Agent


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 
 
  • \u9009\u62E9\u201C\u5B89\u88C5\u76D1\u63A7Agent\u201D
  • \u8F93\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u5982\uFF1A\u201Ddata.example.com\u201C
  • \u8F93\u5165\u9762\u677F\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A5555
  • \u8F93\u5165Agent\u5BC6\u94A5\uFF0CAgent\u5BC6\u94A5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u670D\u52A1\u5668\u65F6\u751F\u6210\uFF0C\u53EF\u4EE5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u7684\u201C\u4E3B\u673A\u201D\u9875\u4E2D\u627E\u5230
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u5B89\u88C5Agent


OpenWRT\u5B89\u88C5Agent


\u5982\u4F55\u4F7F \u65E7\u7248OpenWRT/LEDE \u81EA\u542F\u52A8

\u5982\u4F55\u4F7F \u65B0\u7248OpenWRT \u81EA\u542F\u52A8\uFF1F\u6765\u81EA @\u827E\u65AF\u5FB7\u65AF

  • \u9996\u5148\u5728 release \u4E0B\u8F7D\u5BF9\u5E94\u7684\u4E8C\u8FDB\u5236\u89E3\u538B zip \u5305\u540E\u653E\u7F6E\u5230 /root
  • \u8FD0\u884C chmod +x /root/nezha-agent \u8D4B\u4E88\u6267\u884C\u6743\u9650\uFF0C\u7136\u540E\u521B\u5EFA /etc/init.d/nezha-service\uFF1A
#!/bin/sh /etc/rc.common
 
diff --git a/assets/en_US_guide_agent.md.ec593a1a.lean.js b/assets/en_US_guide_agent.md.82a9d62c.lean.js
similarity index 94%
rename from assets/en_US_guide_agent.md.ec593a1a.lean.js
rename to assets/en_US_guide_agent.md.82a9d62c.lean.js
index f47de761..7ea1a44e 100644
--- a/assets/en_US_guide_agent.md.ec593a1a.lean.js
+++ b/assets/en_US_guide_agent.md.82a9d62c.lean.js
@@ -1 +1 @@
-import{_ as n,c as e,o as a,a as t}from"./app.13513b34.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t("",38),l=[i];function o(r,c,p,d,h,u){return a(),e("div",null,l)}var k=n(s,[["render",o]]);export{b as __pageData,k as default};
+import{_ as n,c as e,o as a,a as t}from"./app.32957174.js";const b='{"title":"Install Agent using one-click script","description":"","frontmatter":{},"headers":[{"level":2,"title":"Install Agent using one-click script","slug":"install-agent-using-one-click-script"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"en_US/guide/agent.md"}',s={},i=t("",38),l=[i];function o(r,c,p,d,h,u){return a(),e("div",null,l)}var k=n(s,[["render",o]]);export{b as __pageData,k as default};
diff --git a/assets/en_US_guide_dashboard.md.655e4802.js b/assets/en_US_guide_dashboard.md.98ff237d.js
similarity index 99%
rename from assets/en_US_guide_dashboard.md.655e4802.js
rename to assets/en_US_guide_dashboard.md.98ff237d.js
index db639d23..b5ac90d4 100644
--- a/assets/en_US_guide_dashboard.md.655e4802.js
+++ b/assets/en_US_guide_dashboard.md.98ff237d.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as n,a as t}from"./app.13513b34.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t(`

Preparations


\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5


\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard


  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+import{_ as e,c as a,o as n,a as t}from"./app.32957174.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t(`

Preparations


\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5


\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard


  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 

\u5982\u679C\u4F60\u7684\u9762\u677F\u670D\u52A1\u5668\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\uFF0C\u53EF\u4EE5\u4F7F\u7528\u955C\u50CF\uFF1A

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
 
  • \u7B49\u5F85Docker\u5B89\u88C5\u5B8C\u6BD5\u540E\uFF0C\u5206\u522B\u8F93\u5165\u4EE5\u4E0B\u503C\uFF1A
    OAuth\u63D0\u4F9B\u5546 - Github\u6216Gitee
    Client ID - \u4E4B\u524D\u4FDD\u5B58\u7684Client ID
    Client Secret - \u4E4B\u524D\u4FDD\u5B58\u7684\u5BC6\u94A5
    \u7528\u6237\u540D - Github\u6216Gitee\u7684\u7528\u6237\u540D
    \u7AD9\u70B9\u6807\u9898 - \u81EA\u5B9A\u4E49\u7AD9\u70B9\u6807\u9898
    \u8BBF\u95EE\u7AEF\u53E3 - \u516C\u5F00\u8BBF\u95EE\u7AEF\u53E3\uFF0C\u53EF\u81EA\u5B9A\u4E49\uFF0C\u9ED8\u8BA48008
    Agent\u7684\u901A\u4FE1\u7AEF\u53E3 - Agent\u4E0EDashboard\u7684\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA45555

  • \u8F93\u5165\u5B8C\u6210\u540E\uFF0C\u7B49\u5F85\u62C9\u53D6\u955C\u50CF
    \u5B89\u88C5\u7ED3\u675F\u540E\uFF0C\u5982\u679C\u4E00\u5207\u6B63\u5E38\uFF0C\u6B64\u65F6\u4F60\u53EF\u4EE5\u8BBF\u95EE\u57DF\u540D+\u7AEF\u53E3\u53F7\uFF0C\u5982 \u201Chttp://cdn.example.com:8008\u201D \u6765\u67E5\u770B\u9762\u677F

  • \u5C06\u6765\u5982\u679C\u9700\u8981\u518D\u6B21\u8FD0\u884C\u811A\u672C\uFF0C\u53EF\u4EE5\u8FD0\u884C\uFF1A

./nezha.sh
 

\u6765\u6253\u5F00\u7BA1\u7406\u811A\u672C


\u914D\u7F6E\u53CD\u5411\u4EE3\u7406


  • \u5728\u5B9D\u5854\u9762\u677F\u4E2D\u65B0\u5EFA\u4E00\u4E2A\u7AD9\u70B9\uFF0C\u57DF\u540D\u586B\u5199\u516C\u5F00\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982 \u201Chttp://cdn.example.com\u201C \uFF0C\u7136\u540E\u70B9\u51FB\u201C\u8BBE\u7F6E\u201D\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u9009\u9879\uFF0C\u9009\u62E9\u201C\u53CD\u5411\u4EE3\u7406\u201D - \u201C\u65B0\u5EFA\u53CD\u5411\u4EE3\u7406\u201D

  • \u81EA\u5B9A\u4E49\u4E00\u4E2A\u4EE3\u7406\u540D\u79F0\uFF0C\u5728\u4E0B\u65B9\u201C\u76EE\u6807URL\u201D\u4E2D\u586B\u5165 http://127.0.0.1 \u7136\u540E\u70B9\u51FB\u201C\u4FDD\u5B58\u201D

  • \u6253\u5F00\u521A\u521A\u65B0\u5EFA\u7684\u53CD\u5411\u4EE3\u7406\u53F3\u8FB9\u7684\u201C\u914D\u7F6E\u6587\u4EF6\u201D\uFF0C\u5C06\u914D\u7F6E\u6587\u4EF6\u66FF\u6362\u4E3A\u4EE5\u4E0B\u5185\u5BB9\uFF1A

#PROXY-START/
diff --git a/assets/en_US_guide_dashboard.md.655e4802.lean.js b/assets/en_US_guide_dashboard.md.98ff237d.lean.js
similarity index 92%
rename from assets/en_US_guide_dashboard.md.655e4802.lean.js
rename to assets/en_US_guide_dashboard.md.98ff237d.lean.js
index 1d207b06..7de6a691 100644
--- a/assets/en_US_guide_dashboard.md.655e4802.lean.js
+++ b/assets/en_US_guide_dashboard.md.98ff237d.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as n,a as t}from"./app.13513b34.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t("",32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default};
+import{_ as e,c as a,o as n,a as t}from"./app.32957174.js";const k='{"title":"Preparations","description":"","frontmatter":{},"headers":[{"level":3,"title":"Preparations","slug":"preparations"},{"level":3,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":3,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":3,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":3,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"en_US/guide/dashboard.md"}',s={},o=t("",32),r=[o];function p(l,c,i,d,h,u){return n(),a("div",null,r)}var m=e(s,[["render",p]]);export{k as __pageData,m as default};
diff --git a/assets/en_US_guide_notifications.md.fa68d9af.js b/assets/en_US_guide_notifications.md.e9ca4955.js
similarity index 80%
rename from assets/en_US_guide_notifications.md.fa68d9af.js
rename to assets/en_US_guide_notifications.md.e9ca4955.js
index 0b558205..e00c2562 100644
--- a/assets/en_US_guide_notifications.md.fa68d9af.js
+++ b/assets/en_US_guide_notifications.md.e9ca4955.js
@@ -1 +1 @@
-import{_ as t,c as e,o,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default};
+import{_ as t,c as e,o,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_notifications.md.fa68d9af.lean.js b/assets/en_US_guide_notifications.md.e9ca4955.lean.js
similarity index 80%
rename from assets/en_US_guide_notifications.md.fa68d9af.lean.js
rename to assets/en_US_guide_notifications.md.e9ca4955.lean.js
index 0b558205..e00c2562 100644
--- a/assets/en_US_guide_notifications.md.fa68d9af.lean.js
+++ b/assets/en_US_guide_notifications.md.e9ca4955.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default};
+import{_ as t,c as e,o,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/notifications.md"}',n={},s=a("p",null,"notifications",-1),i=[s];function c(r,_,d,p,f,l){return o(),e("div",null,i)}var h=t(n,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q1.md.2c880b4a.js b/assets/en_US_guide_q1.md.2c880b4a.js
deleted file mode 100644
index d27f8c0a..00000000
--- a/assets/en_US_guide_q1.md.2c880b4a.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q1.md"}',s={},r=o("p",null,"q1",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q1.md.2c880b4a.lean.js b/assets/en_US_guide_q1.md.2c880b4a.lean.js
deleted file mode 100644
index d27f8c0a..00000000
--- a/assets/en_US_guide_q1.md.2c880b4a.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q1.md"}',s={},r=o("p",null,"q1",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q2.md.a57b9066.js b/assets/en_US_guide_q2.md.100c5279.js
similarity index 79%
rename from assets/en_US_guide_q2.md.a57b9066.js
rename to assets/en_US_guide_q2.md.100c5279.js
index c6b4a19e..2969602b 100644
--- a/assets/en_US_guide_q2.md.a57b9066.js
+++ b/assets/en_US_guide_q2.md.100c5279.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q2.md.a57b9066.lean.js b/assets/en_US_guide_q2.md.100c5279.lean.js
similarity index 79%
rename from assets/en_US_guide_q2.md.a57b9066.lean.js
rename to assets/en_US_guide_q2.md.100c5279.lean.js
index c6b4a19e..2969602b 100644
--- a/assets/en_US_guide_q2.md.a57b9066.lean.js
+++ b/assets/en_US_guide_q2.md.100c5279.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md"}',s={},r=o("p",null,"q2",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q3.md.018a0f68.js b/assets/en_US_guide_q3.md.7ea9ad8f.js
similarity index 79%
rename from assets/en_US_guide_q3.md.018a0f68.js
rename to assets/en_US_guide_q3.md.7ea9ad8f.js
index b52faecc..c2180ac2 100644
--- a/assets/en_US_guide_q3.md.018a0f68.js
+++ b/assets/en_US_guide_q3.md.7ea9ad8f.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q3.md.018a0f68.lean.js b/assets/en_US_guide_q3.md.7ea9ad8f.lean.js
similarity index 79%
rename from assets/en_US_guide_q3.md.018a0f68.lean.js
rename to assets/en_US_guide_q3.md.7ea9ad8f.lean.js
index b52faecc..c2180ac2 100644
--- a/assets/en_US_guide_q3.md.018a0f68.lean.js
+++ b/assets/en_US_guide_q3.md.7ea9ad8f.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md"}',s={},r=o("p",null,"q3",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q4.md.efc1a45c.js b/assets/en_US_guide_q4.md.16f5519f.js
similarity index 79%
rename from assets/en_US_guide_q4.md.efc1a45c.js
rename to assets/en_US_guide_q4.md.16f5519f.js
index c9815cb2..e07c796e 100644
--- a/assets/en_US_guide_q4.md.efc1a45c.js
+++ b/assets/en_US_guide_q4.md.16f5519f.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q4.md.efc1a45c.lean.js b/assets/en_US_guide_q4.md.16f5519f.lean.js
similarity index 79%
rename from assets/en_US_guide_q4.md.efc1a45c.lean.js
rename to assets/en_US_guide_q4.md.16f5519f.lean.js
index c9815cb2..e07c796e 100644
--- a/assets/en_US_guide_q4.md.efc1a45c.lean.js
+++ b/assets/en_US_guide_q4.md.16f5519f.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md"}',s={},r=o("p",null,"q4",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q5.md.7b50c57d.js b/assets/en_US_guide_q5.md.3f63ffe8.js
similarity index 79%
rename from assets/en_US_guide_q5.md.7b50c57d.js
rename to assets/en_US_guide_q5.md.3f63ffe8.js
index 20cb0f45..4f2d23d9 100644
--- a/assets/en_US_guide_q5.md.7b50c57d.js
+++ b/assets/en_US_guide_q5.md.3f63ffe8.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_q5.md.7b50c57d.lean.js b/assets/en_US_guide_q5.md.3f63ffe8.lean.js
similarity index 79%
rename from assets/en_US_guide_q5.md.7b50c57d.lean.js
rename to assets/en_US_guide_q5.md.3f63ffe8.lean.js
index 20cb0f45..4f2d23d9 100644
--- a/assets/en_US_guide_q5.md.7b50c57d.lean.js
+++ b/assets/en_US_guide_q5.md.3f63ffe8.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as a,b as o}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md"}',s={},r=o("p",null,"q5",-1),n=[r];function c(_,d,i,p,l,f){return a(),t("div",null,n)}var h=e(s,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_servers.md.91b70570.js b/assets/en_US_guide_servers.md.a2d37d9f.js
similarity index 80%
rename from assets/en_US_guide_servers.md.91b70570.js
rename to assets/en_US_guide_servers.md.a2d37d9f.js
index 1e72b344..fbaad711 100644
--- a/assets/en_US_guide_servers.md.91b70570.js
+++ b/assets/en_US_guide_servers.md.a2d37d9f.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default};
+import{_ as e,c as t,o as s,b as r}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_servers.md.91b70570.lean.js b/assets/en_US_guide_servers.md.a2d37d9f.lean.js
similarity index 80%
rename from assets/en_US_guide_servers.md.91b70570.lean.js
rename to assets/en_US_guide_servers.md.a2d37d9f.lean.js
index 1e72b344..fbaad711 100644
--- a/assets/en_US_guide_servers.md.91b70570.lean.js
+++ b/assets/en_US_guide_servers.md.a2d37d9f.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default};
+import{_ as e,c as t,o as s,b as r}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/servers.md"}',a={},o=r("p",null,"servers",-1),n=[o];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var v=e(a,[["render",c]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_services.md.0e43c6e1.js b/assets/en_US_guide_services.md.03d39940.js
similarity index 80%
rename from assets/en_US_guide_services.md.0e43c6e1.js
rename to assets/en_US_guide_services.md.03d39940.js
index d9256015..1812a863 100644
--- a/assets/en_US_guide_services.md.0e43c6e1.js
+++ b/assets/en_US_guide_services.md.03d39940.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default};
+import{_ as e,c as t,o as s,b as r}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_services.md.0e43c6e1.lean.js b/assets/en_US_guide_services.md.03d39940.lean.js
similarity index 80%
rename from assets/en_US_guide_services.md.0e43c6e1.lean.js
rename to assets/en_US_guide_services.md.03d39940.lean.js
index d9256015..1812a863 100644
--- a/assets/en_US_guide_services.md.0e43c6e1.lean.js
+++ b/assets/en_US_guide_services.md.03d39940.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default};
+import{_ as e,c as t,o as s,b as r}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',a={},o=r("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(a,[["render",n]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_settings.md.f9df49c1.js b/assets/en_US_guide_settings.md.fa7d6803.js
similarity index 80%
rename from assets/en_US_guide_settings.md.f9df49c1.js
rename to assets/en_US_guide_settings.md.fa7d6803.js
index 1916b273..20514ccc 100644
--- a/assets/en_US_guide_settings.md.f9df49c1.js
+++ b/assets/en_US_guide_settings.md.fa7d6803.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default};
+import{_ as e,c as t,o as s,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default};
diff --git a/assets/en_US_guide_settings.md.f9df49c1.lean.js b/assets/en_US_guide_settings.md.fa7d6803.lean.js
similarity index 80%
rename from assets/en_US_guide_settings.md.f9df49c1.lean.js
rename to assets/en_US_guide_settings.md.fa7d6803.lean.js
index 1916b273..20514ccc 100644
--- a/assets/en_US_guide_settings.md.f9df49c1.lean.js
+++ b/assets/en_US_guide_settings.md.fa7d6803.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default};
+import{_ as e,c as t,o as s,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/settings.md"}',n={},o=a("p",null,"settings",-1),r=[o];function c(_,i,d,p,l,f){return s(),t("div",null,r)}var g=e(n,[["render",c]]);export{m as __pageData,g as default};
diff --git a/assets/en_US_guide_tasks.md.b49be1d5.js b/assets/en_US_guide_tasks.md.7584bcd8.js
similarity index 79%
rename from assets/en_US_guide_tasks.md.b49be1d5.js
rename to assets/en_US_guide_tasks.md.7584bcd8.js
index cb3c1c95..ea9f4a10 100644
--- a/assets/en_US_guide_tasks.md.b49be1d5.js
+++ b/assets/en_US_guide_tasks.md.7584bcd8.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as s,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_guide_tasks.md.b49be1d5.lean.js b/assets/en_US_guide_tasks.md.7584bcd8.lean.js
similarity index 79%
rename from assets/en_US_guide_tasks.md.b49be1d5.lean.js
rename to assets/en_US_guide_tasks.md.7584bcd8.lean.js
index cb3c1c95..ea9f4a10 100644
--- a/assets/en_US_guide_tasks.md.b49be1d5.lean.js
+++ b/assets/en_US_guide_tasks.md.7584bcd8.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as a}from"./app.13513b34.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default};
+import{_ as e,c as t,o as s,b as a}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/tasks.md"}',o={},r=a("p",null,"tasks",-1),n=[r];function c(_,d,i,p,l,f){return s(),t("div",null,n)}var h=e(o,[["render",c]]);export{m as __pageData,h as default};
diff --git a/assets/en_US_index.md.9f0f5302.js b/assets/en_US_index.md.6f844d9a.js
similarity index 95%
rename from assets/en_US_index.md.9f0f5302.js
rename to assets/en_US_index.md.6f844d9a.js
index 935f8f8f..36ebbe1c 100644
--- a/assets/en_US_index.md.9f0f5302.js
+++ b/assets/en_US_index.md.6f844d9a.js
@@ -1 +1 @@
-import{_ as o,c as a,o as n,b as e,d as t}from"./app.13513b34.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"A open source, lightweight server and website monitoring and O&M tool","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"One-Click Installation","details":"Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported"},{"title":"Monitoring at any time","details":"Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)"},{"title":"Lightweight O&M tool","details":"Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',s={},i=e("p",null,[e("br"),t("This work is licensed under a "),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License"),t(".")],-1),r=[i];function c(l,p,d,m,u,h){return n(),a("div",null,r)}var _=o(s,[["render",c]]);export{f as __pageData,_ as default};
+import{_ as o,c as a,o as n,b as e,d as t}from"./app.32957174.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"A open source, lightweight server and website monitoring and O&M tool","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"One-Click Installation","details":"Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported"},{"title":"Monitoring at any time","details":"Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)"},{"title":"Lightweight O&M tool","details":"Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',s={},i=e("p",null,[e("br"),t("This work is licensed under a "),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License"),t(".")],-1),r=[i];function c(l,p,d,m,u,h){return n(),a("div",null,r)}var _=o(s,[["render",c]]);export{f as __pageData,_ as default};
diff --git a/assets/en_US_index.md.9f0f5302.lean.js b/assets/en_US_index.md.6f844d9a.lean.js
similarity index 95%
rename from assets/en_US_index.md.9f0f5302.lean.js
rename to assets/en_US_index.md.6f844d9a.lean.js
index 935f8f8f..36ebbe1c 100644
--- a/assets/en_US_index.md.9f0f5302.lean.js
+++ b/assets/en_US_index.md.6f844d9a.lean.js
@@ -1 +1 @@
-import{_ as o,c as a,o as n,b as e,d as t}from"./app.13513b34.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"A open source, lightweight server and website monitoring and O&M tool","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"One-Click Installation","details":"Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported"},{"title":"Monitoring at any time","details":"Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)"},{"title":"Lightweight O&M tool","details":"Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',s={},i=e("p",null,[e("br"),t("This work is licensed under a "),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License"),t(".")],-1),r=[i];function c(l,p,d,m,u,h){return n(),a("div",null,r)}var _=o(s,[["render",c]]);export{f as __pageData,_ as default};
+import{_ as o,c as a,o as n,b as e,d as t}from"./app.32957174.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Nezha Monitoring","tagline":"A open source, lightweight server and website monitoring and O&M tool","actionText":"Learn more \u2192","actionLink":"/en_US/guide/dashboard","features":[{"title":"One-Click Installation","details":"Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported"},{"title":"Monitoring at any time","details":"Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)"},{"title":"Lightweight O&M tool","details":"Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/index.md"}',s={},i=e("p",null,[e("br"),t("This work is licensed under a "),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License"),t(".")],-1),r=[i];function c(l,p,d,m,u,h){return n(),a("div",null,r)}var _=o(s,[["render",c]]);export{f as __pageData,_ as default};
diff --git a/assets/guide_agent.md.69fc9967.js b/assets/guide_agent.md.01d4ef4a.js
similarity index 53%
rename from assets/guide_agent.md.69fc9967.js
rename to assets/guide_agent.md.01d4ef4a.js
index 703a3511..b10e3cbe 100644
--- a/assets/guide_agent.md.69fc9967.js
+++ b/assets/guide_agent.md.01d4ef4a.js
@@ -1,6 +1,6 @@
-import{_ as e,c as n,o as a,a as t}from"./app.13513b34.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

\u4E00\u952E\u5B89\u88C5Agent

\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C

\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5

  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5

  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent


Linux\u5B89\u88C5Agent


  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+import{_ as e,c as n,o as a,a as t}from"./app.32957174.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t(`

\u54EA\u5412\u76D1\u63A7\u7684\u88AB\u63A7\u7AEF\u670D\u52A1\u88AB\u79F0\u4E3AAgent\uFF0C\u672C\u6587\u6863\u5C06\u4ECB\u7ECD\u5982\u4F55\u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E0A\u5B89\u88C5Agent\uFF0C\u5E76\u4E0EDashboard\u8FDE\u63A5

\u4E00\u952E\u5B89\u88C5Agent

\u76EE\u524D\u54EA\u5412\u76D1\u63A7\u5DF2\u652F\u6301\u5728WIndows\u548CLinux\u4E0A\u4E00\u952E\u5B89\u88C5Agent\uFF0C\u9075\u5FAA\u672C\u6587\u6863\u7684\u6B65\u9AA4\uFF0C\u4F60\u53EF\u4EE5\u5F88\u8F7B\u677E\u7684\u5728\u670D\u52A1\u5668\u4E0A\u90E8\u7F72\u5B83

\u51C6\u5907\u5DE5\u4F5C

\u4F60\u9700\u8981\u63D0\u524D\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u8BBE\u7F6E\u597D\u901A\u4FE1\u57DF\u540D\uFF0C\u6B64\u57DF\u540D\u4E0D\u53EF\u4EE5\u63A5\u5165CDN\uFF0C\u8FD9\u91CC\u4EE5\u524D\u9762\u63D0\u5230\u8FC7\u7684\u793A\u4F8B\u901A\u4FE1\u57DF\u540D \u201Cdata.example.com\u201D \u6765\u505A\u6F14\u793A
\u8FDB\u5165\u540E\u53F0\u7BA1\u7406\u9762\u677F\uFF0C\u8F6C\u5230\u201C\u8BBE\u7F6E\u201D\u9875\uFF0C\u5728\u201C\u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP\u201D\u9879\u4E2D\u586B\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u7136\u540E\u70B9\u51FB"\u4FDD\u5B58"

Linux\u4E00\u952E\u5B89\u88C5

  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Linux\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u5728\u88AB\u63A7\u7AEF\u670D\u52A1\u5668\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DE\u5230Dashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u4E00\u952E\u5B89\u88C5

  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u70B9\u51FB\u65B0\u6DFB\u52A0\u7684\u670D\u52A1\u5668\u65C1\uFF0C\u7EFF\u8272\u7684Windows\u56FE\u6807\u6309\u94AE\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4
  • \u8FDB\u5165Windows\u670D\u52A1\u5668\uFF0C\u8FD0\u884CPowerShell\uFF0C\u5728PowerShell\u4E2D\u8FD0\u884C\u590D\u5236\u7684\u5B89\u88C5\u547D\u4EE4
  • \u5982\u9047\u5230\u786E\u8BA4\u300C\u6267\u884C\u7B56\u7565\u53D8\u66F4\u300D\u8BF7\u9009\u62E9 Y
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF



\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent

Linux\u5B89\u88C5Agent

  • \u9996\u5148\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u4E00\u53F0\u670D\u52A1\u5668
  • \u5728\u88AB\u63A7\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u811A\u672C\uFF08\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\u7684\u670D\u52A1\u5668\u8BF7\u4F7F\u7528\u955C\u50CF\uFF09\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 
-
  • \u9009\u62E9\u201C\u5B89\u88C5\u76D1\u63A7Agent\u201D
  • \u8F93\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u5982\uFF1A\u201Ddata.example.com\u201C
  • \u8F93\u5165\u9762\u677F\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A5555
  • \u8F93\u5165Agent\u5BC6\u94A5\uFF0CAgent\u5BC6\u94A5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u670D\u52A1\u5668\u65F6\u751F\u6210\uFF0C\u53EF\u4EE5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u7684\u201C\u4E3B\u673A\u201D\u9875\u4E2D\u627E\u5230
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u5B89\u88C5Agent

OpenWRT\u5B89\u88C5Agent

\u5982\u4F55\u4F7F \u65E7\u7248OpenWRT/LEDE \u81EA\u542F\u52A8

\u5982\u4F55\u4F7F \u65B0\u7248OpenWRT \u81EA\u542F\u52A8\uFF1F\u6765\u81EA @\u827E\u65AF\u5FB7\u65AF

  • \u9996\u5148\u5728 release \u4E0B\u8F7D\u5BF9\u5E94\u7684\u4E8C\u8FDB\u5236\u89E3\u538B zip \u5305\u540E\u653E\u7F6E\u5230 /root
  • \u8FD0\u884C chmod +x /root/nezha-agent \u8D4B\u4E88\u6267\u884C\u6743\u9650\uFF0C\u7136\u540E\u521B\u5EFA /etc/init.d/nezha-service\uFF1A
#!/bin/sh /etc/rc.common
+
  • \u9009\u62E9\u201C\u5B89\u88C5\u76D1\u63A7Agent\u201D
  • \u8F93\u5165\u901A\u4FE1\u57DF\u540D\uFF0C\u5982\uFF1A\u201Ddata.example.com\u201C
  • \u8F93\u5165\u9762\u677F\u901A\u4FE1\u7AEF\u53E3\uFF08RPC\u7AEF\u53E3\uFF09\uFF0C\u9ED8\u8BA4\u4E3A5555
  • \u8F93\u5165Agent\u5BC6\u94A5\uFF0CAgent\u5BC6\u94A5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u6DFB\u52A0\u670D\u52A1\u5668\u65F6\u751F\u6210\uFF0C\u53EF\u4EE5\u5728\u7BA1\u7406\u9762\u677F\u4E2D\u7684\u201C\u4E3B\u673A\u201D\u9875\u4E2D\u627E\u5230
  • \u7B49\u5F85\u5B89\u88C5\u5B8C\u6210\u540E\u8FD4\u56DEDashboard\u4E3B\u9875\u67E5\u770B\u670D\u52A1\u5668\u662F\u5426\u4E0A\u7EBF

Windows\u5B89\u88C5Agent

OpenWRT\u5B89\u88C5Agent

\u5982\u4F55\u4F7F \u65E7\u7248OpenWRT/LEDE \u81EA\u542F\u52A8

\u5982\u4F55\u4F7F \u65B0\u7248OpenWRT \u81EA\u542F\u52A8\uFF1F\u6765\u81EA @\u827E\u65AF\u5FB7\u65AF

  • \u9996\u5148\u5728 release \u4E0B\u8F7D\u5BF9\u5E94\u7684\u4E8C\u8FDB\u5236\u89E3\u538B zip \u5305\u540E\u653E\u7F6E\u5230 /root
  • \u8FD0\u884C chmod +x /root/nezha-agent \u8D4B\u4E88\u6267\u884C\u6743\u9650\uFF0C\u7136\u540E\u521B\u5EFA /etc/init.d/nezha-service\uFF1A
#!/bin/sh /etc/rc.common
 
 START=99
 USE_PROCD=1
@@ -21,4 +21,4 @@ import{_ as e,c as n,o as a,a as t}from"./app.13513b34.js";const b='{"title":"\u
  sleep 2
  start
 }
-
  • \u8FD0\u884C chmod +x /etc/init.d/nezha-service \u8D4B\u4E88\u6267\u884C\u6743\u9650
  • \u542F\u52A8\u670D\u52A1\uFF1A /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE


\u81EA\u5B9A\u4E49\u76D1\u63A7\u7684\u7F51\u5361\u548C\u786C\u76D8\u5206\u533A

  • \u6267\u884C /opt/nezha/agent/nezha-agent --edit-agent-config \u6765\u9009\u62E9\u81EA\u5B9A\u4E49\u7684\u7F51\u5361\u548C\u5206\u533A\uFF0C\u7136\u540E\u91CD\u542F Agent \u5373\u53EF\u751F\u6548

\u5176\u4ED6\u8FD0\u884C\u53C2\u6570

\u901A\u8FC7\u6267\u884C ./nezha-agent --help \u67E5\u770B\u652F\u6301\u7684\u53C2\u6570\uFF0C\u5982\u679C\u4F60\u4F7F\u7528\u4E86\u4E00\u952E\u811A\u672C\u5B89\u88C5Agent\uFF0C\u53EF\u4EE5\u7F16\u8F91 /etc/systemd/system/nezha-agent.service\uFF0C\u5728 ExecStart= \u8FD9\u4E00\u884C\u7684\u672B\u5C3E\u52A0\u4E0A\u4EE5\u4E0B\u53C2\u6570

  • --report-delay \u63A7\u5236\u7CFB\u7EDF\u4FE1\u606F\u4E0A\u62A5\u7684\u95F4\u9694\uFF0C\u9ED8\u8BA4\u4E3A 1 \u79D2\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E3A 3 \u6765\u8FDB\u4E00\u6B65\u964D\u4F4E agent \u7AEF\u7CFB\u7EDF\u8D44\u6E90\u5360\u7528\uFF08\u914D\u7F6E\u533A\u95F4 1-4\uFF09
  • --skip-conn \u4E0D\u76D1\u63A7\u8FDE\u63A5\u6570\uFF0C\u63A8\u8350 \u673A\u573A/\u8FDE\u63A5\u5BC6\u96C6\u578B\u670D\u52A1\u5668\u6216CPU\u5360\u7528\u8F83\u9AD8\u7684\u670D\u52A1\u5668\u8BBE\u7F6E
  • --skip-procs \u4E0D\u76D1\u63A7\u8FDB\u7A0B\u6570\uFF0C\u4E5F\u53EF\u4EE5\u964D\u4F4E agent \u5360\u7528
  • --disable-auto-update \u7981\u6B62 \u81EA\u52A8\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-force-update \u7981\u6B62 \u5F3A\u5236\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-command-execute \u7981\u6B62\u5728 Agent \u4E0A\u6267\u884C\u5B9A\u65F6\u4EFB\u52A1\u3001\u6253\u5F00\u5728\u7EBF\u7EC8\u7AEF\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --tls \u542F\u7528 SSL/TLS \u52A0\u5BC6\uFF08\u4F7F\u7528 nginx \u53CD\u5411\u4EE3\u7406 Agent \u7684 grpc \u8FDE\u63A5\uFF0C\u5E76\u4E14 nginx \u5F00\u542F SSL/TLS \u65F6\uFF0C\u9700\u8981\u542F\u7528\u8BE5\u9879\u914D\u7F6E\uFF09
`,32),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; +
  • \u8FD0\u884C chmod +x /etc/init.d/nezha-service \u8D4B\u4E88\u6267\u884C\u6743\u9650
  • \u542F\u52A8\u670D\u52A1\uFF1A /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE

\u81EA\u5B9A\u4E49\u76D1\u63A7\u7684\u7F51\u5361\u548C\u786C\u76D8\u5206\u533A

  • \u6267\u884C /opt/nezha/agent/nezha-agent --edit-agent-config \u6765\u9009\u62E9\u81EA\u5B9A\u4E49\u7684\u7F51\u5361\u548C\u5206\u533A\uFF0C\u7136\u540E\u91CD\u542F Agent \u5373\u53EF\u751F\u6548

\u5176\u4ED6\u8FD0\u884C\u53C2\u6570

\u901A\u8FC7\u6267\u884C ./nezha-agent --help \u67E5\u770B\u652F\u6301\u7684\u53C2\u6570\uFF0C\u5982\u679C\u4F60\u4F7F\u7528\u4E86\u4E00\u952E\u811A\u672C\u5B89\u88C5Agent\uFF0C\u53EF\u4EE5\u7F16\u8F91 /etc/systemd/system/nezha-agent.service\uFF0C\u5728 ExecStart= \u8FD9\u4E00\u884C\u7684\u672B\u5C3E\u52A0\u4E0A\u4EE5\u4E0B\u53C2\u6570

  • --report-delay \u63A7\u5236\u7CFB\u7EDF\u4FE1\u606F\u4E0A\u62A5\u7684\u95F4\u9694\uFF0C\u9ED8\u8BA4\u4E3A 1 \u79D2\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E3A 3 \u6765\u8FDB\u4E00\u6B65\u964D\u4F4E agent \u7AEF\u7CFB\u7EDF\u8D44\u6E90\u5360\u7528\uFF08\u914D\u7F6E\u533A\u95F4 1-4\uFF09
  • --skip-conn \u4E0D\u76D1\u63A7\u8FDE\u63A5\u6570\uFF0C\u63A8\u8350 \u673A\u573A/\u8FDE\u63A5\u5BC6\u96C6\u578B\u670D\u52A1\u5668\u6216CPU\u5360\u7528\u8F83\u9AD8\u7684\u670D\u52A1\u5668\u8BBE\u7F6E
  • --skip-procs \u4E0D\u76D1\u63A7\u8FDB\u7A0B\u6570\uFF0C\u4E5F\u53EF\u4EE5\u964D\u4F4E agent \u5360\u7528
  • --disable-auto-update \u7981\u6B62 \u81EA\u52A8\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-force-update \u7981\u6B62 \u5F3A\u5236\u66F4\u65B0 Agent\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --disable-command-execute \u7981\u6B62\u5728 Agent \u4E0A\u6267\u884C\u5B9A\u65F6\u4EFB\u52A1\u3001\u6253\u5F00\u5728\u7EBF\u7EC8\u7AEF\uFF08\u5B89\u5168\u7279\u6027\uFF09
  • --tls \u542F\u7528 SSL/TLS \u52A0\u5BC6\uFF08\u4F7F\u7528 nginx \u53CD\u5411\u4EE3\u7406 Agent \u7684 grpc \u8FDE\u63A5\uFF0C\u5E76\u4E14 nginx \u5F00\u542F SSL/TLS \u65F6\uFF0C\u9700\u8981\u542F\u7528\u8BE5\u9879\u914D\u7F6E\uFF09
`,29),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; diff --git a/assets/guide_agent.md.69fc9967.lean.js b/assets/guide_agent.md.01d4ef4a.lean.js similarity index 89% rename from assets/guide_agent.md.69fc9967.lean.js rename to assets/guide_agent.md.01d4ef4a.lean.js index 398ae1e5..d4b5493f 100644 --- a/assets/guide_agent.md.69fc9967.lean.js +++ b/assets/guide_agent.md.01d4ef4a.lean.js @@ -1 +1 @@ -import{_ as e,c as n,o as a,a as t}from"./app.13513b34.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t("",32),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; +import{_ as e,c as n,o as a,a as t}from"./app.32957174.js";const b='{"title":"\u4E00\u952E\u5B89\u88C5Agent","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4E00\u952E\u5B89\u88C5Agent","slug":"\u4E00\u952E\u5B89\u88C5agent"},{"level":3,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":3,"title":"Linux\u4E00\u952E\u5B89\u88C5","slug":"linux\u4E00\u952E\u5B89\u88C5"},{"level":3,"title":"Windows\u4E00\u952E\u5B89\u88C5","slug":"windows\u4E00\u952E\u5B89\u88C5"},{"level":2,"title":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5Agent","slug":"\u5176\u4ED6\u65B9\u5F0F\u5B89\u88C5agent"},{"level":3,"title":"Linux\u5B89\u88C5Agent","slug":"linux\u5B89\u88C5agent"},{"level":3,"title":"Windows\u5B89\u88C5Agent","slug":"windows\u5B89\u88C5agent"},{"level":3,"title":"OpenWRT\u5B89\u88C5Agent","slug":"openwrt\u5B89\u88C5agent"},{"level":2,"title":"\u81EA\u5B9A\u4E49Agent\u76D1\u63A7\u9879\u76EE","slug":"\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE"}],"relativePath":"guide/agent.md"}',s={},o=t("",29),i=[o];function l(r,c,p,d,h,u){return a(),n("div",null,i)}var m=e(s,[["render",l]]);export{b as __pageData,m as default}; diff --git a/assets/guide_dashboard.md.455b8333.js b/assets/guide_dashboard.md.7365bdde.js similarity index 99% rename from assets/guide_dashboard.md.455b8333.js rename to assets/guide_dashboard.md.7365bdde.js index dc2fbf40..d96f92df 100644 --- a/assets/guide_dashboard.md.455b8333.js +++ b/assets/guide_dashboard.md.7365bdde.js @@ -1,4 +1,4 @@ -import{_ as e,c as a,o as n,a as t}from"./app.13513b34.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":2,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":2,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":2,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t(`

\u51C6\u5907\u5DE5\u4F5C

\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5

\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard

  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+import{_ as e,c as a,o as n,a as t}from"./app.32957174.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":2,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":2,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":2,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t(`

\u51C6\u5907\u5DE5\u4F5C

\u642D\u5EFA\u4E00\u4E2A\u54EA\u5412\u76D1\u63A7\uFF0C\u4F60\u9700\u8981\uFF1A

  1. \u4E00\u53F0\u53EF\u4EE5\u8FDE\u63A5\u516C\u7F51\u7684VPS\uFF0C\u9632\u706B\u5899\u548C\u5B89\u5168\u7B56\u7565\u9700\u8981\u653E\u884C8008\u548C5555\u7AEF\u53E3\uFF0C\u5426\u5219\u4F1A\u65E0\u6CD5\u8BBF\u95EE\u548C\u65E0\u6CD5\u63A5\u6536\u6570\u636E\u3002\u5355\u6838512MB\u5185\u5B58\u7684\u670D\u52A1\u5668\u914D\u7F6E\u5C31\u8DB3\u4EE5\u6EE1\u8DB3\u5927\u591A\u6570\u4F7F\u7528\u573A\u666F
  2. \u4E00\u4E2A\u5DF2\u7ECF\u8BBE\u7F6E\u597DA\u8BB0\u5F55\uFF0C\u6307\u5411Dashboard\u670D\u52A1\u5668ip\u7684\u57DF\u540D

TIP

\u5982\u679C\u4F60\u60F3\u4F7F\u7528CDN\uFF0C\u8BF7\u51C6\u5907\u4E24\u4E2A\u57DF\u540D\uFF0C\u4E00\u4E2A\u914D\u7F6E\u597DCDN\u7528\u4F5C\u516C\u5F00\u8BBF\u95EE\uFF0CCDN\u9700\u8981\u652F\u6301WebSocket\u534F\u8BAE\uFF1B\u53E6\u4E00\u4E2A\u57DF\u540D\u4E0D\u8981\u4F7F\u7528CDN\uFF0C\u7528\u4F5CAgent\u7AEF\u4E0EDashboard\u7684\u901A\u4FE1
\u672C\u6587\u6863\u5206\u522B\u4EE5 "cdn.example.com" \u548C "data.example.com" \u4E24\u4E2A\u57DF\u540D\u6765\u6F14\u793A

  1. \u4E00\u4E2AGithub/Gitee\u8D26\u53F7

\u672C\u6587\u6863\u5C06\u4EE5\u5B9D\u5854\u9762\u677F\u53CD\u4EE3\u9762\u677F\u7684\u8FC7\u7A0B\u4F5C\u4E3A\u8303\u4F8B\uFF0C\u968F\u7740\u672A\u6765\u7248\u672C\u7684\u53D8\u5316\uFF0C\u90E8\u5206\u529F\u80FD\u7684\u5165\u53E3\u53EF\u80FD\u4F1A\u53D1\u751F\u6539\u53D8\uFF0C\u672C\u6587\u6863\u4EC5\u4F9B\u53C2\u8003

\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5

\u54EA\u5412\u76D1\u63A7\u63A5\u5165Github\u548CGitee\u4F5C\u4E3A\u540E\u53F0\u7BA1\u7406\u5458\u8D26\u53F7

  • \u9996\u5148\u6211\u4EEC\u9700\u8981\u65B0\u5EFA\u4E00\u4E2A\u9A8C\u8BC1\u5E94\u7528\uFF0C\u4EE5Github\u4E3A\u4F8B\uFF0C\u767B\u9646Github\u540E\uFF0C\u6253\u5F00 https://github.com/settings/developers \uFF0C\u4F9D\u6B21\u9009\u62E9\u201COAuth Apps\u201D - \u201CNew OAuth App\u201D
    Application name - \u968F\u610F\u586B\u5199
    Homepage URL - \u586B\u5199\u9762\u677F\u7684\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982\uFF1A"http://cdn.example.com"
    Authorization callback URL - \u586B\u5199\u56DE\u8C03\u5730\u5740\uFF0C\u5982\uFF1A"http://cdn.example.com/oauth2/callback"
  • \u70B9\u51FB\u201CRegister application\u201D
  • \u4FDD\u5B58\u9875\u9762\u4E2D\u7684Client ID\uFF0C\u7136\u540E\u70B9\u51FB \u201CGenerate a new client secret\u201C\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684Client Secret\uFF0C\u65B0\u5EFA\u7684\u5BC6\u94A5\u4EC5\u4F1A\u663E\u793A\u4E00\u6B21\uFF0C\u8BF7\u59A5\u5584\u4FDD\u5B58

\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard

  • \u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u8FD0\u884C\u5B89\u88C5\u811A\u672C\uFF1A
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 

\u5982\u679C\u4F60\u7684\u9762\u677F\u670D\u52A1\u5668\u4F4D\u4E8E\u4E2D\u56FD\u5927\u9646\uFF0C\u53EF\u4EE5\u4F7F\u7528\u955C\u50CF\uFF1A

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
 
  • \u7B49\u5F85Docker\u5B89\u88C5\u5B8C\u6BD5\u540E\uFF0C\u5206\u522B\u8F93\u5165\u4EE5\u4E0B\u503C\uFF1A
    OAuth\u63D0\u4F9B\u5546 - Github\u6216Gitee
    Client ID - \u4E4B\u524D\u4FDD\u5B58\u7684Client ID
    Client Secret - \u4E4B\u524D\u4FDD\u5B58\u7684\u5BC6\u94A5
    \u7528\u6237\u540D - Github\u6216Gitee\u7684\u7528\u6237\u540D
    \u7AD9\u70B9\u6807\u9898 - \u81EA\u5B9A\u4E49\u7AD9\u70B9\u6807\u9898
    \u8BBF\u95EE\u7AEF\u53E3 - \u516C\u5F00\u8BBF\u95EE\u7AEF\u53E3\uFF0C\u53EF\u81EA\u5B9A\u4E49\uFF0C\u9ED8\u8BA48008
    Agent\u7684\u901A\u4FE1\u7AEF\u53E3 - Agent\u4E0EDashboard\u7684\u901A\u4FE1\u7AEF\u53E3\uFF0C\u9ED8\u8BA45555

  • \u8F93\u5165\u5B8C\u6210\u540E\uFF0C\u7B49\u5F85\u62C9\u53D6\u955C\u50CF
    \u5B89\u88C5\u7ED3\u675F\u540E\uFF0C\u5982\u679C\u4E00\u5207\u6B63\u5E38\uFF0C\u6B64\u65F6\u4F60\u53EF\u4EE5\u8BBF\u95EE\u57DF\u540D+\u7AEF\u53E3\u53F7\uFF0C\u5982 \u201Chttp://cdn.example.com:8008\u201D \u6765\u67E5\u770B\u9762\u677F

  • \u5C06\u6765\u5982\u679C\u9700\u8981\u518D\u6B21\u8FD0\u884C\u811A\u672C\uFF0C\u53EF\u4EE5\u8FD0\u884C\uFF1A

./nezha.sh
 

\u6765\u6253\u5F00\u7BA1\u7406\u811A\u672C


\u914D\u7F6E\u53CD\u5411\u4EE3\u7406

  • \u5728\u5B9D\u5854\u9762\u677F\u4E2D\u65B0\u5EFA\u4E00\u4E2A\u7AD9\u70B9\uFF0C\u57DF\u540D\u586B\u5199\u516C\u5F00\u8BBF\u95EE\u57DF\u540D\uFF0C\u5982 \u201Chttp://cdn.example.com\u201C \uFF0C\u7136\u540E\u70B9\u51FB\u201C\u8BBE\u7F6E\u201D\u8FDB\u5165\u7AD9\u70B9\u8BBE\u7F6E\u9009\u9879\uFF0C\u9009\u62E9\u201C\u53CD\u5411\u4EE3\u7406\u201D - \u201C\u65B0\u5EFA\u53CD\u5411\u4EE3\u7406\u201D

  • \u81EA\u5B9A\u4E49\u4E00\u4E2A\u4EE3\u7406\u540D\u79F0\uFF0C\u5728\u4E0B\u65B9\u201C\u76EE\u6807URL\u201D\u4E2D\u586B\u5165 http://127.0.0.1 \u7136\u540E\u70B9\u51FB\u201C\u4FDD\u5B58\u201D

  • \u6253\u5F00\u521A\u521A\u65B0\u5EFA\u7684\u53CD\u5411\u4EE3\u7406\u53F3\u8FB9\u7684\u201C\u914D\u7F6E\u6587\u4EF6\u201D\uFF0C\u5C06\u914D\u7F6E\u6587\u4EF6\u66FF\u6362\u4E3A\u4EE5\u4E0B\u5185\u5BB9\uFF1A

#PROXY-START/
diff --git a/assets/guide_dashboard.md.455b8333.lean.js b/assets/guide_dashboard.md.7365bdde.lean.js
similarity index 93%
rename from assets/guide_dashboard.md.455b8333.lean.js
rename to assets/guide_dashboard.md.7365bdde.lean.js
index e0de605c..1932624b 100644
--- a/assets/guide_dashboard.md.455b8333.lean.js
+++ b/assets/guide_dashboard.md.7365bdde.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as n,a as t}from"./app.13513b34.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":2,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":2,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":2,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t("",27),p=[o];function r(l,c,i,d,h,u){return n(),a("div",null,p)}var m=e(s,[["render",r]]);export{k as __pageData,m as default};
+import{_ as e,c as a,o as n,a as t}from"./app.32957174.js";const k='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"\u83B7\u53D6Github\u7684Client ID\u548C\u5BC6\u94A5","slug":"\u83B7\u53D6github\u7684client-id\u548C\u5BC6\u94A5"},{"level":2,"title":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5Dashboard","slug":"\u5728\u670D\u52A1\u5668\u4E2D\u5B89\u88C5dashboard"},{"level":2,"title":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406","slug":"\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},{"level":2,"title":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6ESSL","slug":"\u5728\u5B9D\u5854\u9762\u677F\u4E2D\u914D\u7F6Essl"}],"relativePath":"guide/dashboard.md"}',s={},o=t("",27),p=[o];function r(l,c,i,d,h,u){return n(),a("div",null,p)}var m=e(s,[["render",r]]);export{k as __pageData,m as default};
diff --git a/assets/guide_notifications.md.062c0195.js b/assets/guide_notifications.md.062c0195.js
deleted file mode 100644
index 26cb4a07..00000000
--- a/assets/guide_notifications.md.062c0195.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as a,o,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u901A\u77E5","description":"","frontmatter":{},"headers":[],"relativePath":"guide/notifications.md"}',s={},n=e("h1",{id:"\u901A\u77E5",tabindex:"-1"},[r("\u901A\u77E5 "),e("a",{class:"header-anchor",href:"#\u901A\u77E5","aria-hidden":"true"},"#")],-1),c=[n];function i(d,_,f,h,p,l){return o(),a("div",null,c)}var x=t(s,[["render",i]]);export{m as __pageData,x as default};
diff --git a/assets/guide_notifications.md.062c0195.lean.js b/assets/guide_notifications.md.062c0195.lean.js
deleted file mode 100644
index 26cb4a07..00000000
--- a/assets/guide_notifications.md.062c0195.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as a,o,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u901A\u77E5","description":"","frontmatter":{},"headers":[],"relativePath":"guide/notifications.md"}',s={},n=e("h1",{id:"\u901A\u77E5",tabindex:"-1"},[r("\u901A\u77E5 "),e("a",{class:"header-anchor",href:"#\u901A\u77E5","aria-hidden":"true"},"#")],-1),c=[n];function i(d,_,f,h,p,l){return o(),a("div",null,c)}var x=t(s,[["render",i]]);export{m as __pageData,x as default};
diff --git a/assets/guide_notifications.md.21540eb3.js b/assets/guide_notifications.md.21540eb3.js
new file mode 100644
index 00000000..75921d84
--- /dev/null
+++ b/assets/guide_notifications.md.21540eb3.js
@@ -0,0 +1 @@
+import{_ as e,c as o,o as t,a as l}from"./app.32957174.js";const h='{"title":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F","slug":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F"},{"level":2,"title":"\u62A5\u8B66\u89C4\u5219\u8BF4\u660E","slug":"\u62A5\u8B66\u89C4\u5219\u8BF4\u660E"},{"level":3,"title":"\u57FA\u672C\u89C4\u5219","slug":"\u57FA\u672C\u89C4\u5219"},{"level":3,"title":"\u7279\u6B8A\uFF1A\u4EFB\u610F\u5468\u671F\u6D41\u91CF\u62A5\u8B66","slug":"\u7279\u6B8A\uFF1A\u4EFB\u610F\u5468\u671F\u6D41\u91CF\u62A5\u8B66"}],"relativePath":"guide/notifications.md"}',i={},c=l('

\u54EA\u5412\u76D1\u63A7\u652F\u6301\u5BF9\u670D\u52A1\u5668\u7684\u8D1F\u8F7D\u3001CPU\u3001\u5185\u5B58\u3001\u786C\u76D8\u3001\u5E26\u5BBD\u3001\u6D41\u91CF\u3001\u6708\u6D41\u91CF\u3001\u8FDB\u7A0B\u6570\u3001\u8FDE\u63A5\u6570\u8FDB\u884C\u76D1\u63A7\uFF0C\u5E76\u5728\u5176\u4E2D\u67D0\u9879\u8FBE\u5230\u7528\u6237\u8BBE\u5B9A\u503C\u65F6\u53D1\u9001\u62A5\u8B66\u901A\u77E5

\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F

#NEZHA# \u662F\u9762\u677F\u6D88\u606F\u5360\u4F4D\u7B26\uFF0C\u9762\u677F\u89E6\u53D1\u901A\u77E5\u65F6\u4F1A\u81EA\u52A8\u7528\u5B9E\u9645\u6D88\u606F\u66FF\u6362\u5360\u4F4D\u7B26

Body \u5185\u5BB9\u662FJSON \u683C\u5F0F\u7684\uFF1A\u5F53\u8BF7\u6C42\u7C7B\u578B\u4E3A FORM \u65F6\uFF0C\u503C\u4E3A key:value \u7684\u5F62\u5F0F\uFF0Cvalue \u91CC\u9762\u53EF\u653E\u7F6E\u5360\u4F4D\u7B26\uFF0C\u901A\u77E5\u65F6\u4F1A\u81EA\u52A8\u66FF\u6362\u3002\u5F53\u8BF7\u6C42\u7C7B\u578B\u4E3A JSON \u65F6 \u53EA\u4F1A\u7B80\u5355\u8FDB\u884C\u5B57\u7B26\u4E32\u66FF\u6362\u540E\u76F4\u63A5\u63D0\u4EA4\u5230URL\u3002

URL \u91CC\u9762\u4E5F\u53EF\u653E\u7F6E\u5360\u4F4D\u7B26\uFF0C\u8BF7\u6C42\u65F6\u4F1A\u8FDB\u884C\u7B80\u5355\u7684\u5B57\u7B26\u4E32\u66FF\u6362\u3002

\u4F60\u53EF\u4EE5\u53C2\u8003\u4EE5\u4E0B\u7684\u901A\u77E5\u65B9\u5F0F\u793A\u4F8B\uFF0C\u4E5F\u53EF\u4EE5\u6839\u636E\u81EA\u5DF1\u7684\u9700\u6C42\u7075\u6D3B\u8BBE\u7F6E\u63A8\u9001\u65B9\u5F0F

  • server\u9171\u793A\u4F8B

  • wxpusher \u793A\u4F8B\uFF0C\u9700\u8981\u5173\u6CE8\u4F60\u7684\u5E94\u7528

    • \u540D\u79F0: wxpusher
    • URL\uFF1Ahttp://wxpusher.zjiecode.com/api/send/message
    • \u8BF7\u6C42\u65B9\u5F0F: POST
    • \u8BF7\u6C42\u7C7B\u578B: JSON
    • Body: {"appToken":"\u4F60\u7684appToken","topicIds":[],"content":"#NEZHA#","contentType":"1","uids":["\u4F60\u7684uid"]}
  • Telegram \u793A\u4F8B @haitau \u8D21\u732E

    • \u540D\u79F0\uFF1Atelegram \u673A\u5668\u4EBA\u6D88\u606F\u901A\u77E5
    • URL\uFF1Ahttps://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
    • \u8BF7\u6C42\u65B9\u5F0F: GET
    • \u8BF7\u6C42\u7C7B\u578B: \u9ED8\u8BA4
    • Body: \u7A7A
    • URL \u53C2\u6570\u83B7\u53D6\u8BF4\u660E\uFF1AbotXXXXXX \u4E2D\u7684 XXXXXX \u662F\u5728 telegram \u4E2D\u5173\u6CE8\u5B98\u65B9 @Botfather \uFF0C\u8F93\u5165/newbot \uFF0C\u521B\u5EFA\u65B0\u7684\u673A\u5668\u4EBA\uFF08bot\uFF09\u65F6\uFF0C\u4F1A\u63D0\u4F9B\u7684 token\uFF08\u5728\u63D0\u793A Use this token to access the HTTP API:\u540E\u9762\u4E00\u884C\uFF09\u8FD9\u91CC 'bot' \u4E09\u4E2A\u5B57\u6BCD\u4E0D\u53EF\u5C11\u3002\u521B\u5EFA bot \u540E\uFF0C\u9700\u8981\u5148\u5728 telegram \u4E2D\u4E0E BOT \u8FDB\u884C\u5BF9\u8BDD\uFF08\u968F\u4FBF\u53D1\u4E2A\u6D88\u606F\uFF09\uFF0C\u7136\u540E\u624D\u53EF\u7528 API \u53D1\u9001\u6D88\u606F\u3002YYYYYY \u662F telegram \u7528\u6237\u7684\u6570\u5B57 ID\u3002\u4E0E\u673A\u5668\u4EBA@userinfobot \u5BF9\u8BDD\u53EF\u83B7\u5F97\u3002


\u62A5\u8B66\u89C4\u5219\u8BF4\u660E

\u57FA\u672C\u89C4\u5219

  • type\uFF1A\u53EF\u9009\u53D6\u4E00\u4E2A\u6216\u591A\u4E2A\u7C7B\u578B\uFF0C\u5982\u5728\u4E00\u4E2A\u89C4\u5219\u4E2D\u9009\u62E9\u4E86\u591A\u4E2A\u7C7B\u578B\uFF0C\u9700\u8981\u540C\u65F6\u6EE1\u8DB3\u6240\u6709\u9009\u62E9\u7684\u7C7B\u578B\u624D\u4F1A\u89E6\u53D1\u901A\u77E5\uFF08\u53EF\u53C2\u8003\u540E\u9762\u7684\u793A\u4F8B\uFF09
    • cpu\u3001memory\u3001swap\u3001disk
    • net_in_speed \u5165\u7AD9\u7F51\u901F\u3001net_out_speed \u51FA\u7AD9\u7F51\u901F\u3001net_all_speed \u53CC\u5411\u7F51\u901F\u3001transfer_in \u5165\u7AD9\u6D41\u91CF\u3001transfer_out \u51FA\u7AD9\u6D41\u91CF\u3001transfer_all \u53CC\u5411\u6D41\u91CF
    • offline \u79BB\u7EBF\u76D1\u63A7
    • load1\u3001load5\u3001load15 \u8D1F\u8F7D
    • process_count \u8FDB\u7A0B\u6570 \u76EE\u524D\u53D6\u7EBF\u7A0B\u6570\u5360\u7528\u8D44\u6E90\u592A\u591A\uFF0C\u6682\u65F6\u4E0D\u652F\u6301
    • tcp_conn_count\u3001udp_conn_count \u8FDE\u63A5\u6570
  • duration\uFF1A\u6301\u7EED\u6570\u79D2\uFF0C\u6570\u79D2\u5185\u91C7\u6837\u8BB0\u5F55 30% \u4EE5\u4E0A\u89E6\u53D1\u9608\u503C\u624D\u4F1A\u62A5\u8B66\uFF08\u9632\u6570\u636E\u63D2\u9488\uFF09
  • min \u6216 max\uFF1A
    • \u6D41\u91CF\u3001\u7F51\u901F\u7C7B\u6570\u503C \u4E3A\u5B57\u8282\uFF081KB=1024B\uFF0C1MB = 1024*1024B\uFF09
    • \u5185\u5B58\u3001\u786C\u76D8\u3001CPU \u4EE5\u5360\u7528\u767E\u5206\u6BD4\u8BA1\u6570
    • \u79BB\u7EBF\u76D1\u63A7\u65E0\u9700\u8BBE\u7F6E\u6B64\u9879
  • cover\uFF1A
    • 0 \u76D1\u63A7\u6240\u6709\uFF0C\u901A\u8FC7 ignore \u5FFD\u7565\u7279\u5B9A\u670D\u52A1\u5668
    • 1 \u5FFD\u7565\u6240\u6709\uFF0C\u901A\u8FC7 ignore \u76D1\u63A7\u7279\u5B9A\u670D\u52A1\u5668
      \u4F8B\u5982\uFF1A[{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
  • ignore: \u9009\u62E9\u5FFD\u7565\u7279\u5B9A\u670D\u52A1\u5668\uFF0C\u642D\u914D cover \u4F7F\u7528\uFF0C\u5185\u5BB9\u4E3A\u670D\u52A1\u5668id\u548C\u5E03\u5C14\u503C\uFF0C\u4F8B\u5982\uFF1A{"1": true, "2":false}

\u5B8C\u6574\u793A\u4F8B:

TIP

\u6DFB\u52A0\u4E00\u4E2A\u79BB\u7EBF\u62A5\u8B66

  • \u540D\u79F0\uFF1A\u79BB\u7EBF\u901A\u77E5
  • \u89C4\u5219\uFF1A[{"Type":"offline","Duration":10}]
  • \u542F\u7528\uFF1A\u221A

TIP

\u6DFB\u52A0\u4E00\u4E2A\u76D1\u63A7 CPU \u6301\u7EED 10s \u8D85\u8FC7 50% \u4E14 \u5185\u5B58\u6301\u7EED 20s \u5360\u7528\u4F4E\u4E8E 20% \u7684\u62A5\u8B66

  • \u540D\u79F0\uFF1ACPU+\u5185\u5B58
  • \u89C4\u5219\uFF1A[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
  • \u542F\u7528\uFF1A\u221A

\u7279\u6B8A\uFF1A\u4EFB\u610F\u5468\u671F\u6D41\u91CF\u62A5\u8B66

\u53EF\u4EE5\u7528\u4F5C\u6708\u6D41\u91CF\u62A5\u8B66

  • type:
    • transfer_in_cycle \u5468\u671F\u5185\u7684\u5165\u7AD9\u6D41\u91CF
    • transfer_out_cycle \u5468\u671F\u5185\u7684\u51FA\u7AD9\u6D41\u91CF
    • transfer_all_cycle \u5468\u671F\u5185\u53CC\u5411\u6D41\u91CF\u548C
  • cycle_start\uFF1A \u7EDF\u8BA1\u5468\u671F\u5F00\u59CB\u65E5\u671F\uFF08\u53EF\u4EE5\u662F\u4F60\u673A\u5668\u8BA1\u8D39\u5468\u671F\u7684\u5F00\u59CB\u65E5\u671F\uFF09\uFF0C\u65F6\u95F4\u683C\u5F0F\u4E3ARFC3339\uFF0C\u4F8B\u5982\u5317\u4EAC\u65F6\u95F4\u4E3A2022-01-11T08:00:00.00+08:00
  • cycle_interval\uFF1A\u6BCF\u9694\u591A\u5C11\u4E2A\u5468\u671F\u5355\u4F4D\uFF08\u4F8B\u5982\uFF0C\u5468\u671F\u5355\u4F4D\u4E3A\u5929\uFF0C\u8BE5\u503C\u4E3A 7\uFF0C\u5219\u4EE3\u8868\u6BCF\u9694 7 \u5929\u7EDF\u8BA1\u4E00\u6B21\uFF09
  • cycle_unit \u7EDF\u8BA1\u5468\u671F\u5355\u4F4D\uFF0C\u9ED8\u8BA4hour,\u53EF\u9009(hour, day, week, month, year)
  • min/max\u3001cover\u3001ignore \u53C2\u8003\u57FA\u672C\u89C4\u5219\u914D\u7F6E

\u793A\u4F8B: ID \u4E3A 3 \u7684\u670D\u52A1\u5668\uFF08ignore \u91CC\u9762\u5B9A\u4E49\uFF09\uFF0C\u4EE5\u6BCF\u6708 15 \u53F7\u4E3A\u7EDF\u8BA1\u5468\u671F\uFF0C\u5468\u671F\u5185\u7EDF\u8BA1\u7684\u51FA\u7AD9\u6708\u6D41\u91CF\u8FBE\u5230 1TB \u65F6\u62A5\u8B66 [{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}]

',20),u=[c];function d(r,a,n,s,p,q){return t(),o("div",null,u)}var m=e(i,[["render",d]]);export{h as __pageData,m as default}; diff --git a/assets/guide_notifications.md.21540eb3.lean.js b/assets/guide_notifications.md.21540eb3.lean.js new file mode 100644 index 00000000..dda73400 --- /dev/null +++ b/assets/guide_notifications.md.21540eb3.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as t,a as l}from"./app.32957174.js";const h='{"title":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F","slug":"\u7075\u6D3B\u7684\u901A\u77E5\u65B9\u5F0F"},{"level":2,"title":"\u62A5\u8B66\u89C4\u5219\u8BF4\u660E","slug":"\u62A5\u8B66\u89C4\u5219\u8BF4\u660E"},{"level":3,"title":"\u57FA\u672C\u89C4\u5219","slug":"\u57FA\u672C\u89C4\u5219"},{"level":3,"title":"\u7279\u6B8A\uFF1A\u4EFB\u610F\u5468\u671F\u6D41\u91CF\u62A5\u8B66","slug":"\u7279\u6B8A\uFF1A\u4EFB\u610F\u5468\u671F\u6D41\u91CF\u62A5\u8B66"}],"relativePath":"guide/notifications.md"}',i={},c=l("",20),u=[c];function d(r,a,n,s,p,q){return t(),o("div",null,u)}var m=e(i,[["render",d]]);export{h as __pageData,m as default}; diff --git a/assets/guide_q1.md.2530c76b.js b/assets/guide_q1.md.2530c76b.js new file mode 100644 index 00000000..d276bfdc --- /dev/null +++ b/assets/guide_q1.md.2530c76b.js @@ -0,0 +1,47 @@ +import{_ as n,c as s,o as a,a as e}from"./app.32957174.js";const v='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"NGINX\u914D\u7F6E","slug":"nginx\u914D\u7F6E"},{"level":2,"title":"\u4F7F\u7528\u65B9\u5F0F","slug":"\u4F7F\u7528\u65B9\u5F0F"},{"level":2,"title":"\u9632\u6B62\u76D7\u7528","slug":"\u9632\u6B62\u76D7\u7528"}],"relativePath":"guide/q1.md"}',t={},p=e(`

\u51C6\u5907\u5DE5\u4F5C

\u4F60\u53EF\u4EE5\u9009\u62E9CloudFlare\u7684workers\u8FDB\u884C\u53CD\u4EE3,\u4F46\u5927\u9646\u7684\u7F51\u7EDC\u4F60\u61C2\u7684,\u8FD9\u91CC\u4ECB\u7ECD\u7528\u4F60\u81EA\u5DF1\u670D\u52A1\u5668\u53CD\u4EE3\u65B9\u5F0F
\u642D\u5EFA\u4E00\u4E2ATGbot api\u53CD\u4EE3\uFF0C\u4F60\u9700\u8981\uFF1A
1.\u4E00\u4E2A\u4E0D\u53D7GFW\u5C01\u9501\u7684\u670D\u52A1\u5668(\u4E14\u5B89\u88C5\u597Dnginx)
2.\u4E00\u4E2A\u57DF\u540D(\u63D0\u524D\u7533\u8BF7SSL\u8BC1\u4E66)

NGINX\u914D\u7F6E

\u7F16\u8F91\u4F60nginx\u7684\u914D\u7F6E\u6587\u4EF6,\u5728http{}\u4E2D\u52A0\u4E0A\u5982\u4E0B\u914D\u7F6E

# http\u5F3A\u5236\u8DF3\u8F6C\u5230htpps
+server {
+    listen 80;
+    listen [::]:80;
+    server_name yourDomainName;
+
+    # Enforce HTTPS
+    return 301 https://$server_name$request_uri;
+}
+## https
+server {
+        listen 443 ssl;
+        listen [::]:443 ssl;
+
+    server_name yourDomainName;
+
+        ## ssl\u5BC6\u94A5\u8DEF\u5F84\u81EA\u5DF1\u6539\u6539
+	ssl_certificate server.pem;
+	ssl_certificate_key server.key;
+
+        ## root\u975E\u5FC5\u8981
+	root /var/www/tgbot/;
+
+        ## dns\u5FC5\u987B\u5199\uFF0C\u4E0D\u7136\u4F1A\u62A5502\u9519\u8BEF
+        resolver 8.8.8.8;
+
+        ## \u4EE5bot\u5F00\u5934\u7684\u8BF7\u6C42\u90FD\u4F1A\u88AB\u6B63\u5219\u5339\u914D\u5230
+        location ~* ^/bot {
+		proxy_buffering off;
+                proxy_pass  https://api.telegram.org$request_uri;
+                proxy_http_version 1.1;
+        }
+
+        ## \u548C\u4E0A\u9762root\u4E00\u6837\u975E\u5FC5\u8981\uFF0C\u8FD9\u4E2A\u4E3B\u8981\u662F\u7528\u6765\u786E\u8BA4\u670D\u52A1\u5668\u72B6\u6001\u7684\u3002\u4E5F\u53EF\u4EE5\u6539\u6210return 403
+	location /{ 
+		try_files /$uri $uri /index.html;
+	}
+
+        ## no log no fix
+        error_log    /var/log/tg.log  error;
+}
+

yourDomainName-\u4F60\u51C6\u5907\u7684\u57DF\u540D
ssl_certificate-SSL\u8BC1\u4E66\u8DEF\u5F84
ssl_certificate_key-SSL\u8BC1\u4E66\u8DEF\u5F84

\u4F7F\u7528\u65B9\u5F0F

\u{1F389}\u7136\u540E\u6267\u884Csystemctl restart nginx\u56DE\u5230nezha\u5C06\u539F\u6765\u7684https://api.telegram.org/ \u66FF\u6362\u4E3Ahttps://yourDomainName/ ,\u5373\u53EF\u6B63\u5E38\u63A8\u9001\u6D88\u606F

\u9632\u6B62\u76D7\u7528

serverIp-\u4F60\u76D1\u63A7\u9E21\u7684ip\u5730\u5740,\u4F60\u7CFB\u7EDF\u5B89\u88C5\u7684\u90A3\u4E2A\u5C31\u7528\u90A3\u4E2A\u547D\u4EE4,ufw iptables\u90FD\u53EF.

#ubuntu
+ufw allow proto tcp from serverIp to any port 443
+#centos
+iptables -I INPUT -p tcp --dport 443 -j DROP
+iptables -I INPUT -s serverIp -p tcp --dport 443 -j ACCEPT
+
`,11),o=[p];function c(r,l,i,k,d,u){return a(),s("div",null,o)}var _=n(t,[["render",c]]);export{v as __pageData,_ as default}; diff --git a/assets/guide_q1.md.2530c76b.lean.js b/assets/guide_q1.md.2530c76b.lean.js new file mode 100644 index 00000000..7145cf5f --- /dev/null +++ b/assets/guide_q1.md.2530c76b.lean.js @@ -0,0 +1 @@ +import{_ as n,c as s,o as a,a as e}from"./app.32957174.js";const v='{"title":"\u51C6\u5907\u5DE5\u4F5C","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u51C6\u5907\u5DE5\u4F5C","slug":"\u51C6\u5907\u5DE5\u4F5C"},{"level":2,"title":"NGINX\u914D\u7F6E","slug":"nginx\u914D\u7F6E"},{"level":2,"title":"\u4F7F\u7528\u65B9\u5F0F","slug":"\u4F7F\u7528\u65B9\u5F0F"},{"level":2,"title":"\u9632\u6B62\u76D7\u7528","slug":"\u9632\u6B62\u76D7\u7528"}],"relativePath":"guide/q1.md"}',t={},p=e("",11),o=[p];function c(r,l,i,k,d,u){return a(),s("div",null,o)}var _=n(t,[["render",c]]);export{v as __pageData,_ as default}; diff --git a/assets/guide_q1.md.97a040ca.js b/assets/guide_q1.md.97a040ca.js deleted file mode 100644 index 69df37a3..00000000 --- a/assets/guide_q1.md.97a040ca.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98981","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q1.md"}',s={},c=e("h1",{id:"\u95EE\u98981",tabindex:"-1"},[o("\u95EE\u98981 "),e("a",{class:"header-anchor",href:"#\u95EE\u98981","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q1.md.97a040ca.lean.js b/assets/guide_q1.md.97a040ca.lean.js deleted file mode 100644 index 69df37a3..00000000 --- a/assets/guide_q1.md.97a040ca.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98981","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q1.md"}',s={},c=e("h1",{id:"\u95EE\u98981",tabindex:"-1"},[o("\u95EE\u98981 "),e("a",{class:"header-anchor",href:"#\u95EE\u98981","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q2.md.1c44553b.js b/assets/guide_q2.md.1c44553b.js deleted file mode 100644 index 14a85229..00000000 --- a/assets/guide_q2.md.1c44553b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98982","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',s={},c=e("h1",{id:"\u95EE\u98982",tabindex:"-1"},[o("\u95EE\u98982 "),e("a",{class:"header-anchor",href:"#\u95EE\u98982","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q2.md.1c44553b.lean.js b/assets/guide_q2.md.1c44553b.lean.js deleted file mode 100644 index 14a85229..00000000 --- a/assets/guide_q2.md.1c44553b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98982","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',s={},c=e("h1",{id:"\u95EE\u98982",tabindex:"-1"},[o("\u95EE\u98982 "),e("a",{class:"header-anchor",href:"#\u95EE\u98982","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q2.md.a712bfb8.js b/assets/guide_q2.md.a712bfb8.js new file mode 100644 index 00000000..be56ac44 --- /dev/null +++ b/assets/guide_q2.md.a712bfb8.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a as n}from"./app.32957174.js";const f='{"title":"Agent \u542F\u52A8/\u4E0A\u7EBF \u95EE\u9898\u81EA\u68C0\u6D41\u7A0B","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',o={},r=n('

Agent \u542F\u52A8/\u4E0A\u7EBF \u95EE\u9898\u81EA\u68C0\u6D41\u7A0B

  1. \u76F4\u63A5\u6267\u884C /opt/nezha/agent/nezha-agent -s \u9762\u677FIP\u6216\u975ECDN\u57DF\u540D:\u9762\u677FRPC\u7AEF\u53E3 -p Agent\u5BC6\u94A5 -d \u67E5\u770B\u65E5\u5FD7\u662F\u5426\u662F\u56E0\u4E3A DNS\u3001\u7F51\u7EDC\u4E0D\u4F73\u5BFC\u81F4\u8D85\u65F6\uFF08timeout\uFF09
  2. nc -v \u57DF\u540D/IP \u9762\u677FRPC\u7AEF\u53E3 \u6216\u8005 telnet \u57DF\u540D/IP \u9762\u677FRPC\u7AEF\u53E3 \u6765\u68C0\u9A8C\u662F\u5426\u662F\u7F51\u7EDC\u95EE\u9898\uFF0C\u68C0\u67E5\u672C\u673A\u4E0E\u9762\u677F\u670D\u52A1\u5668\u7684\u51FA\u5165\u7AD9\u9632\u706B\u5899\uFF0C\u5982\u679C\u65E0\u6CD5\u5224\u65AD\u95EE\u9898\u53EF\u501F\u52A9 https://port.ping.pe/ \u63D0\u4F9B\u7684\u7AEF\u53E3\u68C0\u67E5\u5DE5\u5177\u8FDB\u884C\u68C0\u6D4B\u3002
  3. \u5982\u679C\u4E0A\u9762\u6B65\u9AA4\u68C0\u6D4B\u6B63\u5E38\uFF0CAgent \u6B63\u5E38\u4E0A\u7EBF\uFF0C\u5C1D\u8BD5\u5173\u95ED SELinux\uFF0C\u5982\u4F55\u5173\u95ED SELinux\uFF1F
',2),c=[r];function _(i,s,d,l,p,h){return a(),t("div",null,c)}var u=e(o,[["render",_]]);export{f as __pageData,u as default}; diff --git a/assets/guide_q2.md.a712bfb8.lean.js b/assets/guide_q2.md.a712bfb8.lean.js new file mode 100644 index 00000000..52f1866d --- /dev/null +++ b/assets/guide_q2.md.a712bfb8.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a as n}from"./app.32957174.js";const f='{"title":"Agent \u542F\u52A8/\u4E0A\u7EBF \u95EE\u9898\u81EA\u68C0\u6D41\u7A0B","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q2.md"}',o={},r=n("",2),c=[r];function _(i,s,d,l,p,h){return a(),t("div",null,c)}var u=e(o,[["render",_]]);export{f as __pageData,u as default}; diff --git a/assets/guide_q3.md.a2fb1bac.js b/assets/guide_q3.md.a2fb1bac.js deleted file mode 100644 index e3ffbfd2..00000000 --- a/assets/guide_q3.md.a2fb1bac.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98983","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',s={},c=e("h1",{id:"\u95EE\u98983",tabindex:"-1"},[o("\u95EE\u98983 "),e("a",{class:"header-anchor",href:"#\u95EE\u98983","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q3.md.a2fb1bac.lean.js b/assets/guide_q3.md.a2fb1bac.lean.js deleted file mode 100644 index e3ffbfd2..00000000 --- a/assets/guide_q3.md.a2fb1bac.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98983","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',s={},c=e("h1",{id:"\u95EE\u98983",tabindex:"-1"},[o("\u95EE\u98983 "),e("a",{class:"header-anchor",href:"#\u95EE\u98983","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q3.md.bcb1d1bc.js b/assets/guide_q3.md.bcb1d1bc.js new file mode 100644 index 00000000..0372924a --- /dev/null +++ b/assets/guide_q3.md.bcb1d1bc.js @@ -0,0 +1,25 @@ +import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const g='{"title":"\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3\uFF08\u652F\u6301 Cloudflare CDN\uFF09","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',t={},o=e(`

\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3\uFF08\u652F\u6301 Cloudflare CDN\uFF09

\u4F7F\u7528 Nginx \u6216\u8005 Caddy \u53CD\u5411\u4EE3\u7406 gRPC

  • Nginx \u914D\u7F6E
server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name data.example.com; # \u4F60\u7684 Agent \u8FDE\u63A5 Dashboard \u7684\u57DF\u540D
+
+    ssl_certificate          /data/letsencrypt/fullchain.pem; # \u4F60\u7684\u57DF\u540D\u8BC1\u4E66\u8DEF\u5F84
+    ssl_certificate_key      /data/letsencrypt/key.pem;       # \u4F60\u7684\u57DF\u540D\u79C1\u94A5\u8DEF\u5F84
+
+    underscores_in_headers on;
+
+    location / {
+        grpc_read_timeout 300s;
+        grpc_send_timeout 300s;
+        grpc_pass grpc://localhost:5555;
+    }
+}
+
  • Caddy \u914D\u7F6E
data.example.com:443 { # \u4F60\u7684 Agent \u8FDE\u63A5 Dashboard \u7684\u57DF\u540D
+    reverse_proxy {
+        to localhost:5555
+        transport http {
+            versions h2c 2
+        }
+    }
+}
+

Dashboard \u9762\u677F\u7AEF\u914D\u7F6E

  • \u9996\u5148\u767B\u5F55\u9762\u677F\u8FDB\u5165\u7BA1\u7406\u540E\u53F0 \u6253\u5F00\u8BBE\u7F6E\u9875\u9762\uFF0C\u5728 \u672A\u63A5\u5165CDN\u7684\u9762\u677F\u670D\u52A1\u5668\u57DF\u540D/IP \u4E2D\u586B\u5165\u4E0A\u4E00\u6B65\u5728 Nginx \u6216 Caddy \u4E2D\u914D\u7F6E\u7684\u57DF\u540D \u6BD4\u5982 data.example.com \uFF0C\u5E76\u4FDD\u5B58\u3002
  • \u7136\u540E\u5728\u9762\u677F\u670D\u52A1\u5668\u4E2D\uFF0C\u6253\u5F00 /opt/nezha/dashboard/data/config.yaml \u6587\u4EF6\uFF0C\u5C06 proxygrpcport \u4FEE\u6539\u4E3A Nginx \u6216 Caddy \u76D1\u542C\u7684\u7AEF\u53E3\uFF0C\u6BD4\u5982\u4E0A\u4E00\u6B65\u8BBE\u7F6E\u7684 443 \uFF1B\u56E0\u4E3A\u6211\u4EEC\u5728 Nginx \u6216 Caddy \u4E2D\u5F00\u542F\u4E86 SSL/TLS\uFF0C\u6240\u4EE5\u9700\u8981\u5C06 tls \u8BBE\u7F6E\u4E3A true \uFF1B\u4FEE\u6539\u5B8C\u6210\u540E\u91CD\u542F\u9762\u677F\u3002

Agent \u7AEF\u914D\u7F6E

  • \u767B\u5F55\u9762\u677F\u7BA1\u7406\u540E\u53F0\uFF0C\u590D\u5236\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\uFF0C\u5728\u5BF9\u5E94\u7684\u670D\u52A1\u5668\u4E0A\u9762\u6267\u884C\u4E00\u952E\u5B89\u88C5\u547D\u4EE4\u91CD\u65B0\u5B89\u88C5 agent \u7AEF\u5373\u53EF\u3002

\u5F00\u542F Cloudflare CDN\uFF08\u53EF\u9009\uFF09

\u6839\u636E Cloudflare gRPC \u7684\u8981\u6C42\uFF1AgRPC \u670D\u52A1\u5FC5\u987B\u4FA6\u542C 443 \u7AEF\u53E3 \u4E14\u5FC5\u987B\u652F\u6301 TLS \u548C HTTP/2\u3002 \u6240\u4EE5\u5982\u679C\u9700\u8981\u5F00\u542F CDN\uFF0C\u5FC5\u987B\u5728\u914D\u7F6E Nginx \u6216\u8005 Caddy \u53CD\u5411\u4EE3\u7406 gRPC \u65F6\u4F7F\u7528 443 \u7AEF\u53E3\uFF0C\u5E76\u914D\u7F6E\u8BC1\u4E66\uFF08Caddy \u4F1A\u81EA\u52A8\u7533\u8BF7\u5E76\u914D\u7F6E\u8BC1\u4E66\uFF09\u3002

  • \u767B\u5F55 Cloudflare\uFF0C\u9009\u62E9\u4F7F\u7528\u7684\u57DF\u540D\u3002\u6253\u5F00 \u7F51\u7EDC \u9009\u9879\u5C06 gRPC \u5F00\u5173\u6253\u5F00\uFF0C\u6253\u5F00 DNS \u9009\u9879\uFF0C\u627E\u5230 Nginx \u6216 Caddy \u53CD\u4EE3 gRPC \u914D\u7F6E\u7684\u57DF\u540D\u7684\u89E3\u6790\u8BB0\u5F55\uFF0C\u6253\u5F00\u6A59\u8272\u4E91\u542F\u7528 CDN\u3002
`,13),p=[o];function c(l,d,r,i,u,k){return s(),a("div",null,p)}var C=n(t,[["render",c]]);export{g as __pageData,C as default}; diff --git a/assets/guide_q3.md.bcb1d1bc.lean.js b/assets/guide_q3.md.bcb1d1bc.lean.js new file mode 100644 index 00000000..36f4c727 --- /dev/null +++ b/assets/guide_q3.md.bcb1d1bc.lean.js @@ -0,0 +1 @@ +import{_ as n,c as a,o as s,a as e}from"./app.32957174.js";const g='{"title":"\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3\uFF08\u652F\u6301 Cloudflare CDN\uFF09","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md"}',t={},o=e("",13),p=[o];function c(l,d,r,i,u,k){return s(),a("div",null,p)}var C=n(t,[["render",c]]);export{g as __pageData,C as default}; diff --git a/assets/guide_q4.md.13d379f3.js b/assets/guide_q4.md.13d379f3.js new file mode 100644 index 00000000..448eea67 --- /dev/null +++ b/assets/guide_q4.md.13d379f3.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as r,b as e,d as t}from"./app.32957174.js";const b='{"title":"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h4",{id:"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00-\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25",tabindex:"-1"},[t("\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25 "),e("a",{class:"header-anchor",href:"#\u5B9E\u65F6\u901A\u9053\u65AD\u5F00-\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","aria-hidden":"true"},"#")],-1),n=e("ul",null,[e("li",null,"\u5982\u679C\u4F60\u4F7F\u7528\u4E86CDN\uFF0C\u8BF7\u786E\u8BA4CDN\u670D\u52A1\u5546\u63D0\u4F9BWebSocket\u670D\u52A1\uFF0C\u5E76\u4E14\u5DF2\u5F00\u542FWebSocket"),e("li",null,[t("\u786E\u8BA4\u4F60\u7684\u53CD\u4EE3\u89C4\u5219\u4E2D\u9488\u5BF9 /ws,/terminal \u8DEF\u5F84\u7684 WebSocket \u8FDB\u884C\u4E86\u7279\u522B\u914D\u7F6E\uFF0C\u4F60\u53EF\u4EE5 "),e("a",{href:"/guide/dashboard.html#\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},"\u70B9\u51FB\u8FD9\u91CC"),t(" \u67E5\u770B\u53CD\u5411\u4EE3\u7406\u914D\u7F6E")])],-1),d=[c,n];function i(l,_,h,u,p,f){return r(),o("div",null,d)}var k=a(s,[["render",i]]);export{b as __pageData,k as default}; diff --git a/assets/guide_q4.md.13d379f3.lean.js b/assets/guide_q4.md.13d379f3.lean.js new file mode 100644 index 00000000..448eea67 --- /dev/null +++ b/assets/guide_q4.md.13d379f3.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as r,b as e,d as t}from"./app.32957174.js";const b='{"title":"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h4",{id:"\u5B9E\u65F6\u901A\u9053\u65AD\u5F00-\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25",tabindex:"-1"},[t("\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25 "),e("a",{class:"header-anchor",href:"#\u5B9E\u65F6\u901A\u9053\u65AD\u5F00-\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25","aria-hidden":"true"},"#")],-1),n=e("ul",null,[e("li",null,"\u5982\u679C\u4F60\u4F7F\u7528\u4E86CDN\uFF0C\u8BF7\u786E\u8BA4CDN\u670D\u52A1\u5546\u63D0\u4F9BWebSocket\u670D\u52A1\uFF0C\u5E76\u4E14\u5DF2\u5F00\u542FWebSocket"),e("li",null,[t("\u786E\u8BA4\u4F60\u7684\u53CD\u4EE3\u89C4\u5219\u4E2D\u9488\u5BF9 /ws,/terminal \u8DEF\u5F84\u7684 WebSocket \u8FDB\u884C\u4E86\u7279\u522B\u914D\u7F6E\uFF0C\u4F60\u53EF\u4EE5 "),e("a",{href:"/guide/dashboard.html#\u914D\u7F6E\u53CD\u5411\u4EE3\u7406"},"\u70B9\u51FB\u8FD9\u91CC"),t(" \u67E5\u770B\u53CD\u5411\u4EE3\u7406\u914D\u7F6E")])],-1),d=[c,n];function i(l,_,h,u,p,f){return r(),o("div",null,d)}var k=a(s,[["render",i]]);export{b as __pageData,k as default}; diff --git a/assets/guide_q4.md.a0ce8f50.js b/assets/guide_q4.md.a0ce8f50.js deleted file mode 100644 index eefffff2..00000000 --- a/assets/guide_q4.md.a0ce8f50.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98984","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h1",{id:"\u95EE\u98984",tabindex:"-1"},[o("\u95EE\u98984 "),e("a",{class:"header-anchor",href:"#\u95EE\u98984","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q4.md.a0ce8f50.lean.js b/assets/guide_q4.md.a0ce8f50.lean.js deleted file mode 100644 index eefffff2..00000000 --- a/assets/guide_q4.md.a0ce8f50.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98984","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q4.md"}',s={},c=e("h1",{id:"\u95EE\u98984",tabindex:"-1"},[o("\u95EE\u98984 "),e("a",{class:"header-anchor",href:"#\u95EE\u98984","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q5.md.52348c7a.js b/assets/guide_q5.md.52348c7a.js new file mode 100644 index 00000000..e5820d73 --- /dev/null +++ b/assets/guide_q5.md.52348c7a.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as n,b as e,d as t}from"./app.32957174.js";const x='{"title":"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',l={},r=e("h4",{id:"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F",tabindex:"-1"},[t("\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F "),e("a",{class:"header-anchor",href:"#\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","aria-hidden":"true"},"#")],-1),s=e("ol",null,[e("li",null,[t("\u5148\u8FD0\u884C\u4E00\u952E\u811A\u672C\uFF0C\u9009\u62E9 "),e("code",null,"\u505C\u6B62\u9762\u677F")]),e("li",null,[t("\u5728\u65E7\u670D\u52A1\u5668\u4E2D\u6253\u5305 "),e("code",null,"/opt/nezha"),t(" \u6587\u4EF6\u5939\uFF0C\u590D\u5236\u5230\u65B0\u73AF\u5883\u76F8\u540C\u4F4D\u7F6E\u89E3\u538B")]),e("li",null,[t("\u5728\u65B0\u73AF\u5883\u4E2D\u8FD0\u884C\u4E00\u952E\u811A\u672C\uFF0C\u9009\u62E9 "),e("code",null,"\u542F\u52A8\u9762\u677F")])],-1),c=[r,s];function d(i,_,u,h,p,f){return n(),o("div",null,c)}var $=a(l,[["render",d]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_q5.md.52348c7a.lean.js b/assets/guide_q5.md.52348c7a.lean.js new file mode 100644 index 00000000..e5820d73 --- /dev/null +++ b/assets/guide_q5.md.52348c7a.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as n,b as e,d as t}from"./app.32957174.js";const x='{"title":"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',l={},r=e("h4",{id:"\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F",tabindex:"-1"},[t("\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F "),e("a",{class:"header-anchor",href:"#\u5982\u4F55\u8FDB\u884C\u6570\u636E\u8FC1\u79FB\u3001\u5907\u4EFD\u6062\u590D\uFF1F","aria-hidden":"true"},"#")],-1),s=e("ol",null,[e("li",null,[t("\u5148\u8FD0\u884C\u4E00\u952E\u811A\u672C\uFF0C\u9009\u62E9 "),e("code",null,"\u505C\u6B62\u9762\u677F")]),e("li",null,[t("\u5728\u65E7\u670D\u52A1\u5668\u4E2D\u6253\u5305 "),e("code",null,"/opt/nezha"),t(" \u6587\u4EF6\u5939\uFF0C\u590D\u5236\u5230\u65B0\u73AF\u5883\u76F8\u540C\u4F4D\u7F6E\u89E3\u538B")]),e("li",null,[t("\u5728\u65B0\u73AF\u5883\u4E2D\u8FD0\u884C\u4E00\u952E\u811A\u672C\uFF0C\u9009\u62E9 "),e("code",null,"\u542F\u52A8\u9762\u677F")])],-1),c=[r,s];function d(i,_,u,h,p,f){return n(),o("div",null,c)}var $=a(l,[["render",d]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_q5.md.e8c8124d.js b/assets/guide_q5.md.e8c8124d.js deleted file mode 100644 index 1ef863f9..00000000 --- a/assets/guide_q5.md.e8c8124d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98985","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',s={},c=e("h1",{id:"\u95EE\u98985",tabindex:"-1"},[o("\u95EE\u98985 "),e("a",{class:"header-anchor",href:"#\u95EE\u98985","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_q5.md.e8c8124d.lean.js b/assets/guide_q5.md.e8c8124d.lean.js deleted file mode 100644 index 1ef863f9..00000000 --- a/assets/guide_q5.md.e8c8124d.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as o}from"./app.13513b34.js";const m='{"title":"\u95EE\u98985","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q5.md"}',s={},c=e("h1",{id:"\u95EE\u98985",tabindex:"-1"},[o("\u95EE\u98985 "),e("a",{class:"header-anchor",href:"#\u95EE\u98985","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var x=t(s,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_servers.md.13555887.js b/assets/guide_servers.md.99c5036d.js similarity index 86% rename from assets/guide_servers.md.13555887.js rename to assets/guide_servers.md.99c5036d.js index 490ff79d..7f2e7f6e 100644 --- a/assets/guide_servers.md.13555887.js +++ b/assets/guide_servers.md.99c5036d.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,b as e,d as s}from"./app.13513b34.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; +import{_ as t,c as a,o as r,b as e,d as s}from"./app.32957174.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_servers.md.13555887.lean.js b/assets/guide_servers.md.99c5036d.lean.js similarity index 86% rename from assets/guide_servers.md.13555887.lean.js rename to assets/guide_servers.md.99c5036d.lean.js index 490ff79d..7f2e7f6e 100644 --- a/assets/guide_servers.md.13555887.lean.js +++ b/assets/guide_servers.md.99c5036d.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,b as e,d as s}from"./app.13513b34.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; +import{_ as t,c as a,o as r,b as e,d as s}from"./app.32957174.js";const m='{"title":"\u670D\u52A1\u5668","description":"","frontmatter":{},"headers":[],"relativePath":"guide/servers.md"}',o={},c=e("h1",{id:"\u670D\u52A1\u5668",tabindex:"-1"},[s("\u670D\u52A1\u5668 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1\u5668","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_services.md.04b8f4e2.js b/assets/guide_services.md.04b8f4e2.js new file mode 100644 index 00000000..9fda34cb --- /dev/null +++ b/assets/guide_services.md.04b8f4e2.js @@ -0,0 +1 @@ +import{_ as s,c as o,o as a,b as e,d as t}from"./app.32957174.js";const v='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',c={},r=e("p",null,"\u670D\u52A1\u76D1\u63A7\uFF1AHTTP\u3001SSL\u8BC1\u4E66\u3001ping\u3001TCP \u7AEF\u53E3\u7B49",-1),n=e("p",null,[t("\u8FDB\u5165 "),e("code",null,"/\u670D\u52A1"),t(" \u9875\u9762\u70B9\u51FB\u65B0\u5EFA\u76D1\u63A7\u5373\u53EF\uFF0C\u8868\u5355\u4E0B\u9762\u6709\u76F8\u5173\u8BF4\u660E\u3002")],-1),_=[r,n];function d(i,l,p,u,f,h){return a(),o("div",null,_)}var x=s(c,[["render",d]]);export{v as __pageData,x as default}; diff --git a/assets/guide_services.md.04b8f4e2.lean.js b/assets/guide_services.md.04b8f4e2.lean.js new file mode 100644 index 00000000..9fda34cb --- /dev/null +++ b/assets/guide_services.md.04b8f4e2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as o,o as a,b as e,d as t}from"./app.32957174.js";const v='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',c={},r=e("p",null,"\u670D\u52A1\u76D1\u63A7\uFF1AHTTP\u3001SSL\u8BC1\u4E66\u3001ping\u3001TCP \u7AEF\u53E3\u7B49",-1),n=e("p",null,[t("\u8FDB\u5165 "),e("code",null,"/\u670D\u52A1"),t(" \u9875\u9762\u70B9\u51FB\u65B0\u5EFA\u76D1\u63A7\u5373\u53EF\uFF0C\u8868\u5355\u4E0B\u9762\u6709\u76F8\u5173\u8BF4\u660E\u3002")],-1),_=[r,n];function d(i,l,p,u,f,h){return a(),o("div",null,_)}var x=s(c,[["render",d]]);export{v as __pageData,x as default}; diff --git a/assets/guide_services.md.1451bbac.js b/assets/guide_services.md.1451bbac.js deleted file mode 100644 index bd42f197..00000000 --- a/assets/guide_services.md.1451bbac.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as s}from"./app.13513b34.js";const m='{"title":"\u670D\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',o={},c=e("h1",{id:"\u670D\u52A1",tabindex:"-1"},[s("\u670D\u52A1 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_services.md.1451bbac.lean.js b/assets/guide_services.md.1451bbac.lean.js deleted file mode 100644 index bd42f197..00000000 --- a/assets/guide_services.md.1451bbac.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as r,b as e,d as s}from"./app.13513b34.js";const m='{"title":"\u670D\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/services.md"}',o={},c=e("h1",{id:"\u670D\u52A1",tabindex:"-1"},[s("\u670D\u52A1 "),e("a",{class:"header-anchor",href:"#\u670D\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return r(),a("div",null,d)}var v=t(o,[["render",n]]);export{m as __pageData,v as default}; diff --git a/assets/guide_settings.md.006b93b3.js b/assets/guide_settings.md.006b93b3.js new file mode 100644 index 00000000..62b2f2e0 --- /dev/null +++ b/assets/guide_settings.md.006b93b3.js @@ -0,0 +1,44 @@ +import{_ as n,c as s,o as a,a as t}from"./app.32957174.js";const h='{"title":"\u591A\u8BED\u8A00","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u591A\u8BED\u8A00","slug":"\u591A\u8BED\u8A00"},{"level":2,"title":"\u81EA\u5B9A\u4E49\u4EE3\u7801","slug":"\u81EA\u5B9A\u4E49\u4EE3\u7801"}],"relativePath":"guide/settings.md"}',p={},o=t(`

\u591A\u8BED\u8A00

\u54EA\u5412\u76D1\u63A7\u76EE\u524D\u652F\u6301\u4EE5\u4E0B\u8BED\u8A00\uFF1A

  • \u7B80\u4F53\u4E2D\u6587
  • English
  • Espa\xF1ol


\u6211\u4EEC\u6B22\u8FCE\u60A8\u8D21\u732E\u66F4\u591A\u8BED\u8A00

\u81EA\u5B9A\u4E49\u4EE3\u7801

\u6539LOGO\u3001\u6539\u8272\u8C03\u3001\u52A0\u7EDF\u8BA1\u4EE3\u7801\u7B49\u3002

WARNING

\u81EA\u5B9A\u4E49\u4EE3\u7801\u4EC5\u5728\u6E38\u5BA2\u9996\u9875\u751F\u6548\u3002


\u9ED8\u8BA4\u4E3B\u9898\u66F4\u6539\u8FDB\u5EA6\u6761\u989C\u8272\u793A\u4F8B

<style>
+.ui.fine.progress> .bar {
+    background-color: pink !important;
+}
+</style>
+

DayNight \u4E3B\u9898\u66F4\u6539\u8FDB\u5EA6\u6761\u989C\u8272\u3001\u4FEE\u6539\u9875\u811A\u793A\u4F8B\uFF08\u6765\u81EA @hyt-allen-xu\uFF09

<style>
+.ui.fine.progress> .progress-bar {
+  background-color: #00a7d0 !important;
+}
+</style>
+<script>
+window.onload = function(){
+var footer=document.querySelector("div.footer-container")
+footer.innerHTML="\xA92021 \u4F60\u7684\u540D\u5B57 & Powered by \u4F60\u7684\u540D\u5B57"
+footer.style.visibility="visible"
+}
+</script>
+

\u9ED8\u8BA4\u4E3B\u9898\u4FEE\u6539 LOGO\u3001\u4FEE\u6539\u9875\u811A\u793A\u4F8B\uFF08\u6765\u81EA @iLay1678\uFF09

<style>
+.right.menu>a{
+visibility: hidden;
+}
+.footer .is-size-7{
+visibility: hidden;
+}
+.item img{
+visibility: hidden;
+}
+</style>
+<script>
+window.onload = function(){
+var avatar=document.querySelector(".item img")
+var footer=document.querySelector("div.is-size-7")
+footer.innerHTML="Powered by \u4F60\u7684\u540D\u5B57"
+footer.style.visibility="visible"
+avatar.src="\u4F60\u7684\u65B9\u5F62logo\u5730\u5740"
+avatar.style.visibility="visible"
+}
+</script>
+

hotaru \u4E3B\u9898\u66F4\u6539\u80CC\u666F\u56FE\u7247\u793A\u4F8B

<style>
+.hotaru-cover {
+   background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
+}
+</style>
+
`,16),e=[o];function c(l,i,u,r,k,g){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{h as __pageData,y as default}; diff --git a/assets/guide_settings.md.006b93b3.lean.js b/assets/guide_settings.md.006b93b3.lean.js new file mode 100644 index 00000000..21655417 --- /dev/null +++ b/assets/guide_settings.md.006b93b3.lean.js @@ -0,0 +1 @@ +import{_ as n,c as s,o as a,a as t}from"./app.32957174.js";const h='{"title":"\u591A\u8BED\u8A00","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u591A\u8BED\u8A00","slug":"\u591A\u8BED\u8A00"},{"level":2,"title":"\u81EA\u5B9A\u4E49\u4EE3\u7801","slug":"\u81EA\u5B9A\u4E49\u4EE3\u7801"}],"relativePath":"guide/settings.md"}',p={},o=t("",16),e=[o];function c(l,i,u,r,k,g){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{h as __pageData,y as default}; diff --git a/assets/guide_settings.md.c4717b88.js b/assets/guide_settings.md.c4717b88.js deleted file mode 100644 index d079109c..00000000 --- a/assets/guide_settings.md.c4717b88.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as s,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u8BBE\u7F6E","description":"","frontmatter":{},"headers":[],"relativePath":"guide/settings.md"}',o={},n=e("h1",{id:"\u8BBE\u7F6E",tabindex:"-1"},[r("\u8BBE\u7F6E "),e("a",{class:"header-anchor",href:"#\u8BBE\u7F6E","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,h,p,l,f){return s(),a("div",null,c)}var x=t(o,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/guide_settings.md.c4717b88.lean.js b/assets/guide_settings.md.c4717b88.lean.js deleted file mode 100644 index d079109c..00000000 --- a/assets/guide_settings.md.c4717b88.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as s,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u8BBE\u7F6E","description":"","frontmatter":{},"headers":[],"relativePath":"guide/settings.md"}',o={},n=e("h1",{id:"\u8BBE\u7F6E",tabindex:"-1"},[r("\u8BBE\u7F6E "),e("a",{class:"header-anchor",href:"#\u8BBE\u7F6E","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,h,p,l,f){return s(),a("div",null,c)}var x=t(o,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/guide_tasks.md.b2f7a988.js b/assets/guide_tasks.md.b2f7a988.js new file mode 100644 index 00000000..c7170f9d --- /dev/null +++ b/assets/guide_tasks.md.b2f7a988.js @@ -0,0 +1 @@ +import{_ as t,c as s,o,b as e}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',a={},r=e("p",null,"\u8BA1\u5212\u4EFB\u52A1\uFF1A\u5907\u4EFD\u811A\u672C\u3001\u670D\u52A1\u91CD\u542F\uFF0C\u7B49\u5B9A\u671F\u8FD0\u7EF4\u4EFB\u52A1\u3002",-1),c=e("p",null,"\u4F7F\u7528\u6B64\u529F\u80FD\u53EF\u4EE5\u5B9A\u671F\u7ED3\u5408 restic\u3001rclone \u7ED9\u670D\u52A1\u5668\u5907\u4EFD\uFF0C\u6216\u8005\u5B9A\u671F\u91CD\u542F\u67D0\u9879\u670D\u52A1\u6765\u91CD\u7F6E\u7F51\u7EDC\u8FDE\u63A5\u3002",-1),n=[r,c];function _(i,d,l,p,u,f){return o(),s("div",null,n)}var k=t(a,[["render",_]]);export{m as __pageData,k as default}; diff --git a/assets/guide_tasks.md.b2f7a988.lean.js b/assets/guide_tasks.md.b2f7a988.lean.js new file mode 100644 index 00000000..c7170f9d --- /dev/null +++ b/assets/guide_tasks.md.b2f7a988.lean.js @@ -0,0 +1 @@ +import{_ as t,c as s,o,b as e}from"./app.32957174.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',a={},r=e("p",null,"\u8BA1\u5212\u4EFB\u52A1\uFF1A\u5907\u4EFD\u811A\u672C\u3001\u670D\u52A1\u91CD\u542F\uFF0C\u7B49\u5B9A\u671F\u8FD0\u7EF4\u4EFB\u52A1\u3002",-1),c=e("p",null,"\u4F7F\u7528\u6B64\u529F\u80FD\u53EF\u4EE5\u5B9A\u671F\u7ED3\u5408 restic\u3001rclone \u7ED9\u670D\u52A1\u5668\u5907\u4EFD\uFF0C\u6216\u8005\u5B9A\u671F\u91CD\u542F\u67D0\u9879\u670D\u52A1\u6765\u91CD\u7F6E\u7F51\u7EDC\u8FDE\u63A5\u3002",-1),n=[r,c];function _(i,d,l,p,u,f){return o(),s("div",null,n)}var k=t(a,[["render",_]]);export{m as __pageData,k as default}; diff --git a/assets/guide_tasks.md.cf303285.js b/assets/guide_tasks.md.cf303285.js deleted file mode 100644 index bbe05c62..00000000 --- a/assets/guide_tasks.md.cf303285.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as s,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u4EFB\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},c=e("h1",{id:"\u4EFB\u52A1",tabindex:"-1"},[r("\u4EFB\u52A1 "),e("a",{class:"header-anchor",href:"#\u4EFB\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return s(),a("div",null,d)}var x=t(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/guide_tasks.md.cf303285.lean.js b/assets/guide_tasks.md.cf303285.lean.js deleted file mode 100644 index bbe05c62..00000000 --- a/assets/guide_tasks.md.cf303285.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as s,b as e,d as r}from"./app.13513b34.js";const m='{"title":"\u4EFB\u52A1","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},c=e("h1",{id:"\u4EFB\u52A1",tabindex:"-1"},[r("\u4EFB\u52A1 "),e("a",{class:"header-anchor",href:"#\u4EFB\u52A1","aria-hidden":"true"},"#")],-1),d=[c];function n(i,_,h,p,l,f){return s(),a("div",null,d)}var x=t(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/index.md.6a62f5eb.js b/assets/index.md.6a62f5eb.js new file mode 100644 index 00000000..db5c3798 --- /dev/null +++ b/assets/index.md.6a62f5eb.js @@ -0,0 +1 @@ +import{_ as a,c as r,o,b as e,d as t}from"./app.32957174.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u4E00\u4E2A\u5F00\u6E90\u3001\u8F7B\u91CF\u7684\u670D\u52A1\u5668\u548C\u7F51\u7AD9\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u4E00\u952E\u5B89\u88C5","details":"\u652F\u6301\u4E00\u952E\u811A\u672C\u5B89\u88C5\u9762\u677F\u548C\u76D1\u63A7\u670D\u52A1\uFF0C\u8F7B\u677E\u4F7F\u7528\uFF1BLinux\u3001WIndows\u3001MacOS\u3001OpenWRT\u7B49\u4E3B\u6D41\u7CFB\u7EDF\u5747\u53D7\u652F\u6301"},{"title":"\u968F\u65F6\u76D1\u63A7","details":"\u652F\u6301\u540C\u65F6\u76D1\u63A7\u591A\u4E2A\u670D\u52A1\u5668\u7684\u7CFB\u7EDF\u72B6\u6001\uFF0C\u652F\u6301\u76D1\u63A7\u7F51\u9875\u3001\u7AEF\u53E3\u3001SSL\u8BC1\u4E66\u72B6\u6001\uFF1B\u652F\u6301\u6545\u969C\u3001\u6D41\u91CF\u7B49\u72B6\u6001\u62A5\u8B66\uFF0C\u652F\u6301\u591A\u79CD\u901A\u77E5\u65B9\u5F0F\uFF08Telegram\u3001\u90AE\u4EF6\u3001\u5FAE\u4FE1\u7B49\uFF09"},{"title":"\u8F7B\u91CF\u8FD0\u7EF4","details":"\u652F\u6301\u5728\u7EBFSSH\uFF0C\u652F\u6301\u6D41\u91CF\u5FAA\u73AF\u76D1\u63A7\uFF0C\u652F\u6301\u8BBE\u7F6E\u5B9A\u65F6\u4EFB\u52A1\u3001\u670D\u52A1\u5668\u6279\u91CF\u6267\u884C\u4EFB\u52A1"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',s={},n=e("p",null,[e("br"),t("\u672C\u4F5C\u54C1\u91C7\u7528"),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"\u77E5\u8BC6\u5171\u4EAB\u7F72\u540D-\u975E\u5546\u4E1A\u6027\u4F7F\u7528-\u76F8\u540C\u65B9\u5F0F\u5171\u4EAB 4.0 \u56FD\u9645\u8BB8\u53EF\u534F\u8BAE"),t("\u8FDB\u884C\u8BB8\u53EF\u3002")],-1),i=[n];function c(d,l,h,p,_,m){return o(),r("div",null,i)}var g=a(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/index.md.6a62f5eb.lean.js b/assets/index.md.6a62f5eb.lean.js new file mode 100644 index 00000000..db5c3798 --- /dev/null +++ b/assets/index.md.6a62f5eb.lean.js @@ -0,0 +1 @@ +import{_ as a,c as r,o,b as e,d as t}from"./app.32957174.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u4E00\u4E2A\u5F00\u6E90\u3001\u8F7B\u91CF\u7684\u670D\u52A1\u5668\u548C\u7F51\u7AD9\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u4E00\u952E\u5B89\u88C5","details":"\u652F\u6301\u4E00\u952E\u811A\u672C\u5B89\u88C5\u9762\u677F\u548C\u76D1\u63A7\u670D\u52A1\uFF0C\u8F7B\u677E\u4F7F\u7528\uFF1BLinux\u3001WIndows\u3001MacOS\u3001OpenWRT\u7B49\u4E3B\u6D41\u7CFB\u7EDF\u5747\u53D7\u652F\u6301"},{"title":"\u968F\u65F6\u76D1\u63A7","details":"\u652F\u6301\u540C\u65F6\u76D1\u63A7\u591A\u4E2A\u670D\u52A1\u5668\u7684\u7CFB\u7EDF\u72B6\u6001\uFF0C\u652F\u6301\u76D1\u63A7\u7F51\u9875\u3001\u7AEF\u53E3\u3001SSL\u8BC1\u4E66\u72B6\u6001\uFF1B\u652F\u6301\u6545\u969C\u3001\u6D41\u91CF\u7B49\u72B6\u6001\u62A5\u8B66\uFF0C\u652F\u6301\u591A\u79CD\u901A\u77E5\u65B9\u5F0F\uFF08Telegram\u3001\u90AE\u4EF6\u3001\u5FAE\u4FE1\u7B49\uFF09"},{"title":"\u8F7B\u91CF\u8FD0\u7EF4","details":"\u652F\u6301\u5728\u7EBFSSH\uFF0C\u652F\u6301\u6D41\u91CF\u5FAA\u73AF\u76D1\u63A7\uFF0C\u652F\u6301\u8BBE\u7F6E\u5B9A\u65F6\u4EFB\u52A1\u3001\u670D\u52A1\u5668\u6279\u91CF\u6267\u884C\u4EFB\u52A1"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',s={},n=e("p",null,[e("br"),t("\u672C\u4F5C\u54C1\u91C7\u7528"),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"\u77E5\u8BC6\u5171\u4EAB\u7F72\u540D-\u975E\u5546\u4E1A\u6027\u4F7F\u7528-\u76F8\u540C\u65B9\u5F0F\u5171\u4EAB 4.0 \u56FD\u9645\u8BB8\u53EF\u534F\u8BAE"),t("\u8FDB\u884C\u8BB8\u53EF\u3002")],-1),i=[n];function c(d,l,h,p,_,m){return o(),r("div",null,i)}var g=a(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/index.md.daa17c5e.js b/assets/index.md.daa17c5e.js deleted file mode 100644 index 7829fc4d..00000000 --- a/assets/index.md.daa17c5e.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as r,o,b as e,d as t}from"./app.13513b34.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u4E00\u4E2A\u5F00\u6E90\u7684\u8F7B\u91CF\u670D\u52A1\u5668\u548C\u7F51\u7AD9\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u4E00\u952E\u5B89\u88C5","details":"\u652F\u6301\u4E00\u952E\u811A\u672C\u5B89\u88C5\u9762\u677F\u548C\u76D1\u63A7\u670D\u52A1\uFF0C\u8F7B\u677E\u4F7F\u7528\uFF1BLinux\u3001WIndows\u3001MacOS\u3001OpenWRT\u7B49\u4E3B\u6D41\u7CFB\u7EDF\u5747\u53D7\u652F\u6301"},{"title":"\u968F\u65F6\u76D1\u63A7","details":"\u652F\u6301\u540C\u65F6\u76D1\u63A7\u591A\u4E2A\u670D\u52A1\u5668\u7684\u7CFB\u7EDF\u72B6\u6001\uFF0C\u652F\u6301\u76D1\u63A7\u7F51\u9875\u3001\u7AEF\u53E3\u3001SSL\u8BC1\u4E66\u72B6\u6001\uFF1B\u652F\u6301\u6545\u969C\u3001\u6D41\u91CF\u7B49\u72B6\u6001\u62A5\u8B66\uFF0C\u652F\u6301\u591A\u79CD\u901A\u77E5\u65B9\u5F0F\uFF08Telegram\u3001\u90AE\u4EF6\u3001\u5FAE\u4FE1\u7B49\uFF09"},{"title":"\u8F7B\u91CF\u8FD0\u7EF4","details":"\u652F\u6301\u5728\u7EBFSSH\uFF0C\u652F\u6301\u6D41\u91CF\u5FAA\u73AF\u76D1\u63A7\uFF0C\u652F\u6301\u8BBE\u7F6E\u5B9A\u65F6\u4EFB\u52A1\u3001\u670D\u52A1\u5668\u6279\u91CF\u6267\u884C\u4EFB\u52A1"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',s={},n=e("p",null,[e("br"),t("\u672C\u4F5C\u54C1\u91C7\u7528"),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"\u77E5\u8BC6\u5171\u4EAB\u7F72\u540D-\u975E\u5546\u4E1A\u6027\u4F7F\u7528-\u76F8\u540C\u65B9\u5F0F\u5171\u4EAB 4.0 \u56FD\u9645\u8BB8\u53EF\u534F\u8BAE"),t("\u8FDB\u884C\u8BB8\u53EF\u3002")],-1),i=[n];function c(d,l,h,p,_,m){return o(),r("div",null,i)}var g=a(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/index.md.daa17c5e.lean.js b/assets/index.md.daa17c5e.lean.js deleted file mode 100644 index 7829fc4d..00000000 --- a/assets/index.md.daa17c5e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as r,o,b as e,d as t}from"./app.13513b34.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u54EA\u5412\u76D1\u63A7","tagline":"\u4E00\u4E2A\u5F00\u6E90\u7684\u8F7B\u91CF\u670D\u52A1\u5668\u548C\u7F51\u7AD9\u76D1\u63A7\u3001\u8FD0\u7EF4\u5DE5\u5177","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/guide/dashboard","features":[{"title":"\u4E00\u952E\u5B89\u88C5","details":"\u652F\u6301\u4E00\u952E\u811A\u672C\u5B89\u88C5\u9762\u677F\u548C\u76D1\u63A7\u670D\u52A1\uFF0C\u8F7B\u677E\u4F7F\u7528\uFF1BLinux\u3001WIndows\u3001MacOS\u3001OpenWRT\u7B49\u4E3B\u6D41\u7CFB\u7EDF\u5747\u53D7\u652F\u6301"},{"title":"\u968F\u65F6\u76D1\u63A7","details":"\u652F\u6301\u540C\u65F6\u76D1\u63A7\u591A\u4E2A\u670D\u52A1\u5668\u7684\u7CFB\u7EDF\u72B6\u6001\uFF0C\u652F\u6301\u76D1\u63A7\u7F51\u9875\u3001\u7AEF\u53E3\u3001SSL\u8BC1\u4E66\u72B6\u6001\uFF1B\u652F\u6301\u6545\u969C\u3001\u6D41\u91CF\u7B49\u72B6\u6001\u62A5\u8B66\uFF0C\u652F\u6301\u591A\u79CD\u901A\u77E5\u65B9\u5F0F\uFF08Telegram\u3001\u90AE\u4EF6\u3001\u5FAE\u4FE1\u7B49\uFF09"},{"title":"\u8F7B\u91CF\u8FD0\u7EF4","details":"\u652F\u6301\u5728\u7EBFSSH\uFF0C\u652F\u6301\u6D41\u91CF\u5FAA\u73AF\u76D1\u63A7\uFF0C\u652F\u6301\u8BBE\u7F6E\u5B9A\u65F6\u4EFB\u52A1\u3001\u670D\u52A1\u5668\u6279\u91CF\u6267\u884C\u4EFB\u52A1"}],"footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"index.md"}',s={},n=e("p",null,[e("br"),t("\u672C\u4F5C\u54C1\u91C7\u7528"),e("a",{rel:"license",href:"http://creativecommons.org/licenses/by-nc-sa/4.0/"},"\u77E5\u8BC6\u5171\u4EAB\u7F72\u540D-\u975E\u5546\u4E1A\u6027\u4F7F\u7528-\u76F8\u540C\u65B9\u5F0F\u5171\u4EAB 4.0 \u56FD\u9645\u8BB8\u53EF\u534F\u8BAE"),t("\u8FDB\u884C\u8BB8\u53EF\u3002")],-1),i=[n];function c(d,l,h,p,_,m){return o(),r("div",null,i)}var g=a(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/developer/algolia-search.html b/developer/algolia-search.html index bb11658b..4125f78e 100644 --- a/developer/algolia-search.html +++ b/developer/algolia-search.html @@ -6,8 +6,8 @@ Theme Config: Algolia Search | 哪吒监控 - - + + @@ -47,8 +47,8 @@ } }

VitePress will automatically add a lang facetFilter to the searchParameters.facetFilter array with the correct language value. Algolia automatically adds the correct facet filter based on the lang attribute on the <html> tag. This will match search results with the currently viewed language of the page.

- - + + \ No newline at end of file diff --git a/developer/basics.html b/developer/basics.html index bf6673a9..d32727ac 100644 --- a/developer/basics.html +++ b/developer/basics.html @@ -6,8 +6,8 @@ App Config: Basics | 哪吒监控 - - + + @@ -26,8 +26,8 @@ description: 'A VitePress site' }
- - + + \ No newline at end of file diff --git a/developer/carbon-ads.html b/developer/carbon-ads.html index 959f32c4..11de44aa 100644 --- a/developer/carbon-ads.html +++ b/developer/carbon-ads.html @@ -6,8 +6,8 @@ Theme Config: Carbon Ads | 哪吒监控 - - + + @@ -23,8 +23,8 @@ } }
- - + + \ No newline at end of file diff --git a/developer/homepage.html b/developer/homepage.html index f5dc0f39..9d08288b 100644 --- a/developer/homepage.html +++ b/developer/homepage.html @@ -6,8 +6,8 @@ Theme Config: Homepage | 哪吒监控 - - + + @@ -31,8 +31,8 @@ footer: MIT Licensed | Copyright © 2019-present Evan You --- - - + + \ No newline at end of file diff --git a/en_US/developer/algolia-search.html b/en_US/developer/algolia-search.html index 2d0adaf2..f596bfad 100644 --- a/en_US/developer/algolia-search.html +++ b/en_US/developer/algolia-search.html @@ -6,16 +6,16 @@ Theme Config: Algolia Search | Nezha Monitoring - - + + - - + + \ No newline at end of file diff --git a/en_US/developer/basics.html b/en_US/developer/basics.html index 5ab9911e..13f5818c 100644 --- a/en_US/developer/basics.html +++ b/en_US/developer/basics.html @@ -6,16 +6,16 @@ App Config: Basics | Nezha Monitoring - - + + - - + + \ No newline at end of file diff --git a/en_US/developer/carbon-ads.html b/en_US/developer/carbon-ads.html index f1fb124b..ce246d6f 100644 --- a/en_US/developer/carbon-ads.html +++ b/en_US/developer/carbon-ads.html @@ -6,16 +6,16 @@ Theme Config: Carbon Ads | Nezha Monitoring - - + + - - + + \ No newline at end of file diff --git a/en_US/developer/homepage.html b/en_US/developer/homepage.html index d8ed8e6e..65d49e0f 100644 --- a/en_US/developer/homepage.html +++ b/en_US/developer/homepage.html @@ -6,16 +6,16 @@ Theme Config: Homepage | Nezha Monitoring - - + + - - + + \ No newline at end of file diff --git a/en_US/guide/agent.html b/en_US/guide/agent.html index 85eb4712..d7e9f99a 100644 --- a/en_US/guide/agent.html +++ b/en_US/guide/agent.html @@ -6,14 +6,14 @@ Install Agent using one-click script | Nezha Monitoring - - + + -

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

Install Agent using one-click script

目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作


你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent



Linux安装Agent


  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+    

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

Install Agent using one-click script

目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作


你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装


  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent



Linux安装Agent


  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 
 
  • 选择“安装监控Agent”
  • 输入通信域名,如:”data.example.com
  • 输入面板通信端口,默认为5555
  • 输入Agent密钥,Agent密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
  • 等待安装完成后返回Dashboard主页查看服务器是否上线

Windows安装Agent


OpenWRT安装Agent


如何使 旧版OpenWRT/LEDE 自启动

如何使 新版OpenWRT 自启动?来自 @艾斯德斯

  • 首先在 release 下载对应的二进制解压 zip 包后放置到 /root
  • 运行 chmod +x /root/nezha-agent 赋予执行权限,然后创建 /etc/init.d/nezha-service
#!/bin/sh /etc/rc.common
 
@@ -37,8 +37,8 @@
  start
 }
 
  • 运行 chmod +x /etc/init.d/nezha-service 赋予执行权限
  • 启动服务: /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



自定义Agent监控项目


自定义监控的网卡和硬盘分区

  • 执行 /opt/nezha/agent/nezha-agent --edit-agent-config 来选择自定义的网卡和分区,然后重启 Agent 即可生效

其他运行参数

通过执行 ./nezha-agent --help 查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service,在 ExecStart= 这一行的末尾加上以下参数

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
- - + + \ No newline at end of file diff --git a/en_US/guide/dashboard.html b/en_US/guide/dashboard.html index 3769a266..3a117aa4 100644 --- a/en_US/guide/dashboard.html +++ b/en_US/guide/dashboard.html @@ -6,14 +6,14 @@ Preparations | Nezha Monitoring - - + + -

Preparations


搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥


哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard


  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+    

Preparations


搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥


哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard


  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 

如果你的面板服务器位于中国大陆,可以使用镜像:

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
 
  • 等待Docker安装完毕后,分别输入以下值:
    OAuth提供商 - Github或Gitee
    Client ID - 之前保存的Client ID
    Client Secret - 之前保存的密钥
    用户名 - Github或Gitee的用户名
    站点标题 - 自定义站点标题
    访问端口 - 公开访问端口,可自定义,默认8008
    Agent的通信端口 - Agent与Dashboard的通信端口,默认5555

  • 输入完成后,等待拉取镜像
    安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板

  • 将来如果需要再次运行脚本,可以运行:

./nezha.sh
 

来打开管理脚本


配置反向代理


  • 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”

  • 自定义一个代理名称,在下方“目标URL”中填入 http://127.0.0.1 然后点击“保存”

  • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:

#PROXY-START/
@@ -36,9 +36,9 @@
 proxy /terminal/* http://ip:8008 {
     websocket
 }
-


在宝塔面板中配置SSL


首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

- - +


在宝塔面板中配置SSL


首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

+ + \ No newline at end of file diff --git a/en_US/guide/notifications.html b/en_US/guide/notifications.html index 588f16d1..529c08ef 100644 --- a/en_US/guide/notifications.html +++ b/en_US/guide/notifications.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/q1.html b/en_US/guide/q1.html deleted file mode 100644 index fc97b8dd..00000000 --- a/en_US/guide/q1.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Nezha Monitoring - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/en_US/guide/q2.html b/en_US/guide/q2.html index e8fc03ab..7a6e0a51 100644 --- a/en_US/guide/q2.html +++ b/en_US/guide/q2.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/q3.html b/en_US/guide/q3.html index 0430aa70..65867944 100644 --- a/en_US/guide/q3.html +++ b/en_US/guide/q3.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/q4.html b/en_US/guide/q4.html index c24429bb..a96abb25 100644 --- a/en_US/guide/q4.html +++ b/en_US/guide/q4.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/q5.html b/en_US/guide/q5.html index dcb272a7..78fd6b4d 100644 --- a/en_US/guide/q5.html +++ b/en_US/guide/q5.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/servers.html b/en_US/guide/servers.html index bb58f380..c63f219c 100644 --- a/en_US/guide/servers.html +++ b/en_US/guide/servers.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/services.html b/en_US/guide/services.html index df6d74ed..e29fef24 100644 --- a/en_US/guide/services.html +++ b/en_US/guide/services.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/settings.html b/en_US/guide/settings.html index 02d604b9..3bf156fc 100644 --- a/en_US/guide/settings.html +++ b/en_US/guide/settings.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/guide/tasks.html b/en_US/guide/tasks.html index 5b87c475..4ecdfd35 100644 --- a/en_US/guide/tasks.html +++ b/en_US/guide/tasks.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + - - - + + + \ No newline at end of file diff --git a/en_US/index.html b/en_US/index.html index ec94faf1..5684240d 100644 --- a/en_US/index.html +++ b/en_US/index.html @@ -6,16 +6,16 @@ Nezha Monitoring - - + + -

Nezha Monitoring

A open source, lightweight server and website monitoring and O&M tool

One-Click Installation

Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported

Monitoring at any time

Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)

Lightweight O&M tool

Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers

Copyright © 2022-present Nezhahq

- - +

Nezha Monitoring

A open source, lightweight server and website monitoring and O&M tool

One-Click Installation

Support use one-click script to install Dashboard and Agent services; Linux, WIndows, MacOS, OpenWRT and other mainstream systems are supported

Monitoring at any time

Support monitoring the system status of multiple servers at the same time, support monitoring the status of web pages, ports, SSL certificates; support notifications in case of failure, out of data and other status. Support multiple notification methods (Telegram, email, WeChat, etc.)

Lightweight O&M tool

Support WebSSH, support cyclic monitoring data, support setting scheduled tasks and running command on multiple servers

Copyright © 2022-present Nezhahq

+ + \ No newline at end of file diff --git a/guide/agent.html b/guide/agent.html index 24904548..3b7975b5 100644 --- a/guide/agent.html +++ b/guide/agent.html @@ -6,16 +6,16 @@ 一键安装Agent | 哪吒监控 - - + + -

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

一键安装Agent

目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作

你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装

  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装

  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent


Linux安装Agent


  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+    

哪吒监控的被控端服务被称为Agent,本文档将介绍如何在被控端服务器上安装Agent,并与Dashboard连接

一键安装Agent

目前哪吒监控已支持在WIndows和Linux上一键安装Agent,遵循本文档的步骤,你可以很轻松的在服务器上部署它

准备工作

你需要提前在管理面板中设置好通信域名,此域名不可以接入CDN,这里以前面提到过的示例通信域名 “data.example.com” 来做演示
进入后台管理面板,转到“设置”页,在“未接入CDN的面板服务器域名/IP”项中填入通信域名,然后点击"保存"

Linux一键安装

  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Linux图标按钮,复制一键安装命令
  • 在被控端服务器中运行复制的一键安装命令,等待安装完成后返回到Dashboard主页查看服务器是否上线

Windows一键安装

  • 首先在管理面板中添加一台服务器
  • 点击新添加的服务器旁,绿色的Windows图标按钮,复制一键安装命令
  • 进入Windows服务器,运行PowerShell,在PowerShell中运行复制的安装命令
  • 如遇到确认「执行策略变更」请选择 Y
  • 等待安装完成后返回Dashboard主页查看服务器是否上线



其他方式安装Agent

Linux安装Agent

  • 首先在管理面板中添加一台服务器
  • 在被控服务器中,运行脚本(位于中国大陆的服务器请使用镜像):
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 
-
  • 选择“安装监控Agent”
  • 输入通信域名,如:”data.example.com
  • 输入面板通信端口,默认为5555
  • 输入Agent密钥,Agent密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
  • 等待安装完成后返回Dashboard主页查看服务器是否上线

Windows安装Agent

OpenWRT安装Agent

如何使 旧版OpenWRT/LEDE 自启动

如何使 新版OpenWRT 自启动?来自 @艾斯德斯

  • 首先在 release 下载对应的二进制解压 zip 包后放置到 /root
  • 运行 chmod +x /root/nezha-agent 赋予执行权限,然后创建 /etc/init.d/nezha-service
#!/bin/sh /etc/rc.common
+
  • 选择“安装监控Agent”
  • 输入通信域名,如:”data.example.com
  • 输入面板通信端口(RPC端口),默认为5555
  • 输入Agent密钥,Agent密钥在管理面板中添加服务器时生成,可以在管理面板中的“主机”页中找到
  • 等待安装完成后返回Dashboard主页查看服务器是否上线

Windows安装Agent

OpenWRT安装Agent

如何使 旧版OpenWRT/LEDE 自启动

如何使 新版OpenWRT 自启动?来自 @艾斯德斯

  • 首先在 release 下载对应的二进制解压 zip 包后放置到 /root
  • 运行 chmod +x /root/nezha-agent 赋予执行权限,然后创建 /etc/init.d/nezha-service
#!/bin/sh /etc/rc.common
 
 START=99
 USE_PROCD=1
@@ -36,9 +36,9 @@
  sleep 2
  start
 }
-
  • 运行 chmod +x /etc/init.d/nezha-service 赋予执行权限
  • 启动服务: /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



自定义Agent监控项目


自定义监控的网卡和硬盘分区

  • 执行 /opt/nezha/agent/nezha-agent --edit-agent-config 来选择自定义的网卡和分区,然后重启 Agent 即可生效

其他运行参数

通过执行 ./nezha-agent --help 查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service,在 ExecStart= 这一行的末尾加上以下参数

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
- - +
  • 运行 chmod +x /etc/init.d/nezha-service 赋予执行权限
  • 启动服务: /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start



自定义Agent监控项目

自定义监控的网卡和硬盘分区

  • 执行 /opt/nezha/agent/nezha-agent --edit-agent-config 来选择自定义的网卡和分区,然后重启 Agent 即可生效

其他运行参数

通过执行 ./nezha-agent --help 查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service,在 ExecStart= 这一行的末尾加上以下参数

  • --report-delay 控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
  • --skip-conn 不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置
  • --skip-procs 不监控进程数,也可以降低 agent 占用
  • --disable-auto-update 禁止 自动更新 Agent(安全特性)
  • --disable-force-update 禁止 强制更新 Agent(安全特性)
  • --disable-command-execute 禁止在 Agent 上执行定时任务、打开在线终端(安全特性)
  • --tls 启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)
+ + \ No newline at end of file diff --git a/guide/dashboard.html b/guide/dashboard.html index bf15c6a4..47c4146d 100644 --- a/guide/dashboard.html +++ b/guide/dashboard.html @@ -6,14 +6,14 @@ 准备工作 | 哪吒监控 - - + + -

准备工作

搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥

哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard

  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
+    

准备工作

搭建一个哪吒监控,你需要:

  1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景
  2. 一个已经设置好A记录,指向Dashboard服务器ip的域名

TIP

如果你想使用CDN,请准备两个域名,一个配置好CDN用作公开访问,CDN需要支持WebSocket协议;另一个域名不要使用CDN,用作Agent端与Dashboard的通信
本文档分别以 "cdn.example.com" 和 "data.example.com" 两个域名来演示

  1. 一个Github/Gitee账号

本文档将以宝塔面板反代面板的过程作为范例,随着未来版本的变化,部分功能的入口可能会发生改变,本文档仅供参考

获取Github的Client ID和密钥

哪吒监控接入Github和Gitee作为后台管理员账号

  • 首先我们需要新建一个验证应用,以Github为例,登陆Github后,打开 https://github.com/settings/developers ,依次选择“OAuth Apps” - “New OAuth App”
    Application name - 随意填写
    Homepage URL - 填写面板的访问域名,如:"http://cdn.example.com"
    Authorization callback URL - 填写回调地址,如:"http://cdn.example.com/oauth2/callback"
  • 点击“Register application”
  • 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存

在服务器中安装Dashboard

  • 在面板服务器中,运行安装脚本:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh  -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
 

如果你的面板服务器位于中国大陆,可以使用镜像:

curl -L https://fastly.jsdelivr.net/gh/naiba/nezha@master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh
 
  • 等待Docker安装完毕后,分别输入以下值:
    OAuth提供商 - Github或Gitee
    Client ID - 之前保存的Client ID
    Client Secret - 之前保存的密钥
    用户名 - Github或Gitee的用户名
    站点标题 - 自定义站点标题
    访问端口 - 公开访问端口,可自定义,默认8008
    Agent的通信端口 - Agent与Dashboard的通信端口,默认5555

  • 输入完成后,等待拉取镜像
    安装结束后,如果一切正常,此时你可以访问域名+端口号,如 “http://cdn.example.com:8008” 来查看面板

  • 将来如果需要再次运行脚本,可以运行:

./nezha.sh
 

来打开管理脚本


配置反向代理

  • 在宝塔面板中新建一个站点,域名填写公开访问域名,如 “http://cdn.example.com“ ,然后点击“设置”进入站点设置选项,选择“反向代理” - “新建反向代理”

  • 自定义一个代理名称,在下方“目标URL”中填入 http://127.0.0.1 然后点击“保存”

  • 打开刚刚新建的反向代理右边的“配置文件”,将配置文件替换为以下内容:

#PROXY-START/
@@ -36,9 +36,9 @@
 proxy /terminal/* http://ip:8008 {
     websocket
 }
-


在宝塔面板中配置SSL

首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

- - +


在宝塔面板中配置SSL

首先,先暂时关闭反向代理
正如在其他网站中配置SSL证书一样,进入站点设置中的“SSL”,你可以选择自动申请 Let´s Encrypt 证书或手动配置已有的证书
完成SSL的设置后,你需要回到 https://github.com/settings/developers ,编辑之前创建的验证应用程序,将之前我们填入的"Homepage URL"和"Authorization callback URL"中的域名全部从http改为https,如:"https://cdn.example.com" 和 "https://cdn.example.com/oauth2/callback" ,不更改此项可能会导致你无法登陆面板后台

+ + \ No newline at end of file diff --git a/guide/notifications.html b/guide/notifications.html index 733497c8..7cb32c15 100644 --- a/guide/notifications.html +++ b/guide/notifications.html @@ -3,19 +3,19 @@ - 通知 | 哪吒监控 + 灵活的通知方式 | 哪吒监控 - - + + - - + + - - - +

哪吒监控支持对服务器的负载、CPU、内存、硬盘、带宽、流量、月流量、进程数、连接数进行监控,并在其中某项达到用户设定值时发送报警通知

灵活的通知方式

#NEZHA# 是面板消息占位符,面板触发通知时会自动用实际消息替换占位符

Body 内容是JSON 格式的:当请求类型为 FORM 时,值为 key:value 的形式,value 里面可放置占位符,通知时会自动替换。当请求类型为 JSON 时 只会简单进行字符串替换后直接提交到URL

URL 里面也可放置占位符,请求时会进行简单的字符串替换。

你可以参考以下的通知方式示例,也可以根据自己的需求灵活设置推送方式

  • server酱示例

  • wxpusher 示例,需要关注你的应用

  • Telegram 示例 @haitau 贡献

    • 名称:telegram 机器人消息通知
    • URL:https://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
    • 请求方式: GET
    • 请求类型: 默认
    • Body: 空
    • URL 参数获取说明:botXXXXXX 中的 XXXXXX 是在 telegram 中关注官方 @Botfather ,输入/newbot ,创建新的机器人(bot)时,会提供的 token(在提示 Use this token to access the HTTP API:后面一行)这里 'bot' 三个字母不可少。创建 bot 后,需要先在 telegram 中与 BOT 进行对话(随便发个消息),然后才可用 API 发送消息。YYYYYY 是 telegram 用户的数字 ID。与机器人@userinfobot 对话可获得。


报警规则说明

基本规则

  • type:可选取一个或多个类型,如在一个规则中选择了多个类型,需要同时满足所有选择的类型才会触发通知(可参考后面的示例)
    • cpumemoryswapdisk
    • net_in_speed 入站网速、net_out_speed 出站网速、net_all_speed 双向网速、transfer_in 入站流量、transfer_out 出站流量、transfer_all 双向流量
    • offline 离线监控
    • load1load5load15 负载
    • process_count 进程数 目前取线程数占用资源太多,暂时不支持
    • tcp_conn_countudp_conn_count 连接数
  • duration:持续数秒,数秒内采样记录 30% 以上触发阈值才会报警(防数据插针)
  • min 或 max:
    • 流量、网速类数值 为字节(1KB=1024B,1MB = 1024*1024B)
    • 内存、硬盘、CPU 以占用百分比计数
    • 离线监控无需设置此项
  • cover:
    • 0 监控所有,通过 ignore 忽略特定服务器
    • 1 忽略所有,通过 ignore 监控特定服务器
      例如:[{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
  • ignore: 选择忽略特定服务器,搭配 cover 使用,内容为服务器id和布尔值,例如:{"1": true, "2":false}

完整示例:

TIP

添加一个离线报警

  • 名称:离线通知
  • 规则:[{"Type":"offline","Duration":10}]
  • 启用:√

TIP

添加一个监控 CPU 持续 10s 超过 50% 内存持续 20s 占用低于 20% 的报警

  • 名称:CPU+内存
  • 规则:[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
  • 启用:√

特殊:任意周期流量报警

可以用作月流量报警

  • type:
    • transfer_in_cycle 周期内的入站流量
    • transfer_out_cycle 周期内的出站流量
    • transfer_all_cycle 周期内双向流量和
  • cycle_start: 统计周期开始日期(可以是你机器计费周期的开始日期),时间格式为RFC3339,例如北京时间为2022-01-11T08:00:00.00+08:00
  • cycle_interval:每隔多少个周期单位(例如,周期单位为天,该值为 7,则代表每隔 7 天统计一次)
  • cycle_unit 统计周期单位,默认hour,可选(hour, day, week, month, year)
  • min/max、cover、ignore 参考基本规则配置

示例: ID 为 3 的服务器(ignore 里面定义),以每月 15 号为统计周期,周期内统计的出站月流量达到 1TB 时报警 [{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}]

+ + \ No newline at end of file diff --git a/guide/q1.html b/guide/q1.html index 8a30b204..07e98a46 100644 --- a/guide/q1.html +++ b/guide/q1.html @@ -3,19 +3,65 @@ - 问题1 | 哪吒监控 + 准备工作 | 哪吒监控 - - + + - - + + - - - +

准备工作

你可以选择CloudFlare的workers进行反代,但大陆的网络你懂的,这里介绍用你自己服务器反代方式
搭建一个TGbot api反代,你需要:
1.一个不受GFW封锁的服务器(且安装好nginx)
2.一个域名(提前申请SSL证书)

NGINX配置

编辑你nginx的配置文件,在http{}中加上如下配置

# http强制跳转到htpps
+server {
+    listen 80;
+    listen [::]:80;
+    server_name yourDomainName;
+
+    # Enforce HTTPS
+    return 301 https://$server_name$request_uri;
+}
+## https
+server {
+        listen 443 ssl;
+        listen [::]:443 ssl;
+
+    server_name yourDomainName;
+
+        ## ssl密钥路径自己改改
+	ssl_certificate server.pem;
+	ssl_certificate_key server.key;
+
+        ## root非必要
+	root /var/www/tgbot/;
+
+        ## dns必须写,不然会报502错误
+        resolver 8.8.8.8;
+
+        ## 以bot开头的请求都会被正则匹配到
+        location ~* ^/bot {
+		proxy_buffering off;
+                proxy_pass  https://api.telegram.org$request_uri;
+                proxy_http_version 1.1;
+        }
+
+        ## 和上面root一样非必要,这个主要是用来确认服务器状态的。也可以改成return 403
+	location /{ 
+		try_files /$uri $uri /index.html;
+	}
+
+        ## no log no fix
+        error_log    /var/log/tg.log  error;
+}
+

yourDomainName-你准备的域名
ssl_certificate-SSL证书路径
ssl_certificate_key-SSL证书路径

使用方式

🎉然后执行systemctl restart nginx回到nezha将原来的https://api.telegram.org/ 替换为https://yourDomainName/ ,即可正常推送消息

防止盗用

serverIp-你监控鸡的ip地址,你系统安装的那个就用那个命令,ufw iptables都可.

#ubuntu
+ufw allow proto tcp from serverIp to any port 443
+#centos
+iptables -I INPUT -p tcp --dport 443 -j DROP
+iptables -I INPUT -s serverIp -p tcp --dport 443 -j ACCEPT
+
+ + \ No newline at end of file diff --git a/guide/q2.html b/guide/q2.html index f5d328c3..172805ce 100644 --- a/guide/q2.html +++ b/guide/q2.html @@ -3,19 +3,19 @@ - 问题2 | 哪吒监控 + Agent 启动/上线 问题自检流程 | 哪吒监控 - - + + - - + + - - - +

Agent 启动/上线 问题自检流程

  1. 直接执行 /opt/nezha/agent/nezha-agent -s 面板IP或非CDN域名:面板RPC端口 -p Agent密钥 -d 查看日志是否是因为 DNS、网络不佳导致超时(timeout)
  2. nc -v 域名/IP 面板RPC端口 或者 telnet 域名/IP 面板RPC端口 来检验是否是网络问题,检查本机与面板服务器的出入站防火墙,如果无法判断问题可借助 https://port.ping.pe/ 提供的端口检查工具进行检测。
  3. 如果上面步骤检测正常,Agent 正常上线,尝试关闭 SELinux,如何关闭 SELinux?
+ + \ No newline at end of file diff --git a/guide/q3.html b/guide/q3.html index 13f247ca..fc961fac 100644 --- a/guide/q3.html +++ b/guide/q3.html @@ -3,19 +3,43 @@ - 问题3 | 哪吒监控 + 反向代理 gRPC 端口(支持 Cloudflare CDN) | 哪吒监控 - - + + - - + + - - - +

反向代理 gRPC 端口(支持 Cloudflare CDN)

使用 Nginx 或者 Caddy 反向代理 gRPC

  • Nginx 配置
server {
+    listen 443 ssl http2;
+    listen [::]:443 ssl http2;
+    server_name data.example.com; # 你的 Agent 连接 Dashboard 的域名
+
+    ssl_certificate          /data/letsencrypt/fullchain.pem; # 你的域名证书路径
+    ssl_certificate_key      /data/letsencrypt/key.pem;       # 你的域名私钥路径
+
+    underscores_in_headers on;
+
+    location / {
+        grpc_read_timeout 300s;
+        grpc_send_timeout 300s;
+        grpc_pass grpc://localhost:5555;
+    }
+}
+
  • Caddy 配置
data.example.com:443 { # 你的 Agent 连接 Dashboard 的域名
+    reverse_proxy {
+        to localhost:5555
+        transport http {
+            versions h2c 2
+        }
+    }
+}
+

Dashboard 面板端配置

  • 首先登录面板进入管理后台 打开设置页面,在 未接入CDN的面板服务器域名/IP 中填入上一步在 Nginx 或 Caddy 中配置的域名 比如 data.example.com ,并保存。
  • 然后在面板服务器中,打开 /opt/nezha/dashboard/data/config.yaml 文件,将 proxygrpcport 修改为 Nginx 或 Caddy 监听的端口,比如上一步设置的 443 ;因为我们在 Nginx 或 Caddy 中开启了 SSL/TLS,所以需要将 tls 设置为 true ;修改完成后重启面板。

Agent 端配置

  • 登录面板管理后台,复制一键安装命令,在对应的服务器上面执行一键安装命令重新安装 agent 端即可。

开启 Cloudflare CDN(可选)

根据 Cloudflare gRPC 的要求:gRPC 服务必须侦听 443 端口 且必须支持 TLS 和 HTTP/2。 所以如果需要开启 CDN,必须在配置 Nginx 或者 Caddy 反向代理 gRPC 时使用 443 端口,并配置证书(Caddy 会自动申请并配置证书)。

  • 登录 Cloudflare,选择使用的域名。打开 网络 选项将 gRPC 开关打开,打开 DNS 选项,找到 Nginx 或 Caddy 反代 gRPC 配置的域名的解析记录,打开橙色云启用 CDN。
+ + \ No newline at end of file diff --git a/guide/q4.html b/guide/q4.html index 4265eb23..03d4c342 100644 --- a/guide/q4.html +++ b/guide/q4.html @@ -3,19 +3,19 @@ - 问题4 | 哪吒监控 + 实时通道断开/在线终端连接失败 | 哪吒监控 - - + + - - + + - - - +

实时通道断开/在线终端连接失败

  • 如果你使用了CDN,请确认CDN服务商提供WebSocket服务,并且已开启WebSocket
  • 确认你的反代规则中针对 /ws,/terminal 路径的 WebSocket 进行了特别配置,你可以 点击这里 查看反向代理配置
+ + \ No newline at end of file diff --git a/guide/q5.html b/guide/q5.html index e01d10c5..ce5fc99f 100644 --- a/guide/q5.html +++ b/guide/q5.html @@ -3,19 +3,19 @@ - 问题5 | 哪吒监控 + 如何进行数据迁移、备份恢复? | 哪吒监控 - - + + - - + + - - - +

如何进行数据迁移、备份恢复?

  1. 先运行一键脚本,选择 停止面板
  2. 在旧服务器中打包 /opt/nezha 文件夹,复制到新环境相同位置解压
  3. 在新环境中运行一键脚本,选择 启动面板
+ + \ No newline at end of file diff --git a/guide/servers.html b/guide/servers.html index 0d935c37..7a4ab1d4 100644 --- a/guide/servers.html +++ b/guide/servers.html @@ -6,16 +6,16 @@ 服务器 | 哪吒监控 - - + + - - - + + + \ No newline at end of file diff --git a/guide/services.html b/guide/services.html index 443c445a..47e82549 100644 --- a/guide/services.html +++ b/guide/services.html @@ -3,19 +3,19 @@ - 服务 | 哪吒监控 + 哪吒监控 - - + + - - + + - - - + + + \ No newline at end of file diff --git a/guide/settings.html b/guide/settings.html index a2c84d7e..ca38bfd2 100644 --- a/guide/settings.html +++ b/guide/settings.html @@ -3,19 +3,62 @@ - 设置 | 哪吒监控 + 多语言 | 哪吒监控 - - + + - - + + - - - +

多语言

哪吒监控目前支持以下语言:

  • 简体中文
  • English
  • Español


我们欢迎您贡献更多语言

自定义代码

改LOGO、改色调、加统计代码等。

WARNING

自定义代码仅在游客首页生效。


默认主题更改进度条颜色示例

<style>
+.ui.fine.progress> .bar {
+    background-color: pink !important;
+}
+</style>
+

DayNight 主题更改进度条颜色、修改页脚示例(来自 @hyt-allen-xu

<style>
+.ui.fine.progress> .progress-bar {
+  background-color: #00a7d0 !important;
+}
+</style>
+<script>
+window.onload = function(){
+var footer=document.querySelector("div.footer-container")
+footer.innerHTML="©2021 你的名字 & Powered by 你的名字"
+footer.style.visibility="visible"
+}
+</script>
+

默认主题修改 LOGO、修改页脚示例(来自 @iLay1678

<style>
+.right.menu>a{
+visibility: hidden;
+}
+.footer .is-size-7{
+visibility: hidden;
+}
+.item img{
+visibility: hidden;
+}
+</style>
+<script>
+window.onload = function(){
+var avatar=document.querySelector(".item img")
+var footer=document.querySelector("div.is-size-7")
+footer.innerHTML="Powered by 你的名字"
+footer.style.visibility="visible"
+avatar.src="你的方形logo地址"
+avatar.style.visibility="visible"
+}
+</script>
+

hotaru 主题更改背景图片示例

<style>
+.hotaru-cover {
+   background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
+}
+</style>
+
+ + \ No newline at end of file diff --git a/guide/tasks.html b/guide/tasks.html index 4e597bab..58fe10c0 100644 --- a/guide/tasks.html +++ b/guide/tasks.html @@ -3,19 +3,19 @@ - 任务 | 哪吒监控 + 哪吒监控 - - + + - - + + - - - + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 18d3d6c2..d995086a 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"developer_algolia-search.md":"f247b64d","developer_basics.md":"b1833b91","developer_carbon-ads.md":"b1f27f6d","developer_homepage.md":"1284e614","en_us_developer_algolia-search.md":"e1475589","en_us_developer_basics.md":"b2add91b","en_us_developer_carbon-ads.md":"34f23488","en_us_developer_homepage.md":"a6db7ce7","en_us_guide_agent.md":"ec593a1a","en_us_guide_dashboard.md":"655e4802","en_us_guide_notifications.md":"fa68d9af","en_us_guide_q1.md":"2c880b4a","en_us_guide_q2.md":"a57b9066","en_us_guide_q3.md":"018a0f68","en_us_guide_q4.md":"efc1a45c","en_us_guide_q5.md":"7b50c57d","en_us_guide_servers.md":"91b70570","en_us_guide_services.md":"0e43c6e1","en_us_guide_settings.md":"f9df49c1","en_us_guide_tasks.md":"b49be1d5","en_us_index.md":"9f0f5302","guide_agent.md":"69fc9967","guide_dashboard.md":"455b8333","guide_notifications.md":"062c0195","guide_q1.md":"97a040ca","guide_q2.md":"1c44553b","guide_q3.md":"a2fb1bac","guide_q4.md":"a0ce8f50","guide_q5.md":"e8c8124d","guide_servers.md":"13555887","guide_services.md":"1451bbac","guide_settings.md":"c4717b88","guide_tasks.md":"cf303285","index.md":"daa17c5e"} +{"developer_algolia-search.md":"0e57e75f","developer_basics.md":"934280ae","developer_carbon-ads.md":"550ab585","developer_homepage.md":"7e908f8c","en_us_developer_algolia-search.md":"62e6f034","en_us_developer_basics.md":"4b39fb0b","en_us_developer_carbon-ads.md":"c3d13f3d","en_us_developer_homepage.md":"8c3b632f","en_us_guide_agent.md":"82a9d62c","en_us_guide_dashboard.md":"98ff237d","en_us_guide_notifications.md":"e9ca4955","en_us_guide_q2.md":"100c5279","en_us_guide_q3.md":"7ea9ad8f","en_us_guide_q4.md":"16f5519f","en_us_guide_q5.md":"3f63ffe8","en_us_guide_servers.md":"a2d37d9f","en_us_guide_services.md":"03d39940","en_us_guide_settings.md":"fa7d6803","en_us_guide_tasks.md":"7584bcd8","en_us_index.md":"6f844d9a","guide_agent.md":"01d4ef4a","guide_dashboard.md":"7365bdde","guide_notifications.md":"21540eb3","guide_q1.md":"2530c76b","guide_q2.md":"a712bfb8","guide_q3.md":"bcb1d1bc","guide_q4.md":"13d379f3","guide_q5.md":"52348c7a","guide_servers.md":"99c5036d","guide_services.md":"04b8f4e2","guide_settings.md":"006b93b3","guide_tasks.md":"b2f7a988","index.md":"6a62f5eb"} diff --git a/index.html b/index.html index 9978582e..4ec7cfed 100644 --- a/index.html +++ b/index.html @@ -6,16 +6,16 @@ 哪吒监控 - - + + -

哪吒监控

一个开源的轻量服务器和网站监控、运维工具

一键安装

支持一键脚本安装面板和监控服务,轻松使用;Linux、WIndows、MacOS、OpenWRT等主流系统均受支持

随时监控

支持同时监控多个服务器的系统状态,支持监控网页、端口、SSL证书状态;支持故障、流量等状态报警,支持多种通知方式(Telegram、邮件、微信等)

轻量运维

支持在线SSH,支持流量循环监控,支持设置定时任务、服务器批量执行任务

Copyright © 2022-present Nezhahq

- - +

哪吒监控

一个开源、轻量的服务器和网站监控、运维工具

一键安装

支持一键脚本安装面板和监控服务,轻松使用;Linux、WIndows、MacOS、OpenWRT等主流系统均受支持

随时监控

支持同时监控多个服务器的系统状态,支持监控网页、端口、SSL证书状态;支持故障、流量等状态报警,支持多种通知方式(Telegram、邮件、微信等)

轻量运维

支持在线SSH,支持流量循环监控,支持设置定时任务、服务器批量执行任务

Copyright © 2022-present Nezhahq

+ + \ No newline at end of file