deploy: 9cc65fee989a856eeba7f6fe35bbecac8a571e25
3
_headers
@ -1,3 +0,0 @@
|
||||
/assets/*
|
||||
cache-control: max-age=31536000
|
||||
cache-control: immutable
|
Before Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 338 KiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 329 KiB |
@ -1,29 +0,0 @@
|
||||
<svg id="CNSC" xmlns="http://www.w3.org/2000/svg" width="108.85157" height="40" viewBox="0 0 108.85157 40">
|
||||
<title>Download_on_the_App_Store_Badge_CNSC_RGB_blk_092917</title>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M99.32227,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H99.32227c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269C100.04687,0,99.68167,0,99.32227,0Z" style="fill: #a6a6a6"/>
|
||||
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875h91.956l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993A5.76267,5.76267,0,0,1,107.794,5.667a12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M41.16742,16.55462H37.11585l-.973,2.873H34.42678L38.26437,8.79837h1.783l3.83759,10.62922H42.13957Zm-3.632-1.32573H40.747l-1.58318-4.66261h-.0443Z" style="fill: #fff"/>
|
||||
<path d="M52.1728,15.55322c0,2.40821-1.28895,3.95545-3.23407,3.95545a2.62719,2.62719,0,0,1-2.4383-1.35582h-.03678v3.83842H44.87294V11.678h1.53972V12.967h.02926a2.749,2.749,0,0,1,2.46756-1.37C50.87633,11.59694,52.1728,13.1517,52.1728,15.55322Zm-1.635,0c0-1.569-.81082-2.60046-2.04794-2.60046-1.21539,0-2.03289,1.05323-2.03289,2.60046,0,1.56145.8175,2.60715,2.03289,2.60715C49.727,18.16037,50.53779,17.1364,50.53779,15.55322Z" style="fill: #fff"/>
|
||||
<path d="M60.70267,15.55322c0,2.40821-1.28937,3.95545-3.23449,3.95545a2.62719,2.62719,0,0,1-2.4383-1.35582H54.9931v3.83842H53.4024V11.678h1.53972V12.967h.02926a2.749,2.749,0,0,1,2.46756-1.37C59.40578,11.59694,60.70267,13.1517,60.70267,15.55322Zm-1.63543,0c0-1.569-.81082-2.60046-2.04794-2.60046-1.21539,0-2.03289,1.05323-2.03289,2.60046,0,1.56145.8175,2.60715,2.03289,2.60715C58.25643,18.16037,59.06725,17.1364,59.06725,15.55322Z" style="fill: #fff"/>
|
||||
<path d="M66.3391,16.466c.11786,1.05406,1.14183,1.74618,2.54112,1.74618,1.34077,0,2.30539-.69212,2.30539-1.64253,0-.825-.58178-1.319-1.95933-1.65758l-1.37755-.33185c-1.95181-.47144-2.85792-1.38424-2.85792-2.86544,0-1.834,1.59823-3.09364,3.86684-3.09364,2.24688,0,3.7866,1.25969,3.83842,3.09364H71.09032c-.09613-1.06075-.973-1.701-2.2544-1.701s-2.15828.64782-2.15828,1.59071c0,.75147.56,1.19366,1.93008,1.53219l1.17109.28755c2.18085.51575,3.08612,1.39176,3.08612,2.94652,0,1.98859-1.58318,3.23407-4.10257,3.23407-2.35722,0-3.94876-1.21623-4.05158-3.13878Z" style="fill: #fff"/>
|
||||
<path d="M76.29961,9.84407v1.834h1.47368v1.25969H76.29961V17.21c0,.6637.29507.973.94289.973a4.971,4.971,0,0,0,.52327-.03678v1.25217a4.36838,4.36838,0,0,1-.88354.07356c-1.569,0-2.18085-.5893-2.18085-2.09224V12.93771H73.5746V11.678h1.12678v-1.834Z" style="fill: #fff"/>
|
||||
<path d="M78.6259,15.55322c0-2.4383,1.43607-3.97049,3.67542-3.97049,2.24688,0,3.67626,1.53219,3.67626,3.97049,0,2.445-1.42185,3.97049-3.67626,3.97049C80.04776,19.52372,78.6259,17.99821,78.6259,15.55322Zm5.73089,0c0-1.67262-.76651-2.65981-2.05546-2.65981s-2.05546.99471-2.05546,2.65981c0,1.67931.76651,2.659,2.05546,2.659S84.35679,17.23253,84.35679,15.55322Z" style="fill: #fff"/>
|
||||
<path d="M87.2891,11.678h1.51715v1.319H88.843a1.84835,1.84835,0,0,1,1.864-1.40012,2.4533,2.4533,0,0,1,.545.05935v1.48789a2.22372,2.22372,0,0,0-.71469-.09613,1.6029,1.6029,0,0,0-1.65758,1.783v4.59658H87.2891Z" style="fill: #fff"/>
|
||||
<path d="M98.5862,17.15145a3.11011,3.11011,0,0,1-3.33689,2.37227c-2.2544,0-3.65369-1.51046-3.65369-3.93372,0-2.43078,1.40681-4.00727,3.58682-4.00727,2.14407,0,3.49236,1.47284,3.49236,3.82254v.545H93.20138v.09613a2.01837,2.01837,0,0,0,2.08472,2.19506,1.75329,1.75329,0,0,0,1.78965-1.09Zm-5.3773-2.31292h3.87437a1.86367,1.86367,0,0,0-1.90082-1.96686A1.96188,1.96188,0,0,0,93.2089,14.83853Z" style="fill: #fff"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M34.42873,24.04h7.46143v.78027H38.34328v1.10352q.76245.353,1.53467.77832.772.4248,1.562.91211l-.45947.7168q-.813-.51855-1.46094-.91406-.64819-.39551-1.17627-.65723v4.6084h-.79053V24.82031h-3.124Z" style="fill: #fff"/>
|
||||
<path d="M43.95607,24.27441h1.562v-.62988h.772v.62988h1.44727v.7168H46.29006v.61035h1.82422q-.01831-.44971-.03662-.93945-.019-.48926-.01855-1.02637h.76709q0,.54639.01611,1.03125t.03467.93457h2.03076v.72656H48.91359q.03662.50537.09424.92285c.03809.2793.07275.52832.10352.749a1.65659,1.65659,0,0,1,.05518.22363c.01221.07129.02441.14453.03662.21777A8.07449,8.07449,0,0,0,49.543,27.582q.15161-.4541.27588-.97363l.70313.32129a9.7383,9.7383,0,0,1-1.00635,2.57813c.02441.06055.05127.123.08057.18555q.04321.09375.08936.18164.28931.57422.45947.57422.115,0,.2666-1.208l.67529.3584q-.28931,1.67725-.85449,1.67676-.42773,0-.96973-.75391a2.1332,2.1332,0,0,1-.188-.3584,5.12,5.12,0,0,1-1.40186,1.2041l-.436-.62891a4.19187,4.19187,0,0,0,1.48828-1.40234q-.08276-.271-.16748-.55762-.085-.28711-.145-.59961a12.605,12.605,0,0,1-.26172-1.85156H43.51955v-.72656h1.99854v-.61035h-1.562Zm3.78125,5.28809V30.252q-.30322.03662-.61328.06836c-.20654.02148-.416.04492-.627.06934v.95117h-.772v-.85449q-.43652.03662-.88721.06836c-.2998.02148-.605.0498-.91406.083l-.10107-.74414q.50977-.019.97852-.05273.46875-.03516.92383-.0625V29.1582H44.19045l-.16113-.62988a5.21327,5.21327,0,0,0,.55615-.88672h-.80859v-.70312h1.11621a1.73325,1.73325,0,0,0,.09668-.26855q.03662-.13477.0918-.28711l.75342.13379c-.03027.085-.05469.16113-.07324.22754a.99246.99246,0,0,1-.07812.19434h2.09033v.70313H45.40334q-.12378.249-.25049.46t-.23682.40918h.80908V27.9541h.772v.55664h1.19434v.64746H46.49709v.53711c.21094-.01758.42041-.03906.627-.06152Q47.43386,29.59863,47.73732,29.5625Zm1.34619-5.459.5835-.39453a12.55594,12.55594,0,0,1,.979,1.23633l-.59277.42188q-.17944-.28418-.42041-.60352Q49.39113,24.44434,49.08352,24.10352Z" style="fill: #fff"/>
|
||||
</g>
|
||||
<g id="_Group_" data-name="<Group>">
|
||||
<g id="_Group_2" data-name="<Group>">
|
||||
<path id="_Path_" data-name="<Path>" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
|
||||
<path id="_Path_2" data-name="<Path>" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.4 KiB |
@ -1,46 +0,0 @@
|
||||
<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="119.66407" height="40" viewBox="0 0 119.66407 40">
|
||||
<title>Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</title>
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"/>
|
||||
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
|
||||
</g>
|
||||
<g id="_Group_" data-name="<Group>">
|
||||
<g id="_Group_2" data-name="<Group>">
|
||||
<g id="_Group_3" data-name="<Group>">
|
||||
<path id="_Path_" data-name="<Path>" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
|
||||
<path id="_Path_2" data-name="<Path>" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"/>
|
||||
<path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.91895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"/>
|
||||
<path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"/>
|
||||
<path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"/>
|
||||
<path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"/>
|
||||
<path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="_Group_4" data-name="<Group>">
|
||||
<g>
|
||||
<path d="M37.82619,8.731a2.63964,2.63964,0,0,1,2.80762,2.96484c0,1.90625-1.03027,3.002-2.80762,3.002H35.67092V8.731Zm-1.22852,5.123h1.125a1.87588,1.87588,0,0,0,1.96777-2.146,1.881,1.881,0,0,0-1.96777-2.13379h-1.125Z" style="fill: #fff"/>
|
||||
<path d="M41.68068,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C44.57522,13.99463,45.01369,13.42432,45.01369,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M51.57326,14.69775h-.92187l-.93066-3.31641h-.07031l-.92676,3.31641h-.91309l-1.24121-4.50293h.90137l.80664,3.436h.06641l.92578-3.436h.85254l.92578,3.436h.07031l.80273-3.436h.88867Z" style="fill: #fff"/>
|
||||
<path d="M53.85354,10.19482H54.709v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915h-.88867V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M59.09377,8.437h.88867v6.26074h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M61.21779,12.44434a2.13346,2.13346,0,1,1,4.24756,0,2.1338,2.1338,0,1,1-4.24756,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C64.11232,13.99463,64.5508,13.42432,64.5508,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M66.4009,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,66.4009,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,69.29543,13.03955Z" style="fill: #fff"/>
|
||||
<path d="M71.34816,12.44434c0-1.42285.73145-2.32422,1.86914-2.32422a1.484,1.484,0,0,1,1.38086.79h.06641V8.437h.88867v6.26074h-.85156v-.71143h-.07031a1.56284,1.56284,0,0,1-1.41406.78564C72.0718,14.772,71.34816,13.87061,71.34816,12.44434Zm.918,0c0,.95508.4502,1.52979,1.20313,1.52979.749,0,1.21191-.583,1.21191-1.52588,0-.93848-.46777-1.52979-1.21191-1.52979C72.72121,10.91846,72.26613,11.49707,72.26613,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M79.23,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C82.12453,13.99463,82.563,13.42432,82.563,12.44434Z" style="fill: #fff"/>
|
||||
<path d="M84.66945,10.19482h.85547v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915H87.605V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M93.51516,9.07373v1.1416h.97559v.74854h-.97559V13.2793c0,.47168.19434.67822.63672.67822a2.96657,2.96657,0,0,0,.33887-.02051v.74023a2.9155,2.9155,0,0,1-.4834.04541c-.98828,0-1.38184-.34766-1.38184-1.21582v-2.543h-.71484v-.74854h.71484V9.07373Z" style="fill: #fff"/>
|
||||
<path d="M95.70461,8.437h.88086v2.48145h.07031a1.3856,1.3856,0,0,1,1.373-.80664,1.48339,1.48339,0,0,1,1.55078,1.67871v2.90723H98.69v-2.688c0-.71924-.335-1.0835-.96289-1.0835a1.05194,1.05194,0,0,0-1.13379,1.1416v2.62988h-.88867Z" style="fill: #fff"/>
|
||||
<path d="M104.76125,13.48193a1.828,1.828,0,0,1-1.95117,1.30273A2.04531,2.04531,0,0,1,100.73,12.46045a2.07685,2.07685,0,0,1,2.07617-2.35254c1.25293,0,2.00879.856,2.00879,2.27V12.688h-3.17969v.0498a1.1902,1.1902,0,0,0,1.19922,1.29,1.07934,1.07934,0,0,0,1.07129-.5459Zm-3.126-1.45117h2.27441a1.08647,1.08647,0,0,0-1.1084-1.1665A1.15162,1.15162,0,0,0,101.63527,12.03076Z" style="fill: #fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 11 KiB |
@ -1 +0,0 @@
|
||||
import{U as o,a5 as p,a6 as u,a7 as l,a8 as c,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,d as P,u as v,y,x as w,af as C,ag as R,ah as b,a3 as E}from"./chunks/framework.BmdFiWrL.js";import{R as S}from"./chunks/theme.D1TJKLdg.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(T)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as r}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"自建一个TG机器人来查询服务器信息","description":"","frontmatter":{},"headers":[],"relativePath":"case/case1.md","filePath":"case/case1.md","lastUpdated":1732521523000}'),s={name:"case/case1.md"},o=r('<h1 id="自建一个tg机器人来查询服务器信息" tabindex="-1">自建一个TG机器人来查询服务器信息 <a class="header-anchor" href="#自建一个tg机器人来查询服务器信息" aria-label="Permalink to "自建一个TG机器人来查询服务器信息""></a></h1><p>贡献者:</p><ul><li><a href="https://github.com/spiritLHLS" target="_blank" rel="noreferrer">spiritLHLS</a></li><li><a href="https://github.com/Erope/" target="_blank" rel="noreferrer">Erope</a></li></ul><p>项目地址:<a href="https://github.com/spiritLHLS/nezha_api_tgbot" target="_blank" rel="noreferrer">nezha_api_tgbot</a></p><p>机器人可以通过API向面板请求服务器状态信息,得到信息后发送给用户<br> 你可以搭建此机器人来方便地查看指定服务器的当前状态且不需要打开面板</p>',5),_=[o];function i(c,n,p,l,h,d){return a(),t("div",null,_)}const u=e(s,[["render",i]]);export{m as __pageData,u as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as r}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"自建一个TG机器人来查询服务器信息","description":"","frontmatter":{},"headers":[],"relativePath":"case/case1.md","filePath":"case/case1.md","lastUpdated":1732521523000}'),s={name:"case/case1.md"},o=r("",5),_=[o];function i(c,n,p,l,h,d){return a(),t("div",null,_)}const u=e(s,[["render",i]]);export{m as __pageData,u as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a}from"./chunks/qrcode.CZOxHFH-.js";import{_ as e,c as r,o as i,a4 as t}from"./chunks/framework.BmdFiWrL.js";const b=JSON.parse('{"title":"在iOS/MacOS中使用Siri运行快捷指令查询服务器状态","description":"","frontmatter":{},"headers":[],"relativePath":"case/case2.md","filePath":"case/case2.md","lastUpdated":1732521523000}'),o={name:"case/case2.md"},c=t('<h1 id="在ios-macos中使用siri运行快捷指令查询服务器状态" tabindex="-1">在iOS/MacOS中使用Siri运行快捷指令查询服务器状态 <a class="header-anchor" href="#在ios-macos中使用siri运行快捷指令查询服务器状态" aria-label="Permalink to "在iOS/MacOS中使用Siri运行快捷指令查询服务器状态""></a></h1><p>当前版本:V1.0<br> 贡献者:</p><ul><li>白歌 <a href="https://github.com/hhhkkk520" target="_blank" rel="noreferrer">hhhkkk520</a></li></ul><h2 id="获取快捷指令" tabindex="-1">获取快捷指令 <a class="header-anchor" href="#获取快捷指令" aria-label="Permalink to "获取快捷指令""></a></h2><p>使用iPhone或iPad扫描以下二维码,获取快捷指令<br><br><img src="'+a+'" alt="coode"><br><br> MacOS用户请访问<a href="https://www.icloud.com/shortcuts/312005bf5ffd4387ac92a84056db9f09" target="_blank" rel="noreferrer">这里</a>,获取快捷指令</p><h2 id="使用说明" tabindex="-1">使用说明 <a class="header-anchor" href="#使用说明" aria-label="Permalink to "使用说明""></a></h2><ul><li>获取快捷指令后,打开并编辑快捷指令</li><li>分别在三个文本框中填入 <code>面板URL</code>、<code>API Token</code>、<code>服务器ID</code></li><li>保存编辑并测试运行,能获取结果则表示设置正确</li><li>修改快捷指令的名称,如修改为:“一号服务器状态”,保存后便可使用Siri指令:“嘿Siri,一号服务器状态”来获取服务器状态</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>每个快捷指令只能监控一台服务器,如需要监控多个服务器,请多次复制此快捷指令并分别配置,然后分别修改快捷指令名称,如;一号服务器状态、二号服务器状态等</p></div>',8),s=[c];function l(d,n,h,_,p,m){return i(),r("div",null,s)}const S=e(o,[["render",l]]);export{b as __pageData,S as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a}from"./chunks/qrcode.CZOxHFH-.js";import{_ as e,c as r,o as i,a4 as t}from"./chunks/framework.BmdFiWrL.js";const b=JSON.parse('{"title":"在iOS/MacOS中使用Siri运行快捷指令查询服务器状态","description":"","frontmatter":{},"headers":[],"relativePath":"case/case2.md","filePath":"case/case2.md","lastUpdated":1732521523000}'),o={name:"case/case2.md"},c=t("",8),s=[c];function l(d,n,h,_,p,m){return i(),r("div",null,s)}const S=e(o,[["render",l]]);export{b as __pageData,S as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o as a,a4 as d}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"自建使用 API 来进行查询,且支持多语言的 Telegram 查询机器人","description":"","frontmatter":{},"headers":[],"relativePath":"case/case3.md","filePath":"case/case3.md","lastUpdated":1732521523000}'),r={name:"case/case3.md"},l=d('<h1 id="自建使用-api-来进行查询-且支持多语言的-telegram-查询机器人" tabindex="-1">自建使用 API 来进行查询,且支持多语言的 Telegram 查询机器人 <a class="header-anchor" href="#自建使用-api-来进行查询-且支持多语言的-telegram-查询机器人" aria-label="Permalink to "自建使用 API 来进行查询,且支持多语言的 Telegram 查询机器人""></a></h1><p>贡献者:</p><ul><li><a href="https://github.com/tech-fever" target="_blank" rel="noreferrer">tech-fever</a></li></ul><p>项目地址:<a href="https://github.com/tech-fever/nezha_telegram_bot" target="_blank" rel="noreferrer">nezha_telegram_bot</a></p><h2 id="项目特色" tabindex="-1">项目特色 <a class="header-anchor" href="#项目特色" aria-label="Permalink to "项目特色""></a></h2><p>开源Telegram机器人项目,可以基于API实时查询哪吒面板的服务器信息。</p><ul><li>[x] 支持中/英多语言切换</li><li>[x] 支持分组统计(CPU、磁盘、内存、上下行速度、流量统计等)</li><li>[x] 支持实时刷新单个服务器数据</li><li>[x] 支持键盘互动查询</li><li>[x] 支持命令直接查询</li><li>[x] 增加群聊判断,限制群聊可发送命令</li><li>[x] 增加群聊内5秒自动删除信息</li><li>[x] 支持docker部署</li></ul><h2 id="命令列表" tabindex="-1">命令列表 <a class="header-anchor" href="#命令列表" aria-label="Permalink to "命令列表""></a></h2><table tabindex="0"><thead><tr><th>命令</th><th>功能</th><th>仅私聊</th></tr></thead><tbody><tr><td>start</td><td>开始使用键盘主菜单</td><td>✔️</td></tr><tr><td>help</td><td>帮助列表</td><td>❌</td></tr><tr><td>add</td><td>添加面板链接和token</td><td>✔️</td></tr><tr><td>url</td><td>添加面板链接</td><td>✔️</td></tr><tr><td>token</td><td>添加面板token</td><td>✔️</td></tr><tr><td>info</td><td>获取保存的面板链接和token</td><td>✔️</td></tr><tr><td>delete</td><td>删除保存的面板链接和token</td><td>✔️</td></tr><tr><td>id</td><td>命令后面添加整数id,来进行单个服务器信息查询(私聊带刷新按钮,群聊不带)</td><td>❌</td></tr><tr><td>all</td><td>查询所有服务器的统计信息</td><td>❌</td></tr><tr><td>search</td><td>在服务器名字中搜索关键字(支持多个,用空格分开)</td><td>❌</td></tr></tbody></table><h2 id="效果展示" tabindex="-1">效果展示 <a class="header-anchor" href="#效果展示" aria-label="Permalink to "效果展示""></a></h2><p><img src="https://user-images.githubusercontent.com/105153585/175813727-bef77a8e-ff46-4fd4-b41b-43902abf6159.png#pic_left" alt="image"><img src="https://user-images.githubusercontent.com/105153585/175813645-4df4f4c7-2591-4133-9645-21c7db2f62ab.png#pic_right" alt="image"></p>',11),i=[l];function o(h,c,s,n,_,m){return a(),e("div",null,i)}const b=t(r,[["render",o]]);export{f as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o as a,a4 as d}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"自建使用 API 来进行查询,且支持多语言的 Telegram 查询机器人","description":"","frontmatter":{},"headers":[],"relativePath":"case/case3.md","filePath":"case/case3.md","lastUpdated":1732521523000}'),r={name:"case/case3.md"},l=d("",11),i=[l];function o(h,c,s,n,_,m){return a(),e("div",null,i)}const b=t(r,[["render",o]]);export{f as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as t,o as e,a4 as a}from"./chunks/framework.BmdFiWrL.js";const r="/assets/2.r5IbCoDU.png",n="/assets/5.DI5HceD6.png",o="/assets/6.B0QVmape.png",p="/assets/4.DAp6JO4C.jpg",c="/assets/1.VA-CzEkF.jpeg",z=JSON.parse('{"title":"重磅推荐!一秒拥有宇宙级算力!让你在人前,不!再!自!卑","description":"","frontmatter":{},"headers":[],"relativePath":"case/case4.md","filePath":"case/case4.md","lastUpdated":1732521523000}'),_={name:"case/case4.md"},i=a('<h1 id="重磅推荐-一秒拥有宇宙级算力-让你在人前-不-再-自-卑" tabindex="-1">重磅推荐!一秒拥有宇宙级算力!让你在人前,不!再!自!卑 <a class="header-anchor" href="#重磅推荐-一秒拥有宇宙级算力-让你在人前-不-再-自-卑" aria-label="Permalink to "重磅推荐!一秒拥有宇宙级算力!让你在人前,不!再!自!卑""></a></h1><br><hr><p><img src="'+r+'" alt="2"><br><br><span style="font-size:5;">还在因为自己的小鸡配置太差被朋友嘲笑吗? </span><br><span style="font-size:5;">还在想参加以针会友活动却因为小鸡不够排面而觉得羞耻吗? </span><br><span style="font-size:5;">还在因为在哪吒TG群里机器人排名太低而觉得自己低人一等吗? </span><br><br><br><span style="font-size:6;"><strong>今天开始!找回自信!</strong></span><br></p><p>来自南京的名老中医 <a href="https://github.com/dysf888" target="_blank" rel="noreferrer">dysf888</a> 独家秘方!让你<strong>找回男人本色,激情畅享!</strong><br> 安装 <a href="https://github.com/dysf888/fake-nezha-agent" target="_blank" rel="noreferrer">Fake Agent</a>,可随意修改服务器监测数据的倍数上传到 Dashboard,让你的小鸡 <strong>脱!胎!换!骨!</strong> 让你在 MJJ 面前<span style="font-size:5;">硬</span>起来!</p><br><p><span style="font-size:4;"><strong>哪吒监控创始人奶爸也在用:</strong></span><br><img src="'+n+'" alt="5"></p><br><p><span style="font-size:4;"><strong>男人用了都说好:</strong></span><br><img src="'+o+'" alt="6"><br><img src="'+p+'" alt="4"></p><br><hr><p><img src="'+c+'" alt="1"></p>',12),l=[i];function g(b,f,m,d,h,y){return e(),t("div",null,l)}const k=s(_,[["render",g]]);export{z as __pageData,k as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as t,o as e,a4 as a}from"./chunks/framework.BmdFiWrL.js";const r="/assets/2.r5IbCoDU.png",n="/assets/5.DI5HceD6.png",o="/assets/6.B0QVmape.png",p="/assets/4.DAp6JO4C.jpg",c="/assets/1.VA-CzEkF.jpeg",z=JSON.parse('{"title":"重磅推荐!一秒拥有宇宙级算力!让你在人前,不!再!自!卑","description":"","frontmatter":{},"headers":[],"relativePath":"case/case4.md","filePath":"case/case4.md","lastUpdated":1732521523000}'),_={name:"case/case4.md"},i=a("",12),l=[i];function g(b,f,m,d,h,y){return e(),t("div",null,l)}const k=s(_,[["render",g]]);export{z as __pageData,k as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"使用 Argo 隧道的哪吒服务端","description":"","frontmatter":{},"headers":[],"relativePath":"case/case5.md","filePath":"case/case5.md","lastUpdated":1732521523000}'),n={name:"case/case5.md"},r=t("",88),l=[r];function i(o,c,h,p,d,g){return s(),e("div",null,l)}const m=a(n,[["render",i]]);export{u as __pageData,m as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BmdFiWrL.js";const s="/assets/Download_on_the_App_Store_Badge_CNSC_RGB_blk_092917.B6iCCvXs.svg",r="/assets/1.BL34OYdd.png",i="/assets/2.BqfHYLGJ.png",l="/assets/3.D4KlWCds.png",k=JSON.parse('{"title":"Nezha Mobile - Nezha Dashboard 的 iOS 客户端","description":"","frontmatter":{},"headers":[],"relativePath":"case/case6.md","filePath":"case/case6.md","lastUpdated":1732521523000}'),n={name:"case/case6.md"},h=o('<h1 id="nezha-mobile-nezha-dashboard-的-ios-客户端" tabindex="-1">Nezha Mobile - Nezha Dashboard 的 iOS 客户端 <a class="header-anchor" href="#nezha-mobile-nezha-dashboard-的-ios-客户端" aria-label="Permalink to "Nezha Mobile - Nezha Dashboard 的 iOS 客户端""></a></h1><p>贡献者:</p><ul><li><a href="https://github.com/hiDandelion" target="_blank" rel="noreferrer">hiDandelion</a></li></ul><h2 id="为项目作出贡献" tabindex="-1">为项目作出贡献 <a class="header-anchor" href="#为项目作出贡献" aria-label="Permalink to "为项目作出贡献""></a></h2><p><a href="https://github.com/hiDandelion/Nezha-Mobile" target="_blank" rel="noreferrer">项目地址</a></p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>我们欢迎对项目的任何贡献,并将积极合并你的修改至下一次的Release,但我们可能会对不符合App Review Guidelines的内容(或潜在内容)进行一些修改。</p></div><h2 id="从-app-store-下载" tabindex="-1">从 App Store 下载 <a class="header-anchor" href="#从-app-store-下载" aria-label="Permalink to "从 App Store 下载""></a></h2><p><a href="https://apps.apple.com/us/app/nezha-mobile/id6596729064" target="_blank" rel="noreferrer"><img src="'+s+'" alt="Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917"></a></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>App Store版本的Nezha Mobile由于<strong>ICP备案</strong>原因不在<strong>中国大陆</strong>提供服务。</p></div><h2 id="testflight-测试计划" tabindex="-1">TestFlight 测试计划 <a class="header-anchor" href="#testflight-测试计划" aria-label="Permalink to "TestFlight 测试计划""></a></h2><p><a href="https://testflight.apple.com/join/C6vTc2dN" target="_blank" rel="noreferrer">加入 TestFlight 测试</a></p><h2 id="使用说明" tabindex="-1">使用说明 <a class="header-anchor" href="#使用说明" aria-label="Permalink to "使用说明""></a></h2><ul><li>首次使用时你需要输入<strong>Dashboard链接</strong>和<strong>API Token</strong>。<strong>Dashboard链接</strong>形如<code>server.hidandelion.com</code>,不要添加协议头和末尾斜杠。<strong>API Token</strong>可通过Dashboard管理后台获取。 <img src="'+r+'" alt="step1" width="200"></li></ul><h2 id="配置小组件-可选" tabindex="-1">配置小组件(可选) <a class="header-anchor" href="#配置小组件-可选" aria-label="Permalink to "配置小组件(可选)""></a></h2><ul><li><p>在Springboard添加小组件,长按后点击<strong>编辑小组件</strong>。 <img src="'+i+'" alt="step2" width="200"></p></li><li><p>在随后的页面中选择一台你需要监控的服务器。你可以为多个小组件配置不同的服务器。 <img src="'+l+'" alt="step3" width="200"></p></li></ul>',15),p=[h];function d(c,_,b,g,m,u){return t(),e("div",null,p)}const N=a(n,[["render",d]]);export{k as __pageData,N as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BmdFiWrL.js";const s="/assets/Download_on_the_App_Store_Badge_CNSC_RGB_blk_092917.B6iCCvXs.svg",r="/assets/1.BL34OYdd.png",i="/assets/2.BqfHYLGJ.png",l="/assets/3.D4KlWCds.png",k=JSON.parse('{"title":"Nezha Mobile - Nezha Dashboard 的 iOS 客户端","description":"","frontmatter":{},"headers":[],"relativePath":"case/case6.md","filePath":"case/case6.md","lastUpdated":1732521523000}'),n={name:"case/case6.md"},h=o("",15),p=[h];function d(c,_,b,g,m,u){return t(),e("div",null,p)}const N=a(n,[["render",d]]);export{k as __pageData,N as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,a as r}from"./chunks/webssh.Cvv4PsOJ.js";import{_ as a,c as t,o,a4 as i}from"./chunks/framework.BmdFiWrL.js";const k=JSON.parse('{"title":"Broker for Nezha - 拓展 Nezha 接入平台","description":"","frontmatter":{},"headers":[],"relativePath":"case/case7.md","filePath":"case/case7.md","lastUpdated":1732521523000}'),l={name:"case/case7.md"},n=i('<h1 id="broker-for-nezha-拓展-nezha-接入平台" tabindex="-1">Broker for Nezha - 拓展 Nezha 接入平台 <a class="header-anchor" href="#broker-for-nezha-拓展-nezha-接入平台" aria-label="Permalink to "Broker for Nezha - 拓展 Nezha 接入平台""></a></h1><p>贡献者:</p><ul><li><a href="https://codeberg.org/uubulb" target="_blank" rel="noreferrer">uubulb</a></li></ul><p>Broker for Nezha 是一个 Nezha Agent 的修改版本,其通过分离 Agent 的数据收集和 gRPC 上报功能,可使小型设备接入 Nezha Dashboard。</p><p>项目地址:<a href="https://codeberg.org/uubulb/broker" target="_blank" rel="noreferrer">https://codeberg.org/uubulb/broker</a></p><p>文档:<a href="https://broker.kuzu.uk/" target="_blank" rel="noreferrer">Broker for Nezha</a></p><h2 id="与原项目的不同" tabindex="-1">与原项目的不同 <a class="header-anchor" href="#与原项目的不同" aria-label="Permalink to "与原项目的不同""></a></h2><ul><li>使用外置数据源,而不是从本地获取。</li><li>多数据源与多面板支持</li><li>仅支持部分任务类型,可参考项目 README 获取详细信息。</li></ul><p>Broker for Nezha 需要与特定的数据收集软件一同使用。目前提供两种数据获取方式:</p><ol><li>HTTP 主动获取(HTTP/1.1)</li><li>TCP 被动获取(推荐)</li></ol><p>如需获取现有的数据收集软件,可以参考项目 README。</p><p>因数据获取方式缺乏安全性,建议仅在信任的网络环境使用。</p><h2 id="编写数据收集端" tabindex="-1">编写数据收集端 <a class="header-anchor" href="#编写数据收集端" aria-label="Permalink to "编写数据收集端""></a></h2><p>如需自行编写数据收集端,除实现基本 HTTP 服务器或 TCP 客户端外,还需要使用特定的数据格式才可被 Broker 正常接收。具体请参考:<a href="https://broker.kuzu.uk/configuration/type/" target="_blank" rel="noreferrer">数据类型</a></p><h2 id="效果参考" tabindex="-1">效果参考 <a class="header-anchor" href="#效果参考" aria-label="Permalink to "效果参考""></a></h2><figure><img src="'+e+'" alt="Dashboard"><figcaption style="font-size:0.9em;color:gray;text-align:center;"> Dashboard </figcaption></figure><br><figure><img src="'+r+'" alt="WebSSH"><figcaption style="font-size:0.9em;color:gray;text-align:center;"> WebSSH </figcaption></figure>',18),s=[n];function h(c,p,f,u,_,b){return o(),t("div",null,s)}const m=a(l,[["render",h]]);export{k as __pageData,m as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,a as r}from"./chunks/webssh.Cvv4PsOJ.js";import{_ as a,c as t,o,a4 as i}from"./chunks/framework.BmdFiWrL.js";const k=JSON.parse('{"title":"Broker for Nezha - 拓展 Nezha 接入平台","description":"","frontmatter":{},"headers":[],"relativePath":"case/case7.md","filePath":"case/case7.md","lastUpdated":1732521523000}'),l={name:"case/case7.md"},n=i("",18),s=[n];function h(c,p,f,u,_,b){return o(),t("div",null,s)}const m=a(l,[["render",h]]);export{k as __pageData,m as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a}from"./chunks/framework.BmdFiWrL.js";const p=JSON.parse('{"title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"社区项目","description":"","frontmatter":{"layout":"home","title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"社区项目","hero":{"name":"哪吒监控社区项目","text":"社区贡献的相关项目","tagline":"为哪吒监控提供了更多扩展","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"查看项目 →","link":"/case/case1"}]},"features":[{"title":"提交项目","details":"我们欢迎您提交自己的项目,请加入TG群联系管理员了解相关事宜"},{"title":"注意事项","details":"所有项目均由社区成员贡献,请您知悉哪吒监控团队无法为社区项目承担包括且不限于:保修、可用性、安全性等责任"}]},"headers":[],"relativePath":"case/index.md","filePath":"case/index.md","lastUpdated":1732521523000}'),s={name:"case/index.md"};function n(i,r,c,o,d,l){return a(),t("div")}const _=e(s,[["render",n]]);export{p as __pageData,_ as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a}from"./chunks/framework.BmdFiWrL.js";const p=JSON.parse('{"title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"社区项目","description":"","frontmatter":{"layout":"home","title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"社区项目","hero":{"name":"哪吒监控社区项目","text":"社区贡献的相关项目","tagline":"为哪吒监控提供了更多扩展","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"查看项目 →","link":"/case/case1"}]},"features":[{"title":"提交项目","details":"我们欢迎您提交自己的项目,请加入TG群联系管理员了解相关事宜"},{"title":"注意事项","details":"所有项目均由社区成员贡献,请您知悉哪吒监控团队无法为社区项目承担包括且不限于:保修、可用性、安全性等责任"}]},"headers":[],"relativePath":"case/index.md","filePath":"case/index.md","lastUpdated":1732521523000}'),s={name:"case/index.md"};function n(i,r,c,o,d,l){return a(),t("div")}const _=e(s,[["render",n]]);export{p as __pageData,_ as default};
|
@ -1 +0,0 @@
|
||||
const s="/assets/qrcode.b_bFVwtg.png";export{s as _};
|
@ -1 +0,0 @@
|
||||
const s="/assets/dashboard.BtVFv_j9.jpg",t="/assets/webssh.DHR7F3te.jpg";export{s as _,t as a};
|
Before Width: | Height: | Size: 123 KiB |
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"开发手册","description":"","frontmatter":{"layout":"home","title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"开发手册","hero":{"name":"开发手册","text":"哪吒监控开发手册","tagline":"我们欢迎你提出高质量的Pull Request,帮助哪吒监控变得更好!","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"开始使用 →","link":"/developer/theme"}]}},"headers":[],"relativePath":"developer/index.md","filePath":"developer/index.md","lastUpdated":1732521523000}'),r={name:"developer/index.md"};function n(o,s,i,d,l,c){return a(),t("div")}const h=e(r,[["render",n]]);export{m as __pageData,h as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"开发手册","description":"","frontmatter":{"layout":"home","title":"哪吒监控 - 服务器监控与运维工具","titleTemplate":"开发手册","hero":{"name":"开发手册","text":"哪吒监控开发手册","tagline":"我们欢迎你提出高质量的Pull Request,帮助哪吒监控变得更好!","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"开始使用 →","link":"/developer/theme"}]}},"headers":[],"relativePath":"developer/index.md","filePath":"developer/index.md","lastUpdated":1732521523000}'),r={name:"developer/index.md"};function n(o,s,i,d,l,c){return a(),t("div")}const h=e(r,[["render",n]]);export{m as __pageData,h as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o,a4 as l}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"l10n 本地化开发指南","description":"","frontmatter":{},"headers":[],"relativePath":"developer/l10n.md","filePath":"developer/l10n.md","lastUpdated":1732521523000}'),t={name:"developer/l10n.md"},r=l('<h1 id="l10n-本地化开发指南" tabindex="-1">l10n 本地化开发指南 <a class="header-anchor" href="#l10n-本地化开发指南" aria-label="Permalink to "l10n 本地化开发指南""></a></h1><p><strong>哪吒监控的 Dashboard 已经添加本地化,支持多个语言,你可以在开发新功能时遵循以下步骤来支持本地化</strong></p><h2 id="介绍" tabindex="-1">介绍 <a class="header-anchor" href="#介绍" aria-label="Permalink to "介绍""></a></h2><ol><li>你可以直接使用 <code>/resource/l10n/zh-CN.toml</code> 中已有的文本配置来替换新功能中的文本</li><li>如果新功能中有新增文本,请参考 <code>zh-CN.toml</code> 的配置文本,将新文本拉取到 <code>zh-CN.toml</code> 等其他语言的配置文件中,并添加翻译</li></ol><h2 id="新本地化文本的添加" tabindex="-1">新本地化文本的添加 <a class="header-anchor" href="#新本地化文本的添加" aria-label="Permalink to "新本地化文本的添加""></a></h2><ol><li>在 <code>/resource/l10n/</code> 中添加新的语言文本配置</li><li>在新的语言文本配置中拉取其他语言已有的文本配置</li><li>为新的语言文本配置添加翻译</li></ol>',6),n=[r];function d(c,i,s,_,h,p){return o(),a("div",null,n)}const f=e(t,[["render",d]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o,a4 as l}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"l10n 本地化开发指南","description":"","frontmatter":{},"headers":[],"relativePath":"developer/l10n.md","filePath":"developer/l10n.md","lastUpdated":1732521523000}'),t={name:"developer/l10n.md"},r=l("",6),n=[r];function d(c,i,s,_,h,p){return o(),a("div",null,n)}const f=e(t,[["render",d]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"哪吒主题开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"developer/theme.md","filePath":"developer/theme.md","lastUpdated":1732521523000}'),c={name:"developer/theme.md"},d=t('<h1 id="哪吒主题开发环境" tabindex="-1">哪吒主题开发环境 <a class="header-anchor" href="#哪吒主题开发环境" aria-label="Permalink to "哪吒主题开发环境""></a></h1><p>哪吒面板提供了主题开发环境,你可以使用它来创建新的哪吒监控主题</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>请注意: 此开发环境仅支持 <code>dashboard v0.19.20</code> 及更新版本。</p></div><h2 id="使用说明" tabindex="-1">使用说明 <a class="header-anchor" href="#使用说明" aria-label="Permalink to "使用说明""></a></h2><ol><li>克隆<a href="https://github.com/nezhahq/skeleton-custom-theme" target="_blank" rel="noreferrer">此仓库</a>到本地</li><li>修改 <code>data/config.yaml</code> 中的 Oauth2 配置(回调连接可以填 <code>http://localhost</code>)</li><li>运行 <code>docker-compose up</code></li><li>开始开发</li><li>主题制作完成之后可以将 <code>theme-custom</code>(前台主题)、<code>static-custom</code>(前台主题静态文件) 和 <code>dashboard-custom</code>(后台主题) 放置到服务器上的 <code>/opt/nezha/dashboard/</code> 中(如使用 Docker 安装)</li></ol><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to "FAQ""></a></h2><ul><li>如果不能使用 <code>80</code> 端口,在 <code>docker-compose.yaml</code> 中修改配置。</li></ul>',7),l=[d];function r(s,i,h,n,m,_){return a(),o("div",null,l)}const f=e(c,[["render",r]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"哪吒主题开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"developer/theme.md","filePath":"developer/theme.md","lastUpdated":1732521523000}'),c={name:"developer/theme.md"},d=t("",7),l=[d];function r(s,i,h,n,m,_){return a(),o("div",null,l)}const f=e(c,[["render",r]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as r,a4 as o}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"Build your own Telegram bot to query server information","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case1.md","filePath":"en_US/case/case1.md","lastUpdated":1732521523000}'),a={name:"en_US/case/case1.md"},n=o('<h1 id="build-your-own-telegram-bot-to-query-server-information" tabindex="-1">Build your own Telegram bot to query server information <a class="header-anchor" href="#build-your-own-telegram-bot-to-query-server-information" aria-label="Permalink to "Build your own Telegram bot to query server information""></a></h1><p>Contributors:</p><ul><li><a href="https://github.com/spiritLHLS" target="_blank" rel="noreferrer">spiritLHLS</a></li><li><a href="https://github.com/Erope/" target="_blank" rel="noreferrer">Erope</a></li></ul><p><strong>Project</strong>: <a href="https://github.com/spiritLHLS/nezha_api_tgbot" target="_blank" rel="noreferrer">nezha_api_tgbot</a> (Chinese)</p><p>The bot can request server status information from the Dashboard through the API, and then send the information to the user.<br> You can build this bot to easily view the current status of a given server without opening the Dashboard.</p>',5),i=[n];function s(l,h,u,_,c,p){return r(),t("div",null,i)}const b=e(a,[["render",s]]);export{m as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as r,a4 as o}from"./chunks/framework.BmdFiWrL.js";const m=JSON.parse('{"title":"Build your own Telegram bot to query server information","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case1.md","filePath":"en_US/case/case1.md","lastUpdated":1732521523000}'),a={name:"en_US/case/case1.md"},n=o("",5),i=[n];function s(l,h,u,_,c,p){return r(),t("div",null,i)}const b=e(a,[["render",s]]);export{m as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e}from"./chunks/qrcode.CZOxHFH-.js";import{_ as t,c as r,o,a4 as s}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"Use Siri to run shortcut to check server status in iOS/MacOS","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case2.md","filePath":"en_US/case/case2.md","lastUpdated":1732521523000}'),a={name:"en_US/case/case2.md"},c=s('<h1 id="use-siri-to-run-shortcut-to-check-server-status-in-ios-macos" tabindex="-1">Use Siri to run shortcut to check server status in iOS/MacOS <a class="header-anchor" href="#use-siri-to-run-shortcut-to-check-server-status-in-ios-macos" aria-label="Permalink to "Use Siri to run shortcut to check server status in iOS/MacOS""></a></h1><p>Current Version:V1.0 (Chinese)<br> Contributor:</p><ul><li>白歌 <a href="https://github.com/hhhkkk520" target="_blank" rel="noreferrer">hhhkkk520</a></li></ul><h2 id="get-shortcut-command" tabindex="-1">Get shortcut command <a class="header-anchor" href="#get-shortcut-command" aria-label="Permalink to "Get shortcut command""></a></h2><p>Scan the following QR code with your iPhone or iPad to get the shortcut<br><br><img src="'+e+'" alt="coode"><br><br><br> MacOS users please visit <a href="https://www.icloud.com/shortcuts/312005bf5ffd4387ac92a84056db9f09" target="_blank" rel="noreferrer">here</a> to get the shortcut</p><h2 id="how-to-use" tabindex="-1">How to use <a class="header-anchor" href="#how-to-use" aria-label="Permalink to "How to use""></a></h2><ul><li>After getting the shortcut, open and edit the shortcut</li><li>Fill in <code>Dashboard URL</code>, <code>API Token</code>, <code>Server ID</code> in the three text boxes</li><li>Save the edit and test run, if you can get the result, the setting is correct.</li><li>Modify the name of the shortcut, such as: Server Status, then you can use Siri command: "Hey Siri, Server Status" to get the server status.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Each shortcut can only monitor one server, if you need to monitor more than one server, please copy this shortcut several times and configure them separately, then modify the shortcut name separately, such as; Server 1 Status, Server 2 Status, etc.</p></div>',8),i=[c];function h(n,u,l,d,m,_){return o(),r("div",null,i)}const b=t(a,[["render",h]]);export{f as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e}from"./chunks/qrcode.CZOxHFH-.js";import{_ as t,c as r,o,a4 as s}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"Use Siri to run shortcut to check server status in iOS/MacOS","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case2.md","filePath":"en_US/case/case2.md","lastUpdated":1732521523000}'),a={name:"en_US/case/case2.md"},c=s("",8),i=[c];function h(n,u,l,d,m,_){return o(),r("div",null,i)}const b=t(a,[["render",h]]);export{f as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o as r,a4 as a}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Build your own server status query Telegram bot","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case3.md","filePath":"en_US/case/case3.md","lastUpdated":1732521523000}'),d={name:"en_US/case/case3.md"},o=a('<h1 id="build-your-own-server-status-query-telegram-bot" tabindex="-1">Build your own server status query Telegram bot <a class="header-anchor" href="#build-your-own-server-status-query-telegram-bot" aria-label="Permalink to "Build your own server status query Telegram bot""></a></h1><p>Contributor:</p><ul><li><a href="https://github.com/tech-fever" target="_blank" rel="noreferrer">tech-fever</a></li></ul><p>GitHub project: <a href="https://github.com/tech-fever/nezha_telegram_bot" target="_blank" rel="noreferrer">nezha_telegram_bot</a>(English is already supported)</p><h2 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to "Features""></a></h2><ul><li>[x] Support Chinese/English multi-language switch</li><li>[x] Support tag statistics (CPU, disk, memory, upstream and downstream speed, traffic statistics, etc.)</li><li>[x] Support real-time refresh of single server data</li><li>[x] Support keyboard interactive query</li><li>[x] Support query by command</li><li>[x] Support adding bot to group, privacy protection of bot replies in group chat</li><li>[x] Support bot messages automatic deletion in group chat within 20 seconds</li><li>[x] Support docker deployment</li></ul><h2 id="commands-list" tabindex="-1">Commands list <a class="header-anchor" href="#commands-list" aria-label="Permalink to "Commands list""></a></h2><table tabindex="0"><thead><tr><th>Command</th><th>Description</th><th>Private chat only</th></tr></thead><tbody><tr><td>start</td><td>Getting started with the keyboard main menu</td><td>✔️</td></tr><tr><td>help</td><td>help message</td><td>❌</td></tr><tr><td>add</td><td>Add Nezha monitoring url link and token</td><td>✔️</td></tr><tr><td>url</td><td>Add Nezha monitoring url link</td><td>✔️</td></tr><tr><td>token</td><td>Add Nezha monitoring token</td><td>✔️</td></tr><tr><td>info</td><td>Get saved Nezha monitoring url link and token</td><td>✔️</td></tr><tr><td>delete</td><td>Delete saved Nezha monitoring url link and token</td><td>✔️</td></tr><tr><td>id</td><td>Add an integer id after the command to query the information of a single server (refresh button only available in private chat)</td><td>❌</td></tr><tr><td>all</td><td>Query statistics for all servers</td><td>❌</td></tr><tr><td>search</td><td>Search for keywords in server names (multiple keywords supported, split by spaces)</td><td>❌</td></tr></tbody></table>',8),i=[o];function s(n,l,u,h,c,m){return r(),e("div",null,i)}const b=t(d,[["render",s]]);export{_ as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o as r,a4 as a}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Build your own server status query Telegram bot","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case3.md","filePath":"en_US/case/case3.md","lastUpdated":1732521523000}'),d={name:"en_US/case/case3.md"},o=a("",8),i=[o];function s(n,l,u,h,c,m){return r(),e("div",null,i)}const b=t(d,[["render",s]]);export{_ as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as n,o,j as e,a}from"./chunks/framework.BmdFiWrL.js";const x=JSON.parse('{"title":"Fake-agent, monitoring data cheater","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case4.md","filePath":"en_US/case/case4.md","lastUpdated":1732521523000}'),r={name:"en_US/case/case4.md"},s=e("h1",{id:"fake-agent-monitoring-data-cheater",tabindex:"-1"},[a("Fake-agent, monitoring data cheater "),e("a",{class:"header-anchor",href:"#fake-agent-monitoring-data-cheater","aria-label":'Permalink to "Fake-agent, monitoring data cheater"'},"")],-1),c=e("p",null,"Contributor:",-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/dysf888",target:"_blank",rel:"noreferrer"},"dysf888")])],-1),d=e("p",null,[a("GitHub project: "),e("a",{href:"https://github.com/dysf888/fake-nezha-agent",target:"_blank",rel:"noreferrer"},"fake-nezha-agent"),a("(Chinese)")],-1),h=e("p",null,[a("You can modify the monitoring data uploaded to Dashboard by the Agent"),e("br"),a(" Use it for cheating 😈")],-1),l=[s,c,i,d,h];function _(f,g,m,p,u,k){return o(),n("div",null,l)}const y=t(r,[["render",_]]);export{x as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as n,o,j as e,a}from"./chunks/framework.BmdFiWrL.js";const x=JSON.parse('{"title":"Fake-agent, monitoring data cheater","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case4.md","filePath":"en_US/case/case4.md","lastUpdated":1732521523000}'),r={name:"en_US/case/case4.md"},s=e("h1",{id:"fake-agent-monitoring-data-cheater",tabindex:"-1"},[a("Fake-agent, monitoring data cheater "),e("a",{class:"header-anchor",href:"#fake-agent-monitoring-data-cheater","aria-label":'Permalink to "Fake-agent, monitoring data cheater"'},"")],-1),c=e("p",null,"Contributor:",-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://github.com/dysf888",target:"_blank",rel:"noreferrer"},"dysf888")])],-1),d=e("p",null,[a("GitHub project: "),e("a",{href:"https://github.com/dysf888/fake-nezha-agent",target:"_blank",rel:"noreferrer"},"fake-nezha-agent"),a("(Chinese)")],-1),h=e("p",null,[a("You can modify the monitoring data uploaded to Dashboard by the Agent"),e("br"),a(" Use it for cheating 😈")],-1),l=[s,c,i,d,h];function _(f,g,m,p,u,k){return o(),n("div",null,l)}const y=t(r,[["render",_]]);export{x as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o as t,a4 as n}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Nezha server over Argo tunnel","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case5.md","filePath":"en_US/case/case5.md","lastUpdated":1732521523000}'),s={name:"en_US/case/case5.md"},o=n("",88),r=[o];function i(l,c,h,d,p,u){return t(),a("div",null,r)}const f=e(s,[["render",i]]);export{g as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o,a4 as a}from"./chunks/framework.BmdFiWrL.js";const r="/assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.CVyK0T4N.svg",i="/assets/1_en_US.CE_aSW8N.png",n="/assets/2_en_US.Dm8rLo_N.png",s="/assets/3_en_US.SUOW4yEM.png",k=JSON.parse('{"title":"Nezha Mobile - An iOS Client For Nezha Dashboard","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case6.md","filePath":"en_US/case/case6.md","lastUpdated":1732521523000}'),l={name:"en_US/case/case6.md"},h=a('<h1 id="nezha-mobile-an-ios-client-for-nezha-dashboard" tabindex="-1">Nezha Mobile - An iOS Client For Nezha Dashboard <a class="header-anchor" href="#nezha-mobile-an-ios-client-for-nezha-dashboard" aria-label="Permalink to "Nezha Mobile - An iOS Client For Nezha Dashboard""></a></h1><p>Contributor:</p><ul><li><a href="https://github.com/hiDandelion" target="_blank" rel="noreferrer">hiDandelion</a></li></ul><h2 id="contribute-to-the-project" tabindex="-1">Contribute to the project <a class="header-anchor" href="#contribute-to-the-project" aria-label="Permalink to "Contribute to the project""></a></h2><p><a href="https://github.com/hiDandelion/Nezha-Mobile" target="_blank" rel="noreferrer">Project Link</a></p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>We appreciate any contribution to the project, and we will actively merge your commits into next Release. However, we may modify your work in order to comply with App Review Guidelines.</p></div><h2 id="download-on-the-app-store" tabindex="-1">Download on the App Store <a class="header-anchor" href="#download-on-the-app-store" aria-label="Permalink to "Download on the App Store""></a></h2><p><a href="https://apps.apple.com/us/app/nezha-mobile/id6596729064" target="_blank" rel="noreferrer"><img src="'+r+'" alt="Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917"></a></p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Due to <strong>ICP Filing Policy</strong>, Nezha Mobile is not available in <strong>China mainland</strong>.</p></div><h2 id="testflight-testing-program" tabindex="-1">TestFlight Testing Program <a class="header-anchor" href="#testflight-testing-program" aria-label="Permalink to "TestFlight Testing Program""></a></h2><p><a href="https://testflight.apple.com/join/C6vTc2dN" target="_blank" rel="noreferrer">Join TestFlight Testing</a></p><h2 id="instructions" tabindex="-1">Instructions <a class="header-anchor" href="#instructions" aria-label="Permalink to "Instructions""></a></h2><ul><li>Enter your Dashboard link like <code>server.hidandelion.com</code> and API token on your first use. Do not add a protocol prefix or a trailing slash to the link. API Token can be retrieved from Admin Center of Dashboard. <img src="'+i+'" alt="step1" width="200"></li></ul><h2 id="configure-widget-optional" tabindex="-1">Configure Widget(Optional) <a class="header-anchor" href="#configure-widget-optional" aria-label="Permalink to "Configure Widget(Optional)""></a></h2><ul><li><p>Add a widget on your Springboard. Long-tap the widget and then tap <strong>Edit Widget</strong>. <img src="'+n+'" alt="step2" width="200"></p></li><li><p>Choose a server you want to monitor on the next view. You can choose different servers for each widget. <img src="'+s+'" alt="step3" width="200"></p></li></ul>',15),c=[h];function d(p,_,g,u,m,b){return o(),t("div",null,c)}const w=e(l,[["render",d]]);export{k as __pageData,w as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o,a4 as a}from"./chunks/framework.BmdFiWrL.js";const r="/assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.CVyK0T4N.svg",i="/assets/1_en_US.CE_aSW8N.png",n="/assets/2_en_US.Dm8rLo_N.png",s="/assets/3_en_US.SUOW4yEM.png",k=JSON.parse('{"title":"Nezha Mobile - An iOS Client For Nezha Dashboard","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case6.md","filePath":"en_US/case/case6.md","lastUpdated":1732521523000}'),l={name:"en_US/case/case6.md"},h=a("",15),c=[h];function d(p,_,g,u,m,b){return o(),t("div",null,c)}const w=e(l,[["render",d]]);export{k as __pageData,w as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,a as r}from"./chunks/webssh.Cvv4PsOJ.js";import{_ as a,c as t,o,a4 as n}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Broker for Nezha - Advancing on more platforms","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case7.md","filePath":"en_US/case/case7.md","lastUpdated":1732521523000}'),i={name:"en_US/case/case7.md"},l=n('<h1 id="broker-for-nezha-advancing-on-more-platforms" tabindex="-1">Broker for Nezha - Advancing on more platforms <a class="header-anchor" href="#broker-for-nezha-advancing-on-more-platforms" aria-label="Permalink to "Broker for Nezha - Advancing on more platforms""></a></h1><p>Contributor:</p><ul><li><a href="https://codeberg.org/uubulb" target="_blank" rel="noreferrer">uubulb</a></li></ul><p>Broker for Nezha is a modified version of the Nezha Agent that separates data collection from gRPC reporting, enabling small devices to connect to the Nezha Dashboard.</p><p>Project link: <a href="https://codeberg.org/uubulb/broker" target="_blank" rel="noreferrer">https://codeberg.org/uubulb/broker</a></p><p>Online Documentation: <a href="https://broker.kuzu.uk/" target="_blank" rel="noreferrer">Broker for Nezha</a></p><h2 id="difference-from-nezha-agent" tabindex="-1">Difference from Nezha Agent <a class="header-anchor" href="#difference-from-nezha-agent" aria-label="Permalink to "Difference from Nezha Agent""></a></h2><ul><li>Utilizes external data sources to report to <strong>Nezha Dashboard</strong>.</li><li>Supports configuring multiple sources and connecting to multiple Dashboards.</li><li>Only has limited task support. For details, view the project README.</li></ul><p>Broker for Nezha needs to be used with specific data collection software. Currently, it provides two data collection methods:</p><ol><li>HTTP (HTTP/1.1) - Active polling</li><li>TCP - Passive collection (recommended to avoid creating redundant connections)</li></ol><p>For existing data collection software, refer to the project README. Due to security concerns, it's recommended to use this only in a trusted network.</p><h2 id="writing-a-data-collector" tabindex="-1">Writing a Data Collector <a class="header-anchor" href="#writing-a-data-collector" aria-label="Permalink to "Writing a Data Collector""></a></h2><p>If you need to write your own data collector, you'll need to implement a basic HTTP server or TCP client and use a specific data format that Broker can recognize. For details, see: <a href="https://broker.kuzu.uk/en/configuration/type/" target="_blank" rel="noreferrer">Data types</a></p><h2 id="examples" tabindex="-1">Examples <a class="header-anchor" href="#examples" aria-label="Permalink to "Examples""></a></h2><figure><img src="'+e+'" alt="Dashboard"><figcaption style="font-size:0.9em;color:gray;text-align:center;"> Dashboard </figcaption></figure><br><figure><img src="'+r+'" alt="WebSSH"><figcaption style="font-size:0.9em;color:gray;text-align:center;"> WebSSH </figcaption></figure>',17),s=[l];function c(d,f,h,p,u,m){return o(),t("div",null,s)}const k=a(i,[["render",c]]);export{_ as __pageData,k as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,a as r}from"./chunks/webssh.Cvv4PsOJ.js";import{_ as a,c as t,o,a4 as n}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Broker for Nezha - Advancing on more platforms","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/case/case7.md","filePath":"en_US/case/case7.md","lastUpdated":1732521523000}'),i={name:"en_US/case/case7.md"},l=n("",17),s=[l];function c(d,f,h,p,u,m){return o(),t("div",null,s)}const k=a(i,[["render",c]]);export{_ as __pageData,k as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Community Project","description":"","frontmatter":{"layout":"home","title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Community Project","hero":{"name":"Nezha Monitoring","text":"Community Project","tagline":"Nezha Monitoring has benefited from various projects contributed by the community, which have provided it with additional extensions.","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"Learn More →","link":"/en_US/case/case1"}]},"features":[{"title":"Submit a project","details":"We welcome you to submit your own project. Please join the Telegram group to contact the administrator for further information."},{"title":"Important Notes","details":"All projects are contributed by community members. Please be aware that the Nezha Monitoring Team cannot assume responsibility for community projects, including but not limited to warranty, availability, security, etc."}]},"headers":[],"relativePath":"en_US/case/index.md","filePath":"en_US/case/index.md","lastUpdated":1732521523000}'),a={name:"en_US/case/index.md"};function i(n,r,s,c,m,l){return o(),t("div")}const h=e(a,[["render",i]]);export{u as __pageData,h as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Community Project","description":"","frontmatter":{"layout":"home","title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Community Project","hero":{"name":"Nezha Monitoring","text":"Community Project","tagline":"Nezha Monitoring has benefited from various projects contributed by the community, which have provided it with additional extensions.","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"Learn More →","link":"/en_US/case/case1"}]},"features":[{"title":"Submit a project","details":"We welcome you to submit your own project. Please join the Telegram group to contact the administrator for further information."},{"title":"Important Notes","details":"All projects are contributed by community members. Please be aware that the Nezha Monitoring Team cannot assume responsibility for community projects, including but not limited to warranty, availability, security, etc."}]},"headers":[],"relativePath":"en_US/case/index.md","filePath":"en_US/case/index.md","lastUpdated":1732521523000}'),a={name:"en_US/case/index.md"};function i(n,r,s,c,m,l){return o(),t("div")}const h=e(a,[["render",i]]);export{u as __pageData,h as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as n}from"./chunks/framework.BmdFiWrL.js";const c=JSON.parse('{"title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Development Manual","description":"","frontmatter":{"layout":"home","title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Development Manual","hero":{"name":"Development Manual","text":"Nezha Monitoring Development Manual.","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"Start Now →","link":"/en_US/developer/theme"}]}},"headers":[],"relativePath":"en_US/developer/index.md","filePath":"en_US/developer/index.md","lastUpdated":1732521523000}'),a={name:"en_US/developer/index.md"};function o(r,i,l,m,s,p){return n(),t("div")}const _=e(a,[["render",o]]);export{c as __pageData,_ as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as n}from"./chunks/framework.BmdFiWrL.js";const c=JSON.parse('{"title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Development Manual","description":"","frontmatter":{"layout":"home","title":"Nezha Monitoring - Server monitoring tool","titleTemplate":"Development Manual","hero":{"name":"Development Manual","text":"Nezha Monitoring Development Manual.","image":"https://raw.githubusercontent.com/naiba/nezha/master/resource/static/brand.svg","actions":[{"theme":"brand","text":"Start Now →","link":"/en_US/developer/theme"}]}},"headers":[],"relativePath":"en_US/developer/index.md","filePath":"en_US/developer/index.md","lastUpdated":1732521523000}'),a={name:"en_US/developer/index.md"};function o(r,i,l,m,s,p){return n(),t("div")}const _=e(a,[["render",o]]);export{c as __pageData,_ as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Localization","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/l10n.md","filePath":"en_US/developer/l10n.md","lastUpdated":1732521523000}'),n={name:"en_US/developer/l10n.md"},i=o('<h1 id="localization" tabindex="-1">Localization <a class="header-anchor" href="#localization" aria-label="Permalink to "Localization""></a></h1><p><strong>Nezha Monitoring's Dashboard has added localization to support multiple languages, and you can follow these steps to support localization when developing new features</strong></p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to "Introduction""></a></h2><ol><li>You can directly use the text configuration already available in <code>/resource/l10n/en-US.toml</code> to replace the text in the new feature.</li><li>If there is new text in the new feature, please refer to the configuration text in <code>en-US.toml</code>, pull the new text into the configuration files of other languages such as <code>en-US.toml</code>, and add translations.</li></ol><h2 id="adding-a-new-localized-text-file" tabindex="-1">Adding a new localized text file <a class="header-anchor" href="#adding-a-new-localized-text-file" aria-label="Permalink to "Adding a new localized text file""></a></h2><ol><li>Add a new language text configuration in <code>/resource/l10n/</code>.</li><li>Pull existing text configurations from other languages in the new language text configuration.</li><li>Add translations for the new language text configuration.</li></ol>',6),l=[i];function r(d,c,s,u,h,f){return a(),t("div",null,l)}const p=e(n,[["render",r]]);export{g as __pageData,p as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Localization","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/l10n.md","filePath":"en_US/developer/l10n.md","lastUpdated":1732521523000}'),n={name:"en_US/developer/l10n.md"},i=o("",6),l=[i];function r(d,c,s,u,h,f){return a(),t("div",null,l)}const p=e(n,[["render",r]]);export{g as __pageData,p as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as t,a4 as a}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Nezha Theme Development Environment","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md","filePath":"en_US/developer/theme.md","lastUpdated":1732521523000}'),n={name:"en_US/developer/theme.md"},c=a('<h1 id="nezha-theme-development-environment" tabindex="-1">Nezha Theme Development Environment <a class="header-anchor" href="#nezha-theme-development-environment" aria-label="Permalink to "Nezha Theme Development Environment""></a></h1><p>Nezha Monitoring provides a theme development environment that you can use to create new Nezha Monitoring themes</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Please note: This development environment only supports <code>dashboard v0.19.20</code> and newer versions.</p></div><h2 id="how-to-use" tabindex="-1">How to use <a class="header-anchor" href="#how-to-use" aria-label="Permalink to "How to use""></a></h2><ol><li>Clone <a href="https://github.com/nezhahq/skeleton-custom-theme" target="_blank" rel="noreferrer">this repository</a> to local</li><li>Modify the Oauth2 configuration in <code>data/config.yaml</code>(The callback connection can be filled with <code>http://localhost</code>)</li><li>Run <code>docker-compose up</code></li><li>Start development</li><li>After completing the theme creation, you can place <code>theme-custom</code> (frontend theme), <code>static-custom</code> (frontend theme static files), and <code>dashboard-custom</code> (backend theme) into the <code>/opt/nezha/dashboard/</code> directory on the server (if installed using Docker).</li></ol><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to "FAQ""></a></h2><ul><li>If you can't use port <code>80</code>, change the configuration in <code>docker-compose.yaml</code>.</li></ul>',7),i=[c];function r(l,d,h,s,m,p){return t(),o("div",null,i)}const f=e(n,[["render",r]]);export{_ as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as t,a4 as a}from"./chunks/framework.BmdFiWrL.js";const _=JSON.parse('{"title":"Nezha Theme Development Environment","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/developer/theme.md","filePath":"en_US/developer/theme.md","lastUpdated":1732521523000}'),n={name:"en_US/developer/theme.md"},c=a("",7),i=[c];function r(l,d,h,s,m,p){return t(),o("div",null,i)}const f=e(n,[["render",r]]);export{_ as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as e}from"./chunks/framework.BmdFiWrL.js";const F=JSON.parse('{"title":"Install Agent","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/agent.md","filePath":"en_US/guide/agent.md","lastUpdated":1732521523000}'),n={name:"en_US/guide/agent.md"},t=e("",31),l=[t];function h(p,o,r,k,d,c){return a(),i("div",null,l)}const u=s(n,[["render",h]]);export{F as __pageData,u as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"Frequently Asked Questions about the Agent","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/agentq.md","filePath":"en_US/guide/agentq.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/agentq.md"},s=n('<h1 id="frequently-asked-questions-about-the-agent" tabindex="-1">Frequently Asked Questions about the Agent <a class="header-anchor" href="#frequently-asked-questions-about-the-agent" aria-label="Permalink to "Frequently Asked Questions about the Agent""></a></h1><h2 id="the-ip-displayed-in-the-admin-panel-is-different-from-the-actual-agent-ip" tabindex="-1">The IP Displayed in the Admin Panel is Different from the Actual Agent IP? <a class="header-anchor" href="#the-ip-displayed-in-the-admin-panel-is-different-from-the-actual-agent-ip" aria-label="Permalink to "The IP Displayed in the Admin Panel is Different from the Actual Agent IP?""></a></h2><p>Please refer to <a href="/en_US/guide/dashboardq.html#why-is-the-ip-displayed-in-the-admin-panel-different-from-the-actual-agent-ip">Dashboard Related - Why is the IP Displayed in the Admin Panel Different from the Actual Agent IP?</a>. This will not be repeated here.</p><h2 id="errors-during-one-click-script-installation" tabindex="-1">Errors During One-Click Script Installation <a class="header-anchor" href="#errors-during-one-click-script-installation" aria-label="Permalink to "Errors During One-Click Script Installation""></a></h2><h3 id="curl-failed-to-connect-to-raw-githubusercontent-com" tabindex="-1">curl: Failed to connect to raw.githubusercontent.com...... <a class="header-anchor" href="#curl-failed-to-connect-to-raw-githubusercontent-com" aria-label="Permalink to "curl: Failed to connect to raw.githubusercontent.com......""></a></h3><p>This mostly occurs on servers in mainland China. Currently, the one-click script fetches the installation script directly from Github. You may try several times, or <a href="/en_US/guide/agent.html#other-ways-to-install-agent">manually install the Agent</a>. Additionally, you can find third-party Github acceleration services or mirrors and set them in the one-click installation script.</p><h3 id="sudo-command-not-found" tabindex="-1">sudo: command not found <a class="header-anchor" href="#sudo-command-not-found" aria-label="Permalink to "sudo: command not found""></a></h3><p>Please manually install sudo first, for example, in Ubuntu:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">apt</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sudo</span></span></code></pre></div>',9),o=[s];function r(l,d,h,c,u,p){return a(),t("div",null,o)}const g=e(i,[["render",r]]);export{f as __pageData,g as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const f=JSON.parse('{"title":"Frequently Asked Questions about the Agent","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/agentq.md","filePath":"en_US/guide/agentq.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/agentq.md"},s=n("",9),o=[s];function r(l,d,h,c,u,p){return a(),t("div",null,o)}const g=e(i,[["render",r]]);export{f as __pageData,g as default};
|
@ -1,240 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const F=JSON.parse('{"title":"API Interface","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/api.md","filePath":"en_US/guide/api.md","lastUpdated":1732521523000}'),t={name:"en_US/guide/api.md"},h=n(`<h1 id="api-interface" tabindex="-1">API Interface <a class="header-anchor" href="#api-interface" aria-label="Permalink to "API Interface""></a></h1><p><strong>Nezha Monitoring supports querying the status information of Agents using the API interface</strong></p><h2 id="creating-a-token" tabindex="-1">Creating a Token <a class="header-anchor" href="#creating-a-token" aria-label="Permalink to "Creating a Token""></a></h2><p>Nezha Monitoring's API interface allows for Token authentication and Cookies authentication. To create a new Token, go to the admin panel, click on the avatar in the top right corner, select "API Token," and enter the Token management page. Click "Add Token", add a custom note, and click "Add".</p><p>To delete a Token, select the corresponding Token and click the delete icon on the right.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Tokens are the authentication credentials for the API interface. They are critical to the security of your Dashboard's information, so do not share your Token with others.</p></div><h2 id="authentication-method" tabindex="-1">Authentication Method <a class="header-anchor" href="#authentication-method" aria-label="Permalink to "Authentication Method""></a></h2><p>Ensure the request header contains <code>Authorization: Token</code> for authentication.</p><p>Token authentication method:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Request Headers:</span></span>
|
||||
<span class="line"><span>Authorization: Token</span></span></code></pre></div><h2 id="usage-instructions" tabindex="-1">Usage Instructions <a class="header-anchor" href="#usage-instructions" aria-label="Permalink to "Usage Instructions""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Negative timestamps in the following examples represent <code>0000-00-00</code>. This currently indicates that the Agent has never reported since the Dashboard went online, but it is not recommended to use the positive or negative value to determine the status.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p><strong>The request method is <code>GET</code>, and the response format is <code>JSON</code>.</strong></p></div><h3 id="get-server-list" tabindex="-1">Get Server List <a class="header-anchor" href="#get-server-list" aria-label="Permalink to "Get Server List""></a></h3><p>Request:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>GET /api/v1/server/list?tag=</span></span></code></pre></div><p>Parameters:</p><ul><li><code>tag</code> (optional): ServerTag is the server group. Provide this parameter to query only servers in that group.</li></ul><p>Example response:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "code"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "message"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"success"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "result"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Tag1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "last_active"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1653014667</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1.1.1.1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv6"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "valid_ip"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1.1.1.1"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Tag2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "last_active"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">-62135596800</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv6"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "valid_ip"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3 id="get-server-details" tabindex="-1">Get Server Details <a class="header-anchor" href="#get-server-details" aria-label="Permalink to "Get Server Details""></a></h3><p>Request:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>GET /api/v1/server/details?id=&tag=</span></span></code></pre></div><p>Parameters:</p><ul><li><code>id</code> (optional): ServerID, multiple IDs separated by commas. Provide this parameter to query the server corresponding to that ID and ignore the <code>tag</code> parameter.</li><li><code>tag</code> (optional): ServerTag, provide this parameter to query only servers in that group.</li></ul><p>Example response:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "code"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "message"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"success"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "result"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Tag1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "last_active"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1653015042</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1.1.1.1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv6"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "valid_ip"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1.1.1.1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "host"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Platform"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"darwin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "PlatformVersion"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"12.3.1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CPU"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Apple M1 Pro 1 Physical Core"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "MemTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">17179869184</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "DiskTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2473496842240</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "SwapTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Arch"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"arm64"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Virtualization"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "BootTime"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1652683962</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CountryCode"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"hk"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Version"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "status"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CPU"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">17.33</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "MemUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">14013841408</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "SwapUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "DiskUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2335048912896</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetInTransfer"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2710273234</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetOutTransfer"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">695454765</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetInSpeed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10806</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetOutSpeed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5303</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Uptime"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">331080</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5.23</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">4.87</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load15"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3.99</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "TcpConnCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">195</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "UdpConnCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">70</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ProcessCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">437</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Tag2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "last_active"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">-62135596800</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ipv6"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "valid_ip"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "host"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Platform"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "PlatformVersion"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CPU"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "MemTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "DiskTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "SwapTotal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Arch"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Virtualization"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "BootTime"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CountryCode"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Version"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "status"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "CPU"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "MemUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "SwapUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "DiskUsed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetInTransfer"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetOutTransfer"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetInSpeed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "NetOutSpeed"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Uptime"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "Load15"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "TcpConnCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "UdpConnCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ProcessCount"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3 id="get-icmp-ping-tcping-monitor-value" tabindex="-1">Get ICMP Ping / TCPing monitor value <a class="header-anchor" href="#get-icmp-ping-tcping-monitor-value" aria-label="Permalink to "Get ICMP Ping / TCPing monitor value""></a></h3><p>This API does not require authentication, except for servers with <code>HideForGuest</code> option enabled.</p><p>Request:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>GET /api/v1/monitor/{id}</span></span></code></pre></div><p>Parameters:</p><ul><li><code>id</code> (required): ServerID, must be an positive integer.</li></ul><p>Example response:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "code"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "message"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"success"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "result"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Monitor1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "created_at"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142860000</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142920000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "avg_delay"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 68.2275</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 70.1129</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Monitor2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "created_at"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142860000</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142920000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "avg_delay"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 66.656</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 68.2153</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "monitor_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Monitor3"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "server_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "created_at"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142860000</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1722142920000</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "avg_delay"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 61.4525</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 62.342</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>Note: <code>created_at</code> corresponds with <code>avg_delay</code>.</p><h3 id="automatic-node-registration" tabindex="-1">Automatic Node Registration <a class="header-anchor" href="#automatic-node-registration" aria-label="Permalink to "Automatic Node Registration""></a></h3><p>Description: Script for automating node registration. Example code is provided below. Reference: <a href="https://github.com/naiba/nezha/pull/472" target="_blank" rel="noreferrer">https://github.com/naiba/nezha/pull/472</a></p><div class="language-http vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">http</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">POST</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /api/v1/server/register?simple=1</span></span></code></pre></div><p>Parameters:</p><ul><li><code>simple</code>: (optional): Specifies the format of the response data. <ul><li>When set to <code>simple=1</code> or <code>simple=true</code>, the response will only include a Token string (e.g., <code>8GYwaxYuLfU7zl7ndC</code>).</li><li>Otherwise the response will return a complete JSON object::<code>{"code": 200, "message": "Server created successfully","secret": "8GYwaxYuLfU7zl7ndC"}</code></li></ul></li></ul><p>Request Payload:</p><p>The payload can be completely empty (<code>{}</code>), and the system will apply the following default values:</p><ul><li><code>Name</code>: Defaults to the node’s IP address ($IP).</li><li><code>Tag</code>: Defaults to "AutoRegister".</li><li><code>Note</code>: Defaults to an empty string ("").</li><li><code>HideForGuest</code>: Defaults to "on".</li></ul><p>You can also customize your data:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"abcd"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Node name</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Tag (optional)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Note"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Note or description (optional)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "HideForGuest"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"on"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Whether to hide from guests</span></span></code></pre></div><h2 id="usage-examples" tabindex="-1">Usage Examples <a class="header-anchor" href="#usage-examples" aria-label="Permalink to "Usage Examples""></a></h2><h3 id="get-all-server-information" tabindex="-1">Get All Server Information <a class="header-anchor" href="#get-all-server-information" aria-label="Permalink to "Get All Server Information""></a></h3><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "http://your-dashboard/api/v1/server/list"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">headers </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Authorization"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"your_token"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">headers</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">headers)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">data </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> server </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'result'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server Name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">, Last Active: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'last_active'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">, IP: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'valid_ip'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><h3 id="get-specific-server-details" tabindex="-1">Get Specific Server Details <a class="header-anchor" href="#get-specific-server-details" aria-label="Permalink to "Get Specific Server Details""></a></h3><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server_id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Replace with your server ID</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"http://your-dashboard/api/v1/server/details?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server_id</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">headers </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Authorization"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"your_token"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">headers</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">headers)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">data </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'result'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Server Name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"CPU Usage: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'status'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'CPU'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">%"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Memory Used: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'status'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'MemUsed'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> bytes"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Disk Used: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'status'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'DiskUsed'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> bytes"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Network In Speed: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'status'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'NetInSpeed'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> bytes/s"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">print</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Network Out Speed: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">server[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'status'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'NetOutSpeed'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> bytes/s"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><p>With the above example code, you can easily obtain and process server status information, enabling automated monitoring and management.</p><h3 id="automatic-node-registration-1" tabindex="-1">Automatic Node Registration <a class="header-anchor" href="#automatic-node-registration-1" aria-label="Permalink to "Automatic Node Registration""></a></h3><ol><li>Create a file named <code>nezha_register.sh</code>, and copy the following content into it:</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">#!/bin/bash</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Exit if NEZHA_TOKEN is not set</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-z</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_TOKEN</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "NEZHA_TOKEN is not set. Exiting."</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> exit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Set default values if variables are not set</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_PROBE_ADDRESS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_PROBE_ADDRESS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">probe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">example</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">com</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_PROBE_PORT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_PROBE_PORT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">5555</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_DASHBOARD_URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_DASHBOARD_URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">https</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">://</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">nezha</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">example</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">.</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">com</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NODE_NAME</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\${NODE_NAME</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(hostname)}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Send POST request and capture response and HTTP status code</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">response</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> response_body.json</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -w</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "%{http_code}"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POST</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_DASHBOARD_URL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}/api/v1/server/register?simple=true"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Content-Type: application/json"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Authorization: \${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_TOKEN</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "{</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NODE_NAME</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Extract HTTP status code and Nezha secret</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">HTTP_CODE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$response</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_SECRET</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> response_body.json</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">rm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> response_body.json</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$HTTP_CODE</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> !=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "200"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Failed to get Nezha Secret. HTTP status code: </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$HTTP_CODE</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> exit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Additional check for NEZHA_SECRET to ensure it's not JSON-formatted (indicating failure)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [[ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"\${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_SECRET</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">1</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "{"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]]; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">then</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Failed to get Nezha Secret. Received response: \${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">NEZHA_SECRET</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> exit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">fi</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Download and execute the install script with cleanup</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://raw.githubusercontent.com/nezhahq/scripts/main/install_en.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> nezha.sh</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> && </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +x</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> nezha.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ||</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Failed to download or make the script executable"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">exit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Clean up nezha.sh on exit</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">trap</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'rm -f nezha.sh'</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> EXIT</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Run the Nezha agent installation script</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CMD</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./nezha.sh install_agent "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\${NEZHA_PROBE_ADDRESS}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">" "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\${NEZHA_PROBE_PORT}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">" "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\${NEZHA_SECRET}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">" --tls"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">echo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Run commnad : \${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CMD</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">}"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">eval</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> $CMD</span></span></code></pre></div><ol start="2"><li>Grant execution permission to the script: <code>chmod +x nezha_register.sh</code></li><li>Get <code>Token</code> from Nezha dashboard, e.g. <code>POXbxorKJBM8wPMKX8r2PdMblyXvpggB</code></li><li>Set Environment Variables</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NEZHA_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"POXbxorKJBM8wPMKX8r2PdMblyXvpggB"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Obtain this token from the dashboard</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NEZHA_PROBE_ADDRESS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"your_probe_address"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Set your probe address</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NEZHA_DASHBOARD_URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"https://nezha.example.com"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Replace with your dashboard URL</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> NEZHA_PROBE_PORT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"5555"</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # Modify this port if needed</span></span></code></pre></div><ol start="5"><li>Run the script to complete node registration and probe installation:</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">./nezha_register.sh</span></span></code></pre></div><ol start="6"><li>If the script runs successfully, you will see output like the following:</li></ol><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> command:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./nezha.sh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_agent</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> probe.example.com</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 5555</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> YOUR_SECRET</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --tls</span></span></code></pre></div>`,61),k=[h];function l(p,e,E,r,d,o){return a(),i("div",null,k)}const y=s(t,[["render",l]]);export{F as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const F=JSON.parse('{"title":"API Interface","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/api.md","filePath":"en_US/guide/api.md","lastUpdated":1732521523000}'),t={name:"en_US/guide/api.md"},h=n("",61),k=[h];function l(p,e,E,r,d,o){return a(),i("div",null,k)}const y=s(t,[["render",l]]);export{F as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.BmdFiWrL.js";const k=JSON.parse('{"title":"Install Dashboard","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/dashboard.md","filePath":"en_US/guide/dashboard.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/dashboard.md"},n=t("",41),o=[n];function r(l,h,p,d,c,u){return s(),e("div",null,o)}const b=a(i,[["render",r]]);export{k as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o as t,a4 as i}from"./chunks/framework.BmdFiWrL.js";const b=JSON.parse('{"title":"Frequently Asked Questions about the Dashboard","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/dashboardq.md","filePath":"en_US/guide/dashboardq.md","lastUpdated":1732521523000}'),s={name:"en_US/guide/dashboardq.md"},n=i("",37),o=[n];function r(d,l,h,c,p,u){return t(),a("div",null,o)}const f=e(s,[["render",r]]);export{b as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as i,o as t,a4 as o}from"./chunks/framework.BmdFiWrL.js";const k=JSON.parse('{"title":"DDNS","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/ddns.md","filePath":"en_US/guide/ddns.md","lastUpdated":1732521523000}'),s={name:"en_US/guide/ddns.md"},a=o("",20),n=[a];function d(r,l,h,c,p,u){return t(),i("div",null,n)}const m=e(s,[["render",d]]);export{k as __pageData,m as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o,a4 as t}from"./chunks/framework.BmdFiWrL.js";const p=JSON.parse('{"title":"FAQ about logging into the Dashboard","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/loginq.md","filePath":"en_US/guide/loginq.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/loginq.md"},r=t("",24),n=[r];function s(l,c,h,d,u,g){return o(),a("div",null,n)}const b=e(i,[["render",s]]);export{p as __pageData,b as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"NAT Traversal Configuration","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/nat.md","filePath":"en_US/guide/nat.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/nat.md"},n=o('<h1 id="nat-traversal-configuration" tabindex="-1">NAT Traversal Configuration <a class="header-anchor" href="#nat-traversal-configuration" aria-label="Permalink to "NAT Traversal Configuration""></a></h1><p>Nezha Server Monitoring includes built-in NAT traversal capabilities, allowing users to expose internal services running on an Agent (such as home OpenWrt routers or NAS devices) to the public internet. This functionality facilitates remote access and is currently limited to supporting plain HTTP traversal.</p><h2 id="preparation" tabindex="-1">Preparation <a class="header-anchor" href="#preparation" aria-label="Permalink to "Preparation""></a></h2><p>Prior to configuring NAT traversal, please ensure the following preparatory steps are completed:</p><ul><li>Verify that the Nezha Monitoring Agent is installed and actively running on your device and maintains a stable connection with the Dashboard.</li><li>Acquire a public domain name, ideally using a subdomain configuration, such as <code>service-1.example.com</code>. Point this domain name to the public IP address of your Dashboard server.</li><li>It is important to note that each domain name can only map to the service of one Agent. For mapping services from multiple Agents, distinct domain names should be used, such as <code>service-2.example.com</code>.</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If your Dashboard server uses tools like the aaPanel or similar management platforms, ensure that your domain (e.g., <code>service-1.example.com</code>) is correctly linked to the Dashboard site within these tools to avoid access issues.</p></div><h2 id="nat-traversal-configuration-steps" tabindex="-1">NAT Traversal Configuration Steps <a class="header-anchor" href="#nat-traversal-configuration-steps" aria-label="Permalink to "NAT Traversal Configuration Steps""></a></h2><ol><li>Log into the Dashboard Admin Panel and navigate to the "NAT Traversal" section in the menu.</li><li>Click the "Add" button and provide the following required details: <ul><li><strong>Name</strong>: Assign a custom name to this traversal setup, for example, <code>OpenWrt Login Page</code>.</li><li><strong>Agent ID</strong>: Input the ID of the Agent for which traversal is needed.</li><li><strong>Local service</strong>: Specify the internal service address that requires traversal, in the <code>IP:port</code> format, such as <code>127.0.0.1:80</code>.</li><li><strong>Bind hostname</strong>: Enter the previously configured public domain name, such as <code>service-1.example.com</code>. If a non-standard port is used by Dashboard (e.g. default <code>8008</code>), be sure to include it as well.</li></ul></li><li>After filling in the details, click the "Add" button and wait for the traversal setup to activate.</li><li>Test the configuration by accessing <code>http://service-1.example.com</code> to ensure the internal service on the Agent is successfully accessible.</li></ol><h2 id="usage-notes" tabindex="-1">Usage Notes <a class="header-anchor" href="#usage-notes" aria-label="Permalink to "Usage Notes""></a></h2><ul><li>Continuous connectivity between the Agent and the Dashboard is crucial for the NAT traversal functionality to operate correctly. If the connection to the Agent is lost, the traversal setup will temporarily cease to function.</li><li>Given that the NAT traversal does not encrypt traffic by itself, it is recommended to secure data transmissions by employing TLS/SSL between the Agent and the Dashboard, as well as between the Dashboard and the client browser, to ensure data security during transmission.</li></ul>',10),r=[n];function s(l,c,d,u,h,p){return a(),t("div",null,r)}const f=e(i,[["render",s]]);export{g as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"NAT Traversal Configuration","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/nat.md","filePath":"en_US/guide/nat.md","lastUpdated":1732521523000}'),i={name:"en_US/guide/nat.md"},n=o("",10),r=[n];function s(l,c,d,u,h,p){return a(),t("div",null,r)}const f=e(i,[["render",s]]);export{g as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as i,c as s,o as t,a4 as a}from"./chunks/framework.BmdFiWrL.js";const E=JSON.parse('{"title":"Notification Configuration","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/notifications.md","filePath":"en_US/guide/notifications.md","lastUpdated":1732521523000}'),e={name:"en_US/guide/notifications.md"},n=a("",47),o=[n];function l(h,r,p,k,d,u){return t(),s("div",null,o)}const g=i(e,[["render",l]]);export{E as __pageData,g as default};
|
@ -1,15 +0,0 @@
|
||||
import{_ as i,c as s,o as a,a4 as e}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"Configuring OIDC Authentication","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/q10.md","filePath":"en_US/guide/q10.md","lastUpdated":1732521523000}'),n={name:"en_US/guide/q10.md"},t=e(`<h1 id="configuring-oidc-authentication" tabindex="-1">Configuring OIDC Authentication <a class="header-anchor" href="#configuring-oidc-authentication" aria-label="Permalink to "Configuring OIDC Authentication""></a></h1><p>Modify the contents of <code>config.yaml</code> to configure OIDC (OpenID Connect) authentication. OIDC is an authentication layer on top of the OAuth 2.0 protocol, which allows applications to verify the identity of users based on the authentication performed by an Authorization Server. This method is widely used to implement single sign-on for modern applications.</p><h2 id="configuration-details" tabindex="-1">Configuration Details <a class="header-anchor" href="#configuration-details" aria-label="Permalink to "Configuration Details""></a></h2><p>Here is a step-by-step guide to configuring the OIDC settings in your <code>config.yaml</code>:</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">oauth2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">oidc</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Required) Specifies the authentication type as OIDC</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcDisplayName</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">OIDC</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Optional, default: OIDC) The name displayed on the login page</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> admin</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Fill at least one of admin or adminGroups; default: empty) Admin usernames, separated by commas. Users listed here are considered administrators</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> adminGroups</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Fill at least one of admin or adminGroups; default: empty) Admin groups, separated by commas. Users in these groups are considered administrators. Omit if group management is not used</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> clientid</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># (Required) OIDC client ID</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> clientsecret</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># (Required) OIDC client secret</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcIssuer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://auth.example.com/realms/master</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Required) The issuer URL of the OIDC provider, obtainable from your OIDC provider</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # oidcLogoutUrl: https://auth.example.com/realms/master/protocol/openid-connect/logout # (Currently unusable due to a bug)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # oidcRegisterUrl: # (Optional) Registration link provided by the OIDC provider</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcScopes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">openid,profile,email</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Optional, default: openid,profile,email) OIDC scopes requested, separated by commas</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcLoginClaim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">sub</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Optional, default: sub) The username field returned by OIDC, can be preferred_username, sub, or email</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcGroupsClaim</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">groups</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Required if using adminGroups, default: groups) The user group information field returned by OIDC, can be groups or roles</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcAutoCreate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Optional, default: false) Whether to automatically create a user if they do not exist</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> oidcAutoLogin</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # (Optional, default: false) Whether to automatically redirect to the OIDC login page when the path is /login</span></span></code></pre></div>`,5),l=[t];function h(p,o,r,d,k,c){return a(),s("div",null,l)}const y=i(n,[["render",h]]);export{u as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as i,c as s,o as a,a4 as e}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"Configuring OIDC Authentication","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/q10.md","filePath":"en_US/guide/q10.md","lastUpdated":1732521523000}'),n={name:"en_US/guide/q10.md"},t=e("",5),l=[t];function h(p,o,r,d,k,c){return a(),s("div",null,l)}const y=i(n,[["render",h]]);export{u as __pageData,y as default};
|
@ -1,28 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const c=JSON.parse('{"title":"Customize GeoIP database","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/q11.md","filePath":"en_US/guide/q11.md","lastUpdated":1732521523000}'),n={name:"en_US/guide/q11.md"},e=t(`<h1 id="customize-geoip-database" tabindex="-1">Customize GeoIP database <a class="header-anchor" href="#customize-geoip-database" aria-label="Permalink to "Customize GeoIP database""></a></h1><p>Dashboard v0.18.3+ uses an embedded GeoIP database to query IP locations. An IPinfo format mmdb database is required to be placed at <code>pkg/geoip/geoip.db</code> to compile the Dashboard with working GeoIP queries.</p><p>An IPinfo format mmdb is constructed by those fields:</p><ul><li>An IP subnet as an entry</li><li><code>continent</code>:Continent code</li><li><code>continent_name</code>:Continent name</li><li><code>country</code>:Country code</li><li><code>country_name</code>:Country name</li></ul><p>Dashboard only requires the <code>country</code> field, and other fields can be left empty.</p><h2 id="editing-database" tabindex="-1">Editing database <a class="header-anchor" href="#editing-database" aria-label="Permalink to "Editing database""></a></h2><p>It is recommended to use <code>mmdbwriter</code> and <code>maxminddb-golang</code> libraries for editing mmdb databases as of now.</p><p>If your goal is to correct geographic information, it is recommended to modify directly based on the original IPinfo database. For similar operations, you can refer to the <a href="https://github.com/SagerNet/sing-geoip" target="_blank" rel="noreferrer">sing-geoip</a> project.</p><p>Using the correction of IPinfo data as an example, you need to use the <code>ReplaceWith</code> inserter (which is the default value) and write the <code>mmdbtype.Map</code> information:</p><div class="language-go vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">go</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">subnet </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">net</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">IPNet</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> IP: net.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ParseIP</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"114.5.1.4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Mask: net.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">CIDRMask</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">32</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">32</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">countryMap </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> make</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">map</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mmdbtype</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mmdbtype</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">countryMap[mmdbtype.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"country"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> mmdbtype.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"JP"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> err </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> writer.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Insert</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(subnet, mmdbtype.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">Map</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(countryMap)); err </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> nil</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> err</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>A <code>writer</code> is an instance of <code>*mmdbwriter.Tree</code> and needs to be created using the <code>mmdbwriter.New</code> method. The specific operations and the process of inserting other fields are not mentioned here.</p><p>After writing the database information to a file, you can use the <code>mmdbinspect</code> CLI tool to test the database information. For example:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> mmdbinspect</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -db</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./country.mmdb</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 114.5.1.4</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Database"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./country.mmdb"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Records"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Network"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"114.5.1.4/32"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Record"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "continent"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"AS"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "continent_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Asia"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "country"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"JP"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "country_name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Japan"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Lookup"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"114.5.1.4"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>Once the format and information are confirmed to be correct, the database can be used for compiling the Dashboard. Afterwards, you can test if the query API is working correctly using <code>grpcurl</code> or similar tools:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">grpcurl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -proto</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./nezha/proto/nezha.proto</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -plaintext</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'client_secret: test'</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '{"ip": "114.5.1.4"}'</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 127.0.0.1:5555</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> proto.NezhaService/LookupGeoIP</span></span></code></pre></div>`,15),h=[e];function p(l,k,d,r,o,E){return a(),i("div",null,h)}const y=s(n,[["render",p]]);export{c as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const c=JSON.parse('{"title":"Customize GeoIP database","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en_US/guide/q11.md","filePath":"en_US/guide/q11.md","lastUpdated":1732521523000}'),n={name:"en_US/guide/q11.md"},e=t("",15),h=[e];function p(l,k,d,r,o,E){return a(),i("div",null,h)}const y=s(n,[["render",p]]);export{c as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o,a4 as n}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Agent Startup/Online Troubleshooting Process","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md","filePath":"en_US/guide/q2.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q2.md"},a=n('<h1 id="agent-startup-online-troubleshooting-process" tabindex="-1">Agent Startup/Online Troubleshooting Process <a class="header-anchor" href="#agent-startup-online-troubleshooting-process" aria-label="Permalink to "Agent Startup/Online Troubleshooting Process""></a></h1><ol><li>Directly execute <code>/opt/nezha/agent/nezha-agent -s DashboardIP or non-CDN domain:RPCPort -p AgentKey -d</code> to check if the logs indicate timeouts due to DNS or poor network conditions.</li><li>Use <code>nc -v Domain/IP RPCPort</code> or <code>telnet Domain/IP RPCPort</code> to check for network issues, inspect the inbound and outbound firewalls of the local machine and the panel server. If you cannot determine the issue, you can use the port checking tool provided by <a href="https://port.ping.pe/" target="_blank" rel="noreferrer">https://port.ping.pe/</a>.</li><li>If the above steps indicate no issues but the Agent still does not go online correctly, try disabling SELinux. <a href="https://www.google.com/search?q=disable+SELINUX" target="_blank" rel="noreferrer">How to disable SELinux?</a></li></ol>',2),s=[a];function i(c,l,d,h,p,u){return o(),t("div",null,s)}const f=e(r,[["render",i]]);export{g as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o,a4 as n}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Agent Startup/Online Troubleshooting Process","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q2.md","filePath":"en_US/guide/q2.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q2.md"},a=n("",2),s=[a];function i(c,l,d,h,p,u){return o(),t("div",null,s)}const f=e(r,[["render",i]]);export{g as __pageData,f as default};
|
@ -1,74 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const E=JSON.parse('{"title":"Reverse Proxy gRPC Port (Supports Cloudflare CDN)","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md","filePath":"en_US/guide/q3.md","lastUpdated":1732521523000}'),t={name:"en_US/guide/q3.md"},l=n(`<h1 id="reverse-proxy-grpc-port-supports-cloudflare-cdn" tabindex="-1">Reverse Proxy gRPC Port (Supports Cloudflare CDN) <a class="header-anchor" href="#reverse-proxy-grpc-port-supports-cloudflare-cdn" aria-label="Permalink to "Reverse Proxy gRPC Port (Supports Cloudflare CDN)""></a></h1><p>Using Nginx or Caddy to reverse proxy gRPC</p><ul><li>Nginx Configuration</li></ul><div class="language-nginx vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">nginx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">server</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> listen </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">443</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ssl http2;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> listen </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[::]:443 ssl http2;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> server_name </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">data.example.com; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Your domain that the Agent uses to connect to the Dashboard</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_certificate </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /data/letsencrypt/fullchain.pem; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Path to your domain certificate</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_certificate_key </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /data/letsencrypt/key.pem; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Path to your domain private key</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_stapling </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_session_timeout </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1d</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_session_cache </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">shared:SSL:10m; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># This might conflict with other configuration files; comment it out if there are conflicts</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ssl_protocols </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">TLSv1.1 TLSv1.2 TLSv1.3;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> underscores_in_headers </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> keepalive_time </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">24h</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> keepalive_requests </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">100000</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> keepalive_timeout </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">120s</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> location</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> / </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> grpc_read_timeout </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">300s</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> grpc_send_timeout </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">300s</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> grpc_socket_keepalive </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> grpc_pass </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">grpc://grpcservers;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">upstream</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> grpcservers </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> server</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> localhost:5555;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> keepalive </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">512</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><ul><li>Caddy Configuration</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>data.example.com:443 { # Your domain that the Agent uses to connect to the Dashboard</span></span>
|
||||
<span class="line"><span> reverse_proxy {</span></span>
|
||||
<span class="line"><span> to localhost:5555</span></span>
|
||||
<span class="line"><span> transport http {</span></span>
|
||||
<span class="line"><span> versions h2c 2</span></span>
|
||||
<span class="line"><span> }</span></span>
|
||||
<span class="line"><span> }</span></span>
|
||||
<span class="line"><span>}</span></span></code></pre></div><p>Dashboard Configuration</p><ul><li>First, log in to the Dashboard and go to the settings page. In the <code>Non-CDN Dashboard server domain/IP</code> field, enter the domain configured in Nginx or Caddy in the previous step, for example, <code>data.example.com</code>, and save it.</li><li>Then, on the Dashboard server, open the <code>/opt/nezha/dashboard/data/config.yaml</code> file. Modify <code>proxygrpcport</code> to the port that Nginx or Caddy is listening to, for example, <code>443</code>. Since we enabled SSL/TLS in Nginx or Caddy, set <code>tls</code> to <code>true</code>. After making these changes, restart the Dashboard.</li></ul><p>Agent Configuration</p><ul><li>Log in to the Dashboard management backend, copy the one-click installation command, and execute it on the corresponding server to reinstall the agent.</li></ul><p>Enabling Cloudflare CDN (Optional)</p><p>According to Cloudflare gRPC requirements: gRPC services must listen on port 443 and must support TLS and HTTP/2. So, to enable CDN, you must use port 443 when configuring Nginx or Caddy to reverse proxy gRPC and configure the certificate (Caddy will automatically apply and configure the certificate).</p><ul><li>Log in to Cloudflare, select the domain you are using. Go to the <code>Network</code> tab and turn on the <code>gRPC</code> switch. Then, go to the <code>DNS</code> tab, find the DNS record for the domain configured in Nginx or Caddy to reverse proxy gRPC, and enable the CDN by clicking the orange cloud.</li></ul><p>After enabling <code>gRPC</code>, it might not be available immediately, and you may need to wait for a while. You can use <code>curl</code> and <code>nezha-agent -d</code> to verify:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">localhost:~/agent#</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "content-type: application/grpc+proto"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "authorization: Bearer test"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://xxx.xxx.ovh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> processing: https://xxx.xxx.ovh</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Trying [2606:4700:3035::ac43:8bed]:443...</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Connected to xxx.xxx.ovh (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">2606:4700:3035::ac43:8bed</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) port 443</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># ... SSL info</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> using HTTP/2</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [:method: GET]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [:scheme: https]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [:authority: xxx.xxx.ovh]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [:path: /]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [user-agent: curl/8.2.1]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> h2 [accept: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Using Stream ID: 1</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> GET / HTTP/2</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Host: xxx.xxx.ovh</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> User-Agent: curl/8.4.0</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Accept: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content-type: application/grpc+proto</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> authorization: Bearer test</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> HTTP/2 405 </span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> date: Wed, 20 Dec 2023 08:56:27 GMT</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content-type: application/grpc+proto</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> cf-ray: 8386ac12dabd5ddc-HKG</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> cf-cache-status: DYNAMIC</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> grpc-message: Received a HEADERS frame with :method </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"GET"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> which should be POST</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> grpc-status: 13</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> report-to: {</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">"endpoints"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">[{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">url</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">=%2BTjgJvXWyRF11nUOYx9Lq7UDC1xOYBLtjvWrdjVJQIqu9YqnFJeZFran2KRs6zabQc%2BLV8AubNqYRYDb7hQAZe6bglmVz0wQjrb0tNovYf%2B59SAp%2BQfZnH%2BAFDydNT95ZCmTPnKgWetcwQiUfXU%3D</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">"}],"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">group</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cf-nel</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">","</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">max_age</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":604800}</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">< nel: {"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">success_fraction</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":0,"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">report_to</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cf-nel</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">","</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">max_age</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">":604800}</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">< vary: Accept-Encoding</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">< server: cloudflare</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">< alt-svc: h3="</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">:443</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">"; ma=86400</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">< </span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">* Connection #0 to host xxx.xxx.ovh left intact</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">localhost:~/agent# /opt/nezha/agent/nezha-agent -s nezha.xxx.xxx:443 -p YOUR_KEY --tls -d</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">NEZHA@2023-12-20 05:14:00>> 检查更新: 0.15.14</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">NEZHA@2023-12-20 05:14:01>> 上报系统信息失败: rpc error: code = Unknown desc = EOF # You need to modify the GRPCHost and TLS options in the Dashboard /opt/nezha/dashboard/data/config.yaml</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">NEZHA@2023-12-20 05:14:01>> Error to close connection ...</span></span></code></pre></div>`,15),p=[l];function e(h,k,r,d,o,g){return a(),i("div",null,p)}const y=s(t,[["render",e]]);export{E as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BmdFiWrL.js";const E=JSON.parse('{"title":"Reverse Proxy gRPC Port (Supports Cloudflare CDN)","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q3.md","filePath":"en_US/guide/q3.md","lastUpdated":1732521523000}'),t={name:"en_US/guide/q3.md"},l=n("",15),p=[l];function e(h,k,r,d,o,g){return a(),i("div",null,p)}const y=s(t,[["render",e]]);export{E as __pageData,y as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as t,o,j as e,a as n}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Real-Time Channel Disconnection","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md","filePath":"en_US/guide/q4.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q4.md"},i=e("h1",{id:"real-time-channel-disconnection",tabindex:"-1"},[n("Real-Time Channel Disconnection "),e("a",{class:"header-anchor",href:"#real-time-channel-disconnection","aria-label":'Permalink to "Real-Time Channel Disconnection"'},"")],-1),s=e("ul",null,[e("li",null,"If you are using a CDN, ensure that the CDN provider offers WebSocket services and that WebSocket is enabled."),e("li",null,[n("Confirm that your reverse proxy rules have special configurations for the "),e("code",null,"/ws"),n(" and "),e("code",null,"/terminal"),n(" paths. You can "),e("a",{href:"/en_US/guide/dashboard.html#configure-reverse-proxy"},"click here"),n(" to view the reverse proxy configuration.")])],-1),c=[i,s];function l(d,h,u,_,f,m){return o(),t("div",null,c)}const v=a(r,[["render",l]]);export{g as __pageData,v as default};
|
@ -1 +0,0 @@
|
||||
import{_ as a,c as t,o,j as e,a as n}from"./chunks/framework.BmdFiWrL.js";const g=JSON.parse('{"title":"Real-Time Channel Disconnection","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q4.md","filePath":"en_US/guide/q4.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q4.md"},i=e("h1",{id:"real-time-channel-disconnection",tabindex:"-1"},[n("Real-Time Channel Disconnection "),e("a",{class:"header-anchor",href:"#real-time-channel-disconnection","aria-label":'Permalink to "Real-Time Channel Disconnection"'},"")],-1),s=e("ul",null,[e("li",null,"If you are using a CDN, ensure that the CDN provider offers WebSocket services and that WebSocket is enabled."),e("li",null,[n("Confirm that your reverse proxy rules have special configurations for the "),e("code",null,"/ws"),n(" and "),e("code",null,"/terminal"),n(" paths. You can "),e("a",{href:"/en_US/guide/dashboard.html#configure-reverse-proxy"},"click here"),n(" to view the reverse proxy configuration.")])],-1),c=[i,s];function l(d,h,u,_,f,m){return o(),t("div",null,c)}const v=a(r,[["render",l]]);export{g as __pageData,v as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"How to Perform Data Migration and Backup Recovery?","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md","filePath":"en_US/guide/q5.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q5.md"},n=t('<h1 id="how-to-perform-data-migration-and-backup-recovery" tabindex="-1">How to Perform Data Migration and Backup Recovery? <a class="header-anchor" href="#how-to-perform-data-migration-and-backup-recovery" aria-label="Permalink to "How to Perform Data Migration and Backup Recovery?""></a></h1><ol><li>Run the one-click script and choose <code>Stop Dashboard</code>.</li><li>On the old server, package the <code>/opt/nezha</code> folder, copy it to the same location in the new environment, and extract it.</li><li>In the new server, run the one-click script and choose <code>Start Dashboard</code>.</li></ol>',2),c=[n];function i(d,s,_,l,h,p){return a(),o("div",null,c)}const f=e(r,[["render",i]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as e,c as o,o as a,a4 as t}from"./chunks/framework.BmdFiWrL.js";const u=JSON.parse('{"title":"How to Perform Data Migration and Backup Recovery?","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q5.md","filePath":"en_US/guide/q5.md","lastUpdated":1732521523000}'),r={name:"en_US/guide/q5.md"},n=t("",2),c=[n];function i(d,s,_,l,h,p){return a(),o("div",null,c)}const f=e(r,[["render",i]]);export{u as __pageData,f as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o,a4 as i}from"./chunks/framework.BmdFiWrL.js";const p=JSON.parse('{"title":"How to Reset Traffic Statistics Monthly?","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q6.md","filePath":"en_US/guide/q6.md","lastUpdated":1732521523000}'),a={name:"en_US/guide/q6.md"},s=i('<h1 id="how-to-reset-traffic-statistics-monthly" tabindex="-1">How to Reset Traffic Statistics Monthly? <a class="header-anchor" href="#how-to-reset-traffic-statistics-monthly" aria-label="Permalink to "How to Reset Traffic Statistics Monthly?""></a></h1><p>The traffic statistics on the homepage reset every time the server restarts. To achieve a monthly reset of the traffic counter, you can do the following:</p><ol><li>Go to the <code>Notification</code> page in the management panel.</li><li>Refer to <a href="/en_US/guide/notifications.html#special-any-cycle-transfer-notification">this document</a> to create a monthly traffic notification.</li><li>Return to the homepage and go to the <code>Services</code> page, where you can see the monthly traffic statistics. The statistics here will not reset when the server restarts.</li></ol><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This method allows you to set any period, including but not limited to hourly, daily, weekly, monthly, or yearly traffic statistics reset, offering great flexibility!</p></div>',4),c=[s];function r(n,l,h,f,d,_){return o(),e("div",null,c)}const u=t(a,[["render",r]]);export{p as __pageData,u as default};
|
@ -1 +0,0 @@
|
||||
import{_ as t,c as e,o,a4 as i}from"./chunks/framework.BmdFiWrL.js";const p=JSON.parse('{"title":"How to Reset Traffic Statistics Monthly?","description":"","frontmatter":{},"headers":[],"relativePath":"en_US/guide/q6.md","filePath":"en_US/guide/q6.md","lastUpdated":1732521523000}'),a={name:"en_US/guide/q6.md"},s=i("",4),c=[s];function r(n,l,h,f,d,_){return o(),e("div",null,c)}const u=t(a,[["render",r]]);export{p as __pageData,u as default};
|