diff --git a/assets/app.0bd0e305.js b/assets/app.df59db74.js similarity index 52% rename from assets/app.0bd0e305.js rename to assets/app.df59db74.js index cdc9a7db..4e4bdc16 100644 --- a/assets/app.0bd0e305.js +++ b/assets/app.df59db74.js @@ -1 +1 @@ -var Mo=Object.defineProperty,Oo=Object.defineProperties;var Ro=Object.getOwnPropertyDescriptors;var As=Object.getOwnPropertySymbols;var Uo=Object.prototype.hasOwnProperty,Fo=Object.prototype.propertyIsEnumerable;var Ss=(e,t,n)=>t in e?Mo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ps=(e,t)=>{for(var n in t||(t={}))Uo.call(t,n)&&Ss(e,n,t[n]);if(As)for(var n of As(t))Fo.call(t,n)&&Ss(e,n,t[n]);return e},Is=(e,t)=>Oo(e,Ro(t));const No="modulepreload",Ms={},Ho="/",Bo=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Ho}${s}`,s in Ms)return;Ms[s]=!0;const r=s.endsWith(".css"),o=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${o}`))return;const i=document.createElement("link");if(i.rel=r?"stylesheet":No,r||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),r)return new Promise((l,c)=>{i.addEventListener("load",l),i.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 Do="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",jo=es(Do);function _r(e){return!!e||e===""}function ts(e){if(O(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ko);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===vr||!F(e.toString))?JSON.stringify(e,gr,2):String(e),gr=(e,t)=>t&&t.__v_isRef?gr(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:mr(t)?{[`Set(${t.size})`]:[...t.values()]}:ue(t)&&!O(t)&&!xr(t)?String(t):t,Q={},mt=[],Me=()=>{},zo=()=>!1,Vo=/^on[^a-z]/,Wt=e=>Vo.test(e),ns=e=>e.startsWith("onUpdate:"),xe=Object.assign,ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jo=Object.prototype.hasOwnProperty,q=(e,t)=>Jo.call(e,t),O=Array.isArray,bt=e=>mn(e)==="[object Map]",mr=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",br=e=>ue(e)&&F(e.then)&&F(e.catch),vr=Object.prototype.toString,mn=e=>vr.call(e),Yo=e=>mn(e).slice(8,-1),xr=e=>mn(e)==="[object Object]",os=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"),bn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xo=/-(\w)/g,Ne=bn(e=>e.replace(Xo,(t,n)=>n?n.toUpperCase():"")),Zo=/\B([A-Z])/g,kt=bn(e=>e.replace(Zo,"-$1").toLowerCase()),vn=bn(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=bn(e=>e?`on${vn(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})},Qo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Os;const Go=()=>Os||(Os=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Ue;class ei{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},yr=e=>(e.w&Ge)>0,kr=e=>(e.n&Ge)>0,ni=({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(i.get(n)),t){case"add":O(e)?os(n)&&l.push(i.get("length")):(l.push(i.get(rt)),bt(e)&&l.push(i.get(qn)));break;case"delete":O(e)||(l.push(i.get(rt)),bt(e)&&l.push(i.get(qn)));break;case"set":bt(e)&&l.push(i.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(is(c))}}function Kn(e,t){for(const n of O(e)?e:[...e])(n!==Pe||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const ri=es("__proto__,__v_isRef,__isVue"),Cr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(rs)),oi=cs(),ii=cs(!1,!0),li=cs(!0),Us=ci();function ci(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let o=0,i=this.length;o{e[t]=function(...n){wt();const s=z(this)[t].apply(this,n);return $t(),s}}),e}function cs(e=!1,t=!1){return function(s,r,o){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&o===(e?t?$i:Sr:t?Ar:Lr).get(s))return s;const i=O(s);if(!e&&i&&q(Us,r))return Reflect.get(Us,r,o);const l=Reflect.get(s,r,o);return(rs(r)?Cr.has(r):ri(r))||(e||Te(s,"get",r),t)?l:de(l)?!i||!os(r)?l.value:l:ue(l)?e?Pr(l):yn(l):l}}const ai=Er(),ui=Er(!0);function Er(e=!1){return function(n,s,r,o){let i=n[s];if(Nt(i)&&de(i)&&!de(r))return!1;if(!e&&!Nt(r)&&(Ir(r)||(r=z(r),i=z(i)),!O(n)&&de(i)&&!de(r)))return i.value=r,!0;const l=O(n)&&os(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),o=z(t);t!==o&&!n&&Te(r,"get",t),!n&&Te(r,"get",o);const{has:i}=xn(r),l=s?as:n?ds:Ht;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));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 Fs(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 Ns(e,t){t=z(t);const n=z(this),{has:s,get:r}=xn(n);let o=s.call(n,e);o||(e=z(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?Ft(t,i)&&qe(n,"set",e,t):qe(n,"add",e,t),this}function Hs(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 o=t.delete(e);return r&&qe(t,"delete",e,void 0),o}function Bs(){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 o=this,i=o.__v_raw,l=z(i),c=t?as:e?ds:Ht;return!e&&Te(l,"iterate",rt),i.forEach((f,h)=>s.call(r,c(f),c(h),o))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,o=z(r),i=bt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=r[e](...s),h=n?as:t?ds:Ht;return!t&&Te(o,"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 gi(){const e={get(o){return Yt(this,o)},get size(){return Zt(this)},has:Xt,add:Fs,set:Ns,delete:Hs,clear:Bs,forEach:Qt(!1,!1)},t={get(o){return Yt(this,o,!1,!0)},get size(){return Zt(this)},has:Xt,add:Fs,set:Ns,delete:Hs,clear:Bs,forEach:Qt(!1,!0)},n={get(o){return Yt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Xt.call(this,o,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!1)},s={get(o){return Yt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Xt.call(this,o,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Gt(o,!1,!1),n[o]=Gt(o,!0,!1),t[o]=Gt(o,!1,!0),s[o]=Gt(o,!0,!0)}),[e,n,t,s]}const[mi,bi,vi,xi]=gi();function us(e,t){const n=t?e?xi:vi:e?bi:mi;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,o)}const yi={get:us(!1,!1)},ki={get:us(!1,!0)},wi={get:us(!0,!1)},Lr=new WeakMap,Ar=new WeakMap,Sr=new WeakMap,$i=new WeakMap;function Ci(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ei(e){return e.__v_skip||!Object.isExtensible(e)?0:Ci(Yo(e))}function yn(e){return Nt(e)?e:fs(e,!1,Tr,yi,Lr)}function Ti(e){return fs(e,!1,_i,ki,Ar)}function Pr(e){return fs(e,!0,pi,wi,Sr)}function fs(e,t,n,s,r){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=Ei(e);if(i===0)return e;const l=new Proxy(e,i===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 Ir(e){return!!(e&&e.__v_isShallow)}function Mr(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)?Pr(e):e;function Or(e){Ze&&Pe&&(e=z(e),$r(e.dep||(e.dep=is())))}function Rr(e,t){e=z(e),e.dep&&Kn(e.dep)}function de(e){return!!(e&&e.__v_isRef===!0)}function kn(e){return Ur(e,!1)}function Li(e){return Ur(e,!0)}function Ur(e,t){return de(e)?e:new Ai(e,t)}class Ai{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 Or(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),Rr(this))}}function $(e){return de(e)?e.value:e}const Si={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 Fr(e){return vt(e)?e:new Proxy(e,Si)}function Nr(e){const t=O(e)?new Array(e.length):{};for(const n in e)t[n]=Ii(e,n);return t}class Pi{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 Ii(e,t,n){const s=e[t];return de(s)?s:new Pi(e,t,n)}class Mi{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,Rr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Or(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Oi(e,t,n=!1){let s,r;const o=F(e);return o?(s=e,r=Me):(s=e.get,r=e.set),new Mi(s,r,o||!r,n)}function Qe(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){wn(o,t,n)}return r}function Oe(e,t,n,s){if(F(e)){const o=Qe(e,t,n,s);return o&&br(o)&&o.catch(i=>{wn(i,t,n)}),o}const r=[];for(let o=0;o>>1;Bt(Ee[s])je&&Ee.splice(t,1)}function qr(e,t,n,s){O(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),jr()}function Ni(e){qr(e,At,It,pt)}function Hi(e){qr(e,Ye,Mt,_t)}function ps(e,t=null){if(It.length){for(zn=t,At=[...new Set(It)],It.length=0,pt=0;ptBt(n)-Bt(s)),_t=0;_te.id==null?1/0:e.id;function Kr(e){Wn=!1,rn=!0,ps(e),Ee.sort((n,s)=>Bt(n)-Bt(s));const t=Me;try{for(je=0;jeL.trim()):g&&(r=n.map(Qo))}let l,c=s[l=On(t)]||s[l=On(Ne(t))];!c&&o&&(c=s[l=On(kt(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 Wr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!F(e)){const c=f=>{const h=Wr(f,t,!0);h&&(l=!0,xe(i,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(s.set(e,null),null):(O(o)?o.forEach(c=>i[c]=null):xe(i,o),s.set(e,i),i)}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,kt(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 zr(e){Cn=e}function Vr(){Cn=null}function De(e,t=$e,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Xs(-1);const o=ln(t),i=e(...r);return ln(o),s._d&&Xs(1),i};return s._n=!0,s._c=!0,s._d=!0,s}function Un(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:f,render:h,renderCache:g,data:y,setupState:L,ctx:M,inheritAttrs:V}=e;let m,k;const K=ln(e);try{if(n.shapeFlag&4){const H=r||s;m=Se(h.call(H,H,g,o,L,y,M)),k=c}else{const H=t;m=Se(H.length>1?H(o,{attrs:c,slots:l,emit:f}):H(o,null)),k=t.props?c:Di(c)}}catch(H){Ut.length=0,wn(H,e,1),m=N(Ke)}let P=m;if(k&&V!==!1){const H=Object.keys(k),{shapeFlag:X}=P;H.length&&X&7&&(i&&H.some(ns)&&(k=ji(k,i)),P=qt(P,k))}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 Di=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},ji=(e,t)=>{const n={};for(const s in e)(!ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function qi(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ds(s,i,f):!!i;if(c&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function Jr(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):Hi(e)}function zi(e,t){if(_e){let n=_e.provides;const s=_e.parent&&_e.parent.provides;s===n&&(n=_e.provides=Object.create(s)),n[e]=t}}function Ot(e,t,n=!1){const s=_e||$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 Yr(e,t){return _s(e,null,t)}const js={};function ot(e,t,n){return _s(e,t,n)}function _s(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:i}=Q){const l=_e;let c,f=!1,h=!1;if(de(e)?(c=()=>e.value,f=Ir(e)):vt(e)?(c=()=>e,s=!0):O(e)?(h=!0,f=e.some(vt),c=()=>e.map(k=>{if(de(k))return k.value;if(vt(k))return gt(k);if(F(k))return Qe(k,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 k=c;c=()=>gt(k())}let g,y=k=>{g=m.onStop=()=>{Qe(k,l,4)}};if(Kt)return y=Me,t?n&&Oe(t,l,3,[c(),h?[]:void 0,y]):c(),Me;let L=h?[]:js;const M=()=>{if(!!m.active)if(t){const k=m.run();(s||f||(h?k.some((K,P)=>Ft(K,L[P])):Ft(k,L)))&&(g&&g(),Oe(t,l,3,[k,L===js?void 0:L,y]),L=k)}else m.run()};M.allowRecurse=!!t;let V;r==="sync"?V=M:r==="post"?V=()=>we(M,l&&l.suspense):V=()=>{!l||l.isMounted?Ni(M):M()};const m=new ls(c,V);return t?n?M():L=m.run():r==="post"?we(m.run.bind(m),l&&l.suspense):m.run(),()=>{m.stop(),l&&l.scope&&ss(l.scope.effects,m)}}function Vi(e,t,n){const s=this.proxy,r=he(e)?e.includes(".")?Xr(s,e):()=>s[e]:e.bind(s,s);let o;F(t)?o=t:(o=t.handler,n=t);const i=_e;xt(this);const l=_s(r,o.bind(s),n);return i?xt(i):lt(),l}function Xr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{gt(n,t)});else if(xr(e))for(const n in e)gt(e[n],t);return e}function ie(e){return F(e)?{setup:e,name:e.name}:e}const Dt=e=>!!e.type.__asyncLoader,Zr=e=>e.type.__isKeepAlive;function Ji(e,t){Qr(e,"a",t)}function Yi(e,t){Qr(e,"da",t)}function Qr(e,t,n=_e){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;)Zr(r.parent.vnode)&&Xi(s,t,n,r),r=r.parent}}function Xi(e,t,n,s){const r=En(t,e,s,!0);Tn(()=>{ss(s[t],r)},n)}function En(e,t,n=_e,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;wt(),xt(n);const l=Oe(t,n,e,i);return lt(),$t(),l});return s?r.unshift(o):r.push(o),o}}const We=e=>(t,n=_e)=>(!Kt||e==="sp")&&En(e,t,n),Zi=We("bm"),ut=We("m"),Qi=We("bu"),Gr=We("u"),Gi=We("bum"),Tn=We("um"),el=We("sp"),tl=We("rtg"),nl=We("rtc");function sl(e,t=_e){En("ec",e,t)}let Vn=!0;function rl(e){const t=to(e),n=e.proxy,s=e.ctx;Vn=!1,t.beforeCreate&&qs(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:f,created:h,beforeMount:g,mounted:y,beforeUpdate:L,updated:M,activated:V,deactivated:m,beforeDestroy:k,beforeUnmount:K,destroyed:P,unmounted:H,render:X,renderTracked:Z,renderTriggered:B,errorCaptured:le,serverPrefetch:ne,expose:re,inheritAttrs:ge,components:j,directives:oe,filters:ye}=t;if(f&&ol(f,s,null,e.appContext.config.unwrapInjectedRef),i)for(const se in i){const G=i[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,o)for(const se in o){const G=o[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:ft=>Ct.value=ft})}if(l)for(const se in l)eo(l[se],s,n,se);if(c){const se=F(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{zi(G,se[G])})}h&&qs(h,e,"c");function ke(se,G){O(G)?G.forEach(He=>se(He.bind(n))):G&&se(G.bind(n))}if(ke(Zi,g),ke(ut,y),ke(Qi,L),ke(Gr,M),ke(Ji,V),ke(Yi,m),ke(sl,le),ke(nl,Z),ke(tl,B),ke(Gi,K),ke(Tn,H),ke(el,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),ge!=null&&(e.inheritAttrs=ge),j&&(e.components=j),oe&&(e.directives=oe)}function ol(e,t,n=Me,s=!1){O(e)&&(e=Jn(e));for(const r in e){const o=e[r];let i;ue(o)?"default"in o?i=Ot(o.from||r,o.default,!0):i=Ot(o.from||r):i=Ot(o),de(i)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[r]=i}}function qs(e,t,n){Oe(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,s){const r=s.includes(".")?Xr(n,s):()=>n[s];if(he(e)){const o=t[e];F(o)&&ot(r,o)}else if(F(e))ot(r,e.bind(n));else if(ue(e))if(O(e))e.forEach(o=>eo(o,t,n,s));else{const o=F(e.handler)?e.handler.bind(n):t[e.handler];F(o)&&ot(r,o,e)}}function to(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>cn(c,f,i,!0)),cn(c,t,i)),o.set(t,c),c}function cn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&cn(e,o,n,!0),r&&r.forEach(i=>cn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=il[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const il={data:Ks,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:nt,directives:nt,watch:cl,provide:Ks,inject:ll};function Ks(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 ll(e,t){return nt(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[y,L]=so(g,t,!0);xe(i,y),L&&l.push(...L)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!c)return s.set(e,mt),mt;if(O(o))for(let h=0;h-1,L[1]=V<0||M-1||q(L,"default"))&&l.push(g)}}}const f=[i,l];return s.set(e,f),f}function Ws(e){return e[0]!=="$"}function zs(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Vs(e,t){return zs(e)===zs(t)}function Js(e,t){return O(t)?t.findIndex(n=>Vs(n,e)):F(t)&&Vs(t,e)?0:-1}const ro=e=>e[0]==="_"||e==="$stable",gs=e=>O(e)?e.map(Se):[Se(e)],fl=(e,t,n)=>{const s=De((...r)=>gs(t(...r)),n);return s._c=!1,s},oo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ro(r))continue;const o=e[r];if(F(o))t[r]=fl(r,o,s);else if(o!=null){const i=gs(o);t[r]=()=>i}}},io=(e,t)=>{const n=gs(t);e.slots.default=()=>n},dl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),sn(t,"_",n)):oo(t,e.slots={})}else e.slots={},t&&io(e,t);sn(e.slots,Ln,1)},hl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Q;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(xe(r,t),!n&&l===1&&delete r._):(o=!t.$stable,oo(t,r)),i=t}else t&&(io(e,t),i={default:1});if(o)for(const l in r)!ro(l)&&!(l in i)&&delete r[l]};function Fe(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;ian(y,t&&(O(t)?t[L]:t),n,s,r));return}if(Dt(s)&&!r)return;const o=s.shapeFlag&4?vs(s.component)||s.component.proxy:s.el,i=r?null:o,{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,[i,h]);else{const y=he(c),L=de(c);if(y||L){const M=()=>{if(e.f){const V=y?h[c]:c.value;r?O(V)&&ss(V,o):O(V)?V.includes(o)||V.push(o):y?(h[c]=[o],q(g,c)&&(g[c]=h[c])):(c.value=[o],e.k&&(h[e.k]=c.value))}else y?(h[c]=i,q(g,c)&&(g[c]=i)):de(c)&&(c.value=i,e.k&&(h[e.k]=i))};i?(M.id=-1,we(M,n)):M()}}}let Je=!1;const en=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fn=e=>e.nodeType===8;function gl(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:o,remove:i,insert:l,createComment:c}}=e,f=(m,k)=>{if(!k.hasChildNodes()){n(null,m,k),on();return}Je=!1,h(k.firstChild,m,null,null,null),on(),Je&&console.error("Hydration completed but contains mismatches.")},h=(m,k,K,P,H,X=!1)=>{const Z=Fn(m)&&m.data==="[",B=()=>M(m,k,K,P,H,Z),{type:le,ref:ne,shapeFlag:re}=k,ge=m.nodeType;k.el=m;let j=null;switch(le){case jt:ge!==3?j=B():(m.data!==k.children&&(Je=!0,m.data=k.children),j=r(m));break;case Ke:ge!==8||Z?j=B():j=r(m);break;case Rt:if(ge!==1)j=B();else{j=m;const oe=!k.children.length;for(let ye=0;ye{X=X||!!k.dynamicChildren;const{type:Z,props:B,patchFlag:le,shapeFlag:ne,dirs:re}=k,ge=Z==="input"&&re||Z==="option";if(ge||le!==-1){if(re&&Fe(k,null,K,"created"),B)if(ge||!X||le&48)for(const oe in B)(ge&&oe.endsWith("value")||Wt(oe)&&!St(oe))&&s(m,oe,null,B[oe],!1,void 0,K);else B.onClick&&s(m,"onClick",null,B.onClick,!1,void 0,K);let j;if((j=B&&B.onVnodeBeforeMount)&&Le(j,K,k),re&&Fe(k,null,K,"beforeMount"),((j=B&&B.onVnodeMounted)||re)&&Jr(()=>{j&&Le(j,K,k),re&&Fe(k,null,K,"mounted")},P),ne&16&&!(B&&(B.innerHTML||B.textContent))){let oe=y(m.firstChild,k,m,K,P,H,X);for(;oe;){Je=!0;const ye=oe;oe=oe.nextSibling,i(ye)}}else ne&8&&m.textContent!==k.children&&(Je=!0,m.textContent=k.children)}return m.nextSibling},y=(m,k,K,P,H,X,Z)=>{Z=Z||!!k.dynamicChildren;const B=k.children,le=B.length;for(let ne=0;ne{const{slotScopeIds:Z}=k;Z&&(H=H?H.concat(Z):Z);const B=o(m),le=y(r(m),k,B,K,P,H,X);return le&&Fn(le)&&le.data==="]"?r(k.anchor=le):(Je=!0,l(k.anchor=c("]"),B,le),le)},M=(m,k,K,P,H,X)=>{if(Je=!0,k.el=null,X){const le=V(m);for(;;){const ne=r(m);if(ne&&ne!==le)i(ne);else break}}const Z=r(m),B=o(m);return i(m),n(null,k,B,Z,K,P,en(B),H),Z},V=m=>{let k=0;for(;m;)if(m=r(m),m&&Fn(m)&&(m.data==="["&&k++,m.data==="]")){if(k===0)return r(m);k--}return m};return[f,h]}const we=Jr;function ml(e){return bl(e,gl)}function bl(e,t){const n=Go();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:f,setElementText:h,parentNode:g,nextSibling:y,setScopeId:L=Me,cloneNode:M,insertStaticContent:V}=e,m=(a,u,d,_=null,p=null,x=null,C=!1,v=null,w=!!u.dynamicChildren)=>{if(a===u)return;a&&!Tt(a,u)&&(_=Jt(a),ze(a,p,x,!0),a=null),u.patchFlag===-2&&(w=!1,u.dynamicChildren=null);const{type:b,ref:A,shapeFlag:E}=u;switch(b){case jt:k(a,u,d,_);break;case Ke:K(a,u,d,_);break;case Rt:a==null&&P(u,d,_,C);break;case fe:oe(a,u,d,_,p,x,C,v,w);break;default:E&1?Z(a,u,d,_,p,x,C,v,w):E&6?ye(a,u,d,_,p,x,C,v,w):(E&64||E&128)&&b.process(a,u,d,_,p,x,C,v,w,dt)}A!=null&&p&&an(A,a&&a.ref,x,u||a,!u)},k=(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,_)},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,v,w)=>{C=C||u.type==="svg",a==null?B(u,d,_,p,x,C,v,w):re(a,u,p,x,C,v,w)},B=(a,u,d,_,p,x,C,v)=>{let w,b;const{type:A,props:E,shapeFlag:S,transition:I,patchFlag:W,dirs:te}=a;if(a.el&&M!==void 0&&W===-1)w=a.el=M(a.el);else{if(w=a.el=i(a.type,x,E&&E.is,E),S&8?h(w,a.children):S&16&&ne(a.children,w,null,_,p,x&&A!=="foreignObject",C,v),te&&Fe(a,null,_,"created"),E){for(const ee in E)ee!=="value"&&!St(ee)&&o(w,ee,null,E[ee],x,a.children,_,p,Be);"value"in E&&o(w,"value",null,E.value),(b=E.onVnodeBeforeMount)&&Le(b,_,a)}le(w,a,a.scopeId,C,_)}te&&Fe(a,null,_,"beforeMount");const Y=(!p||p&&!p.pendingBranch)&&I&&!I.persisted;Y&&I.beforeEnter(w),s(w,u,d),((b=E&&E.onVnodeMounted)||Y||te)&&we(()=>{b&&Le(b,_,a),Y&&I.enter(w),te&&Fe(a,null,_,"mounted")},p)},le=(a,u,d,_,p)=>{if(d&&L(a,d),_)for(let x=0;x<_.length;x++)L(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,v,w=0)=>{for(let b=w;b{const v=u.el=a.el;let{patchFlag:w,dynamicChildren:b,dirs:A}=u;w|=a.patchFlag&16;const E=a.props||Q,S=u.props||Q;let I;d&&tt(d,!1),(I=S.onVnodeBeforeUpdate)&&Le(I,d,u,a),A&&Fe(u,a,d,"beforeUpdate"),d&&tt(d,!0);const W=p&&u.type!=="foreignObject";if(b?ge(a.dynamicChildren,b,v,d,_,W,x):C||He(a,u,v,null,d,_,W,x,!1),w>0){if(w&16)j(v,u,E,S,d,_,p);else if(w&2&&E.class!==S.class&&o(v,"class",null,S.class,p),w&4&&o(v,"style",E.style,S.style,p),w&8){const te=u.dynamicProps;for(let Y=0;Y{I&&Le(I,d,u,a),A&&Fe(u,a,d,"updated")},_)},ge=(a,u,d,_,p,x,C)=>{for(let v=0;v{if(d!==_){for(const v in _){if(St(v))continue;const w=_[v],b=d[v];w!==b&&v!=="value"&&o(a,v,b,w,C,u.children,p,x,Be)}if(d!==Q)for(const v in d)!St(v)&&!(v in _)&&o(a,v,d[v],null,C,u.children,p,x,Be);"value"in _&&o(a,"value",d.value,_.value)}},oe=(a,u,d,_,p,x,C,v,w)=>{const b=u.el=a?a.el:l(""),A=u.anchor=a?a.anchor:l("");let{patchFlag:E,dynamicChildren:S,slotScopeIds:I}=u;I&&(v=v?v.concat(I):I),a==null?(s(b,d,_),s(A,d,_),ne(u.children,d,A,p,x,C,v,w)):E>0&&E&64&&S&&a.dynamicChildren?(ge(a.dynamicChildren,S,d,p,x,C,v),(u.key!=null||p&&u===p.subTree)&&co(a,u,!0)):He(a,u,d,A,p,x,C,v,w)},ye=(a,u,d,_,p,x,C,v,w)=>{u.slotScopeIds=v,a==null?u.shapeFlag&512?p.ctx.activate(u,d,_,C,w):Sn(u,d,_,p,x,C,w):ke(a,u,w)},Sn=(a,u,d,_,p,x,C)=>{const v=a.component=Al(a,_,p);if(Zr(a)&&(v.ctx.renderer=dt),Sl(v),v.asyncDep){if(p&&p.registerDep(v,se),!a.el){const w=v.subTree=N(Ke);K(null,w,u,d)}return}se(v,a,u,d,p,x,C)},ke=(a,u,d)=>{const _=u.component=a.component;if(qi(a,u,d))if(_.asyncDep&&!_.asyncResolved){G(_,u,d);return}else _.next=u,Fi(_.update),_.update();else u.component=a.component,u.el=a.el,_.vnode=u},se=(a,u,d,_,p,x,C)=>{const v=()=>{if(a.isMounted){let{next:A,bu:E,u:S,parent:I,vnode:W}=a,te=A,Y;tt(a,!1),A?(A.el=W.el,G(a,A,C)):A=W,E&&Rn(E),(Y=A.props&&A.props.onVnodeBeforeUpdate)&&Le(Y,I,A,W),tt(a,!0);const ee=Un(a),Ae=a.subTree;a.subTree=ee,m(Ae,ee,g(Ae.el),Jt(Ae),a,p,x),A.el=ee.el,te===null&&Ki(a,ee.el),S&&we(S,p),(Y=A.props&&A.props.onVnodeUpdated)&&we(()=>Le(Y,I,A,W),p)}else{let A;const{el:E,props:S}=u,{bm:I,m:W,parent:te}=a,Y=Dt(u);if(tt(a,!1),I&&Rn(I),!Y&&(A=S&&S.onVnodeBeforeMount)&&Le(A,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&&we(W,p),!Y&&(A=S&&S.onVnodeMounted)){const ee=u;we(()=>Le(A,te,ee),p)}u.shapeFlag&256&&a.a&&we(a.a,p),a.isMounted=!0,u=d=_=null}},w=a.effect=new ls(v,()=>Dr(a.update),a.scope),b=a.update=w.run.bind(w);b.id=a.uid,tt(a,!0),b()},G=(a,u,d)=>{u.component=a;const _=a.vnode.props;a.vnode=u,a.next=null,ul(a,u.props,_,d),hl(a,u.children,d),wt(),ps(void 0,a.update),$t()},He=(a,u,d,_,p,x,C,v,w=!1)=>{const b=a&&a.children,A=a?a.shapeFlag:0,E=u.children,{patchFlag:S,shapeFlag:I}=u;if(S>0){if(S&128){Ct(b,E,d,_,p,x,C,v,w);return}else if(S&256){Pn(b,E,d,_,p,x,C,v,w);return}}I&8?(A&16&&Be(b,p,x),E!==b&&h(d,E)):A&16?I&16?Ct(b,E,d,_,p,x,C,v,w):Be(b,p,x,!0):(A&8&&h(d,""),I&16&&ne(E,d,_,p,x,C,v,w))},Pn=(a,u,d,_,p,x,C,v,w)=>{a=a||mt,u=u||mt;const b=a.length,A=u.length,E=Math.min(b,A);let S;for(S=0;SA?Be(a,p,x,!0,!1,E):ne(u,d,_,p,x,C,v,w,E)},Ct=(a,u,d,_,p,x,C,v,w)=>{let b=0;const A=u.length;let E=a.length-1,S=A-1;for(;b<=E&&b<=S;){const I=a[b],W=u[b]=w?Xe(u[b]):Se(u[b]);if(Tt(I,W))m(I,W,d,null,p,x,C,v,w);else break;b++}for(;b<=E&&b<=S;){const I=a[E],W=u[S]=w?Xe(u[S]):Se(u[S]);if(Tt(I,W))m(I,W,d,null,p,x,C,v,w);else break;E--,S--}if(b>E){if(b<=S){const I=S+1,W=IS)for(;b<=E;)ze(a[b],p,x,!0),b++;else{const I=b,W=b,te=new Map;for(b=W;b<=S;b++){const Ce=u[b]=w?Xe(u[b]):Se(u[b]);Ce.key!=null&&te.set(Ce.key,b)}let Y,ee=0;const Ae=S-W+1;let ht=!1,Es=0;const Et=new Array(Ae);for(b=0;b=Ae){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]=b+1,Re>=Es?Es=Re:ht=!0,m(Ce,u[Re],d,null,p,x,C,v,w),ee++)}const Ts=ht?vl(Et):mt;for(Y=Ts.length-1,b=Ae-1;b>=0;b--){const Ce=W+b,Re=u[Ce],Ls=Ce+1{const{el:x,type:C,transition:v,children:w,shapeFlag:b}=a;if(b&6){ft(a.component.subTree,u,d,_);return}if(b&128){a.suspense.move(u,d,_);return}if(b&64){C.move(a,u,d,dt);return}if(C===fe){s(x,u,d);for(let E=0;Ev.enter(x),p);else{const{leave:E,delayLeave:S,afterLeave:I}=v,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:v,children:w,dynamicChildren:b,shapeFlag:A,patchFlag:E,dirs:S}=a;if(v!=null&&an(v,null,d,a,!0),A&256){u.ctx.deactivate(a);return}const I=A&1&&S,W=!Dt(a);let te;if(W&&(te=C&&C.onVnodeBeforeUnmount)&&Le(te,u,a),A&6)Io(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,dt,_):b&&(x!==fe||E>0&&E&64)?Be(b,u,d,!1,!0):(x===fe&&E&384||!p&&A&16)&&Be(w,u,d),_&&$s(a)}(W&&(te=C&&C.onVnodeUnmounted)||I)&&we(()=>{te&&Le(te,u,a),I&&Fe(a,null,u,"unmounted")},d)},$s=a=>{const{type:u,el:d,anchor:_,transition:p}=a;if(u===fe){Po(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:v}=p,w=()=>C(d,x);v?v(a.el,x,w):w()}else x()},Po=(a,u)=>{let d;for(;a!==u;)d=y(a),r(a),a=d;r(u)},Io=(a,u,d)=>{const{bum:_,scope:p,update:x,subTree:C,um:v}=a;_&&Rn(_),p.stop(),x&&(x.active=!1,ze(C,a,u,d)),v&&we(v,u),we(()=>{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},dt={p:m,um:ze,m:ft,r:$s,mt:Sn,mc:ne,pc:He,pbc:ge,n:Jt,o:e};let In,Mn;return t&&([In,Mn]=t(dt)),{render:Cs,hydrate:In,createApp:_l(Cs,In)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function co(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const xl=e=>e.__isTeleport,ao="components";function un(e,t){return kl(ao,e,!0,t)||e}const yl=Symbol();function kl(e,t,n=!0,s=!1){const r=$e||_e;if(r){const o=r.type;if(e===ao){const l=Ol(o);if(l&&(l===t||l===Ne(t)||l===vn(Ne(t))))return o}const i=Ys(r[e]||o[e],t)||Ys(r.appContext[e],t);return!i&&s?o:i}}function Ys(e,t){return e&&(e[t]||e[Ne(t)]||e[vn(Ne(t))])}const fe=Symbol(void 0),jt=Symbol(void 0),Ke=Symbol(void 0),Rt=Symbol(void 0),Ut=[];let it=null;function T(e=!1){Ut.push(it=e?null:[])}function wl(){Ut.pop(),it=Ut[Ut.length-1]||null}let fn=1;function Xs(e){fn+=e}function uo(e){return e.dynamicChildren=fn>0?it||mt:null,wl(),fn>0&&it&&it.push(e),e}function R(e,t,n,s,r,o){return uo(U(e,t,n,s,r,o,!0))}function pe(e,t,n,s,r){return uo(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 Ln="__vInternal",fo=({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,o=e===fe?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fo(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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ms(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=he(n)?8:16),fn>0&&!i&&it&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&it.push(c),c}const N=$l;function $l(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===yl)&&(e=Ke),dn(e)){const l=qt(e,t,!0);return n&&ms(l,n),l}if(Rl(e)&&(e=e.__vccOpts),t){t=Cl(t);let{class:l,style:c}=t;l&&!he(l)&&(t.class=ct(l)),ue(c)&&(Mr(c)&&!O(c)&&(c=xe({},c)),t.style=ts(c))}const i=he(e)?1:Wi(e)?128:xl(e)?64:ue(e)?4:F(e)?2:0;return U(e,t,n,s,r,i,o,!0)}function Cl(e){return e?Mr(e)||Ln in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?bs(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&fo(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:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?o===-1?16:o|16:o,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 hf(e,t){const n=N(Rt,null,e);return n.staticCount=t,n}function J(e="",t=!1){return t?(T(),pe(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&&!(Ln 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 bs(...e){const t={};for(let n=0;nt(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;ldn(t)?!(t.type===Ke||t.type===fe&&!ho(t.children)):!0)?e:null}const Xn=e=>e?po(e)?vs(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=>to(e),$forceUpdate:e=>()=>Dr(e.update),$nextTick:e=>Br.bind(e.proxy),$watch:e=>Vi.bind(e)}),El={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const L=i[t];if(L!==void 0)switch(L){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(s!==Q&&q(s,t))return i[t]=1,s[t];if(r!==Q&&q(r,t))return i[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return i[t]=3,o[t];if(n!==Q&&q(n,t))return i[t]=4,n[t];Vn&&(i[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 i[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:o}=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:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==Q&&q(e,i)||t!==Q&&q(t,i)||(l=o[0])&&q(l,i)||q(s,i)||q(hn,i)||q(r.config.globalProperties,i)},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)}},Tl=lo();let Ll=0;function Al(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||Tl,o={uid:Ll++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new ei(!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:so(s,r),emitsOptions:Wr(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 o.ctx={_:o},o.root=t?t.root:o,o.emit=Bi.bind(null,o),e.ce&&e.ce(o),o}let _e=null;const xt=e=>{_e=e,e.scope.on()},lt=()=>{_e&&_e.scope.off(),_e=null};function po(e){return e.vnode.shapeFlag&4}let Kt=!1;function Sl(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=po(e);al(e,n,r,t),dl(e,s);const o=r?Pl(e,t):void 0;return Kt=!1,o}function Pl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Pt(new Proxy(e.ctx,El));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ml(e):null;xt(e),wt();const o=Qe(s,e,0,[e.props,r]);if($t(),lt(),br(o)){if(o.then(lt,lt),t)return o.then(i=>{Zs(e,i,t)}).catch(i=>{wn(i,e,0)});e.asyncDep=o}else Zs(e,o,t)}else _o(e,t)}function Zs(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=Fr(t)),_o(e,n)}let Qs;function _o(e,t,n){const s=e.type;if(!e.render){if(!t&&Qs&&!s.render){const r=s.template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=xe(xe({isCustomElement:o,delimiters:l},i),c);s.render=Qs(r,f)}}e.render=s.render||Me}xt(e),wt(),rl(e),$t(),lt()}function Il(e){return new Proxy(e.attrs,{get(t,n){return Te(e,"get","$attrs"),t[n]}})}function Ml(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Il(e))},slots:e.slots,emit:e.emit,expose:t}}function vs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Fr(Pt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)}}))}function Ol(e){return F(e)&&e.displayName||e.name}function Rl(e){return F(e)&&"__vccOpts"in e}const D=(e,t)=>Oi(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 Ul="3.2.33",Fl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,Gs=st&&st.createElement("template"),Nl={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(Fl,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,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Gs.innerHTML=s?`${e}`:e;const l=Gs.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Hl(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 Bl(e,t,n){const s=e.style,r=he(n);if(n&&!r){for(const o in n)Zn(s,o,n[o]);if(t&&!he(t))for(const o in t)n[o]==null&&Zn(s,o,"")}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=o)}}const er=/\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=Dl(e,t);er.test(n)?e.setProperty(kt(s),n.replace(er,""),"important"):e[s]=n}}const tr=["Webkit","Moz","ms"],Nn={};function Dl(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=vn(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 Wl=Promise.resolve(),zl=()=>{Qn=0},Vl=()=>Qn||(Wl.then(zl),Qn=go());function Jl(e,t,n,s){e.addEventListener(t,n,s)}function Yl(e,t,n,s){e.removeEventListener(t,n,s)}function Xl(e,t,n,s,r=null){const o=e._vei||(e._vei={}),i=o[t];if(s&&i)i.value=s;else{const[l,c]=Zl(t);if(s){const f=o[t]=Ql(s,r);Jl(e,l,f,c)}else i&&(Yl(e,l,i,c),o[t]=void 0)}}const sr=/(?:Once|Passive|Capture)$/;function Zl(e){let t;if(sr.test(e)){t={};let n;for(;n=e.match(sr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[kt(e.slice(2)),t]}function Ql(e,t){const n=s=>{const r=s.timeStamp||go();(Kl||r>=n.attached-1)&&Oe(Gl(s,n.value),t,5,[s])};return n.value=e,n.attached=Vl(),n}function Gl(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 rr=/^on[a-z]/,ec=(e,t,n,s,r=!1,o,i,l,c)=>{t==="class"?Hl(e,s,r):t==="style"?Bl(e,n,s):Wt(t)?ns(t)||Xl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):tc(e,t,s,r))?ql(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),jl(e,t,s,r))};function tc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&rr.test(t)&&F(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||rr.test(t)&&he(n)?!1:t in e}const nc=xe({patchProp:ec},Nl);let Hn,or=!1;function sc(){return Hn=or?Hn:ml(nc),or=!0,Hn}const rc=(...e)=>{const t=sc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=oc(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function oc(e){return he(e)?document.querySelector(e):e}var ic='{"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 mo=/^https?:/i,Ie=typeof window!="undefined";function lc(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 ir(e,t){const n=lc(t,Object.keys(e));return n?e[n]:void 0}function cc(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 ac(e,t){t=uc(e,t);const n=ir(e.locales||{},t),s=ir(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:cc(e)})}function uc(e,t){if(!Ie)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const bo=Symbol(),Vt=Li(fc(ic));function fc(e){return JSON.parse(e)}function dc(e){const t=D(()=>ac(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(o=>n[o].lang===s);return yt(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(bo);if(!e)throw new Error("vitepress data not properly injected in app");return e}function hc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function yt(e){return mo.test(e)?e:hc(Vt.value.base,e)}function vo(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 xo=Symbol(),lr="http://a.com",yo={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},pc=()=>({path:"/",component:null,data:yo});function _c(e,t){const n=yn(pc());function s(i=Ie?location.href:"/"){const l=new URL(i,lr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",i=l.pathname+l.search+l.hash),Ie&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",i)),o(i)}let r=null;async function o(i,l=0,c=!1){const f=new URL(i,lr),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:L}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=Pt(y),n.data=Pt(JSON.parse(L)),Ie&&Br(()=>{if(f.hash&&!l){let M=null;try{M=document.querySelector(decodeURIComponent(f.hash))}catch(V){console.warn(V)}if(M){cr(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 o(i,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?Pt(t):null,n.data=yo)}}return Ie&&(window.addEventListener("click",i=>{const l=i.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:g,hash:y,target:L}=l,M=window.location,V=g.match(/\.\w+$/);!i.ctrlKey&&!i.shiftKey&&!i.altKey&&!i.metaKey&&L!=="_blank"&&f===M.protocol&&h===M.hostname&&!(V&&V[0]!==".html")&&(i.preventDefault(),g===M.pathname?y&&y!==M.hash&&(history.pushState(null,"",y),window.dispatchEvent(new Event("hashchange")),cr(l,y,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",i=>{o(location.href,i.state&&i.state.scrollPosition||0)}),window.addEventListener("hashchange",i=>{i.preventDefault()})),{route:n,go:s}}function gc(){const e=Ot(xo);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return gc().route}function cr(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 o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-r+o;!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})}}function mc(e,t){let n=[],s=!0;const r=o=>{if(s){s=!1;return}const i=[],l=Math.min(n.length,o.length);for(let c=0;cdocument.head.removeChild(c)),o.slice(l).forEach(c=>{const f=ar(c);document.head.appendChild(f),i.push(f)}),n=i};Yr(()=>{const o=e.data,i=t.value,l=o&&o.title,c=o&&o.description,f=o&&o.frontmatter.head;document.title=(l?l+" | ":"")+i.title,document.querySelector("meta[name=description]").setAttribute("content",c||i.description),r([...f?vc(f):[]])})}function ar([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 bc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function vc(e){return e.filter(t=>!bc(t))}const xc=ie({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 yc=/#.*$/,kc=/(index)?\.(md|html)$/,pn=/\/$/,wc=/^[a-z]+:/i;function xs(e){return Array.isArray(e)}function ys(e){return wc.test(e)}function $c(e,t){if(t===void 0)return!1;const n=ur(`/${e.data.relativePath}`),s=ur(t);return n===s}function ur(e){return decodeURI(e).replace(yc,"").replace(kc,"")}function Cc(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 ko(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function Ec(e){return e===!1||e==="auto"||xs(e)}function Tc(e){return e.children!==void 0}function Lc(e){return xs(e)?e.length===0:!e}function ks(e,t){if(Ec(e))return e;t=Gn(t);for(const n in e)if(t.startsWith(Gn(n)))return e[n];return"auto"}function wo(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:ko(n.link)}),Tc(n)&&(t=[...t,...wo(n.children)]),t),[])}function $o(e){const t=et(),n=ys(e.value.link);return{props:D(()=>{const r=fr(`/${t.data.relativePath}`);let o=!1;if(e.value.activeMatch)o=new RegExp(e.value.activeMatch).test(r);else{const i=fr(e.value.link);o=i==="/"?i===r:r.startsWith(i)}return{class:{active:o,isExternal:n},href:n?e.value.link:yt(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 fr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const Ac={},Sc={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"},Pc=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),Ic=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),Mc=[Pc,Ic];function Oc(e,t){return T(),R("svg",Sc,Mc)}var ws=ce(Ac,[["render",Oc]]);const Rc={class:"nav-link"},Uc=ie({props:{item:null},setup(e){const n=Nr(e),{props:s,isExternal:r}=$o(n.item);return(o,i)=>(T(),R("div",Rc,[U("a",bs({class:"item"},$(s)),[zt(ve(e.item.text)+" ",1),$(r)?(T(),pe(ws,{key:0})):J("",!0)],16)]))}});var _n=ce(Uc,[["__scopeId","data-v-b8818f8c"]]);const Fc={key:0,class:"home-hero"},Nc={key:0,class:"figure"},Hc=["src","alt"],Bc={key:1,id:"main-title",class:"title"},Dc={key:2,class:"tagline"},jc=ie({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:i,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return i||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),o=D(()=>n.value.tagline||t.value.description);return(i,l)=>$(s)?(T(),R("header",Fc,[$(n).heroImage?(T(),R("figure",Nc,[U("img",{class:"image",src:$(yt)($(n).heroImage),alt:$(n).heroAlt},null,8,Hc)])):J("",!0),$(r)?(T(),R("h1",Bc,ve($(r)),1)):J("",!0),$(o)?(T(),R("p",Dc,ve($(o)),1)):J("",!0),$(n).actionLink&&$(n).actionText?(T(),pe(_n,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):J("",!0),$(n).altActionLink&&$(n).altActionText?(T(),pe(_n,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):J("",!0)])):J("",!0)}});var qc=ce(jc,[["__scopeId","data-v-370f18c0"]]);const Kc={key:0,class:"home-features"},Wc={class:"wrapper"},zc={class:"container"},Vc={class:"features"},Jc={key:0,class:"title"},Yc={key:1,class:"details"},Xc=ie({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,o)=>$(n)?(T(),R("div",Kc,[U("div",Wc,[U("div",zc,[U("div",Vc,[(T(!0),R(fe,null,An($(s),(i,l)=>(T(),R("section",{key:l,class:"feature"},[i.title?(T(),R("h2",Jc,ve(i.title),1)):J("",!0),i.details?(T(),R("p",Yc,ve(i.details),1)):J("",!0)]))),128))])])])])):J("",!0)}});var Zc=ce(Xc,[["__scopeId","data-v-e39c13e0"]]);const Qc={key:0,class:"footer"},Gc={class:"container"},ea={class:"text"},ta=ie({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(T(),R("footer",Qc,[U("div",Gc,[U("p",ea,ve($(t).footer),1)])])):J("",!0)}});var na=ce(ta,[["__scopeId","data-v-30918238"]]);const sa={class:"home","aria-labelledby":"main-title"},ra={class:"home-content"},oa=ie({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",sa,[N(qc),ae(t.$slots,"hero",{},void 0,!0),N(Zc),U("div",ra,[N(s)]),ae(t.$slots,"features",{},void 0,!0),N(na),ae(t.$slots,"footer",{},void 0,!0)])}}});var ia=ce(oa,[["__scopeId","data-v-10122c92"]]);const la=["href","aria-label"],ca=["src"],aa=ie({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,o)=>(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:$(yt)($(n).logo),alt:"Logo"},null,8,ca)):J("",!0),zt(" "+ve($(t).title),1)],8,la))}});var ua=ce(aa,[["__scopeId","data-v-cc01ef16"]]);function fa(){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 i=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${i}`}));return{text:n.value.selectText||"Languages",items:l}})}const da=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function ha(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=pa(n);return{text:_a(s,t.repoLabel),link:s}})}function pa(e){return mo.test(e)?e:`https://github.com/${e}`}function _a(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=da.find(([r,o])=>o.test(n[0]));return s&&s[0]?s[0]:"Source"}const ga=e=>(zr("data-v-bbc27490"),e=e(),Vr(),e),ma={class:"nav-dropdown-link-item"},ba=ga(()=>U("span",{class:"arrow"},null,-1)),va={class:"text"},xa={class:"icon"},ya=ie({props:{item:null},setup(e){const n=Nr(e),{props:s,isExternal:r}=$o(n.item);return(o,i)=>(T(),R("div",ma,[U("a",bs({class:"item"},$(s)),[ba,U("span",va,ve(e.item.text),1),U("span",xa,[$(r)?(T(),pe(ws,{key:0})):J("",!0)])],16)]))}});var ka=ce(ya,[["__scopeId","data-v-bbc27490"]]);const wa=["aria-label"],$a={class:"button-text"},Ca={class:"dialog"},Ea=ie({props:{item:null},setup(e){const t=et(),n=kn(!1);ot(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,o)=>(T(),R("div",{class:ct(["nav-dropdown-link",{open:n.value}])},[U("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[U("span",$a,ve(e.item.text),1),U("span",{class:ct(["button-arrow",n.value?"down":"right"])},null,2)],8,wa),U("ul",Ca,[(T(!0),R(fe,null,An(e.item.items,i=>(T(),R("li",{key:i.text,class:"dialog-item"},[N(ka,{item:i},null,8,["item"])]))),128))])],2))}});var dr=ce(Ea,[["__scopeId","data-v-56bf3a3f"]]);const Ta={key:0,class:"nav-links"},La={key:1,class:"item"},Aa={key:2,class:"item"},Sa=ie({setup(e){const{theme:t}=me(),n=fa(),s=ha(),r=D(()=>t.value.nav||s.value||n.value);return(o,i)=>$(r)?(T(),R("nav",Ta,[$(t).nav?(T(!0),R(fe,{key:0},An($(t).nav,l=>(T(),R("div",{key:l.text,class:"item"},[l.items?(T(),pe(dr,{key:0,item:l},null,8,["item"])):(T(),pe(_n,{key:1,item:l},null,8,["item"]))]))),128)):J("",!0),$(n)?(T(),R("div",La,[N(dr,{item:$(n)},null,8,["item"])])):J("",!0),$(s)?(T(),R("div",Aa,[N(_n,{item:$(s)},null,8,["item"])])):J("",!0)])):J("",!0)}});var Co=ce(Sa,[["__scopeId","data-v-eab3edfe"]]);const Pa={emits:["toggle"]},Ia=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),Ma=[Ia];function Oa(e,t,n,s,r,o){return T(),R("div",{class:"sidebar-button",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},Ma)}var Ra=ce(Pa,[["render",Oa]]);const Ua=e=>(zr("data-v-675d8756"),e=e(),Vr(),e),Fa={class:"nav-bar"},Na=Ua(()=>U("div",{class:"flex-grow"},null,-1)),Ha={class:"nav"},Ba=ie({emits:["toggle"],setup(e){return(t,n)=>(T(),R("header",Fa,[N(Ra,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),N(ua),Na,U("div",Ha,[N(Co)]),ae(t.$slots,"search",{},void 0,!0)]))}});var Da=ce(Ba,[["__scopeId","data-v-675d8756"]]);function ja(){let e=null,t=null;const n=Va(s,300);function s(){const i=qa(),l=Ka(i);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function o(i){i&&i.classList.remove("active")}ut(()=>{s(),window.addEventListener("scroll",n)}),Gr(()=>{r(decodeURIComponent(location.hash))}),Tn(()=>{window.removeEventListener("scroll",n)})}function qa(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Ka(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Wa(){return document.querySelector(".nav-bar").offsetHeight}function hr(e){const t=Wa();return e.parentElement.offsetTop-t-15}function za(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 Ja(){const e=et(),{site:t}=me();return ja(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return pr(n,r);const o=ks(t.value.themeConfig.sidebar,e.data.relativePath);return o===!1?[]:o==="auto"?pr(n,r):o})}function pr(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:o,slug:i})=>{if(r-1>t)return;const l={text:o,link:`#${i}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const Eo=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,o=s.value.sidebarDepth||1/0,i=t.data.headers,l=e.item.text,c=Ya(n.value.base,e.item.link),f=e.item.children,h=$c(t,e.item.link),g=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(Eo,{item:r,depth:s}))):e&&n?To(!1,Xa(n),void 0,s):null}function Xa(e){return Lo(Za(e))}function Za(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 Lo(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?Lo(t.children):void 0}))}const Qa={key:0,class:"sidebar-links"},Ga=ie({setup(e){const t=Ja();return(n,s)=>$(t).length>0?(T(),R("ul",Qa,[(T(!0),R(fe,null,An($(t),r=>(T(),pe($(Eo),{item:r},null,8,["item"]))),256))])):J("",!0)}});const eu=ie({props:{open:{type:Boolean}},setup(e){return(t,n)=>(T(),R("aside",{class:ct(["sidebar",{open:e.open}])},[N(Co,{class:"nav"}),ae(t.$slots,"sidebar-top",{},void 0,!0),N(Ga),ae(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var tu=ce(eu,[["__scopeId","data-v-83e92a68"]]);const nu=/bitbucket.org/;function su(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:o,docsDir:i="",docsBranch:l="master",docsRepo:c=o,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:g}=e.value;return!h||!g||!o?null:ru(o,c,i,l,g)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function ru(e,t,n,s,r){return nu.test(e)?iu(e,t,n,s,r):ou(e,t,n,s,r)}function ou(e,t,n,s,r){return(ys(t)?t:`https://github.com/${t}`).replace(pn,"")+`/edit/${s}/`+(n?n.replace(pn,"")+"/":"")+r}function iu(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 lu={class:"edit-link"},cu=["href"],au=ie({setup(e){const{url:t,text:n}=su();return(s,r)=>(T(),R("div",lu,[$(t)?(T(),R("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[zt(ve($(n))+" ",1),N(ws,{class:"icon"})],8,cu)):J("",!0)]))}});var uu=ce(au,[["__scopeId","data-v-1ed99556"]]);const fu={key:0,class:"last-updated"},du={class:"prefix"},hu={class:"datetime"},pu=ie({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const i=t.value.lastUpdated;return i!==void 0&&i!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const i=t.value.lastUpdated;return i===!0?"Last Updated":i}),o=kn("");return ut(()=>{Yr(()=>{o.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(i,l)=>$(s)?(T(),R("p",fu,[U("span",du,ve($(r))+":",1),U("span",hu,ve(o.value),1)])):J("",!0)}});var _u=ce(pu,[["__scopeId","data-v-abce3432"]]);const gu={class:"page-footer"},mu={class:"edit"},bu={class:"updated"},vu=ie({setup(e){const{page:t}=me();return(n,s)=>(T(),R("footer",gu,[U("div",mu,[N(uu)]),U("div",bu,[$(t).lastUpdated?(T(),pe(_u,{key:0})):J("",!0)])]))}});var xu=ce(vu,[["__scopeId","data-v-07c132fc"]]);function yu(){const{page:e,theme:t}=me(),n=D(()=>ko(Gn(e.value.relativePath))),s=D(()=>{const c=ks(t.value.sidebar,n.value);return xs(c)?wo(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),o=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(()=>!!o.value||!!i.value);return{next:o,prev:i,hasLinks:l}}const ku={},wu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},$u=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),Cu=[$u];function Eu(e,t){return T(),R("svg",wu,Cu)}var Tu=ce(ku,[["render",Eu]]);const Lu={},Au={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Su=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),Pu=[Su];function Iu(e,t){return T(),R("svg",Au,Pu)}var Mu=ce(Lu,[["render",Iu]]);const Ou={key:0,class:"next-and-prev-link"},Ru={class:"container"},Uu={class:"prev"},Fu=["href"],Nu={class:"text"},Hu={class:"next"},Bu=["href"],Du={class:"text"},ju=ie({setup(e){const{hasLinks:t,prev:n,next:s}=yu();return(r,o)=>$(t)?(T(),R("div",Ou,[U("div",Ru,[U("div",Uu,[$(n)?(T(),R("a",{key:0,class:"link",href:$(yt)($(n).link)},[N(Tu,{class:"icon icon-prev"}),U("span",Nu,ve($(n).text),1)],8,Fu)):J("",!0)]),U("div",Hu,[$(s)?(T(),R("a",{key:0,class:"link",href:$(yt)($(s).link)},[U("span",Du,ve($(s).text),1),N(Mu,{class:"icon icon-next"})],8,Bu)):J("",!0)])])])):J("",!0)}});var qu=ce(ju,[["__scopeId","data-v-38ede35f"]]);const Ku={class:"page"},Wu={class:"container"},zu=ie({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",Ku,[U("div",Wu,[ae(t.$slots,"top",{},void 0,!0),N(s,{class:"content"}),N(xu),N(qu),ae(t.$slots,"bottom",{},void 0,!0)])])}}});var Vu=ce(zu,[["__scopeId","data-v-7eddb2c4"]]);const Ju={key:0,id:"ads-container"},Yu=ie({setup(e){const t=()=>null,n=t,s=t,r=t,o=et(),{site:i,page:l,theme:c,frontmatter:f}=me(),h=D(()=>!!f.value.customLayout),g=D(()=>!!f.value.home),y=D(()=>Object.keys(i.value.langs).length>1),L=D(()=>{const P=c.value;return f.value.navbar===!1||P.navbar===!1?!1:i.value.title||P.logo||P.repo||P.nav}),M=kn(!1),V=D(()=>f.value.home||f.value.sidebar===!1?!1:!Lc(ks(c.value.sidebar,o.data.relativePath))),m=P=>{M.value=typeof P=="boolean"?P:!M.value},k=m.bind(null,!1);ot(o,k);const K=D(()=>[{"no-navbar":!L.value,"sidebar-open":M.value,"no-sidebar":!V.value}]);return(P,H)=>{const X=un("Content"),Z=un("Debug");return T(),R(fe,null,[U("div",{class:ct(["theme",$(K)])},[$(L)?(T(),pe(Da,{key:0,onToggle:m},{search:De(()=>[ae(P.$slots,"navbar-search",{},()=>[$(c).algolia?(T(),pe($(r),{key:0,options:$(c).algolia,multilang:$(y)},null,8,["options","multilang"])):J("",!0)])]),_:3})):J("",!0),N(tu,{open:M.value},{"sidebar-top":De(()=>[ae(P.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ae(P.$slots,"sidebar-bottom")]),_:3},8,["open"]),U("div",{class:"sidebar-mask",onClick:H[0]||(H[0]=B=>m(!1))}),$(h)?(T(),pe(X,{key:1})):$(g)?ae(P.$slots,"home",{key:2},()=>[N(ia,null,{hero:De(()=>[ae(P.$slots,"home-hero")]),features:De(()=>[ae(P.$slots,"home-features")]),footer:De(()=>[ae(P.$slots,"home-footer")]),_:3})]):(T(),pe(Vu,{key:3},{top:De(()=>[ae(P.$slots,"page-top-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.carbon?(T(),R("div",Ju,[(T(),pe($(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(),pe($(s),{key:"custom"+$(l).relativePath,code:$(c).carbonAds.custom,placement:$(c).carbonAds.placement},null,8,["code","placement"])):J("",!0)])]),_:3}))],2),N(Z)],64)}}}),Xu={class:"theme"},Zu=U("h1",null,"404",-1),Qu=["href"],Gu=ie({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,o)=>(T(),R("div",Xu,[Zu,U("blockquote",null,ve(s()),1),U("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,Qu)]))}}),Ao={Layout:Yu,NotFound:Gu},ef={setup(e){const{Layout:t}=Ao;return ut(()=>{window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(console.log("setting as dark"),document.body.classList.add("dark")),setTimeout(()=>{let n=document.body.classList.contains("dark")?"\u{1F506}":"\u{1F319}",s=document.getElementsByClassName("nav-links");if(s){let r=s[0];r&&r.insertAdjacentHTML("beforeend",`
${n}
`),r=s[1],r&&r.insertAdjacentHTML("beforeend",`
${n}
`)}},100)}),(n,s)=>(T(),pe($(t)))}};var gn=Is(Ps({},Ao),{Layout:ef});const Bn=new Set,So=()=>document.createElement("link"),tf=e=>{const t=So();t.rel="prefetch",t.href=e,document.head.appendChild(t)},nf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const sf=Ie&&(tn=So())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?tf:nf;function rf(){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(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Bn.has(c)){Bn.add(c);const f=vo(c);sf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{target:i,hostname:l,pathname:c}=o,f=c.match(/\.\w+$/);f&&f[0]!==".html"||i!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(o):Bn.add(c))})})};ut(s);const r=et();ot(()=>r.path,s),Tn(()=>{n&&n.disconnect()})}const of=ie({setup(e,{slots:t}){const n=kn(!1);return ut(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),lf=gn.NotFound||(()=>"404 Not Found"),cf={name:"VitePressApp",setup(){const{site:e}=me();return ut(()=>{ot(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),rf(),()=>at(gn.Layout)}};function af(){const e=ff(),t=uf();t.provide(xo,e);const n=dc(e.route);return t.provide(bo,n),t.component("Content",xc),t.component("ClientOnly",of),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 uf(){return rc(cf)}function ff(){let e=Ie,t;return _c(n=>{let s=vo(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Ie?(e=!1,Bo(()=>import(s),[])):require(s)},lf)}if(Ie){const{app:e,router:t,data:n}=af();t.go().then(()=>{mc(t.route,n.site),e.mount("#app")})}export{ce as _,hf as a,U as b,R as c,af as createApp,zt as d,T as o}; +var Mo=Object.defineProperty,Oo=Object.defineProperties;var Ro=Object.getOwnPropertyDescriptors;var Ps=Object.getOwnPropertySymbols;var Uo=Object.prototype.hasOwnProperty,Fo=Object.prototype.propertyIsEnumerable;var As=(e,t,n)=>t in e?Mo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ss=(e,t)=>{for(var n in t||(t={}))Uo.call(t,n)&&As(e,n,t[n]);if(Ps)for(var n of Ps(t))Fo.call(t,n)&&As(e,n,t[n]);return e},Is=(e,t)=>Oo(e,Ro(t));const No="modulepreload",Ms={},Ho="/",Bo=function(t,n){return!n||n.length===0?t():Promise.all(n.map(s=>{if(s=`${Ho}${s}`,s in Ms)return;Ms[s]=!0;const r=s.endsWith(".css"),o=r?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${o}`))return;const i=document.createElement("link");if(i.rel=r?"stylesheet":No,r||(i.as="script",i.crossOrigin=""),i.href=s,document.head.appendChild(i),r)return new Promise((l,c)=>{i.addEventListener("load",l),i.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 Do="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",jo=es(Do);function _r(e){return!!e||e===""}function ts(e){if(O(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ko);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===vr||!F(e.toString))?JSON.stringify(e,gr,2):String(e),gr=(e,t)=>t&&t.__v_isRef?gr(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:mr(t)?{[`Set(${t.size})`]:[...t.values()]}:ue(t)&&!O(t)&&!xr(t)?String(t):t,Q={},mt=[],Me=()=>{},zo=()=>!1,Vo=/^on[^a-z]/,Wt=e=>Vo.test(e),ns=e=>e.startsWith("onUpdate:"),xe=Object.assign,ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jo=Object.prototype.hasOwnProperty,q=(e,t)=>Jo.call(e,t),O=Array.isArray,bt=e=>mn(e)==="[object Map]",mr=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",br=e=>ue(e)&&F(e.then)&&F(e.catch),vr=Object.prototype.toString,mn=e=>vr.call(e),Yo=e=>mn(e).slice(8,-1),xr=e=>mn(e)==="[object Object]",os=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),bn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xo=/-(\w)/g,Ne=bn(e=>e.replace(Xo,(t,n)=>n?n.toUpperCase():"")),Zo=/\B([A-Z])/g,kt=bn(e=>e.replace(Zo,"-$1").toLowerCase()),vn=bn(e=>e.charAt(0).toUpperCase()+e.slice(1)),On=bn(e=>e?`on${vn(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})},Qo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Os;const Go=()=>Os||(Os=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Ue;class ei{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},yr=e=>(e.w&Ge)>0,kr=e=>(e.n&Ge)>0,ni=({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(i.get(n)),t){case"add":O(e)?os(n)&&l.push(i.get("length")):(l.push(i.get(rt)),bt(e)&&l.push(i.get(qn)));break;case"delete":O(e)||(l.push(i.get(rt)),bt(e)&&l.push(i.get(qn)));break;case"set":bt(e)&&l.push(i.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(is(c))}}function Kn(e,t){for(const n of O(e)?e:[...e])(n!==Se||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const ri=es("__proto__,__v_isRef,__isVue"),Cr=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(rs)),oi=cs(),ii=cs(!1,!0),li=cs(!0),Us=ci();function ci(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let o=0,i=this.length;o{e[t]=function(...n){wt();const s=z(this)[t].apply(this,n);return $t(),s}}),e}function cs(e=!1,t=!1){return function(s,r,o){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&o===(e?t?$i:Ar:t?Pr:Lr).get(s))return s;const i=O(s);if(!e&&i&&q(Us,r))return Reflect.get(Us,r,o);const l=Reflect.get(s,r,o);return(rs(r)?Cr.has(r):ri(r))||(e||Te(s,"get",r),t)?l:de(l)?!i||!os(r)?l.value:l:ue(l)?e?Sr(l):yn(l):l}}const ai=Er(),ui=Er(!0);function Er(e=!1){return function(n,s,r,o){let i=n[s];if(Nt(i)&&de(i)&&!de(r))return!1;if(!e&&!Nt(r)&&(Ir(r)||(r=z(r),i=z(i)),!O(n)&&de(i)&&!de(r)))return i.value=r,!0;const l=O(n)&&os(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),o=z(t);t!==o&&!n&&Te(r,"get",t),!n&&Te(r,"get",o);const{has:i}=xn(r),l=s?as:n?ds:Ht;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));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 Fs(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 Ns(e,t){t=z(t);const n=z(this),{has:s,get:r}=xn(n);let o=s.call(n,e);o||(e=z(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?Ft(t,i)&&qe(n,"set",e,t):qe(n,"add",e,t),this}function Hs(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 o=t.delete(e);return r&&qe(t,"delete",e,void 0),o}function Bs(){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 o=this,i=o.__v_raw,l=z(i),c=t?as:e?ds:Ht;return!e&&Te(l,"iterate",rt),i.forEach((f,h)=>s.call(r,c(f),c(h),o))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,o=z(r),i=bt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=r[e](...s),h=n?as:t?ds:Ht;return!t&&Te(o,"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 gi(){const e={get(o){return Yt(this,o)},get size(){return Zt(this)},has:Xt,add:Fs,set:Ns,delete:Hs,clear:Bs,forEach:Qt(!1,!1)},t={get(o){return Yt(this,o,!1,!0)},get size(){return Zt(this)},has:Xt,add:Fs,set:Ns,delete:Hs,clear:Bs,forEach:Qt(!1,!0)},n={get(o){return Yt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Xt.call(this,o,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!1)},s={get(o){return Yt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Xt.call(this,o,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Gt(o,!1,!1),n[o]=Gt(o,!0,!1),t[o]=Gt(o,!1,!0),s[o]=Gt(o,!0,!0)}),[e,n,t,s]}const[mi,bi,vi,xi]=gi();function us(e,t){const n=t?e?xi:vi:e?bi:mi;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(q(n,r)&&r in s?n:s,r,o)}const yi={get:us(!1,!1)},ki={get:us(!1,!0)},wi={get:us(!0,!1)},Lr=new WeakMap,Pr=new WeakMap,Ar=new WeakMap,$i=new WeakMap;function Ci(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ei(e){return e.__v_skip||!Object.isExtensible(e)?0:Ci(Yo(e))}function yn(e){return Nt(e)?e:fs(e,!1,Tr,yi,Lr)}function Ti(e){return fs(e,!1,_i,ki,Pr)}function Sr(e){return fs(e,!0,pi,wi,Ar)}function fs(e,t,n,s,r){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=Ei(e);if(i===0)return e;const l=new Proxy(e,i===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 Ir(e){return!!(e&&e.__v_isShallow)}function Mr(e){return vt(e)||Nt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function St(e){return sn(e,"__v_skip",!0),e}const Ht=e=>ue(e)?yn(e):e,ds=e=>ue(e)?Sr(e):e;function Or(e){Ze&&Se&&(e=z(e),$r(e.dep||(e.dep=is())))}function Rr(e,t){e=z(e),e.dep&&Kn(e.dep)}function de(e){return!!(e&&e.__v_isRef===!0)}function kn(e){return Ur(e,!1)}function Li(e){return Ur(e,!0)}function Ur(e,t){return de(e)?e:new Pi(e,t)}class Pi{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 Or(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),Rr(this))}}function $(e){return de(e)?e.value:e}const Ai={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 Fr(e){return vt(e)?e:new Proxy(e,Ai)}function Nr(e){const t=O(e)?new Array(e.length):{};for(const n in e)t[n]=Ii(e,n);return t}class Si{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 Ii(e,t,n){const s=e[t];return de(s)?s:new Si(e,t,n)}class Mi{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,Rr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return Or(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Oi(e,t,n=!1){let s,r;const o=F(e);return o?(s=e,r=Me):(s=e.get,r=e.set),new Mi(s,r,o||!r,n)}function Qe(e,t,n,s){let r;try{r=s?e(...s):e()}catch(o){wn(o,t,n)}return r}function Oe(e,t,n,s){if(F(e)){const o=Qe(e,t,n,s);return o&&br(o)&&o.catch(i=>{wn(i,t,n)}),o}const r=[];for(let o=0;o>>1;Bt(Ee[s])je&&Ee.splice(t,1)}function qr(e,t,n,s){O(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?s+1:s))&&n.push(e),jr()}function Ni(e){qr(e,Pt,It,pt)}function Hi(e){qr(e,Ye,Mt,_t)}function ps(e,t=null){if(It.length){for(zn=t,Pt=[...new Set(It)],It.length=0,pt=0;ptBt(n)-Bt(s)),_t=0;_te.id==null?1/0:e.id;function Kr(e){Wn=!1,rn=!0,ps(e),Ee.sort((n,s)=>Bt(n)-Bt(s));const t=Me;try{for(je=0;jeL.trim()):g&&(r=n.map(Qo))}let l,c=s[l=On(t)]||s[l=On(Ne(t))];!c&&o&&(c=s[l=On(kt(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 Wr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!F(e)){const c=f=>{const h=Wr(f,t,!0);h&&(l=!0,xe(i,h))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(s.set(e,null),null):(O(o)?o.forEach(c=>i[c]=null):xe(i,o),s.set(e,i),i)}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,kt(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 zr(e){Cn=e}function Vr(){Cn=null}function De(e,t=$e,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Xs(-1);const o=ln(t),i=e(...r);return ln(o),s._d&&Xs(1),i};return s._n=!0,s._c=!0,s._d=!0,s}function Un(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:o,propsOptions:[i],slots:l,attrs:c,emit:f,render:h,renderCache:g,data:y,setupState:L,ctx:M,inheritAttrs:V}=e;let m,k;const K=ln(e);try{if(n.shapeFlag&4){const H=r||s;m=Ae(h.call(H,H,g,o,L,y,M)),k=c}else{const H=t;m=Ae(H.length>1?H(o,{attrs:c,slots:l,emit:f}):H(o,null)),k=t.props?c:Di(c)}}catch(H){Ut.length=0,wn(H,e,1),m=N(Ke)}let S=m;if(k&&V!==!1){const H=Object.keys(k),{shapeFlag:X}=S;H.length&&X&7&&(i&&H.some(ns)&&(k=ji(k,i)),S=qt(S,k))}return n.dirs&&(S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),m=S,ln(K),m}const Di=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wt(n))&&((t||(t={}))[n]=e[n]);return t},ji=(e,t)=>{const n={};for(const s in e)(!ns(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function qi(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Ds(s,i,f):!!i;if(c&8){const h=t.dynamicProps;for(let g=0;ge.__isSuspense;function Jr(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):Hi(e)}function zi(e,t){if(_e){let n=_e.provides;const s=_e.parent&&_e.parent.provides;s===n&&(n=_e.provides=Object.create(s)),n[e]=t}}function Ot(e,t,n=!1){const s=_e||$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 Yr(e,t){return _s(e,null,t)}const js={};function ot(e,t,n){return _s(e,t,n)}function _s(e,t,{immediate:n,deep:s,flush:r,onTrack:o,onTrigger:i}=Q){const l=_e;let c,f=!1,h=!1;if(de(e)?(c=()=>e.value,f=Ir(e)):vt(e)?(c=()=>e,s=!0):O(e)?(h=!0,f=e.some(vt),c=()=>e.map(k=>{if(de(k))return k.value;if(vt(k))return gt(k);if(F(k))return Qe(k,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 k=c;c=()=>gt(k())}let g,y=k=>{g=m.onStop=()=>{Qe(k,l,4)}};if(Kt)return y=Me,t?n&&Oe(t,l,3,[c(),h?[]:void 0,y]):c(),Me;let L=h?[]:js;const M=()=>{if(!!m.active)if(t){const k=m.run();(s||f||(h?k.some((K,S)=>Ft(K,L[S])):Ft(k,L)))&&(g&&g(),Oe(t,l,3,[k,L===js?void 0:L,y]),L=k)}else m.run()};M.allowRecurse=!!t;let V;r==="sync"?V=M:r==="post"?V=()=>we(M,l&&l.suspense):V=()=>{!l||l.isMounted?Ni(M):M()};const m=new ls(c,V);return t?n?M():L=m.run():r==="post"?we(m.run.bind(m),l&&l.suspense):m.run(),()=>{m.stop(),l&&l.scope&&ss(l.scope.effects,m)}}function Vi(e,t,n){const s=this.proxy,r=he(e)?e.includes(".")?Xr(s,e):()=>s[e]:e.bind(s,s);let o;F(t)?o=t:(o=t.handler,n=t);const i=_e;xt(this);const l=_s(r,o.bind(s),n);return i?xt(i):lt(),l}function Xr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{gt(n,t)});else if(xr(e))for(const n in e)gt(e[n],t);return e}function ie(e){return F(e)?{setup:e,name:e.name}:e}const Dt=e=>!!e.type.__asyncLoader,Zr=e=>e.type.__isKeepAlive;function Ji(e,t){Qr(e,"a",t)}function Yi(e,t){Qr(e,"da",t)}function Qr(e,t,n=_e){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;)Zr(r.parent.vnode)&&Xi(s,t,n,r),r=r.parent}}function Xi(e,t,n,s){const r=En(t,e,s,!0);Tn(()=>{ss(s[t],r)},n)}function En(e,t,n=_e,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;wt(),xt(n);const l=Oe(t,n,e,i);return lt(),$t(),l});return s?r.unshift(o):r.push(o),o}}const We=e=>(t,n=_e)=>(!Kt||e==="sp")&&En(e,t,n),Zi=We("bm"),ut=We("m"),Qi=We("bu"),Gr=We("u"),Gi=We("bum"),Tn=We("um"),el=We("sp"),tl=We("rtg"),nl=We("rtc");function sl(e,t=_e){En("ec",e,t)}let Vn=!0;function rl(e){const t=to(e),n=e.proxy,s=e.ctx;Vn=!1,t.beforeCreate&&qs(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:f,created:h,beforeMount:g,mounted:y,beforeUpdate:L,updated:M,activated:V,deactivated:m,beforeDestroy:k,beforeUnmount:K,destroyed:S,unmounted:H,render:X,renderTracked:Z,renderTriggered:B,errorCaptured:le,serverPrefetch:ne,expose:re,inheritAttrs:ge,components:j,directives:oe,filters:ye}=t;if(f&&ol(f,s,null,e.appContext.config.unwrapInjectedRef),i)for(const se in i){const G=i[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,o)for(const se in o){const G=o[se],He=F(G)?G.bind(n,n):F(G.get)?G.get.bind(n,n):Me,Sn=!F(G)&&F(G.set)?G.set.bind(n):Me,Ct=D({get:He,set:Sn});Object.defineProperty(s,se,{enumerable:!0,configurable:!0,get:()=>Ct.value,set:ft=>Ct.value=ft})}if(l)for(const se in l)eo(l[se],s,n,se);if(c){const se=F(c)?c.call(n):c;Reflect.ownKeys(se).forEach(G=>{zi(G,se[G])})}h&&qs(h,e,"c");function ke(se,G){O(G)?G.forEach(He=>se(He.bind(n))):G&&se(G.bind(n))}if(ke(Zi,g),ke(ut,y),ke(Qi,L),ke(Gr,M),ke(Ji,V),ke(Yi,m),ke(sl,le),ke(nl,Z),ke(tl,B),ke(Gi,K),ke(Tn,H),ke(el,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),ge!=null&&(e.inheritAttrs=ge),j&&(e.components=j),oe&&(e.directives=oe)}function ol(e,t,n=Me,s=!1){O(e)&&(e=Jn(e));for(const r in e){const o=e[r];let i;ue(o)?"default"in o?i=Ot(o.from||r,o.default,!0):i=Ot(o.from||r):i=Ot(o),de(i)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[r]=i}}function qs(e,t,n){Oe(O(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function eo(e,t,n,s){const r=s.includes(".")?Xr(n,s):()=>n[s];if(he(e)){const o=t[e];F(o)&&ot(r,o)}else if(F(e))ot(r,e.bind(n));else if(ue(e))if(O(e))e.forEach(o=>eo(o,t,n,s));else{const o=F(e.handler)?e.handler.bind(n):t[e.handler];F(o)&&ot(r,o,e)}}function to(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>cn(c,f,i,!0)),cn(c,t,i)),o.set(t,c),c}function cn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&cn(e,o,n,!0),r&&r.forEach(i=>cn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=il[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const il={data:Ks,props:nt,emits:nt,methods:nt,computed:nt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:nt,directives:nt,watch:cl,provide:Ks,inject:ll};function Ks(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 ll(e,t){return nt(Jn(e),Jn(t))}function Jn(e){if(O(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const h=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[y,L]=so(g,t,!0);xe(i,y),L&&l.push(...L)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!c)return s.set(e,mt),mt;if(O(o))for(let h=0;h-1,L[1]=V<0||M-1||q(L,"default"))&&l.push(g)}}}const f=[i,l];return s.set(e,f),f}function Ws(e){return e[0]!=="$"}function zs(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Vs(e,t){return zs(e)===zs(t)}function Js(e,t){return O(t)?t.findIndex(n=>Vs(n,e)):F(t)&&Vs(t,e)?0:-1}const ro=e=>e[0]==="_"||e==="$stable",gs=e=>O(e)?e.map(Ae):[Ae(e)],fl=(e,t,n)=>{const s=De((...r)=>gs(t(...r)),n);return s._c=!1,s},oo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ro(r))continue;const o=e[r];if(F(o))t[r]=fl(r,o,s);else if(o!=null){const i=gs(o);t[r]=()=>i}}},io=(e,t)=>{const n=gs(t);e.slots.default=()=>n},dl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),sn(t,"_",n)):oo(t,e.slots={})}else e.slots={},t&&io(e,t);sn(e.slots,Ln,1)},hl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Q;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(xe(r,t),!n&&l===1&&delete r._):(o=!t.$stable,oo(t,r)),i=t}else t&&(io(e,t),i={default:1});if(o)for(const l in r)!ro(l)&&!(l in i)&&delete r[l]};function Fe(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;ian(y,t&&(O(t)?t[L]:t),n,s,r));return}if(Dt(s)&&!r)return;const o=s.shapeFlag&4?vs(s.component)||s.component.proxy:s.el,i=r?null:o,{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,[i,h]);else{const y=he(c),L=de(c);if(y||L){const M=()=>{if(e.f){const V=y?h[c]:c.value;r?O(V)&&ss(V,o):O(V)?V.includes(o)||V.push(o):y?(h[c]=[o],q(g,c)&&(g[c]=h[c])):(c.value=[o],e.k&&(h[e.k]=c.value))}else y?(h[c]=i,q(g,c)&&(g[c]=i)):de(c)&&(c.value=i,e.k&&(h[e.k]=i))};i?(M.id=-1,we(M,n)):M()}}}let Je=!1;const en=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fn=e=>e.nodeType===8;function gl(e){const{mt:t,p:n,o:{patchProp:s,nextSibling:r,parentNode:o,remove:i,insert:l,createComment:c}}=e,f=(m,k)=>{if(!k.hasChildNodes()){n(null,m,k),on();return}Je=!1,h(k.firstChild,m,null,null,null),on(),Je&&console.error("Hydration completed but contains mismatches.")},h=(m,k,K,S,H,X=!1)=>{const Z=Fn(m)&&m.data==="[",B=()=>M(m,k,K,S,H,Z),{type:le,ref:ne,shapeFlag:re}=k,ge=m.nodeType;k.el=m;let j=null;switch(le){case jt:ge!==3?j=B():(m.data!==k.children&&(Je=!0,m.data=k.children),j=r(m));break;case Ke:ge!==8||Z?j=B():j=r(m);break;case Rt:if(ge!==1)j=B();else{j=m;const oe=!k.children.length;for(let ye=0;ye{X=X||!!k.dynamicChildren;const{type:Z,props:B,patchFlag:le,shapeFlag:ne,dirs:re}=k,ge=Z==="input"&&re||Z==="option";if(ge||le!==-1){if(re&&Fe(k,null,K,"created"),B)if(ge||!X||le&48)for(const oe in B)(ge&&oe.endsWith("value")||Wt(oe)&&!At(oe))&&s(m,oe,null,B[oe],!1,void 0,K);else B.onClick&&s(m,"onClick",null,B.onClick,!1,void 0,K);let j;if((j=B&&B.onVnodeBeforeMount)&&Le(j,K,k),re&&Fe(k,null,K,"beforeMount"),((j=B&&B.onVnodeMounted)||re)&&Jr(()=>{j&&Le(j,K,k),re&&Fe(k,null,K,"mounted")},S),ne&16&&!(B&&(B.innerHTML||B.textContent))){let oe=y(m.firstChild,k,m,K,S,H,X);for(;oe;){Je=!0;const ye=oe;oe=oe.nextSibling,i(ye)}}else ne&8&&m.textContent!==k.children&&(Je=!0,m.textContent=k.children)}return m.nextSibling},y=(m,k,K,S,H,X,Z)=>{Z=Z||!!k.dynamicChildren;const B=k.children,le=B.length;for(let ne=0;ne{const{slotScopeIds:Z}=k;Z&&(H=H?H.concat(Z):Z);const B=o(m),le=y(r(m),k,B,K,S,H,X);return le&&Fn(le)&&le.data==="]"?r(k.anchor=le):(Je=!0,l(k.anchor=c("]"),B,le),le)},M=(m,k,K,S,H,X)=>{if(Je=!0,k.el=null,X){const le=V(m);for(;;){const ne=r(m);if(ne&&ne!==le)i(ne);else break}}const Z=r(m),B=o(m);return i(m),n(null,k,B,Z,K,S,en(B),H),Z},V=m=>{let k=0;for(;m;)if(m=r(m),m&&Fn(m)&&(m.data==="["&&k++,m.data==="]")){if(k===0)return r(m);k--}return m};return[f,h]}const we=Jr;function ml(e){return bl(e,gl)}function bl(e,t){const n=Go();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:f,setElementText:h,parentNode:g,nextSibling:y,setScopeId:L=Me,cloneNode:M,insertStaticContent:V}=e,m=(a,u,d,_=null,p=null,x=null,C=!1,v=null,w=!!u.dynamicChildren)=>{if(a===u)return;a&&!Tt(a,u)&&(_=Jt(a),ze(a,p,x,!0),a=null),u.patchFlag===-2&&(w=!1,u.dynamicChildren=null);const{type:b,ref:P,shapeFlag:E}=u;switch(b){case jt:k(a,u,d,_);break;case Ke:K(a,u,d,_);break;case Rt:a==null&&S(u,d,_,C);break;case fe:oe(a,u,d,_,p,x,C,v,w);break;default:E&1?Z(a,u,d,_,p,x,C,v,w):E&6?ye(a,u,d,_,p,x,C,v,w):(E&64||E&128)&&b.process(a,u,d,_,p,x,C,v,w,dt)}P!=null&&p&&an(P,a&&a.ref,x,u||a,!u)},k=(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},S=(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,v,w)=>{C=C||u.type==="svg",a==null?B(u,d,_,p,x,C,v,w):re(a,u,p,x,C,v,w)},B=(a,u,d,_,p,x,C,v)=>{let w,b;const{type:P,props:E,shapeFlag:A,transition:I,patchFlag:W,dirs:te}=a;if(a.el&&M!==void 0&&W===-1)w=a.el=M(a.el);else{if(w=a.el=i(a.type,x,E&&E.is,E),A&8?h(w,a.children):A&16&&ne(a.children,w,null,_,p,x&&P!=="foreignObject",C,v),te&&Fe(a,null,_,"created"),E){for(const ee in E)ee!=="value"&&!At(ee)&&o(w,ee,null,E[ee],x,a.children,_,p,Be);"value"in E&&o(w,"value",null,E.value),(b=E.onVnodeBeforeMount)&&Le(b,_,a)}le(w,a,a.scopeId,C,_)}te&&Fe(a,null,_,"beforeMount");const Y=(!p||p&&!p.pendingBranch)&&I&&!I.persisted;Y&&I.beforeEnter(w),s(w,u,d),((b=E&&E.onVnodeMounted)||Y||te)&&we(()=>{b&&Le(b,_,a),Y&&I.enter(w),te&&Fe(a,null,_,"mounted")},p)},le=(a,u,d,_,p)=>{if(d&&L(a,d),_)for(let x=0;x<_.length;x++)L(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,v,w=0)=>{for(let b=w;b{const v=u.el=a.el;let{patchFlag:w,dynamicChildren:b,dirs:P}=u;w|=a.patchFlag&16;const E=a.props||Q,A=u.props||Q;let I;d&&tt(d,!1),(I=A.onVnodeBeforeUpdate)&&Le(I,d,u,a),P&&Fe(u,a,d,"beforeUpdate"),d&&tt(d,!0);const W=p&&u.type!=="foreignObject";if(b?ge(a.dynamicChildren,b,v,d,_,W,x):C||He(a,u,v,null,d,_,W,x,!1),w>0){if(w&16)j(v,u,E,A,d,_,p);else if(w&2&&E.class!==A.class&&o(v,"class",null,A.class,p),w&4&&o(v,"style",E.style,A.style,p),w&8){const te=u.dynamicProps;for(let Y=0;Y{I&&Le(I,d,u,a),P&&Fe(u,a,d,"updated")},_)},ge=(a,u,d,_,p,x,C)=>{for(let v=0;v{if(d!==_){for(const v in _){if(At(v))continue;const w=_[v],b=d[v];w!==b&&v!=="value"&&o(a,v,b,w,C,u.children,p,x,Be)}if(d!==Q)for(const v in d)!At(v)&&!(v in _)&&o(a,v,d[v],null,C,u.children,p,x,Be);"value"in _&&o(a,"value",d.value,_.value)}},oe=(a,u,d,_,p,x,C,v,w)=>{const b=u.el=a?a.el:l(""),P=u.anchor=a?a.anchor:l("");let{patchFlag:E,dynamicChildren:A,slotScopeIds:I}=u;I&&(v=v?v.concat(I):I),a==null?(s(b,d,_),s(P,d,_),ne(u.children,d,P,p,x,C,v,w)):E>0&&E&64&&A&&a.dynamicChildren?(ge(a.dynamicChildren,A,d,p,x,C,v),(u.key!=null||p&&u===p.subTree)&&co(a,u,!0)):He(a,u,d,P,p,x,C,v,w)},ye=(a,u,d,_,p,x,C,v,w)=>{u.slotScopeIds=v,a==null?u.shapeFlag&512?p.ctx.activate(u,d,_,C,w):An(u,d,_,p,x,C,w):ke(a,u,w)},An=(a,u,d,_,p,x,C)=>{const v=a.component=Pl(a,_,p);if(Zr(a)&&(v.ctx.renderer=dt),Al(v),v.asyncDep){if(p&&p.registerDep(v,se),!a.el){const w=v.subTree=N(Ke);K(null,w,u,d)}return}se(v,a,u,d,p,x,C)},ke=(a,u,d)=>{const _=u.component=a.component;if(qi(a,u,d))if(_.asyncDep&&!_.asyncResolved){G(_,u,d);return}else _.next=u,Fi(_.update),_.update();else u.component=a.component,u.el=a.el,_.vnode=u},se=(a,u,d,_,p,x,C)=>{const v=()=>{if(a.isMounted){let{next:P,bu:E,u:A,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)&&Le(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&&Ki(a,ee.el),A&&we(A,p),(Y=P.props&&P.props.onVnodeUpdated)&&we(()=>Le(Y,I,P,W),p)}else{let P;const{el:E,props:A}=u,{bm:I,m:W,parent:te}=a,Y=Dt(u);if(tt(a,!1),I&&Rn(I),!Y&&(P=A&&A.onVnodeBeforeMount)&&Le(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&&we(W,p),!Y&&(P=A&&A.onVnodeMounted)){const ee=u;we(()=>Le(P,te,ee),p)}u.shapeFlag&256&&a.a&&we(a.a,p),a.isMounted=!0,u=d=_=null}},w=a.effect=new ls(v,()=>Dr(a.update),a.scope),b=a.update=w.run.bind(w);b.id=a.uid,tt(a,!0),b()},G=(a,u,d)=>{u.component=a;const _=a.vnode.props;a.vnode=u,a.next=null,ul(a,u.props,_,d),hl(a,u.children,d),wt(),ps(void 0,a.update),$t()},He=(a,u,d,_,p,x,C,v,w=!1)=>{const b=a&&a.children,P=a?a.shapeFlag:0,E=u.children,{patchFlag:A,shapeFlag:I}=u;if(A>0){if(A&128){Ct(b,E,d,_,p,x,C,v,w);return}else if(A&256){Sn(b,E,d,_,p,x,C,v,w);return}}I&8?(P&16&&Be(b,p,x),E!==b&&h(d,E)):P&16?I&16?Ct(b,E,d,_,p,x,C,v,w):Be(b,p,x,!0):(P&8&&h(d,""),I&16&&ne(E,d,_,p,x,C,v,w))},Sn=(a,u,d,_,p,x,C,v,w)=>{a=a||mt,u=u||mt;const b=a.length,P=u.length,E=Math.min(b,P);let A;for(A=0;AP?Be(a,p,x,!0,!1,E):ne(u,d,_,p,x,C,v,w,E)},Ct=(a,u,d,_,p,x,C,v,w)=>{let b=0;const P=u.length;let E=a.length-1,A=P-1;for(;b<=E&&b<=A;){const I=a[b],W=u[b]=w?Xe(u[b]):Ae(u[b]);if(Tt(I,W))m(I,W,d,null,p,x,C,v,w);else break;b++}for(;b<=E&&b<=A;){const I=a[E],W=u[A]=w?Xe(u[A]):Ae(u[A]);if(Tt(I,W))m(I,W,d,null,p,x,C,v,w);else break;E--,A--}if(b>E){if(b<=A){const I=A+1,W=IA)for(;b<=E;)ze(a[b],p,x,!0),b++;else{const I=b,W=b,te=new Map;for(b=W;b<=A;b++){const Ce=u[b]=w?Xe(u[b]):Ae(u[b]);Ce.key!=null&&te.set(Ce.key,b)}let Y,ee=0;const Pe=A-W+1;let ht=!1,Es=0;const Et=new Array(Pe);for(b=0;b=Pe){ze(Ce,p,x,!0);continue}let Re;if(Ce.key!=null)Re=te.get(Ce.key);else for(Y=W;Y<=A;Y++)if(Et[Y-W]===0&&Tt(Ce,u[Y])){Re=Y;break}Re===void 0?ze(Ce,p,x,!0):(Et[Re-W]=b+1,Re>=Es?Es=Re:ht=!0,m(Ce,u[Re],d,null,p,x,C,v,w),ee++)}const Ts=ht?vl(Et):mt;for(Y=Ts.length-1,b=Pe-1;b>=0;b--){const Ce=W+b,Re=u[Ce],Ls=Ce+1{const{el:x,type:C,transition:v,children:w,shapeFlag:b}=a;if(b&6){ft(a.component.subTree,u,d,_);return}if(b&128){a.suspense.move(u,d,_);return}if(b&64){C.move(a,u,d,dt);return}if(C===fe){s(x,u,d);for(let E=0;Ev.enter(x),p);else{const{leave:E,delayLeave:A,afterLeave:I}=v,W=()=>s(x,u,d),te=()=>{E(x,()=>{W(),I&&I()})};A?A(x,W,te):te()}else s(x,u,d)},ze=(a,u,d,_=!1,p=!1)=>{const{type:x,props:C,ref:v,children:w,dynamicChildren:b,shapeFlag:P,patchFlag:E,dirs:A}=a;if(v!=null&&an(v,null,d,a,!0),P&256){u.ctx.deactivate(a);return}const I=P&1&&A,W=!Dt(a);let te;if(W&&(te=C&&C.onVnodeBeforeUnmount)&&Le(te,u,a),P&6)Io(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,dt,_):b&&(x!==fe||E>0&&E&64)?Be(b,u,d,!1,!0):(x===fe&&E&384||!p&&P&16)&&Be(w,u,d),_&&$s(a)}(W&&(te=C&&C.onVnodeUnmounted)||I)&&we(()=>{te&&Le(te,u,a),I&&Fe(a,null,u,"unmounted")},d)},$s=a=>{const{type:u,el:d,anchor:_,transition:p}=a;if(u===fe){So(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:v}=p,w=()=>C(d,x);v?v(a.el,x,w):w()}else x()},So=(a,u)=>{let d;for(;a!==u;)d=y(a),r(a),a=d;r(u)},Io=(a,u,d)=>{const{bum:_,scope:p,update:x,subTree:C,um:v}=a;_&&Rn(_),p.stop(),x&&(x.active=!1,ze(C,a,u,d)),v&&we(v,u),we(()=>{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},dt={p:m,um:ze,m:ft,r:$s,mt:An,mc:ne,pc:He,pbc:ge,n:Jt,o:e};let In,Mn;return t&&([In,Mn]=t(dt)),{render:Cs,hydrate:In,createApp:_l(Cs,In)}}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function co(e,t,n=!1){const s=e.children,r=t.children;if(O(s)&&O(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const xl=e=>e.__isTeleport,ao="components";function un(e,t){return kl(ao,e,!0,t)||e}const yl=Symbol();function kl(e,t,n=!0,s=!1){const r=$e||_e;if(r){const o=r.type;if(e===ao){const l=Ol(o);if(l&&(l===t||l===Ne(t)||l===vn(Ne(t))))return o}const i=Ys(r[e]||o[e],t)||Ys(r.appContext[e],t);return!i&&s?o:i}}function Ys(e,t){return e&&(e[t]||e[Ne(t)]||e[vn(Ne(t))])}const fe=Symbol(void 0),jt=Symbol(void 0),Ke=Symbol(void 0),Rt=Symbol(void 0),Ut=[];let it=null;function T(e=!1){Ut.push(it=e?null:[])}function wl(){Ut.pop(),it=Ut[Ut.length-1]||null}let fn=1;function Xs(e){fn+=e}function uo(e){return e.dynamicChildren=fn>0?it||mt:null,wl(),fn>0&&it&&it.push(e),e}function R(e,t,n,s,r,o){return uo(U(e,t,n,s,r,o,!0))}function pe(e,t,n,s,r){return uo(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 Ln="__vInternal",fo=({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,o=e===fe?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fo(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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null};return l?(ms(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=he(n)?8:16),fn>0&&!i&&it&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&it.push(c),c}const N=$l;function $l(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===yl)&&(e=Ke),dn(e)){const l=qt(e,t,!0);return n&&ms(l,n),l}if(Rl(e)&&(e=e.__vccOpts),t){t=Cl(t);let{class:l,style:c}=t;l&&!he(l)&&(t.class=ct(l)),ue(c)&&(Mr(c)&&!O(c)&&(c=xe({},c)),t.style=ts(c))}const i=he(e)?1:Wi(e)?128:xl(e)?64:ue(e)?4:F(e)?2:0;return U(e,t,n,s,r,i,o,!0)}function Cl(e){return e?Mr(e)||Ln in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:s,ref:r,patchFlag:o,children:i}=e,l=t?bs(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&fo(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:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?o===-1?16:o|16:o,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 hf(e,t){const n=N(Rt,null,e);return n.staticCount=t,n}function J(e="",t=!1){return t?(T(),pe(Ke,null,e)):N(Ke,null,e)}function Ae(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&&!(Ln 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 bs(...e){const t={};for(let n=0;nt(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;ldn(t)?!(t.type===Ke||t.type===fe&&!ho(t.children)):!0)?e:null}const Xn=e=>e?po(e)?vs(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=>to(e),$forceUpdate:e=>()=>Dr(e.update),$nextTick:e=>Br.bind(e.proxy),$watch:e=>Vi.bind(e)}),El={get({_:e},t){const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const L=i[t];if(L!==void 0)switch(L){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(s!==Q&&q(s,t))return i[t]=1,s[t];if(r!==Q&&q(r,t))return i[t]=2,r[t];if((f=e.propsOptions[0])&&q(f,t))return i[t]=3,o[t];if(n!==Q&&q(n,t))return i[t]=4,n[t];Vn&&(i[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 i[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:o}=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:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==Q&&q(e,i)||t!==Q&&q(t,i)||(l=o[0])&&q(l,i)||q(s,i)||q(hn,i)||q(r.config.globalProperties,i)},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)}},Tl=lo();let Ll=0;function Pl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||Tl,o={uid:Ll++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new ei(!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:so(s,r),emitsOptions:Wr(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 o.ctx={_:o},o.root=t?t.root:o,o.emit=Bi.bind(null,o),e.ce&&e.ce(o),o}let _e=null;const xt=e=>{_e=e,e.scope.on()},lt=()=>{_e&&_e.scope.off(),_e=null};function po(e){return e.vnode.shapeFlag&4}let Kt=!1;function Al(e,t=!1){Kt=t;const{props:n,children:s}=e.vnode,r=po(e);al(e,n,r,t),dl(e,s);const o=r?Sl(e,t):void 0;return Kt=!1,o}function Sl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=St(new Proxy(e.ctx,El));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ml(e):null;xt(e),wt();const o=Qe(s,e,0,[e.props,r]);if($t(),lt(),br(o)){if(o.then(lt,lt),t)return o.then(i=>{Zs(e,i,t)}).catch(i=>{wn(i,e,0)});e.asyncDep=o}else Zs(e,o,t)}else _o(e,t)}function Zs(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=Fr(t)),_o(e,n)}let Qs;function _o(e,t,n){const s=e.type;if(!e.render){if(!t&&Qs&&!s.render){const r=s.template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=xe(xe({isCustomElement:o,delimiters:l},i),c);s.render=Qs(r,f)}}e.render=s.render||Me}xt(e),wt(),rl(e),$t(),lt()}function Il(e){return new Proxy(e.attrs,{get(t,n){return Te(e,"get","$attrs"),t[n]}})}function Ml(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Il(e))},slots:e.slots,emit:e.emit,expose:t}}function vs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Fr(St(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)}}))}function Ol(e){return F(e)&&e.displayName||e.name}function Rl(e){return F(e)&&"__vccOpts"in e}const D=(e,t)=>Oi(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 Ul="3.2.33",Fl="http://www.w3.org/2000/svg",st=typeof document!="undefined"?document:null,Gs=st&&st.createElement("template"),Nl={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(Fl,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,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Gs.innerHTML=s?`${e}`:e;const l=Gs.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Hl(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 Bl(e,t,n){const s=e.style,r=he(n);if(n&&!r){for(const o in n)Zn(s,o,n[o]);if(t&&!he(t))for(const o in t)n[o]==null&&Zn(s,o,"")}else{const o=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=o)}}const er=/\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=Dl(e,t);er.test(n)?e.setProperty(kt(s),n.replace(er,""),"important"):e[s]=n}}const tr=["Webkit","Moz","ms"],Nn={};function Dl(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=vn(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 Wl=Promise.resolve(),zl=()=>{Qn=0},Vl=()=>Qn||(Wl.then(zl),Qn=go());function Jl(e,t,n,s){e.addEventListener(t,n,s)}function Yl(e,t,n,s){e.removeEventListener(t,n,s)}function Xl(e,t,n,s,r=null){const o=e._vei||(e._vei={}),i=o[t];if(s&&i)i.value=s;else{const[l,c]=Zl(t);if(s){const f=o[t]=Ql(s,r);Jl(e,l,f,c)}else i&&(Yl(e,l,i,c),o[t]=void 0)}}const sr=/(?:Once|Passive|Capture)$/;function Zl(e){let t;if(sr.test(e)){t={};let n;for(;n=e.match(sr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[kt(e.slice(2)),t]}function Ql(e,t){const n=s=>{const r=s.timeStamp||go();(Kl||r>=n.attached-1)&&Oe(Gl(s,n.value),t,5,[s])};return n.value=e,n.attached=Vl(),n}function Gl(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 rr=/^on[a-z]/,ec=(e,t,n,s,r=!1,o,i,l,c)=>{t==="class"?Hl(e,s,r):t==="style"?Bl(e,n,s):Wt(t)?ns(t)||Xl(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):tc(e,t,s,r))?ql(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),jl(e,t,s,r))};function tc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&rr.test(t)&&F(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||rr.test(t)&&he(n)?!1:t in e}const nc=xe({patchProp:ec},Nl);let Hn,or=!1;function sc(){return Hn=or?Hn:ml(nc),or=!0,Hn}const rc=(...e)=>{const t=sc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=oc(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function oc(e){return he(e)?document.querySelector(e):e}var ic='{"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/index","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":"API","link":"/guide/api"}]},{"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":"\u5F00\u53D1\u624B\u518C","children":[{"text":"\u521B\u5EFA\u65B0\u4E3B\u9898","link":"/developer/theme"}]}],"/":[{"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":"API","link":"/guide/api"}]},{"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/index","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":"API","link":"/en_US/guide/api"}]},{"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":"Development Manual","children":[{"text":"Create a new theme","link":"/en_US/developer/theme"}]}],"/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":"API","link":"/en_US/guide/api"}]},{"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 mo=/^https?:/i,Ie=typeof window!="undefined";function lc(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 ir(e,t){const n=lc(t,Object.keys(e));return n?e[n]:void 0}function cc(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 ac(e,t){t=uc(e,t);const n=ir(e.locales||{},t),s=ir(e.themeConfig.locales||{},t);return Object.assign({},e,n,{themeConfig:Object.assign({},e.themeConfig,s,{locales:{}}),lang:(n||e).lang,locales:{},langs:cc(e)})}function uc(e,t){if(!Ie)return t;const n=e.base,s=n.endsWith("/")?n.slice(0,-1):n;return t.slice(s.length)}const bo=Symbol(),Vt=Li(fc(ic));function fc(e){return JSON.parse(e)}function dc(e){const t=D(()=>ac(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(o=>n[o].lang===s);return yt(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(bo);if(!e)throw new Error("vitepress data not properly injected in app");return e}function hc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function yt(e){return mo.test(e)?e:hc(Vt.value.base,e)}function vo(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 xo=Symbol(),lr="http://a.com",yo={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{},lastUpdated:0},pc=()=>({path:"/",component:null,data:yo});function _c(e,t){const n=yn(pc());function s(i=Ie?location.href:"/"){const l=new URL(i,lr);return!l.pathname.endsWith("/")&&!l.pathname.endsWith(".html")&&(l.pathname+=".html",i=l.pathname+l.search+l.hash),Ie&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",i)),o(i)}let r=null;async function o(i,l=0,c=!1){const f=new URL(i,lr),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:L}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=h,n.component=St(y),n.data=St(JSON.parse(L)),Ie&&Br(()=>{if(f.hash&&!l){let M=null;try{M=document.querySelector(decodeURIComponent(f.hash))}catch(V){console.warn(V)}if(M){cr(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 o(i,l,!0);return}catch{}r===h&&(r=null,n.path=h,n.component=t?St(t):null,n.data=yo)}}return Ie&&(window.addEventListener("click",i=>{const l=i.target.closest("a");if(l){const{href:c,protocol:f,hostname:h,pathname:g,hash:y,target:L}=l,M=window.location,V=g.match(/\.\w+$/);!i.ctrlKey&&!i.shiftKey&&!i.altKey&&!i.metaKey&&L!=="_blank"&&f===M.protocol&&h===M.hostname&&!(V&&V[0]!==".html")&&(i.preventDefault(),g===M.pathname?y&&y!==M.hash&&(history.pushState(null,"",y),window.dispatchEvent(new Event("hashchange")),cr(l,y,l.classList.contains("header-anchor"))):s(c))}},{capture:!0}),window.addEventListener("popstate",i=>{o(location.href,i.state&&i.state.scrollPosition||0)}),window.addEventListener("hashchange",i=>{i.preventDefault()})),{route:n,go:s}}function gc(){const e=Ot(xo);if(!e)throw new Error("useRouter() is called without provider.");return e}function et(){return gc().route}function cr(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 o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-r+o;!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})}}function mc(e,t){let n=[],s=!0;const r=o=>{if(s){s=!1;return}const i=[],l=Math.min(n.length,o.length);for(let c=0;cdocument.head.removeChild(c)),o.slice(l).forEach(c=>{const f=ar(c);document.head.appendChild(f),i.push(f)}),n=i};Yr(()=>{const o=e.data,i=t.value,l=o&&o.title,c=o&&o.description,f=o&&o.frontmatter.head;document.title=(l?l+" | ":"")+i.title,document.querySelector("meta[name=description]").setAttribute("content",c||i.description),r([...f?vc(f):[]])})}function ar([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 bc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function vc(e){return e.filter(t=>!bc(t))}const xc=ie({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 yc=/#.*$/,kc=/(index)?\.(md|html)$/,pn=/\/$/,wc=/^[a-z]+:/i;function xs(e){return Array.isArray(e)}function ys(e){return wc.test(e)}function $c(e,t){if(t===void 0)return!1;const n=ur(`/${e.data.relativePath}`),s=ur(t);return n===s}function ur(e){return decodeURI(e).replace(yc,"").replace(kc,"")}function Cc(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 ko(e){return e.replace(/(index)?(\.(md|html))?$/,"")||"/"}function Ec(e){return e===!1||e==="auto"||xs(e)}function Tc(e){return e.children!==void 0}function Lc(e){return xs(e)?e.length===0:!e}function ks(e,t){if(Ec(e))return e;t=Gn(t);for(const n in e)if(t.startsWith(Gn(n)))return e[n];return"auto"}function wo(e){return e.reduce((t,n)=>(n.link&&t.push({text:n.text,link:ko(n.link)}),Tc(n)&&(t=[...t,...wo(n.children)]),t),[])}function $o(e){const t=et(),n=ys(e.value.link);return{props:D(()=>{const r=fr(`/${t.data.relativePath}`);let o=!1;if(e.value.activeMatch)o=new RegExp(e.value.activeMatch).test(r);else{const i=fr(e.value.link);o=i==="/"?i===r:r.startsWith(i)}return{class:{active:o,isExternal:n},href:n?e.value.link:yt(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 fr(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\.(html|md)$/,"").replace(/\/index$/,"/")}const Pc={},Ac={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"},Sc=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),Ic=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),Mc=[Sc,Ic];function Oc(e,t){return T(),R("svg",Ac,Mc)}var ws=ce(Pc,[["render",Oc]]);const Rc={class:"nav-link"},Uc=ie({props:{item:null},setup(e){const n=Nr(e),{props:s,isExternal:r}=$o(n.item);return(o,i)=>(T(),R("div",Rc,[U("a",bs({class:"item"},$(s)),[zt(ve(e.item.text)+" ",1),$(r)?(T(),pe(ws,{key:0})):J("",!0)],16)]))}});var _n=ce(Uc,[["__scopeId","data-v-b8818f8c"]]);const Fc={key:0,class:"home-hero"},Nc={key:0,class:"figure"},Hc=["src","alt"],Bc={key:1,id:"main-title",class:"title"},Dc={key:2,class:"tagline"},jc=ie({setup(e){const{site:t,frontmatter:n}=me(),s=D(()=>{const{heroImage:i,heroText:l,tagline:c,actionLink:f,actionText:h}=n.value;return i||l||c||f&&h}),r=D(()=>n.value.heroText||t.value.title),o=D(()=>n.value.tagline||t.value.description);return(i,l)=>$(s)?(T(),R("header",Fc,[$(n).heroImage?(T(),R("figure",Nc,[U("img",{class:"image",src:$(yt)($(n).heroImage),alt:$(n).heroAlt},null,8,Hc)])):J("",!0),$(r)?(T(),R("h1",Bc,ve($(r)),1)):J("",!0),$(o)?(T(),R("p",Dc,ve($(o)),1)):J("",!0),$(n).actionLink&&$(n).actionText?(T(),pe(_n,{key:3,item:{link:$(n).actionLink,text:$(n).actionText},class:"action"},null,8,["item"])):J("",!0),$(n).altActionLink&&$(n).altActionText?(T(),pe(_n,{key:4,item:{link:$(n).altActionLink,text:$(n).altActionText},class:"action alt"},null,8,["item"])):J("",!0)])):J("",!0)}});var qc=ce(jc,[["__scopeId","data-v-370f18c0"]]);const Kc={key:0,class:"home-features"},Wc={class:"wrapper"},zc={class:"container"},Vc={class:"features"},Jc={key:0,class:"title"},Yc={key:1,class:"details"},Xc=ie({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,o)=>$(n)?(T(),R("div",Kc,[U("div",Wc,[U("div",zc,[U("div",Vc,[(T(!0),R(fe,null,Pn($(s),(i,l)=>(T(),R("section",{key:l,class:"feature"},[i.title?(T(),R("h2",Jc,ve(i.title),1)):J("",!0),i.details?(T(),R("p",Yc,ve(i.details),1)):J("",!0)]))),128))])])])])):J("",!0)}});var Zc=ce(Xc,[["__scopeId","data-v-e39c13e0"]]);const Qc={key:0,class:"footer"},Gc={class:"container"},ea={class:"text"},ta=ie({setup(e){const{frontmatter:t}=me();return(n,s)=>$(t).footer?(T(),R("footer",Qc,[U("div",Gc,[U("p",ea,ve($(t).footer),1)])])):J("",!0)}});var na=ce(ta,[["__scopeId","data-v-30918238"]]);const sa={class:"home","aria-labelledby":"main-title"},ra={class:"home-content"},oa=ie({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",sa,[N(qc),ae(t.$slots,"hero",{},void 0,!0),N(Zc),U("div",ra,[N(s)]),ae(t.$slots,"features",{},void 0,!0),N(na),ae(t.$slots,"footer",{},void 0,!0)])}}});var ia=ce(oa,[["__scopeId","data-v-10122c92"]]);const la=["href","aria-label"],ca=["src"],aa=ie({setup(e){const{site:t,theme:n,localePath:s}=me();return(r,o)=>(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:$(yt)($(n).logo),alt:"Logo"},null,8,ca)):J("",!0),zt(" "+ve($(t).title),1)],8,la))}});var ua=ce(aa,[["__scopeId","data-v-cc01ef16"]]);function fa(){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 i=et().path.replace(t.value,""),l=r.map(f=>({text:s[f].label,link:`${f}${i}`}));return{text:n.value.selectText||"Languages",items:l}})}const da=["GitHub","GitLab","Bitbucket"].map(e=>[e,new RegExp(e,"i")]);function ha(){const{site:e}=me();return D(()=>{const t=e.value.themeConfig,n=t.docsRepo||t.repo;if(!n)return null;const s=pa(n);return{text:_a(s,t.repoLabel),link:s}})}function pa(e){return mo.test(e)?e:`https://github.com/${e}`}function _a(e,t){if(t)return t;const n=e.match(/^https?:\/\/[^/]+/);if(!n)return"Source";const s=da.find(([r,o])=>o.test(n[0]));return s&&s[0]?s[0]:"Source"}const ga=e=>(zr("data-v-bbc27490"),e=e(),Vr(),e),ma={class:"nav-dropdown-link-item"},ba=ga(()=>U("span",{class:"arrow"},null,-1)),va={class:"text"},xa={class:"icon"},ya=ie({props:{item:null},setup(e){const n=Nr(e),{props:s,isExternal:r}=$o(n.item);return(o,i)=>(T(),R("div",ma,[U("a",bs({class:"item"},$(s)),[ba,U("span",va,ve(e.item.text),1),U("span",xa,[$(r)?(T(),pe(ws,{key:0})):J("",!0)])],16)]))}});var ka=ce(ya,[["__scopeId","data-v-bbc27490"]]);const wa=["aria-label"],$a={class:"button-text"},Ca={class:"dialog"},Ea=ie({props:{item:null},setup(e){const t=et(),n=kn(!1);ot(()=>t.path,()=>{n.value=!1});function s(){n.value=!n.value}return(r,o)=>(T(),R("div",{class:ct(["nav-dropdown-link",{open:n.value}])},[U("button",{class:"button","aria-label":e.item.ariaLabel,onClick:s},[U("span",$a,ve(e.item.text),1),U("span",{class:ct(["button-arrow",n.value?"down":"right"])},null,2)],8,wa),U("ul",Ca,[(T(!0),R(fe,null,Pn(e.item.items,i=>(T(),R("li",{key:i.text,class:"dialog-item"},[N(ka,{item:i},null,8,["item"])]))),128))])],2))}});var dr=ce(Ea,[["__scopeId","data-v-56bf3a3f"]]);const Ta={key:0,class:"nav-links"},La={key:1,class:"item"},Pa={key:2,class:"item"},Aa=ie({setup(e){const{theme:t}=me(),n=fa(),s=ha(),r=D(()=>t.value.nav||s.value||n.value);return(o,i)=>$(r)?(T(),R("nav",Ta,[$(t).nav?(T(!0),R(fe,{key:0},Pn($(t).nav,l=>(T(),R("div",{key:l.text,class:"item"},[l.items?(T(),pe(dr,{key:0,item:l},null,8,["item"])):(T(),pe(_n,{key:1,item:l},null,8,["item"]))]))),128)):J("",!0),$(n)?(T(),R("div",La,[N(dr,{item:$(n)},null,8,["item"])])):J("",!0),$(s)?(T(),R("div",Pa,[N(_n,{item:$(s)},null,8,["item"])])):J("",!0)])):J("",!0)}});var Co=ce(Aa,[["__scopeId","data-v-eab3edfe"]]);const Sa={emits:["toggle"]},Ia=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),Ma=[Ia];function Oa(e,t,n,s,r,o){return T(),R("div",{class:"sidebar-button",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},Ma)}var Ra=ce(Sa,[["render",Oa]]);const Ua=e=>(zr("data-v-675d8756"),e=e(),Vr(),e),Fa={class:"nav-bar"},Na=Ua(()=>U("div",{class:"flex-grow"},null,-1)),Ha={class:"nav"},Ba=ie({emits:["toggle"],setup(e){return(t,n)=>(T(),R("header",Fa,[N(Ra,{onToggle:n[0]||(n[0]=s=>t.$emit("toggle"))}),N(ua),Na,U("div",Ha,[N(Co)]),ae(t.$slots,"search",{},void 0,!0)]))}});var Da=ce(Ba,[["__scopeId","data-v-675d8756"]]);function ja(){let e=null,t=null;const n=Va(s,300);function s(){const i=qa(),l=Ka(i);for(let c=0;c ul > li");l&&l!==t.parentElement?(e=l.querySelector("a"),e&&e.classList.add("active")):e=null}function o(i){i&&i.classList.remove("active")}ut(()=>{s(),window.addEventListener("scroll",n)}),Gr(()=>{r(decodeURIComponent(location.hash))}),Tn(()=>{window.removeEventListener("scroll",n)})}function qa(){return[].slice.call(document.querySelectorAll(".sidebar a.sidebar-link-item"))}function Ka(e){return[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(n=>n.hash===t.hash))}function Wa(){return document.querySelector(".nav-bar").offsetHeight}function hr(e){const t=Wa();return e.parentElement.offsetTop-t-15}function za(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 Ja(){const e=et(),{site:t}=me();return ja(),D(()=>{const n=e.data.headers,s=e.data.frontmatter.sidebar,r=e.data.frontmatter.sidebarDepth;if(s===!1)return[];if(s==="auto")return pr(n,r);const o=ks(t.value.themeConfig.sidebar,e.data.relativePath);return o===!1?[]:o==="auto"?pr(n,r):o})}function pr(e,t){const n=[];if(e===void 0)return[];let s;return e.forEach(({level:r,title:o,slug:i})=>{if(r-1>t)return;const l={text:o,link:`#${i}`};r===2?(s=l,n.push(l)):s&&(s.children||(s.children=[])).push(l)}),n}const Eo=e=>{const t=et(),{site:n,frontmatter:s}=me(),r=e.depth||1,o=s.value.sidebarDepth||1/0,i=t.data.headers,l=e.item.text,c=Ya(n.value.base,e.item.link),f=e.item.children,h=$c(t,e.item.link),g=r0?at("ul",{class:"sidebar-links"},t.map(r=>at(Eo,{item:r,depth:s}))):e&&n?To(!1,Xa(n),void 0,s):null}function Xa(e){return Lo(Za(e))}function Za(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 Lo(e){return e.map(t=>({text:t.title,link:`#${t.slug}`,children:t.children?Lo(t.children):void 0}))}const Qa={key:0,class:"sidebar-links"},Ga=ie({setup(e){const t=Ja();return(n,s)=>$(t).length>0?(T(),R("ul",Qa,[(T(!0),R(fe,null,Pn($(t),r=>(T(),pe($(Eo),{item:r},null,8,["item"]))),256))])):J("",!0)}});const eu=ie({props:{open:{type:Boolean}},setup(e){return(t,n)=>(T(),R("aside",{class:ct(["sidebar",{open:e.open}])},[N(Co,{class:"nav"}),ae(t.$slots,"sidebar-top",{},void 0,!0),N(Ga),ae(t.$slots,"sidebar-bottom",{},void 0,!0)],2))}});var tu=ce(eu,[["__scopeId","data-v-83e92a68"]]);const nu=/bitbucket.org/;function su(){const{page:e,theme:t,frontmatter:n}=me(),s=D(()=>{const{repo:o,docsDir:i="",docsBranch:l="master",docsRepo:c=o,editLinks:f}=t.value,h=n.value.editLink!=null?n.value.editLink:f,{relativePath:g}=e.value;return!h||!g||!o?null:ru(o,c,i,l,g)}),r=D(()=>t.value.editLinkText||"Edit this page");return{url:s,text:r}}function ru(e,t,n,s,r){return nu.test(e)?iu(e,t,n,s,r):ou(e,t,n,s,r)}function ou(e,t,n,s,r){return(ys(t)?t:`https://github.com/${t}`).replace(pn,"")+`/edit/${s}/`+(n?n.replace(pn,"")+"/":"")+r}function iu(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 lu={class:"edit-link"},cu=["href"],au=ie({setup(e){const{url:t,text:n}=su();return(s,r)=>(T(),R("div",lu,[$(t)?(T(),R("a",{key:0,class:"link",href:$(t),target:"_blank",rel:"noopener noreferrer"},[zt(ve($(n))+" ",1),N(ws,{class:"icon"})],8,cu)):J("",!0)]))}});var uu=ce(au,[["__scopeId","data-v-1ed99556"]]);const fu={key:0,class:"last-updated"},du={class:"prefix"},hu={class:"datetime"},pu=ie({setup(e){const{theme:t,page:n}=me(),s=D(()=>{const i=t.value.lastUpdated;return i!==void 0&&i!==!1&&n.value.lastUpdated!==0}),r=D(()=>{const i=t.value.lastUpdated;return i===!0?"Last Updated":i}),o=kn("");return ut(()=>{Yr(()=>{o.value=new Date(n.value.lastUpdated).toLocaleString("en-US")})}),(i,l)=>$(s)?(T(),R("p",fu,[U("span",du,ve($(r))+":",1),U("span",hu,ve(o.value),1)])):J("",!0)}});var _u=ce(pu,[["__scopeId","data-v-abce3432"]]);const gu={class:"page-footer"},mu={class:"edit"},bu={class:"updated"},vu=ie({setup(e){const{page:t}=me();return(n,s)=>(T(),R("footer",gu,[U("div",mu,[N(uu)]),U("div",bu,[$(t).lastUpdated?(T(),pe(_u,{key:0})):J("",!0)])]))}});var xu=ce(vu,[["__scopeId","data-v-07c132fc"]]);function yu(){const{page:e,theme:t}=me(),n=D(()=>ko(Gn(e.value.relativePath))),s=D(()=>{const c=ks(t.value.sidebar,n.value);return xs(c)?wo(c):[]}),r=D(()=>s.value.findIndex(c=>c.link===n.value)),o=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(()=>!!o.value||!!i.value);return{next:o,prev:i,hasLinks:l}}const ku={},wu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},$u=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),Cu=[$u];function Eu(e,t){return T(),R("svg",wu,Cu)}var Tu=ce(ku,[["render",Eu]]);const Lu={},Pu={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Au=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),Su=[Au];function Iu(e,t){return T(),R("svg",Pu,Su)}var Mu=ce(Lu,[["render",Iu]]);const Ou={key:0,class:"next-and-prev-link"},Ru={class:"container"},Uu={class:"prev"},Fu=["href"],Nu={class:"text"},Hu={class:"next"},Bu=["href"],Du={class:"text"},ju=ie({setup(e){const{hasLinks:t,prev:n,next:s}=yu();return(r,o)=>$(t)?(T(),R("div",Ou,[U("div",Ru,[U("div",Uu,[$(n)?(T(),R("a",{key:0,class:"link",href:$(yt)($(n).link)},[N(Tu,{class:"icon icon-prev"}),U("span",Nu,ve($(n).text),1)],8,Fu)):J("",!0)]),U("div",Hu,[$(s)?(T(),R("a",{key:0,class:"link",href:$(yt)($(s).link)},[U("span",Du,ve($(s).text),1),N(Mu,{class:"icon icon-next"})],8,Bu)):J("",!0)])])])):J("",!0)}});var qu=ce(ju,[["__scopeId","data-v-38ede35f"]]);const Ku={class:"page"},Wu={class:"container"},zu=ie({setup(e){return(t,n)=>{const s=un("Content");return T(),R("main",Ku,[U("div",Wu,[ae(t.$slots,"top",{},void 0,!0),N(s,{class:"content"}),N(xu),N(qu),ae(t.$slots,"bottom",{},void 0,!0)])])}}});var Vu=ce(zu,[["__scopeId","data-v-7eddb2c4"]]);const Ju={key:0,id:"ads-container"},Yu=ie({setup(e){const t=()=>null,n=t,s=t,r=t,o=et(),{site:i,page:l,theme:c,frontmatter:f}=me(),h=D(()=>!!f.value.customLayout),g=D(()=>!!f.value.home),y=D(()=>Object.keys(i.value.langs).length>1),L=D(()=>{const S=c.value;return f.value.navbar===!1||S.navbar===!1?!1:i.value.title||S.logo||S.repo||S.nav}),M=kn(!1),V=D(()=>f.value.home||f.value.sidebar===!1?!1:!Lc(ks(c.value.sidebar,o.data.relativePath))),m=S=>{M.value=typeof S=="boolean"?S:!M.value},k=m.bind(null,!1);ot(o,k);const K=D(()=>[{"no-navbar":!L.value,"sidebar-open":M.value,"no-sidebar":!V.value}]);return(S,H)=>{const X=un("Content"),Z=un("Debug");return T(),R(fe,null,[U("div",{class:ct(["theme",$(K)])},[$(L)?(T(),pe(Da,{key:0,onToggle:m},{search:De(()=>[ae(S.$slots,"navbar-search",{},()=>[$(c).algolia?(T(),pe($(r),{key:0,options:$(c).algolia,multilang:$(y)},null,8,["options","multilang"])):J("",!0)])]),_:3})):J("",!0),N(tu,{open:M.value},{"sidebar-top":De(()=>[ae(S.$slots,"sidebar-top")]),"sidebar-bottom":De(()=>[ae(S.$slots,"sidebar-bottom")]),_:3},8,["open"]),U("div",{class:"sidebar-mask",onClick:H[0]||(H[0]=B=>m(!1))}),$(h)?(T(),pe(X,{key:1})):$(g)?ae(S.$slots,"home",{key:2},()=>[N(ia,null,{hero:De(()=>[ae(S.$slots,"home-hero")]),features:De(()=>[ae(S.$slots,"home-features")]),footer:De(()=>[ae(S.$slots,"home-footer")]),_:3})]):(T(),pe(Vu,{key:3},{top:De(()=>[ae(S.$slots,"page-top-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.carbon?(T(),R("div",Ju,[(T(),pe($(n),{key:"carbon"+$(l).relativePath,code:$(c).carbonAds.carbon,placement:$(c).carbonAds.placement},null,8,["code","placement"]))])):J("",!0)]),ae(S.$slots,"page-top")]),bottom:De(()=>[ae(S.$slots,"page-bottom"),ae(S.$slots,"page-bottom-ads",{},()=>[$(c).carbonAds&&$(c).carbonAds.custom?(T(),pe($(s),{key:"custom"+$(l).relativePath,code:$(c).carbonAds.custom,placement:$(c).carbonAds.placement},null,8,["code","placement"])):J("",!0)])]),_:3}))],2),N(Z)],64)}}}),Xu={class:"theme"},Zu=U("h1",null,"404",-1),Qu=["href"],Gu=ie({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,o)=>(T(),R("div",Xu,[Zu,U("blockquote",null,ve(s()),1),U("a",{href:$(t).base,"aria-label":"go to home"},"Take me home.",8,Qu)]))}}),Po={Layout:Yu,NotFound:Gu},ef={setup(e){const{Layout:t}=Po;return ut(()=>{window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(console.log("setting as dark"),document.body.classList.add("dark")),setTimeout(()=>{let n=document.body.classList.contains("dark")?"\u{1F506}":"\u{1F319}",s=document.getElementsByClassName("nav-links");if(s){let r=s[0];r&&r.insertAdjacentHTML("beforeend",`
${n}
`),r=s[1],r&&r.insertAdjacentHTML("beforeend",`
${n}
`)}},100)}),(n,s)=>(T(),pe($(t)))}};var gn=Is(Ss({},Po),{Layout:ef});const Bn=new Set,Ao=()=>document.createElement("link"),tf=e=>{const t=Ao();t.rel="prefetch",t.href=e,document.head.appendChild(t)},nf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const sf=Ie&&(tn=Ao())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?tf:nf;function rf(){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(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Bn.has(c)){Bn.add(c);const f=vo(c);sf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{target:i,hostname:l,pathname:c}=o,f=c.match(/\.\w+$/);f&&f[0]!==".html"||i!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(o):Bn.add(c))})})};ut(s);const r=et();ot(()=>r.path,s),Tn(()=>{n&&n.disconnect()})}const of=ie({setup(e,{slots:t}){const n=kn(!1);return ut(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}}),lf=gn.NotFound||(()=>"404 Not Found"),cf={name:"VitePressApp",setup(){const{site:e}=me();return ut(()=>{ot(()=>e.value.lang,t=>{document.documentElement.lang=t},{immediate:!0})}),rf(),()=>at(gn.Layout)}};function af(){const e=ff(),t=uf();t.provide(xo,e);const n=dc(e.route);return t.provide(bo,n),t.component("Content",xc),t.component("ClientOnly",of),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 uf(){return rc(cf)}function ff(){let e=Ie,t;return _c(n=>{let s=vo(n);return e&&(t=s),(e||t===s)&&(s=s.replace(/\.js$/,".lean.js")),Ie?(e=!1,Bo(()=>import(s),[])):require(s)},lf)}if(Ie){const{app:e,router:t,data:n}=af();t.go().then(()=>{mc(t.route,n.site),e.mount("#app")})}export{ce as _,U as a,zt as b,R as c,af as createApp,hf as d,T as o}; diff --git a/assets/developer_algolia-search.md.64bfe4e3.js b/assets/developer_algolia-search.md.64bfe4e3.js deleted file mode 100644 index 5d6a3968..00000000 --- a/assets/developer_algolia-search.md.64bfe4e3.js +++ /dev/null @@ -1,34 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.0bd0e305.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',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

For more options, check out Algolia DocSearch's documentation. You can pass any extra option alongside other options, e.g. passing searchParameters:

module.exports = {
-  themeConfig: {
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name',
-      searchParameters: {
-        facetFilters: ['tags:guide,api']
-      }
-    }
-  }
-}
-

Internationalization (i18n)

If you have multiple locales in your documentation and you have defined a locales object in your themeConfig:

module.exports = {
-  themeConfig: {
-    locales: {
-      // ...
-    },
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

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.

`,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_algolia-search.md.64bfe4e3.lean.js b/assets/developer_algolia-search.md.64bfe4e3.lean.js deleted file mode 100644 index ab6efe68..00000000 --- a/assets/developer_algolia-search.md.64bfe4e3.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as n,o as s,a as e}from"./app.0bd0e305.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.5633887d.js b/assets/developer_basics.md.5633887d.js deleted file mode 100644 index b9e8b670..00000000 --- a/assets/developer_basics.md.5633887d.js +++ /dev/null @@ -1,13 +0,0 @@ -import{_ as e,c as a,o as s,a as t}from"./app.0bd0e305.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 = {
-  lang: 'en-US'
-}
-

title

  • Type: string
  • Default: VitePress

Title for the site. This will be the suffix for all page titles, and displayed in the navbar.

module.exports = {
-  title: 'VitePress'
-}
-

description

  • Type: string
  • Default: A VitePress site

Description for the site. This will render as a <meta> tag in the page HTML.

module.exports = {
-  description: 'A VitePress site'
-}
-
`,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_basics.md.5633887d.lean.js b/assets/developer_basics.md.5633887d.lean.js deleted file mode 100644 index 52022f26..00000000 --- a/assets/developer_basics.md.5633887d.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as s,a as t}from"./app.0bd0e305.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.3455e72e.js b/assets/developer_carbon-ads.md.3455e72e.js deleted file mode 100644 index 77d6114a..00000000 --- a/assets/developer_carbon-ads.md.3455e72e.js +++ /dev/null @@ -1,10 +0,0 @@ -import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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',
-      custom: 'your-carbon-custom',
-      placement: 'your-carbon-placement'
-    }
-  }
-}
-
`,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_carbon-ads.md.3455e72e.lean.js b/assets/developer_carbon-ads.md.3455e72e.lean.js deleted file mode 100644 index 785c5d0a..00000000 --- a/assets/developer_carbon-ads.md.3455e72e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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.5fcd3da5.js b/assets/developer_homepage.md.5fcd3da5.js deleted file mode 100644 index c18c6b14..00000000 --- a/assets/developer_homepage.md.5fcd3da5.js +++ /dev/null @@ -1,18 +0,0 @@ -import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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
-heroText: Hero Title
-tagline: Hero subtitle
-actionText: Get Started
-actionLink: /guide/
-features:
-  - title: Simplicity First
-    details: Minimal setup with markdown-centered project structure helps you focus on writing.
-  - title: Vue-Powered
-    details: Enjoy the dev experience of Vue + webpack, use Vue components in markdown, and develop custom themes with Vue.
-  - title: Performant
-    details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
-footer: MIT Licensed | Copyright \xA9 2019-present Evan You
----
-
`,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/developer_homepage.md.5fcd3da5.lean.js b/assets/developer_homepage.md.5fcd3da5.lean.js deleted file mode 100644 index 81864449..00000000 --- a/assets/developer_homepage.md.5fcd3da5.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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/developer_index.md.2bbbc80b.js b/assets/developer_index.md.2bbbc80b.js new file mode 100644 index 00000000..f58d3e20 --- /dev/null +++ b/assets/developer_index.md.2bbbc80b.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as r,a as e,b as t}from"./app.df59db74.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u5F00\u53D1\u624B\u518C","tagline":"\u6B22\u8FCE\u4F7F\u7528\u54EA\u5412\u76D1\u63A7\u5F00\u53D1\u624B\u518C\uFF0C\u6211\u4EEC\u6B22\u8FCE\u4F60\u63D0\u51FA\u9AD8\u8D28\u91CF\u7684Pull Request\uFF0C\u5E2E\u52A9\u54EA\u5412\u76D1\u63A7\u53D8\u5F97\u66F4\u597D\uFF01","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/developer/theme","footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"developer/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),c=[n];function i(l,d,h,p,_,m){return r(),o("div",null,c)}var x=a(s,[["render",i]]);export{f as __pageData,x as default}; diff --git a/assets/developer_index.md.2bbbc80b.lean.js b/assets/developer_index.md.2bbbc80b.lean.js new file mode 100644 index 00000000..f58d3e20 --- /dev/null +++ b/assets/developer_index.md.2bbbc80b.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as r,a as e,b as t}from"./app.df59db74.js";const f='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"\u5F00\u53D1\u624B\u518C","tagline":"\u6B22\u8FCE\u4F7F\u7528\u54EA\u5412\u76D1\u63A7\u5F00\u53D1\u624B\u518C\uFF0C\u6211\u4EEC\u6B22\u8FCE\u4F60\u63D0\u51FA\u9AD8\u8D28\u91CF\u7684Pull Request\uFF0C\u5E2E\u52A9\u54EA\u5412\u76D1\u63A7\u53D8\u5F97\u66F4\u597D\uFF01","actionText":"\u5F00\u59CB\u4F7F\u7528 \u2192","actionLink":"/developer/theme","footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"developer/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),c=[n];function i(l,d,h,p,_,m){return r(),o("div",null,c)}var x=a(s,[["render",i]]);export{f as __pageData,x as default}; diff --git a/assets/developer_theme.md.1d1c122b.js b/assets/developer_theme.md.1d1c122b.js new file mode 100644 index 00000000..42a60bbe --- /dev/null +++ b/assets/developer_theme.md.1d1c122b.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a as o}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"developer/theme.md"}',r={},s=o("p",null,"\u656C\u8BF7\u671F\u5F85",-1),c=[s];function n(_,d,p,i,l,m){return a(),t("div",null,c)}var u=e(r,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/developer_theme.md.1d1c122b.lean.js b/assets/developer_theme.md.1d1c122b.lean.js new file mode 100644 index 00000000..42a60bbe --- /dev/null +++ b/assets/developer_theme.md.1d1c122b.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a as o}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"developer/theme.md"}',r={},s=o("p",null,"\u656C\u8BF7\u671F\u5F85",-1),c=[s];function n(_,d,p,i,l,m){return a(),t("div",null,c)}var u=e(r,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/en_US_developer_algolia-search.md.8cc4bbdc.js b/assets/en_US_developer_algolia-search.md.8cc4bbdc.js deleted file mode 100644 index 43b6eb6f..00000000 --- a/assets/en_US_developer_algolia-search.md.8cc4bbdc.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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.8cc4bbdc.lean.js b/assets/en_US_developer_algolia-search.md.8cc4bbdc.lean.js deleted file mode 100644 index 43b6eb6f..00000000 --- a/assets/en_US_developer_algolia-search.md.8cc4bbdc.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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.413898e4.js b/assets/en_US_developer_basics.md.413898e4.js deleted file mode 100644 index 6bea5191..00000000 --- a/assets/en_US_developer_basics.md.413898e4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as t,b as e,d as c}from"./app.0bd0e305.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.413898e4.lean.js b/assets/en_US_developer_basics.md.413898e4.lean.js deleted file mode 100644 index 6bea5191..00000000 --- a/assets/en_US_developer_basics.md.413898e4.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as t,b as e,d as c}from"./app.0bd0e305.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.6c85c102.js b/assets/en_US_developer_carbon-ads.md.6c85c102.js deleted file mode 100644 index 66a7796f..00000000 --- a/assets/en_US_developer_carbon-ads.md.6c85c102.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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.6c85c102.lean.js b/assets/en_US_developer_carbon-ads.md.6c85c102.lean.js deleted file mode 100644 index 66a7796f..00000000 --- a/assets/en_US_developer_carbon-ads.md.6c85c102.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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.04079155.js b/assets/en_US_developer_homepage.md.04079155.js deleted file mode 100644 index 5abea70f..00000000 --- a/assets/en_US_developer_homepage.md.04079155.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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.04079155.lean.js b/assets/en_US_developer_homepage.md.04079155.lean.js deleted file mode 100644 index 5abea70f..00000000 --- a/assets/en_US_developer_homepage.md.04079155.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as o,o as t,b as e,d as r}from"./app.0bd0e305.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_index.md.e7cb06fe.js b/assets/en_US_developer_index.md.e7cb06fe.js new file mode 100644 index 00000000..07cff1fe --- /dev/null +++ b/assets/en_US_developer_index.md.e7cb06fe.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as n,a as e,b as t}from"./app.df59db74.js";const v='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Development Manual","tagline":"Welcome to the Nezha Monitoring Development Manual.","actionText":"Start Now \u2192","actionLink":"/en_US/developer/theme","footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/developer/index.md"}',r={},s=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),i=[s];function c(l,h,m,d,p,_){return n(),a("div",null,i)}var f=o(r,[["render",c]]);export{v as __pageData,f as default}; diff --git a/assets/en_US_developer_index.md.e7cb06fe.lean.js b/assets/en_US_developer_index.md.e7cb06fe.lean.js new file mode 100644 index 00000000..07cff1fe --- /dev/null +++ b/assets/en_US_developer_index.md.e7cb06fe.lean.js @@ -0,0 +1 @@ +import{_ as o,c as a,o as n,a as e,b as t}from"./app.df59db74.js";const v='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","heroText":"Development Manual","tagline":"Welcome to the Nezha Monitoring Development Manual.","actionText":"Start Now \u2192","actionLink":"/en_US/developer/theme","footer":"Copyright \xA9 2022-present Nezhahq"},"headers":[],"relativePath":"en_US/developer/index.md"}',r={},s=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),i=[s];function c(l,h,m,d,p,_){return n(),a("div",null,i)}var f=o(r,[["render",c]]);export{v as __pageData,f as default}; diff --git a/assets/en_US_developer_theme.md.ef55027d.js b/assets/en_US_developer_theme.md.ef55027d.js new file mode 100644 index 00000000..f0ee029f --- /dev/null +++ b/assets/en_US_developer_theme.md.ef55027d.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md"}',s={},n=a("p",null,"Comming soon",-1),r=[n];function c(_,d,i,p,l,m){return o(),t("div",null,r)}var u=e(s,[["render",c]]);export{h as __pageData,u as default}; diff --git a/assets/en_US_developer_theme.md.ef55027d.lean.js b/assets/en_US_developer_theme.md.ef55027d.lean.js new file mode 100644 index 00000000..f0ee029f --- /dev/null +++ b/assets/en_US_developer_theme.md.ef55027d.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md"}',s={},n=a("p",null,"Comming soon",-1),r=[n];function c(_,d,i,p,l,m){return o(),t("div",null,r)}var u=e(s,[["render",c]]);export{h as __pageData,u as default}; diff --git a/assets/en_US_guide_agent.md.743f0cf3.js b/assets/en_US_guide_agent.md.925eb5ae.js similarity index 99% rename from assets/en_US_guide_agent.md.743f0cf3.js rename to assets/en_US_guide_agent.md.925eb5ae.js index 88726858..44112095 100644 --- a/assets/en_US_guide_agent.md.743f0cf3.js +++ b/assets/en_US_guide_agent.md.925eb5ae.js @@ -1,4 +1,4 @@ -import{_ as n,c as e,o as a,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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.743f0cf3.lean.js b/assets/en_US_guide_agent.md.925eb5ae.lean.js
similarity index 94%
rename from assets/en_US_guide_agent.md.743f0cf3.lean.js
rename to assets/en_US_guide_agent.md.925eb5ae.lean.js
index 2f7d1ce6..4e3270b9 100644
--- a/assets/en_US_guide_agent.md.743f0cf3.lean.js
+++ b/assets/en_US_guide_agent.md.925eb5ae.lean.js
@@ -1 +1 @@
-import{_ as n,c as e,o as a,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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_api.md.7ff0060d.js b/assets/en_US_guide_api.md.7ff0060d.js
new file mode 100644
index 00000000..4d504170
--- /dev/null
+++ b/assets/en_US_guide_api.md.7ff0060d.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o,a}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md"}',s={},n=a("p",null,"Comming soon",-1),r=[n];function c(_,i,p,d,l,m){return o(),t("div",null,r)}var u=e(s,[["render",c]]);export{h as __pageData,u as default};
diff --git a/assets/en_US_guide_api.md.7ff0060d.lean.js b/assets/en_US_guide_api.md.7ff0060d.lean.js
new file mode 100644
index 00000000..4d504170
--- /dev/null
+++ b/assets/en_US_guide_api.md.7ff0060d.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o,a}from"./app.df59db74.js";const h='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md"}',s={},n=a("p",null,"Comming soon",-1),r=[n];function c(_,i,p,d,l,m){return o(),t("div",null,r)}var u=e(s,[["render",c]]);export{h as __pageData,u as default};
diff --git a/assets/en_US_guide_dashboard.md.2126504b.js b/assets/en_US_guide_dashboard.md.188af1d7.js
similarity index 99%
rename from assets/en_US_guide_dashboard.md.2126504b.js
rename to assets/en_US_guide_dashboard.md.188af1d7.js
index 283b3a68..03c8f726 100644
--- a/assets/en_US_guide_dashboard.md.2126504b.js
+++ b/assets/en_US_guide_dashboard.md.188af1d7.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as n,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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.2126504b.lean.js b/assets/en_US_guide_dashboard.md.188af1d7.lean.js
similarity index 92%
rename from assets/en_US_guide_dashboard.md.2126504b.lean.js
rename to assets/en_US_guide_dashboard.md.188af1d7.lean.js
index 31586bf7..03accb24 100644
--- a/assets/en_US_guide_dashboard.md.2126504b.lean.js
+++ b/assets/en_US_guide_dashboard.md.188af1d7.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as n,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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.0b3dd91b.js b/assets/en_US_guide_notifications.md.0b3dd91b.js
new file mode 100644
index 00000000..27d9fd77
--- /dev/null
+++ b/assets/en_US_guide_notifications.md.0b3dd91b.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o,a}from"./app.df59db74.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.0b3dd91b.lean.js b/assets/en_US_guide_notifications.md.0b3dd91b.lean.js
new file mode 100644
index 00000000..27d9fd77
--- /dev/null
+++ b/assets/en_US_guide_notifications.md.0b3dd91b.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as e,o,a}from"./app.df59db74.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.fd0fbc68.js b/assets/en_US_guide_notifications.md.fd0fbc68.js
deleted file mode 100644
index 02e0c654..00000000
--- a/assets/en_US_guide_notifications.md.fd0fbc68.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as e,o,b as a}from"./app.0bd0e305.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.fd0fbc68.lean.js b/assets/en_US_guide_notifications.md.fd0fbc68.lean.js
deleted file mode 100644
index 02e0c654..00000000
--- a/assets/en_US_guide_notifications.md.fd0fbc68.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as e,o,b as a}from"./app.0bd0e305.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_q2.md.2ef984ad.js b/assets/en_US_guide_q2.md.f508f2dc.js
similarity index 79%
rename from assets/en_US_guide_q2.md.2ef984ad.js
rename to assets/en_US_guide_q2.md.f508f2dc.js
index 1f0d8e12..7bce3888 100644
--- a/assets/en_US_guide_q2.md.2ef984ad.js
+++ b/assets/en_US_guide_q2.md.f508f2dc.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.2ef984ad.lean.js b/assets/en_US_guide_q2.md.f508f2dc.lean.js
similarity index 79%
rename from assets/en_US_guide_q2.md.2ef984ad.lean.js
rename to assets/en_US_guide_q2.md.f508f2dc.lean.js
index 1f0d8e12..7bce3888 100644
--- a/assets/en_US_guide_q2.md.2ef984ad.lean.js
+++ b/assets/en_US_guide_q2.md.f508f2dc.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.5a2ee1b2.js b/assets/en_US_guide_q3.md.a89f3057.js
similarity index 79%
rename from assets/en_US_guide_q3.md.5a2ee1b2.js
rename to assets/en_US_guide_q3.md.a89f3057.js
index a7853e95..9a252458 100644
--- a/assets/en_US_guide_q3.md.5a2ee1b2.js
+++ b/assets/en_US_guide_q3.md.a89f3057.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.5a2ee1b2.lean.js b/assets/en_US_guide_q3.md.a89f3057.lean.js
similarity index 79%
rename from assets/en_US_guide_q3.md.5a2ee1b2.lean.js
rename to assets/en_US_guide_q3.md.a89f3057.lean.js
index a7853e95..9a252458 100644
--- a/assets/en_US_guide_q3.md.5a2ee1b2.lean.js
+++ b/assets/en_US_guide_q3.md.a89f3057.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.5fd3c2e1.js b/assets/en_US_guide_q4.md.a108c972.js
similarity index 79%
rename from assets/en_US_guide_q4.md.5fd3c2e1.js
rename to assets/en_US_guide_q4.md.a108c972.js
index 488feeec..73c19d2a 100644
--- a/assets/en_US_guide_q4.md.5fd3c2e1.js
+++ b/assets/en_US_guide_q4.md.a108c972.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.5fd3c2e1.lean.js b/assets/en_US_guide_q4.md.a108c972.lean.js
similarity index 79%
rename from assets/en_US_guide_q4.md.5fd3c2e1.lean.js
rename to assets/en_US_guide_q4.md.a108c972.lean.js
index 488feeec..73c19d2a 100644
--- a/assets/en_US_guide_q4.md.5fd3c2e1.lean.js
+++ b/assets/en_US_guide_q4.md.a108c972.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.9213a1d9.js b/assets/en_US_guide_q5.md.c3a91a3b.js
similarity index 79%
rename from assets/en_US_guide_q5.md.9213a1d9.js
rename to assets/en_US_guide_q5.md.c3a91a3b.js
index 27d4915c..fbe55684 100644
--- a/assets/en_US_guide_q5.md.9213a1d9.js
+++ b/assets/en_US_guide_q5.md.c3a91a3b.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.9213a1d9.lean.js b/assets/en_US_guide_q5.md.c3a91a3b.lean.js
similarity index 79%
rename from assets/en_US_guide_q5.md.9213a1d9.lean.js
rename to assets/en_US_guide_q5.md.c3a91a3b.lean.js
index 27d4915c..fbe55684 100644
--- a/assets/en_US_guide_q5.md.9213a1d9.lean.js
+++ b/assets/en_US_guide_q5.md.c3a91a3b.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,b as o}from"./app.0bd0e305.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,a as o}from"./app.df59db74.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.81fca59f.js b/assets/en_US_guide_servers.md.197bfc37.js
similarity index 80%
rename from assets/en_US_guide_servers.md.81fca59f.js
rename to assets/en_US_guide_servers.md.197bfc37.js
index 33601b16..9a93b5c8 100644
--- a/assets/en_US_guide_servers.md.81fca59f.js
+++ b/assets/en_US_guide_servers.md.197bfc37.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.0bd0e305.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,a as r}from"./app.df59db74.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.81fca59f.lean.js b/assets/en_US_guide_servers.md.197bfc37.lean.js
similarity index 80%
rename from assets/en_US_guide_servers.md.81fca59f.lean.js
rename to assets/en_US_guide_servers.md.197bfc37.lean.js
index 33601b16..9a93b5c8 100644
--- a/assets/en_US_guide_servers.md.81fca59f.lean.js
+++ b/assets/en_US_guide_servers.md.197bfc37.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,b as r}from"./app.0bd0e305.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,a as r}from"./app.df59db74.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.454a41ef.js b/assets/en_US_guide_services.md.454a41ef.js
deleted file mode 100644
index b60d40ef..00000000
--- a/assets/en_US_guide_services.md.454a41ef.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as r}from"./app.0bd0e305.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.454a41ef.lean.js b/assets/en_US_guide_services.md.454a41ef.lean.js
deleted file mode 100644
index b60d40ef..00000000
--- a/assets/en_US_guide_services.md.454a41ef.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as r}from"./app.0bd0e305.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.a9b671d9.js b/assets/en_US_guide_services.md.a9b671d9.js
new file mode 100644
index 00000000..4581d04c
--- /dev/null
+++ b/assets/en_US_guide_services.md.a9b671d9.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',r={},o=a("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(r,[["render",n]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_services.md.a9b671d9.lean.js b/assets/en_US_guide_services.md.a9b671d9.lean.js
new file mode 100644
index 00000000..4581d04c
--- /dev/null
+++ b/assets/en_US_guide_services.md.a9b671d9.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/services.md"}',r={},o=a("p",null,"services",-1),c=[o];function n(_,i,d,p,l,f){return s(),t("div",null,c)}var v=e(r,[["render",n]]);export{m as __pageData,v as default};
diff --git a/assets/en_US_guide_settings.md.434d82b0.js b/assets/en_US_guide_settings.md.434d82b0.js
deleted file mode 100644
index 9ceeae9e..00000000
--- a/assets/en_US_guide_settings.md.434d82b0.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as a}from"./app.0bd0e305.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.434d82b0.lean.js b/assets/en_US_guide_settings.md.434d82b0.lean.js
deleted file mode 100644
index 9ceeae9e..00000000
--- a/assets/en_US_guide_settings.md.434d82b0.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as a}from"./app.0bd0e305.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.eba045c8.js b/assets/en_US_guide_settings.md.eba045c8.js
new file mode 100644
index 00000000..883ed685
--- /dev/null
+++ b/assets/en_US_guide_settings.md.eba045c8.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.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.eba045c8.lean.js b/assets/en_US_guide_settings.md.eba045c8.lean.js
new file mode 100644
index 00000000..883ed685
--- /dev/null
+++ b/assets/en_US_guide_settings.md.eba045c8.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.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.0cb67a65.js b/assets/en_US_guide_tasks.md.0cb67a65.js
new file mode 100644
index 00000000..df8d8bdb
--- /dev/null
+++ b/assets/en_US_guide_tasks.md.0cb67a65.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.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.0cb67a65.lean.js b/assets/en_US_guide_tasks.md.0cb67a65.lean.js
new file mode 100644
index 00000000..df8d8bdb
--- /dev/null
+++ b/assets/en_US_guide_tasks.md.0cb67a65.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as s,a}from"./app.df59db74.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.c8eb4c7e.js b/assets/en_US_guide_tasks.md.c8eb4c7e.js
deleted file mode 100644
index 1f5c2ac0..00000000
--- a/assets/en_US_guide_tasks.md.c8eb4c7e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as a}from"./app.0bd0e305.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.c8eb4c7e.lean.js b/assets/en_US_guide_tasks.md.c8eb4c7e.lean.js
deleted file mode 100644
index 1f5c2ac0..00000000
--- a/assets/en_US_guide_tasks.md.c8eb4c7e.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as t,o as s,b as a}from"./app.0bd0e305.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.a675940b.js b/assets/en_US_index.md.1d02a3f6.js
similarity index 91%
rename from assets/en_US_index.md.a675940b.js
rename to assets/en_US_index.md.1d02a3f6.js
index cf4283cb..01eea2f9 100644
--- a/assets/en_US_index.md.a675940b.js
+++ b/assets/en_US_index.md.1d02a3f6.js
@@ -1 +1 @@
-import{_ as o,c as a,o as n,b as e,d as t}from"./app.0bd0e305.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,a as e,b as t}from"./app.df59db74.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.a675940b.lean.js b/assets/en_US_index.md.1d02a3f6.lean.js
similarity index 91%
rename from assets/en_US_index.md.a675940b.lean.js
rename to assets/en_US_index.md.1d02a3f6.lean.js
index cf4283cb..01eea2f9 100644
--- a/assets/en_US_index.md.a675940b.lean.js
+++ b/assets/en_US_index.md.1d02a3f6.lean.js
@@ -1 +1 @@
-import{_ as o,c as a,o as n,b as e,d as t}from"./app.0bd0e305.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,a as e,b as t}from"./app.df59db74.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.913e362f.js b/assets/guide_agent.md.88016e1f.js
similarity index 99%
rename from assets/guide_agent.md.913e362f.js
rename to assets/guide_agent.md.88016e1f.js
index 9aaf975a..beb090e9 100644
--- a/assets/guide_agent.md.913e362f.js
+++ b/assets/guide_agent.md.88016e1f.js
@@ -1,4 +1,4 @@
-import{_ as e,c as n,o as a,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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\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
 
diff --git a/assets/guide_agent.md.913e362f.lean.js b/assets/guide_agent.md.88016e1f.lean.js
similarity index 94%
rename from assets/guide_agent.md.913e362f.lean.js
rename to assets/guide_agent.md.88016e1f.lean.js
index 08a3e0b0..bf559255 100644
--- a/assets/guide_agent.md.913e362f.lean.js
+++ b/assets/guide_agent.md.88016e1f.lean.js
@@ -1 +1 @@
-import{_ as e,c as n,o as a,a as t}from"./app.0bd0e305.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};
+import{_ as e,c as n,o as a,d as t}from"./app.df59db74.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_api.md.55eb4937.js b/assets/guide_api.md.55eb4937.js
new file mode 100644
index 00000000..be9be400
--- /dev/null
+++ b/assets/guide_api.md.55eb4937.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as a,a as o}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api.md"}',s={},r=o("p",null,"\u656C\u8BF7\u671F\u5F85",-1),c=[r];function n(_,i,p,d,l,f){return a(),t("div",null,c)}var h=e(s,[["render",n]]);export{m as __pageData,h as default};
diff --git a/assets/guide_api.md.55eb4937.lean.js b/assets/guide_api.md.55eb4937.lean.js
new file mode 100644
index 00000000..be9be400
--- /dev/null
+++ b/assets/guide_api.md.55eb4937.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as a,a as o}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api.md"}',s={},r=o("p",null,"\u656C\u8BF7\u671F\u5F85",-1),c=[r];function n(_,i,p,d,l,f){return a(),t("div",null,c)}var h=e(s,[["render",n]]);export{m as __pageData,h as default};
diff --git a/assets/guide_dashboard.md.9f2fda52.js b/assets/guide_dashboard.md.b1c30525.js
similarity index 99%
rename from assets/guide_dashboard.md.9f2fda52.js
rename to assets/guide_dashboard.md.b1c30525.js
index ffecb61d..af229353 100644
--- a/assets/guide_dashboard.md.9f2fda52.js
+++ b/assets/guide_dashboard.md.b1c30525.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as n,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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.9f2fda52.lean.js b/assets/guide_dashboard.md.b1c30525.lean.js
similarity index 93%
rename from assets/guide_dashboard.md.9f2fda52.lean.js
rename to assets/guide_dashboard.md.b1c30525.lean.js
index 78357b67..98727c06 100644
--- a/assets/guide_dashboard.md.9f2fda52.lean.js
+++ b/assets/guide_dashboard.md.b1c30525.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as n,a as t}from"./app.0bd0e305.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,d as t}from"./app.df59db74.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.33c483a1.js b/assets/guide_notifications.md.67995f65.js
similarity index 99%
rename from assets/guide_notifications.md.33c483a1.js
rename to assets/guide_notifications.md.67995f65.js
index 0b225aec..6c2b0bb7 100644
--- a/assets/guide_notifications.md.33c483a1.js
+++ b/assets/guide_notifications.md.67995f65.js
@@ -1 +1 @@
-import{_ as e,c as o,o as t,a as l}from"./app.0bd0e305.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}; +import{_ as e,c as o,o as t,d as l}from"./app.df59db74.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.33c483a1.lean.js b/assets/guide_notifications.md.67995f65.lean.js similarity index 92% rename from assets/guide_notifications.md.33c483a1.lean.js rename to assets/guide_notifications.md.67995f65.lean.js index 9e8c1f96..c6ae8fd9 100644 --- a/assets/guide_notifications.md.33c483a1.lean.js +++ b/assets/guide_notifications.md.67995f65.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,a as l}from"./app.0bd0e305.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}; +import{_ as e,c as o,o as t,d as l}from"./app.df59db74.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.6e999393.js b/assets/guide_q1.md.1d05c286.js similarity index 99% rename from assets/guide_q1.md.6e999393.js rename to assets/guide_q1.md.1d05c286.js index 87ccbc4c..940f3c11 100644 --- a/assets/guide_q1.md.6e999393.js +++ b/assets/guide_q1.md.1d05c286.js @@ -1,4 +1,4 @@ -import{_ as n,c as s,o as a,a as e}from"./app.0bd0e305.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
+import{_ as n,c as s,o as a,d as e}from"./app.df59db74.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;
diff --git a/assets/guide_q1.md.6e999393.lean.js b/assets/guide_q1.md.1d05c286.lean.js
similarity index 89%
rename from assets/guide_q1.md.6e999393.lean.js
rename to assets/guide_q1.md.1d05c286.lean.js
index efb15321..e2e4f94d 100644
--- a/assets/guide_q1.md.6e999393.lean.js
+++ b/assets/guide_q1.md.1d05c286.lean.js
@@ -1 +1 @@
-import{_ as n,c as s,o as a,a as e}from"./app.0bd0e305.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};
+import{_ as n,c as s,o as a,d as e}from"./app.df59db74.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_q2.md.b0724251.js b/assets/guide_q2.md.bbc34a77.js
similarity index 96%
rename from assets/guide_q2.md.b0724251.js
rename to assets/guide_q2.md.bbc34a77.js
index ec92f1d8..1de8327f 100644
--- a/assets/guide_q2.md.b0724251.js
+++ b/assets/guide_q2.md.bbc34a77.js
@@ -1 +1 @@
-import{_ as e,c as t,o as a,a as n}from"./app.0bd0e305.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}; +import{_ as e,c as t,o as a,d as n}from"./app.df59db74.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.b0724251.lean.js b/assets/guide_q2.md.bbc34a77.lean.js similarity index 82% rename from assets/guide_q2.md.b0724251.lean.js rename to assets/guide_q2.md.bbc34a77.lean.js index 81082243..195c8599 100644 --- a/assets/guide_q2.md.b0724251.lean.js +++ b/assets/guide_q2.md.bbc34a77.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,a as n}from"./app.0bd0e305.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}; +import{_ as e,c as t,o as a,d as n}from"./app.df59db74.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.8095ecd9.js b/assets/guide_q3.md.638e459f.js similarity index 98% rename from assets/guide_q3.md.8095ecd9.js rename to assets/guide_q3.md.638e459f.js index 89e98614..cf101fab 100644 --- a/assets/guide_q3.md.8095ecd9.js +++ b/assets/guide_q3.md.638e459f.js @@ -1,4 +1,4 @@ -import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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 {
+import{_ as n,c as a,o as s,d as e}from"./app.df59db74.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
diff --git a/assets/guide_q3.md.8095ecd9.lean.js b/assets/guide_q3.md.638e459f.lean.js
similarity index 82%
rename from assets/guide_q3.md.8095ecd9.lean.js
rename to assets/guide_q3.md.638e459f.lean.js
index e8944387..9cb403f3 100644
--- a/assets/guide_q3.md.8095ecd9.lean.js
+++ b/assets/guide_q3.md.638e459f.lean.js
@@ -1 +1 @@
-import{_ as n,c as a,o as s,a as e}from"./app.0bd0e305.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};
+import{_ as n,c as a,o as s,d as e}from"./app.df59db74.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.baadc4a9.js b/assets/guide_q4.md.558f0e15.js
similarity index 95%
rename from assets/guide_q4.md.baadc4a9.js
rename to assets/guide_q4.md.558f0e15.js
index 17214d98..50c54a70 100644
--- a/assets/guide_q4.md.baadc4a9.js
+++ b/assets/guide_q4.md.558f0e15.js
@@ -1 +1 @@
-import{_ as a,c as o,o as r,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as o,o as r,a as e,b as t}from"./app.df59db74.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.baadc4a9.lean.js b/assets/guide_q4.md.558f0e15.lean.js
similarity index 95%
rename from assets/guide_q4.md.baadc4a9.lean.js
rename to assets/guide_q4.md.558f0e15.lean.js
index 17214d98..50c54a70 100644
--- a/assets/guide_q4.md.baadc4a9.lean.js
+++ b/assets/guide_q4.md.558f0e15.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as r,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as o,o as r,a as e,b as t}from"./app.df59db74.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_q5.md.ddba06e3.js b/assets/guide_q5.md.dbe5d504.js
similarity index 94%
rename from assets/guide_q5.md.ddba06e3.js
rename to assets/guide_q5.md.dbe5d504.js
index da2bbf0e..e33e8bb5 100644
--- a/assets/guide_q5.md.ddba06e3.js
+++ b/assets/guide_q5.md.dbe5d504.js
@@ -1 +1 @@
-import{_ as a,c as o,o as n,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as o,o as n,a as e,b as t}from"./app.df59db74.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.ddba06e3.lean.js b/assets/guide_q5.md.dbe5d504.lean.js
similarity index 94%
rename from assets/guide_q5.md.ddba06e3.lean.js
rename to assets/guide_q5.md.dbe5d504.lean.js
index da2bbf0e..e33e8bb5 100644
--- a/assets/guide_q5.md.ddba06e3.lean.js
+++ b/assets/guide_q5.md.dbe5d504.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as n,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as o,o as n,a as e,b as t}from"./app.df59db74.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_servers.md.7751d204.js b/assets/guide_servers.md.4667f244.js
similarity index 98%
rename from assets/guide_servers.md.7751d204.js
rename to assets/guide_servers.md.4667f244.js
index 3cae79f7..8b8e97bc 100644
--- a/assets/guide_servers.md.7751d204.js
+++ b/assets/guide_servers.md.4667f244.js
@@ -1 +1 @@
-import{_ as e,c as a,o as t,a as r}from"./app.0bd0e305.js";const p='{"title":"\u4E3B\u673A","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4ECB\u7ECD","slug":"\u4ECB\u7ECD"},{"level":2,"title":"\u6DFB\u52A0\u670D\u52A1\u5668","slug":"\u6DFB\u52A0\u670D\u52A1\u5668"},{"level":2,"title":"\u5B89\u88C5Agent","slug":"\u5B89\u88C5agent"},{"level":2,"title":"\u5F3A\u5236\u66F4\u65B0","slug":"\u5F3A\u5236\u66F4\u65B0"},{"level":2,"title":"\u6570\u636E\u5217","slug":"\u6570\u636E\u5217"},{"level":2,"title":"\u5728\u7EBF\u7EC8\u7AEF","slug":"\u5728\u7EBF\u7EC8\u7AEF"}],"relativePath":"guide/servers.md"}',i={},n=r('

\u4E3B\u673A

\u4ECB\u7ECD

\u4E3B\u673A\u533A\u57DF\u8D1F\u8D23\u7BA1\u7406Agent\uFF0C\u662F\u54EA\u5412\u63A2\u9488\u4E2D\u6700\u57FA\u7840\u7684\u533A\u57DF\uFF0C\u4E5F\u662F\u5176\u4ED6\u529F\u80FD\u7684\u57FA\u7840\u3002

\u6DFB\u52A0\u670D\u52A1\u5668

\u7B2C\u4E00\u6B65\u662F\u6DFB\u52A0\u4E3B\u673A\uFF0C\u53EF\u4EE5\u81EA\u5B9A\u4E49\u540D\u79F0\u3001\u5206\u7EC4\u3001\u6392\u5E8F\u548C\u5907\u6CE8\u3002
\u62E5\u6709\u76F8\u540C\u5206\u7EC4\u7684\u4E3B\u673A\u4F1A\u5728\u53D7\u652F\u6301\u7684\u4E3B\u9898\u4E2D\u5212\u5206\u5230\u4E00\u8D77\u8FDB\u884C\u663E\u793A\uFF0C\u5907\u6CE8\u4EC5\u4F1A\u5728\u540E\u53F0\u663E\u793A\uFF0C\u65E0\u9700\u62C5\u5FC3\u6CC4\u9732\u4FE1\u606F\u3002

\u5B89\u88C5Agent

\u8BF7\u53C2\u8003\u524D\u6587\u5B89\u88C5Agent
\u63A8\u8350\u4F7F\u7528\u4E00\u952E\u5B89\u88C5\uFF0C\u5373\u914D\u7F6E\u597D\u53C2\u6570\u540E\uFF0C\u70B9\u51FB\u4E3B\u673A\u4E00\u952E\u5B89\u88C5\u5217\u4E0A\u7684\u6309\u94AE\uFF0C\u590D\u5236\u5230\u76F8\u5E94\u4E3B\u673A\u8FDB\u884C\u5B89\u88C5\u3002

\u5F3A\u5236\u66F4\u65B0

\u5F3A\u5236\u66F4\u65B0\u5BF9\u5E94\u7684\u662F\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE\u4E2D\u7684--disable-auto-update\u548C--disable-force-update\u3002
\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0CAgent\u4F1A\u81EA\u52A8\u66F4\u65B0\uFF0C\u65E0\u9700\u5E72\u9884\u3002\u4F46\u5F53\u7528\u6237\u5173\u95ED\u81EA\u52A8\u66F4\u65B0\u540E\uFF0C\u4E5F\u53EF\u4EE5\u9009\u4E2D\u6307\u5B9A\u4E3B\u673A\u8FDB\u884C\u5F3A\u5236\u66F4\u65B0\u3002
disable-force-update\u5F00\u542F\u65F6\u6B64\u529F\u80FD\u4E0D\u751F\u6548\u3002

\u6570\u636E\u5217

  • \u7248\u672C\u53F7: \u8BB0\u5F55Agent\u5F53\u524D\u7248\u672C
  • \u5BC6\u94A5: \u5373secret\\key\uFF0C\u914D\u7F6EAgent\u65F6\u4F1A\u7528\u5230
  • \u4E00\u952E\u5B89\u88C5: \u8F83\u4E3A\u4FBF\u6377\u7684Agent\u5B89\u88C5\u65B9\u5F0F
  • \u7BA1\u7406: \u5DE6\u4E3AWebShell\uFF0C\u4E2D\u4E3A\u7F16\u8F91\uFF0C\u53F3\u4E3A\u5220\u9664

\u5728\u7EBF\u7EC8\u7AEF

\u5373WebShell\uFF0Cdisable-command-execute\u5F00\u542F\u65F6\u6B64\u529F\u80FD\u4E0D\u751F\u6548\u3002
Linux\u548CWindows\u5747\u53EF\u7528\uFF0C\u53EF\u4F7F\u7528Ctrl+Shift+V\u7C98\u8D34\u3002
\u8FDE\u63A5\u5931\u8D25\u8BF7\u53C2\u8003\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25\u3002
\u6CE8\u610F\u5728\u7EBF\u7EC8\u7AEF\u529F\u80FD\u4E2D\uFF0CAgent\u4E5F\u662F\u901A\u8FC7WebSocket\u8FDE\u63A5\u5230\u7528\u6237\u4F7F\u7528\u57DF\u540D\uFF0C\u800C\u975E\u901A\u8FC7grpc\u4EA4\u4E92\u3002

',13),l=[n];function d(h,s,o,c,g,u){return t(),a("div",null,l)}var b=e(i,[["render",d]]);export{p as __pageData,b as default}; +import{_ as e,c as a,o as t,d as r}from"./app.df59db74.js";const p='{"title":"\u4E3B\u673A","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4ECB\u7ECD","slug":"\u4ECB\u7ECD"},{"level":2,"title":"\u6DFB\u52A0\u670D\u52A1\u5668","slug":"\u6DFB\u52A0\u670D\u52A1\u5668"},{"level":2,"title":"\u5B89\u88C5Agent","slug":"\u5B89\u88C5agent"},{"level":2,"title":"\u5F3A\u5236\u66F4\u65B0","slug":"\u5F3A\u5236\u66F4\u65B0"},{"level":2,"title":"\u6570\u636E\u5217","slug":"\u6570\u636E\u5217"},{"level":2,"title":"\u5728\u7EBF\u7EC8\u7AEF","slug":"\u5728\u7EBF\u7EC8\u7AEF"}],"relativePath":"guide/servers.md"}',i={},n=r('

\u4E3B\u673A

\u4ECB\u7ECD

\u4E3B\u673A\u533A\u57DF\u8D1F\u8D23\u7BA1\u7406Agent\uFF0C\u662F\u54EA\u5412\u63A2\u9488\u4E2D\u6700\u57FA\u7840\u7684\u533A\u57DF\uFF0C\u4E5F\u662F\u5176\u4ED6\u529F\u80FD\u7684\u57FA\u7840\u3002

\u6DFB\u52A0\u670D\u52A1\u5668

\u7B2C\u4E00\u6B65\u662F\u6DFB\u52A0\u4E3B\u673A\uFF0C\u53EF\u4EE5\u81EA\u5B9A\u4E49\u540D\u79F0\u3001\u5206\u7EC4\u3001\u6392\u5E8F\u548C\u5907\u6CE8\u3002
\u62E5\u6709\u76F8\u540C\u5206\u7EC4\u7684\u4E3B\u673A\u4F1A\u5728\u53D7\u652F\u6301\u7684\u4E3B\u9898\u4E2D\u5212\u5206\u5230\u4E00\u8D77\u8FDB\u884C\u663E\u793A\uFF0C\u5907\u6CE8\u4EC5\u4F1A\u5728\u540E\u53F0\u663E\u793A\uFF0C\u65E0\u9700\u62C5\u5FC3\u6CC4\u9732\u4FE1\u606F\u3002

\u5B89\u88C5Agent

\u8BF7\u53C2\u8003\u524D\u6587\u5B89\u88C5Agent
\u63A8\u8350\u4F7F\u7528\u4E00\u952E\u5B89\u88C5\uFF0C\u5373\u914D\u7F6E\u597D\u53C2\u6570\u540E\uFF0C\u70B9\u51FB\u4E3B\u673A\u4E00\u952E\u5B89\u88C5\u5217\u4E0A\u7684\u6309\u94AE\uFF0C\u590D\u5236\u5230\u76F8\u5E94\u4E3B\u673A\u8FDB\u884C\u5B89\u88C5\u3002

\u5F3A\u5236\u66F4\u65B0

\u5F3A\u5236\u66F4\u65B0\u5BF9\u5E94\u7684\u662F\u81EA\u5B9A\u4E49agent\u76D1\u63A7\u9879\u76EE\u4E2D\u7684--disable-auto-update\u548C--disable-force-update\u3002
\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0CAgent\u4F1A\u81EA\u52A8\u66F4\u65B0\uFF0C\u65E0\u9700\u5E72\u9884\u3002\u4F46\u5F53\u7528\u6237\u5173\u95ED\u81EA\u52A8\u66F4\u65B0\u540E\uFF0C\u4E5F\u53EF\u4EE5\u9009\u4E2D\u6307\u5B9A\u4E3B\u673A\u8FDB\u884C\u5F3A\u5236\u66F4\u65B0\u3002
disable-force-update\u5F00\u542F\u65F6\u6B64\u529F\u80FD\u4E0D\u751F\u6548\u3002

\u6570\u636E\u5217

  • \u7248\u672C\u53F7: \u8BB0\u5F55Agent\u5F53\u524D\u7248\u672C
  • \u5BC6\u94A5: \u5373secret\\key\uFF0C\u914D\u7F6EAgent\u65F6\u4F1A\u7528\u5230
  • \u4E00\u952E\u5B89\u88C5: \u8F83\u4E3A\u4FBF\u6377\u7684Agent\u5B89\u88C5\u65B9\u5F0F
  • \u7BA1\u7406: \u5DE6\u4E3AWebShell\uFF0C\u4E2D\u4E3A\u7F16\u8F91\uFF0C\u53F3\u4E3A\u5220\u9664

\u5728\u7EBF\u7EC8\u7AEF

\u5373WebShell\uFF0Cdisable-command-execute\u5F00\u542F\u65F6\u6B64\u529F\u80FD\u4E0D\u751F\u6548\u3002
Linux\u548CWindows\u5747\u53EF\u7528\uFF0C\u53EF\u4F7F\u7528Ctrl+Shift+V\u7C98\u8D34\u3002
\u8FDE\u63A5\u5931\u8D25\u8BF7\u53C2\u8003\u5B9E\u65F6\u901A\u9053\u65AD\u5F00/\u5728\u7EBF\u7EC8\u7AEF\u8FDE\u63A5\u5931\u8D25\u3002
\u6CE8\u610F\u5728\u7EBF\u7EC8\u7AEF\u529F\u80FD\u4E2D\uFF0CAgent\u4E5F\u662F\u901A\u8FC7WebSocket\u8FDE\u63A5\u5230\u7528\u6237\u4F7F\u7528\u57DF\u540D\uFF0C\u800C\u975E\u901A\u8FC7grpc\u4EA4\u4E92\u3002

',13),l=[n];function d(h,s,o,c,g,u){return t(),a("div",null,l)}var b=e(i,[["render",d]]);export{p as __pageData,b as default}; diff --git a/assets/guide_servers.md.7751d204.lean.js b/assets/guide_servers.md.4667f244.lean.js similarity index 91% rename from assets/guide_servers.md.7751d204.lean.js rename to assets/guide_servers.md.4667f244.lean.js index 63c59d0a..bd5b6134 100644 --- a/assets/guide_servers.md.7751d204.lean.js +++ b/assets/guide_servers.md.4667f244.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a as r}from"./app.0bd0e305.js";const p='{"title":"\u4E3B\u673A","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4ECB\u7ECD","slug":"\u4ECB\u7ECD"},{"level":2,"title":"\u6DFB\u52A0\u670D\u52A1\u5668","slug":"\u6DFB\u52A0\u670D\u52A1\u5668"},{"level":2,"title":"\u5B89\u88C5Agent","slug":"\u5B89\u88C5agent"},{"level":2,"title":"\u5F3A\u5236\u66F4\u65B0","slug":"\u5F3A\u5236\u66F4\u65B0"},{"level":2,"title":"\u6570\u636E\u5217","slug":"\u6570\u636E\u5217"},{"level":2,"title":"\u5728\u7EBF\u7EC8\u7AEF","slug":"\u5728\u7EBF\u7EC8\u7AEF"}],"relativePath":"guide/servers.md"}',i={},n=r("",13),l=[n];function d(h,s,o,c,g,u){return t(),a("div",null,l)}var b=e(i,[["render",d]]);export{p as __pageData,b as default}; +import{_ as e,c as a,o as t,d as r}from"./app.df59db74.js";const p='{"title":"\u4E3B\u673A","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4ECB\u7ECD","slug":"\u4ECB\u7ECD"},{"level":2,"title":"\u6DFB\u52A0\u670D\u52A1\u5668","slug":"\u6DFB\u52A0\u670D\u52A1\u5668"},{"level":2,"title":"\u5B89\u88C5Agent","slug":"\u5B89\u88C5agent"},{"level":2,"title":"\u5F3A\u5236\u66F4\u65B0","slug":"\u5F3A\u5236\u66F4\u65B0"},{"level":2,"title":"\u6570\u636E\u5217","slug":"\u6570\u636E\u5217"},{"level":2,"title":"\u5728\u7EBF\u7EC8\u7AEF","slug":"\u5728\u7EBF\u7EC8\u7AEF"}],"relativePath":"guide/servers.md"}',i={},n=r("",13),l=[n];function d(h,s,o,c,g,u){return t(),a("div",null,l)}var b=e(i,[["render",d]]);export{p as __pageData,b as default}; diff --git a/assets/guide_services.md.f3d9de01.js b/assets/guide_services.md.69b86c0d.js similarity index 68% rename from assets/guide_services.md.f3d9de01.js rename to assets/guide_services.md.69b86c0d.js index e8ca1ddc..4f1a9b8e 100644 --- a/assets/guide_services.md.f3d9de01.js +++ b/assets/guide_services.md.69b86c0d.js @@ -1 +1 @@ -import{_ as s,c as o,o as a,b as e,d as t}from"./app.0bd0e305.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}; +import{_ as s,c as o,o as a,a as e,b as t}from"./app.df59db74.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 i(d,l,p,u,f,h){return a(),o("div",null,_)}var x=s(c,[["render",i]]);export{v as __pageData,x as default}; diff --git a/assets/guide_services.md.f3d9de01.lean.js b/assets/guide_services.md.69b86c0d.lean.js similarity index 68% rename from assets/guide_services.md.f3d9de01.lean.js rename to assets/guide_services.md.69b86c0d.lean.js index e8ca1ddc..4f1a9b8e 100644 --- a/assets/guide_services.md.f3d9de01.lean.js +++ b/assets/guide_services.md.69b86c0d.lean.js @@ -1 +1 @@ -import{_ as s,c as o,o as a,b as e,d as t}from"./app.0bd0e305.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}; +import{_ as s,c as o,o as a,a as e,b as t}from"./app.df59db74.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 i(d,l,p,u,f,h){return a(),o("div",null,_)}var x=s(c,[["render",i]]);export{v as __pageData,x as default}; diff --git a/assets/guide_settings.md.1a145ca7.js b/assets/guide_settings.md.85f8a6c0.js similarity index 99% rename from assets/guide_settings.md.1a145ca7.js rename to assets/guide_settings.md.85f8a6c0.js index ac83a861..4214c201 100644 --- a/assets/guide_settings.md.1a145ca7.js +++ b/assets/guide_settings.md.85f8a6c0.js @@ -1,4 +1,4 @@ -import{_ as n,c as s,o as a,a as t}from"./app.0bd0e305.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>
+import{_ as n,c as s,o as a,d as t}from"./app.df59db74.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;
 }
diff --git a/assets/guide_settings.md.1a145ca7.lean.js b/assets/guide_settings.md.85f8a6c0.lean.js
similarity index 86%
rename from assets/guide_settings.md.1a145ca7.lean.js
rename to assets/guide_settings.md.85f8a6c0.lean.js
index 0b8254cd..41e8bc7d 100644
--- a/assets/guide_settings.md.1a145ca7.lean.js
+++ b/assets/guide_settings.md.85f8a6c0.lean.js
@@ -1 +1 @@
-import{_ as n,c as s,o as a,a as t}from"./app.0bd0e305.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};
+import{_ as n,c as s,o as a,d as t}from"./app.df59db74.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_tasks.md.a388c442.js b/assets/guide_tasks.md.a388c442.js
new file mode 100644
index 00000000..9cb540db
--- /dev/null
+++ b/assets/guide_tasks.md.a388c442.js
@@ -0,0 +1 @@
+import{_ as t,c as s,o as a,a as e}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},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 a(),s("div",null,n)}var k=t(o,[["render",_]]);export{m as __pageData,k as default};
diff --git a/assets/guide_tasks.md.a388c442.lean.js b/assets/guide_tasks.md.a388c442.lean.js
new file mode 100644
index 00000000..9cb540db
--- /dev/null
+++ b/assets/guide_tasks.md.a388c442.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as s,o as a,a as e}from"./app.df59db74.js";const m='{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tasks.md"}',o={},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 a(),s("div",null,n)}var k=t(o,[["render",_]]);export{m as __pageData,k as default};
diff --git a/assets/guide_tasks.md.c5594dbb.js b/assets/guide_tasks.md.c5594dbb.js
deleted file mode 100644
index 4171fdbc..00000000
--- a/assets/guide_tasks.md.c5594dbb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as s,o,b as e}from"./app.0bd0e305.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.c5594dbb.lean.js b/assets/guide_tasks.md.c5594dbb.lean.js
deleted file mode 100644
index 4171fdbc..00000000
--- a/assets/guide_tasks.md.c5594dbb.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as s,o,b as e}from"./app.0bd0e305.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/index.md.13b009d3.js b/assets/index.md.04a49936.js
similarity index 96%
rename from assets/index.md.13b009d3.js
rename to assets/index.md.04a49936.js
index aee7ee48..26fe2436 100644
--- a/assets/index.md.13b009d3.js
+++ b/assets/index.md.04a49936.js
@@ -1 +1 @@
-import{_ as a,c as r,o,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as r,o,a as e,b as t}from"./app.df59db74.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.13b009d3.lean.js b/assets/index.md.04a49936.lean.js
similarity index 96%
rename from assets/index.md.13b009d3.lean.js
rename to assets/index.md.04a49936.lean.js
index aee7ee48..26fe2436 100644
--- a/assets/index.md.13b009d3.lean.js
+++ b/assets/index.md.04a49936.lean.js
@@ -1 +1 @@
-import{_ as a,c as r,o,b as e,d as t}from"./app.0bd0e305.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};
+import{_ as a,c as r,o,a as e,b as t}from"./app.df59db74.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/developer/algolia-search.html b/developer/algolia-search.html
deleted file mode 100644
index d411cc74..00000000
--- a/developer/algolia-search.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-  
-    
-    
-    Theme Config: Algolia Search | 哪吒监控
-    
-    
-    
-    
-    
-    
-  
-  
-  
-    

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',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

For more options, check out Algolia DocSearch's documentation. You can pass any extra option alongside other options, e.g. passing searchParameters:

module.exports = {
-  themeConfig: {
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name',
-      searchParameters: {
-        facetFilters: ['tags:guide,api']
-      }
-    }
-  }
-}
-

Internationalization (i18n)

If you have multiple locales in your documentation and you have defined a locales object in your themeConfig:

module.exports = {
-  themeConfig: {
-    locales: {
-      // ...
-    },
-    algolia: {
-      appId: 'your_app_id',
-      apiKey: 'your_api_key',
-      indexName: 'index_name'
-    }
-  }
-}
-

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 deleted file mode 100644 index 52383c7e..00000000 --- a/developer/basics.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - App Config: Basics | 哪吒监控 - - - - - - - - - -

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 = {
-  lang: 'en-US'
-}
-

title

  • Type: string
  • Default: VitePress

Title for the site. This will be the suffix for all page titles, and displayed in the navbar.

module.exports = {
-  title: 'VitePress'
-}
-

description

  • Type: string
  • Default: A VitePress site

Description for the site. This will render as a <meta> tag in the page HTML.

module.exports = {
-  description: 'A VitePress site'
-}
-
- - - - - \ No newline at end of file diff --git a/developer/carbon-ads.html b/developer/carbon-ads.html deleted file mode 100644 index 8bc09d16..00000000 --- a/developer/carbon-ads.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - Theme Config: Carbon Ads | 哪吒监控 - - - - - - - - - -

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',
-      custom: 'your-carbon-custom',
-      placement: 'your-carbon-placement'
-    }
-  }
-}
-
- - - - - \ No newline at end of file diff --git a/developer/homepage.html b/developer/homepage.html deleted file mode 100644 index 8598c1da..00000000 --- a/developer/homepage.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - Theme Config: Homepage | 哪吒监控 - - - - - - - - - -

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
-heroText: Hero Title
-tagline: Hero subtitle
-actionText: Get Started
-actionLink: /guide/
-features:
-  - title: Simplicity First
-    details: Minimal setup with markdown-centered project structure helps you focus on writing.
-  - title: Vue-Powered
-    details: Enjoy the dev experience of Vue + webpack, use Vue components in markdown, and develop custom themes with Vue.
-  - title: Performant
-    details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded.
-footer: MIT Licensed | Copyright © 2019-present Evan You
----
-
- - - - - \ No newline at end of file diff --git a/developer/index.html b/developer/index.html new file mode 100644 index 00000000..9f6e4bc1 --- /dev/null +++ b/developer/index.html @@ -0,0 +1,21 @@ + + + + + + 哪吒监控 + + + + + + + + + +

开发手册

欢迎使用哪吒监控开发手册,我们欢迎你提出高质量的Pull Request,帮助哪吒监控变得更好!

Copyright © 2022-present Nezhahq

+ + + + + \ No newline at end of file diff --git a/developer/theme.html b/developer/theme.html new file mode 100644 index 00000000..52bfc27c --- /dev/null +++ b/developer/theme.html @@ -0,0 +1,21 @@ + + + + + + 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/developer/algolia-search.html b/en_US/developer/algolia-search.html deleted file mode 100644 index a0dc4049..00000000 --- a/en_US/developer/algolia-search.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 979a09cf..00000000 --- a/en_US/developer/basics.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 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 deleted file mode 100644 index bfa2061e..00000000 --- a/en_US/developer/carbon-ads.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 94e02e20..00000000 --- a/en_US/developer/homepage.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - Theme Config: Homepage | Nezha Monitoring - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/en_US/developer/index.html b/en_US/developer/index.html new file mode 100644 index 00000000..306f4958 --- /dev/null +++ b/en_US/developer/index.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + +

Development Manual

Welcome to the Nezha Monitoring Development Manual.

Copyright © 2022-present Nezhahq

+ + + + + \ No newline at end of file diff --git a/en_US/developer/theme.html b/en_US/developer/theme.html new file mode 100644 index 00000000..90904cde --- /dev/null +++ b/en_US/developer/theme.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/agent.html b/en_US/guide/agent.html index 4c33d6c3..296cf29b 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/api.html b/en_US/guide/api.html new file mode 100644 index 00000000..cb154b5c --- /dev/null +++ b/en_US/guide/api.html @@ -0,0 +1,21 @@ + + + + + + Nezha Monitoring + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en_US/guide/dashboard.html b/en_US/guide/dashboard.html index 6f2d0665..49f67ae0 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/
@@ -37,8 +37,8 @@ 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" ,不更改此项可能会导致你无法登陆面板后台

- - + + \ No newline at end of file diff --git a/en_US/guide/notifications.html b/en_US/guide/notifications.html index 99900f7b..9137f659 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/q2.html b/en_US/guide/q2.html index f7228342..716566ff 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 b0a492ee..8f54568d 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 bf6ccb0b..2353ad4f 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 4f0d1b8d..e1e740f4 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 604d6033..43708eac 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 6362d59a..f7c76741 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 9441cfd0..ea881323 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 5a99af88..be0bf8d1 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 b3b8776d..7c77539e 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 0f325a1d..1e3a3249 100644 --- a/guide/agent.html +++ b/guide/agent.html @@ -6,14 +6,14 @@ 一键安装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
  • 输入面板通信端口(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
 
@@ -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/guide/api.html b/guide/api.html new file mode 100644 index 00000000..66c985ac --- /dev/null +++ b/guide/api.html @@ -0,0 +1,21 @@ + + + + + + 哪吒监控 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guide/dashboard.html b/guide/dashboard.html index 6725bd28..3931e0ed 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/
@@ -37,8 +37,8 @@ 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" ,不更改此项可能会导致你无法登陆面板后台

- - + + \ No newline at end of file diff --git a/guide/notifications.html b/guide/notifications.html index ae52e744..f09de129 100644 --- a/guide/notifications.html +++ b/guide/notifications.html @@ -6,16 +6,16 @@ 灵活的通知方式 | 哪吒监控 - - + + -

哪吒监控支持对服务器的负载、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}}]

- - +

哪吒监控支持对服务器的负载、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 67a8ae4b..910f14cb 100644 --- a/guide/q1.html +++ b/guide/q1.html @@ -6,14 +6,14 @@ 准备工作 | 哪吒监控 - - + + -

准备工作

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

NGINX配置

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

# http强制跳转到htpps
+    

准备工作

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

NGINX配置

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

# http强制跳转到htpps
 server {
     listen 80;
     listen [::]:80;
@@ -59,9 +59,9 @@ 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 44fb49bd..198240e2 100644 --- a/guide/q2.html +++ b/guide/q2.html @@ -6,16 +6,16 @@ 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?
- - +

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 dbbc99cc..ab48269e 100644 --- a/guide/q3.html +++ b/guide/q3.html @@ -6,14 +6,14 @@ 反向代理 gRPC 端口(支持 Cloudflare CDN) | 哪吒监控 - - + + -

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

使用 Nginx 或者 Caddy 反向代理 gRPC

  • Nginx 配置
server {
+    

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

使用 Nginx 或者 Caddy 反向代理 gRPC

  • Nginx 配置
server {
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     server_name data.example.com; # 你的 Agent 连接 Dashboard 的域名
@@ -38,8 +38,8 @@
     }
 }
 

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 1ff8ea3d..c68cf179 100644 --- a/guide/q4.html +++ b/guide/q4.html @@ -6,16 +6,16 @@ 实时通道断开/在线终端连接失败 | 哪吒监控 - - + + -

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

  • 如果你使用了CDN,请确认CDN服务商提供WebSocket服务,并且已开启WebSocket
  • 确认你的反代规则中针对 /ws,/terminal 路径的 WebSocket 进行了特别配置,你可以 点击这里 查看反向代理配置
- - +

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

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

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

  1. 先运行一键脚本,选择 停止面板
  2. 在旧服务器中打包 /opt/nezha 文件夹,复制到新环境相同位置解压
  3. 在新环境中运行一键脚本,选择 启动面板
- - +

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

  1. 先运行一键脚本,选择 停止面板
  2. 在旧服务器中打包 /opt/nezha 文件夹,复制到新环境相同位置解压
  3. 在新环境中运行一键脚本,选择 启动面板
+ + \ No newline at end of file diff --git a/guide/servers.html b/guide/servers.html index 0c8ac826..308b78b6 100644 --- a/guide/servers.html +++ b/guide/servers.html @@ -6,16 +6,16 @@ 主机 | 哪吒监控 - - + + -

主机

介绍

主机区域负责管理Agent,是哪吒探针中最基础的区域,也是其他功能的基础。

添加服务器

第一步是添加主机,可以自定义名称、分组、排序和备注。
拥有相同分组的主机会在受支持的主题中划分到一起进行显示,备注仅会在后台显示,无需担心泄露信息。

安装Agent

请参考前文安装Agent
推荐使用一键安装,即配置好参数后,点击主机一键安装列上的按钮,复制到相应主机进行安装。

强制更新

强制更新对应的是自定义agent监控项目中的--disable-auto-update和--disable-force-update。
默认情况下,Agent会自动更新,无需干预。但当用户关闭自动更新后,也可以选中指定主机进行强制更新。
disable-force-update开启时此功能不生效。

数据列

  • 版本号: 记录Agent当前版本
  • 密钥: 即secret\key,配置Agent时会用到
  • 一键安装: 较为便捷的Agent安装方式
  • 管理: 左为WebShell,中为编辑,右为删除

在线终端

即WebShell,disable-command-execute开启时此功能不生效。
Linux和Windows均可用,可使用Ctrl+Shift+V粘贴。
连接失败请参考实时通道断开/在线终端连接失败
注意在线终端功能中,Agent也是通过WebSocket连接到用户使用域名,而非通过grpc交互。

- - +

主机

介绍

主机区域负责管理Agent,是哪吒探针中最基础的区域,也是其他功能的基础。

添加服务器

第一步是添加主机,可以自定义名称、分组、排序和备注。
拥有相同分组的主机会在受支持的主题中划分到一起进行显示,备注仅会在后台显示,无需担心泄露信息。

安装Agent

请参考前文安装Agent
推荐使用一键安装,即配置好参数后,点击主机一键安装列上的按钮,复制到相应主机进行安装。

强制更新

强制更新对应的是自定义agent监控项目中的--disable-auto-update和--disable-force-update。
默认情况下,Agent会自动更新,无需干预。但当用户关闭自动更新后,也可以选中指定主机进行强制更新。
disable-force-update开启时此功能不生效。

数据列

  • 版本号: 记录Agent当前版本
  • 密钥: 即secret\key,配置Agent时会用到
  • 一键安装: 较为便捷的Agent安装方式
  • 管理: 左为WebShell,中为编辑,右为删除

在线终端

即WebShell,disable-command-execute开启时此功能不生效。
Linux和Windows均可用,可使用Ctrl+Shift+V粘贴。
连接失败请参考实时通道断开/在线终端连接失败
注意在线终端功能中,Agent也是通过WebSocket连接到用户使用域名,而非通过grpc交互。

+ + \ No newline at end of file diff --git a/guide/services.html b/guide/services.html index 9d4882fe..627f9c6e 100644 --- a/guide/services.html +++ b/guide/services.html @@ -6,16 +6,16 @@ 哪吒监控 - - + + - - - + + + \ No newline at end of file diff --git a/guide/settings.html b/guide/settings.html index 26382d20..f6efe114 100644 --- a/guide/settings.html +++ b/guide/settings.html @@ -6,14 +6,14 @@ 多语言 | 哪吒监控 - - + + -

多语言

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

  • 简体中文
  • English
  • Español


我们欢迎您贡献更多语言

自定义代码

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

WARNING

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


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

<style>
+    

多语言

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

  • 简体中文
  • English
  • Español


我们欢迎您贡献更多语言

自定义代码

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

WARNING

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


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

<style>
 .ui.fine.progress> .bar {
     background-color: pink !important;
 }
@@ -56,9 +56,9 @@ avatar.stylebackground: 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 02addb28..f9544000 100644 --- a/guide/tasks.html +++ b/guide/tasks.html @@ -6,16 +6,16 @@ 哪吒监控 - - + + - - - + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 5d1d82bf..81eac9aa 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"developer_algolia-search.md":"64bfe4e3","developer_basics.md":"5633887d","developer_carbon-ads.md":"3455e72e","developer_homepage.md":"5fcd3da5","en_us_developer_algolia-search.md":"8cc4bbdc","en_us_developer_basics.md":"413898e4","en_us_developer_carbon-ads.md":"6c85c102","en_us_developer_homepage.md":"04079155","en_us_guide_agent.md":"743f0cf3","en_us_guide_dashboard.md":"2126504b","en_us_guide_notifications.md":"fd0fbc68","en_us_guide_q2.md":"2ef984ad","en_us_guide_q3.md":"5a2ee1b2","en_us_guide_q4.md":"5fd3c2e1","en_us_guide_q5.md":"9213a1d9","en_us_guide_servers.md":"81fca59f","en_us_guide_services.md":"454a41ef","en_us_guide_settings.md":"434d82b0","en_us_guide_tasks.md":"c8eb4c7e","en_us_index.md":"a675940b","guide_agent.md":"913e362f","guide_dashboard.md":"9f2fda52","guide_notifications.md":"33c483a1","guide_q1.md":"6e999393","guide_q2.md":"b0724251","guide_q3.md":"8095ecd9","guide_q4.md":"baadc4a9","guide_q5.md":"ddba06e3","guide_servers.md":"7751d204","guide_services.md":"f3d9de01","guide_settings.md":"1a145ca7","guide_tasks.md":"c5594dbb","index.md":"13b009d3"} +{"developer_index.md":"2bbbc80b","developer_theme.md":"1d1c122b","en_us_developer_index.md":"e7cb06fe","en_us_developer_theme.md":"ef55027d","en_us_guide_agent.md":"925eb5ae","en_us_guide_api.md":"7ff0060d","en_us_guide_dashboard.md":"188af1d7","en_us_guide_notifications.md":"0b3dd91b","en_us_guide_q2.md":"f508f2dc","en_us_guide_q3.md":"a89f3057","en_us_guide_q4.md":"a108c972","en_us_guide_q5.md":"c3a91a3b","en_us_guide_servers.md":"197bfc37","en_us_guide_services.md":"a9b671d9","en_us_guide_settings.md":"eba045c8","en_us_guide_tasks.md":"0cb67a65","en_us_index.md":"1d02a3f6","guide_agent.md":"88016e1f","guide_api.md":"55eb4937","guide_dashboard.md":"b1c30525","guide_notifications.md":"67995f65","guide_q1.md":"1d05c286","guide_q2.md":"bbc34a77","guide_q3.md":"638e459f","guide_q4.md":"558f0e15","guide_q5.md":"dbe5d504","guide_servers.md":"4667f244","guide_services.md":"69b86c0d","guide_settings.md":"85f8a6c0","guide_tasks.md":"a388c442","index.md":"04a49936"} diff --git a/index.html b/index.html index 161a12e7..e182f051 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