From 55cd1a8b9134f6503fb3863778d47bcbc080aa41 Mon Sep 17 00:00:00 2001 From: serinko Date: Fri, 14 Jul 2023 13:25:12 +0200 Subject: [PATCH] operators-guide: created generic docs maintenance.md and preliminary-steps.md to avoid redundancy --- documentation/operators/src/SUMMARY.md | 3 + documentation/operators/src/faq.md | 7 + .../wallet-gateway-sign.png | Bin 0 -> 118052 bytes documentation/operators/src/introduction.md | 3 +- .../operators/src/nodes/gateway-setup.md | 254 ++++++++++++- .../operators/src/nodes/maintenance.md | 357 ++++++++++++++++++ .../operators/src/nodes/mix-node-setup.md | 35 +- .../operators/src/preliminary-steps.md | 43 +++ 8 files changed, 667 insertions(+), 35 deletions(-) create mode 100644 documentation/operators/src/images/wallet-screenshots/wallet-gateway-sign.png create mode 100644 documentation/operators/src/nodes/maintenance.md create mode 100644 documentation/operators/src/preliminary-steps.md diff --git a/documentation/operators/src/SUMMARY.md b/documentation/operators/src/SUMMARY.md index 7bb81c8800..796c7d41ed 100644 --- a/documentation/operators/src/SUMMARY.md +++ b/documentation/operators/src/SUMMARY.md @@ -3,8 +3,11 @@ # Operators Guides - [Node Setup Guides](./nodes/setup-guides.md) +- [Preliminary Steps](./preliminary-steps.md) - [Mix Node](./nodes/mix-node-setup.md) - [Gateway](./nodes/gateway-setup.md) - [Network Requester](./nodes/network-requester-setup.md) + - [Validator](./nodes/validator-setup.md) +- [Maintenance](./nodes/maintenance.md) - [Troubleshooting](./nodes/troubleshooting.md) - [FAQ](./faq.md) diff --git a/documentation/operators/src/faq.md b/documentation/operators/src/faq.md index d6b32f3e77..5e1f5b72ad 100644 --- a/documentation/operators/src/faq.md +++ b/documentation/operators/src/faq.md @@ -4,4 +4,11 @@ TODO - [ ] List friendly VPS providers - [ ] Explain difficulty running a node on a self-hosted machine - [ ] Explain uNYM vs NYM. Why, ratio, etc + +Some community questions: +Hi, do you know if it's on the roadmap for network nodes (requesters, socks5 client, etc.) to reconnect to another gateway if the current gateway's connection drops or has issues? I have to reset my requester and socks5 clients to connect them to a new gateway almost every day...😕 having to delete the entire folders associated with them + +you should be able to switch gateway (and overwrite keys) using —force-register + + ---> diff --git a/documentation/operators/src/images/wallet-screenshots/wallet-gateway-sign.png b/documentation/operators/src/images/wallet-screenshots/wallet-gateway-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..63a76aaf4daa49a970ceed5e65c6bcf03891d507 GIT binary patch literal 118052 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

gh{@Ld5VYc~WzO%W;Gv3S$jd$h&x{|!h zsnocRQkBBQ0hKaw3arZWg3)C1IdAh;HnDG3444nDRB)$gIQdE4)%KX8dMh=*vh&P$ zfkN*FN4KOpuzjeB;CG~Afe_OnURuzYBwhF#OF27WLX0ut7NOlA@M3*Azj(g%6qM!V zzp5ve7Z-WMLzRtErk6&~QZQ1?gacK_+|kTs$q#{tym%0cGGs&rz#b8YUsqo%)9VAX zf;XsR+)i|u3#+IT&zpYv-DgYwRhV~{>9d}3IV8-0n>>$32g4pkO`LU$#nf!k+kD2vv5_I##8w0<&{2n)?s{3%^UUCi= zTEyFf1>4kD=-*Wa)XZV5D0OM0x~e7?s9vI_-}GdaqBgnUQL3nRN&-xH&tggR^YJY0 zu4J_QjNpd)Y)S!bxHQc*TNgFRtlR?$BQYM`tZE8_Hppz-)v})(R<+*t8aGBAMJ7bQ zz>s+%Fr$Zo%?8p>^!{~kD9MNVcg!jzZ{U`nFeNGEFC6hKha)&Lq-TU>z%f9b1_J9a zGqwnw^R{LJ=Vml|1gpmqb$nqb-01e;KDc+Ur&@rqI}Fxzs9s@UyO;S_SgAqGB}Mxe z3YoYsBp$>c^mc+Uhh+&hZsYpPmLf9RyKphlqM}$Hy0@O;@qMf!J9+-)c`)*|Mn7nj zQsDL*sV`MN8(VMMd?Bg6tLdt(8mLmYu^79RaYIIkPF(=3u(WA1dBxm4uOE+}IbZii zC2lvgNJBwgcQ)WTrzFZcvXS_W0f|iXLB6J6Wj>lb@%Plk`jF8b8Yv^}aHf#t^CT`~ z+!d2hicwtZ&`a5$tj$@iD6ZgX(dcV4Oii#t=_obv^DSDSr1Z#+8t^7;RY%nO{N7pA zh*~AKH85<{2uc^E589B0PWh}q%tuW=Y+SmkG6p&XY4DEn;d8^u>M5^j9&l8O38?E2 zj)@_??)ba&*q1N;cnvRG_nPI0!l3p52HZp;l91tEwCCfXF%eARjiQKbo40W{{)Hkx zL7*4_l7gC~@299mIVkZT`3hyEa%(isqWsdcPXdwU( znmMj8gju4f+FO=MGcyB&VZvS;JQ2i9LxbOz3TGTY3%v=}(oqus;$rjiwy#tu(u75M z7sAa;ZT)We81C_R5033$ z?5>`Tx=s$eMLJ~Z$nt>B)I-Vf!>0}=4eM&eSnY7!U>=qm9cG!V#Xg7G=lrP{^ho-D zfQ9E55P5gC2EKxtWaakjuIojbJIc>c55@*G8S^S5D^{+f68*DXNd}n0xr_dw z6gPMPN^$!R{|j}lS-eg5v#A-&{Cv0-`BhrkUI2 z?LG@CKMaE|#A~8q2i^{*#|?}+DjfMRrcBDo;o@oaL65>zE2gkLCc|&^K&6gyF0+2S z%D$2E?3u}3Xc1bF$8duh0+GL$$yzF5UU{U8q$g%qyB1Z;t=cdmL_qj1j->+M98}}_ zurFi#rPSIjskb5q?vqFVM>A>o774f_PBHpQ%)zggy!+Bd3|}-BQ3o}Gvsv$PsxB+w z&h6EVrI*CvKq4eRa6fye3(G6`wS_53Z0n4;vxv7)P1ca>cv;46ip9z6SGbF&K^UZymz7O1uPMuq9X8X^2u&8HDghEq4M=#a6 zbx3Q*zn`j};dukb)q@}PUWJM>9waZg-Q_DfEc}&Mz}dMMNhNZzJYEK%DCB0ZhR3&)uIdwqXc^whBYA+-wEKI3<^L z76rdrH~(pplm(HCQQ7+WSQ+Z+u2myqQSpx@MA-p6ik-F)1} zJDNoAxD`nM+5I=S?ByvK6|exXdPcK~A6?3>$uh=BEfz*vW zSpQ}fVLI9gerRA|5%FU}9TVh-4O^mK$G$=vr{{6)aqLSuT~rro+`JD!+K5>8&cyj+ zZyG(MG8%pIqWY7KyW;-^bGlvc0oI{D(h?NkTKM@as^;KEpPyrbOV)n{mt^#ZX>Q6s zXN!N_mr*G#!^XpS!%*M0(U@Q7Ko<@6H~_jm6P1dK?=u`nU=7+CTi)eH!_Ne2Z(RN~er)O z;uJhS$w8rv+P~=29I&zO4SG8bEd(oX8FC7AE8d=ts+Jll)V~9CrV#Uu>lgt?eWH6n zv`;|g9{CA(fuy?mbFEBP+tey>%*E3!tdo&PKwrea1*B9$kb3Eo)SMSZKahS316#eO zW^)fsH^g5n1qoLQ(@oG(K}+@tKUq5~GVoI;FjMNP0HMc5;|30xyq|mEH-0RLE&MeS z3yUFv9C4BJij;E+H_etZbm=L}*dj=VTAp)8M73?I<`4r&`=SeRO z?)sOzsIr$Y`?rp^oIvl#`En817rQQxNe?(bo^9l*v(G98PVVf@^)&^djE<6;e_QT( zi`@L)UmjUcNlywH9n&vFtCW?a!68T5@2w_CE%n@&;QwL|=GHK%n^(VFAtC>Mvc55O z7j1X_WAUT6Z^zr(juLIH%aDztB&4OBKI@{)!1B9Wd*QZoN;ma{Qo-8)!1;2G!FjBn z-drP&y!r!AclW0N@glUvmR0qd-c^kJb8yP7f(4%W{pC${fSTD_HX(HPUR!l|NlMRj zRe;)Vl0-b3b>+}quE+-hL08yM`-`T(=OzDcl?@hvWQK-Qno^hRNS&vsD4zdJ-cd=F zaCegGp=X?3=K*J;WZDO0VN8ZYgl?iwhRT^ZdW!;Per`)0;Cj-I<5zFTM~+Y({3u3x zA&}tnt@?;Iti00Y4nP&eD02{EADO22z338avl?%+@tQujy~q3WL)`}d%n6HEM|Wv% zE*PgC;jGj_f8G8%QxuB${N?lv4%Qbc94JE=lrd)B615;IJ!WY8O98*N)53K=iWeuy zL-6}T0{#lMcYe&f~c1;VwvyZi4i z?zv#M53&fGOMSIk_|C8VL+EL{R-)fOxhr3#I&DqJqo`bt?UACz)h8xTvvdT4peq-F zC(K<356F<@uRoc7+mp{^?Fc7p!ePF-z=pth&Z9neFNc{M1q~ZRmY%MvfB)#my|Cl4Fp=q#xhd>@voiE!k_stM~ zzl7OyZI9GVy!;dh*?+0tz5YB#20kE|Ntb%L?IAWL*HmgADBNtqFFv!fd@NsA3w{&- zTrv`vj^004M_)`S_4odNuAR!<$Kdex&-HtK8S}{e=K^2)Iz(JNQ08j|*Da}->wNMz z-gV_XpMO97)$L#M5wGZV5jg&E<8t=udWcWu*_|W|y z-k`_>P?WxtGD;->wzFz! zZ~?a@KjvfxL`LVIb(Iy|Ed(Bhg zGy4l7unG}yWV7$lMr`)p3T3gm|H2R?jPi{uUIH%8c!;91nLibDBuro{@;4Z$6InWo z77RH-T}*Al6b35eV}-@*5g*S<2W7oyzcBaEhGON4T-*sYw~-+3Q^jhrhFQY0(d|Zs6IvdJ1Grhv+FCdq?E8 z8OjwIelVY)M4*11sFq>9BiVnbpJ**5q+obebh+KCZb2`NHqPm|+HIDJKBN@-`C{rIC2BcJQpIUoi+k_3Ed8f4R-y z?TY`y`-3mZ-DYkgXf_KcxOaDIYa7p(D!visYyWbpNyB8W!p*>uajR~Rm+5kxWy~OP zqfX%ave~dl5jRnoK~`V_V0DjsEjo*u6}3G!FcBzzR&UaHpdfE^HNC~;pr_y6vjctR zajlTtrJI(d0uxtT8$%=y3f|g&u<>Byj|L_Sfqjn1F*3RIAwLCD-Wd|;;ESY|J9^!c zMm0~G?Hq5NDQE14-h8`~#yruq-Oy$=5BQjjz${t#WXDXJLoG2stp&io7%i^C!RIGY zna!1z`jNu_mzZ;$-h|St#a4UY^6o1!Xo1UQ$?y?kLC*Z%a7I|6JX62avwPZj$U>jY zKh!9!={V#(TXrkUowru~)6~A3h(z>@Y6Qc6A({v$>%7zl)lho;?Kc>GG99s#4&>zj zqo^RMN>QR%VOk^V$~ugIYmfirY}_vz@GZGjtt#skM~tfJ!?cjBYxv!J_K3pPeg*Qp zim&{O_GkX(-UA>P$_jJ}N0BEr%^PpW1>j4d7T8>^m5$^uTubEWN{ADT#tJ^zLfOc{ zK1Q}(&*z;2hh=~Sv<9sYGyPJD2}hA0DJ7hl#<~l)n5FnI*scy16JY#}lTyk-4HKE6 z*YH@>fA%aQtfFecLFu97-+I(zo8%?$FlSm9GRGg7l#{V#d!|I>yp3e-81MHMuRqL0 zE2p>MIob%Ai2*IxH!&1I88x<%z}ZFAs%R3;%vBQ!bqwiMrDAvgIL)c~EX}xY6xTST z=X&JvC~XUw-^9w=Mw&RT>C||B9qBuC9e)ZYv{n$Gyb6{!(7ssXl- z3C|h?jvCcq6`pno!~%5__qHmnd9O?9Ptnvq`c*skN=5H)XT+^K9u5odfR1xfQ_bNtJAs78D;FRL%JaOf&(#sB-K{ zK-W0!TrOv|-{VL_#;~jA3=!Ax7}TqkucZ`7Wi?-Aw?erV^MvsOc*WD~zCG*^UWaP) zr>@_y#A4`)*(!1jaFmb-=Zx<{`x-%eAk_VSn1uMWmadVuP|T8;F%=1W>s%P^)&cQE zEew~?Tm!~ZVm*|kAG-5Z`X5@}NKJ(h6{*q^;03~GM3k!CJ}FLEqO{2!q=P2uo1EtJ zbuM&lGu0dwa|IA9JAcKWQW6{8fPgZOq1pl(lo9F)BxZfDe_0I%###za4GHb>oT+G% zTY3qVOhBT%Y1)-7Qgbs{yp8z?fN1vepmW32pt|^N@;r-jd4}qse{9NA!6?NgDdduv z9J%F0)AEr?oa!J8=*>BQ-ogGnTG4J9J9783dw6J%qQm$QLp{`+xdLH`sNgPo98`Oq zF8~(QsP^-#%Wa-+FenOisyv+x7CF?bUEtwqA1tHS<_jrz$|b5s4X=hd3rgr=0Zaah96sj=GTH`AXcz$tVhMrflSPxsV{Q@KHcT{Qt-2xw*J)U*UZ|NY<#PJ+5f z8RzO@GHKp6^Qw5ZMgf>x)_m%KeS6#y0x0Mheyn|~t%y`n3*7>6~s#hGJh zdLU4CKtpEWg~HjtSs(c%Zkkk(_C;2%7-?I;J0>tpz#I0HXl`&WkVOmwtO~a(e>-?W zPe>m%i2Z-{Fwn)~vG7YE&v$P$PF}PD$+IvJ@W$L(RBB6Nw=rWLP?wyVP97us3o9pz z`FW|CC%0ZMMk=X1smYvqc!}2+S*&{Sg~_qDmEZ3%n1GS9uaTntKGcj@KZ@e>^CiSc zhEgOwbDmI|;Q}Lk-ySiuBmlNsn0(v>GWsnp*1R!a+ku|} zX)WflNASKP^k!}4c;WPoa6~72XEhzE4-RmLd~r$0&#HR%f9ls`5y=9OOAl)?QokAi z8di=@m$vL&@238|AK-4c{zr==fOhOaAcJtSzteCgBKMI<0rj(!lV?8%(`v}O!GYK}(EsDz0VL&=7s{lR36QtXbbias_435{E!zZO4l}KF)g-(wrx|i>3 z4D*1$B|0dKx%;?ZmWNnims>N`l(oA{mEsSz&k8yC6AT(?Z%JhcqulElAD_8lRX=r% z0VF*ti?F9kEF}e&J1ZhA^ImEb#xU#3daGC8_#OCOQy`?%W)6H6rAP+zz`efJ_A=Wx z0LnPXW5`-OHp!Z|+W-iKeV~<{mM8@Z%}>|aCamTa`#0g6iSk%V@K-ma0`jE;*K0wW z$R)~A5R}nZ5yRx5aY};y^|K#L9*Kt?#Cj#JpWZH&x?_&*VdaIBvd%8|)Rt!)hGYkC zYP%r|L1+W}jt*lOLm00UFLdm&P8>N(FD-JdeD!9?*PEh!eKitAc6rf(9fDIjDhRpp zkfhT`+KZKA=N7I)DU*}a7x#@^$bi=<`sPT}0oyel#?esfJbwj+NWAd3*i*k` zTaHiI>|&mq1YpP6#qoJW*}EUC2m->rtaZqS=IWY&N6;#O=hk9DaBR3fp9)c zr2O+_Wta|A6zNSan*(XZGHZPtu%hDUGQ6ISl{McHEODAhT06J{m3F~;Jgc85l_j(3 zK1x5>u8M}(WA`0BhzTG=$O-suiGQ}vKjv4^?%b=Qj(p8B(X>->XoH~;^03}uBsVWc zkDs)8?Fbu`WD>LzhS=2lOIy7sAi{%twS>a`{5VnlMKYo-s04c{UZ?6QP^h4w_=Rhi)vl8W)L2{)#Fk z^RSc!Ig7;taOv|8z$FeyxZcLeeRMe-P;4jR#zJypg82BsH>LHaX2OXJ?~O<_8g%0l z`nT=*gVI4aA=PY|cdGSo{cWoCW_T0YChl$UAm%L8v9W>I?HW;W+|b59Mm|>o4#c2! z%W*~RvDXi!_-fB~+dp@R6mQ??YQyBky$oLEM?>GYNqD9SAhV)@lC>lvfwRp#_ktq$ zhO?iBj@l1-*Q0LJd12Q8rmr7SXpe7@CXG5KI)(!VNb{x|Uz9TYdq&WkZISJ+B&#L1 z`(&2$OZ6E7fS@giVmX|_K_XrfKO4MV6%QUBpuD!)Mw!VtdD*LF~jCT>X6!%qr}WV^ogDIBHUIwbHvlLf3ke&<>0-Eg9#|Ds z)%{lG-WJ2;)kKS>p1KK`*xN^I_oSs=!Ej8z%k+^RT12%Cko zTh{&`rW_-fMy^I`i3c>XMt`M8_Ma7Gs5xnJ{ydZjW~v`ma@Ol!St+WmvAq7t zYHBmra^I&8kKN|YQ&Eyi5L)R4F22ecU;7U= zdS$XrtT|l_c;3#U3-T*|?FXZX6%souuqlS0f_tPK!5+8tjv*?Q^i^mhzB=?BB+Py+ z-`7(pR4lI{6q$Ob;QZA0yT`1oJDQxw@~ZykK~)Xr9!Q)T1Is z2OM2KQabMm15{SNN>j2vT>?HOeVK+0u zaxG%4qP>A3lgi3`pCAHLSptrBfQ#B9?N8B!1>-X7_nAh>VL!AB-@^+kM68o=rh|!= zO76xS5&xpMaj^{4+^9ydL?&zIL0%3yH>D<(8wi|W+o0wdOwE2$pZ)TwJ4_023xfsL zJZHq+z-*GlQ>k8tWNO17k*AFeA0#yw7tis1gfOdVZeSPzS^~k_A4%*+3Oxn0!MX zgVnscNJr!&84(1{YHCPl22m6$JjCaR zOos{J-?z*k7hycfS;`Qd#$^Nfju{@q@x3c82FVxsCb2TfnI9w^ce zZ;YoUA*M^8tT%or1V02Bup0e)qM6-}^hE6}p0=Lvz?%L1fiK>@1M1Joz;#J5XC(#C z7$*2L{3}g{NF;Num-b9j{qu&f`0+s^SejS6STdu}2b?{{;w_0`;N5IOj>gaMWp(02^Md0g|NSNv4gICPPTz~2*z`Yx|Z<_0%GT6P0Nh>VpJOrC^j z?ch-%c!;E`l}dT_4mD*lQ&e5W;@FL9c&^K){L5$0_eaNyW4?@1#WPT%rDAeoeL7HLZ;9 z4xnPhy;GDAjC&lrjR!wX1+HPgD&W6G{R^1}OxxIrAG>bWi9nv!(I8nll84=Z+QL$7Bfw9iDfOH(}yXX&o~B z3C(Bq&E_T-=RwEKK{w0AFR0$EXZ={>D7nO{ce}FED>Hd{>IDhj4Z8G$v;>{aoKMu( z)7SKz$oxLKJe2uua@qGX^^0Z{CIpohbgp@MoOR@tf4<6r_H@|^h_wbBYfdalS{W%Q zYr076Qs{RrW zKm?sGl>*Q}9Pvk7EM2YyS(sd0Y+W|_G!R``1rAx2hO32rHDH|AVHCHjbp8F3`3`fw zbWC!}z?ntoZ7$}TXTUVM9E%I)3)y2@PkwhqXKn!%YUhtW6J()_6w8>t$b7nd9Qvf^ z=sZBRe@B2dCRa2ja7G7+IsR-@P5-Uq{Qs1IG_cJ}N7f?aqR5yMdabi+6*IYyPS58) z-3J{j6a^Th6$XXKVzDA$7r0QJ?7NMGI%#SQp2p>E!pqRE<=*~By^_2(shm(I$a^LL z1D&%{=lBHt`F}}0p_J9uujajtYH;OnVH7^VGS)Y7jfl}6=okz*vLb07@Mr6y?UO*; zDF8ywSXOnwC&6Yn0^s-uJuW(sCSI|cMYSZ=o^71mC8{Q z-ZlCo-*EKm-bpL}jSt;y&;fodz3wHz#CI(o15%K1vFa0umh%#K?hO5Q$k$Y?jtFpTezY(q2tMWs{WL1*5Y$+e0f>c? zNBPtY&j)_3vnl6T3A9we5i1`Aai(8yBtwedgI5DnlRSLG_}Y2HV*$PI&B!309Qs55 z(1bKJyGhL8OjYZ34hJbfK|RB(WP&=J$;bT~-d)l6Y<}d>T8*q8QjfF2WT9^Tm4!M;3j zaP~Jfi|Z9##Qpkx;5xYMJnW$=g5Q1J&OmCIk7sFTZo~zCO-1w@QI5j$ySo$}cQ_(; zZQMP*&WeC@3PO%NTU;z_IAEGAmWi{405dxP^H#1%<>yTsKF}8It{D8~Ead)-TUF!< zP@?2Pv!Xg+uC`LL&)_yN*nqJ*2a7$^W1cZL!0e1oJ8`(ikLh$)u83VzKHyLVPZt)$ zl98iHv3ixkQ$(h6924{rPxiP#s@DYv4>oyO0oC!XKEG~Tj_*xoDuUwTu2 zZ%iWl-Lt#vx1{SN#4lL>i1xfx;rSfCd(VNoAlXJW(c8AS2j)Y1?6OXNl?D@Sgr=?` zsI^iTR@j_7iFmiPEl~>EubT80S(LGYE2PaKvLplItKm;z)!cuB{L-RF zCg%_J@i8-`M&?Aoz6d5rVKpcceX}~MGgFB(_?5EML%Q0`gq(qMMi?iaIEyM*dT;QI z(t=(h-@cEr?6z~wo4?f%+nasXULI$k+^nswXP)Ow4iIbkh0i~9z#cJ@%4*7XQY8aH z3O*{sP=1=HRKy)OdqL+~U`6@({_d%nIae>Uwl_X6@8ma^@GP+uJL3$` zE?ZmlztEZxlLykp$eLxQH9%q{0%okyU4gMcH^&)#V|S0=j6WoaKuGo1@1KTpup=iO z5VnlZZVNS_1Iv~+3gc5zx*E2;kh@Z_@lX~Qs9=-xqPLZ+f0)`!P`1t~#3dZ6j($J1 zai6~Lk$GJ~yLuxsFle9pPPvF+J}#tX@29sb^R1gRUQUSs>K?XCS_1`}XP z_QY;H^nbhdSTx-^+2kAj^5en_Q$D)rUWE3ds4?OcP zW~b@jp{E#1SbL(-?a1_}vV5;e@HJ+rB67aiK|1zH86Snn;jSGHnDQx7@g`}`KK~Y% z7sdVnn^zbQ%n$<>r}=Va@HZU~l;J!{n!nuGUDwIwGOfFZ_ng6C6fkhU+m#|RDS3r& zAE8a5k3(qo!P;KfnEbTPtlaP&T7%Hip^_QxmqmdU^MuUN(N>MKXHVh0>Yb+=i{~qK z0PH=rbS!R1LH}I%-2;T@^VTee)9nHfm0og zj02kq8_tu~gp8(_@fe#Z2D{ z_;{IgZWnJx?0pfRse$V6a(xhW&IExJH?}!@3&Yj^016w|U9Mfzd56wiQbnzp0cTY( z#Q0(0OBh?;s_i+;i`38SZ#NajVhEk1L|-T#KIJY_zKH|TMZ~il=+`g5xhE8+3;y*U zk)RT;Q+Lm_#@=Uv9Yg;cvpU*eVI?5Sd1{`S`B%7UtRcKAWs&1WuHclFPtL*VeCNT` zh74F012TD=`(TEGSPXABAWwq#gHsH7ejz$F6V=pg-}DtH=rs#jy>q!Y zoaB-QrL#s4?`D87{ClWV+HlN<=OBDWrXc7~T+0#!2_1wT$xk{2`6@b~bD&##*cwRO zI&kpG-q-7Wbyvmx1hFtJSl)Rz|Dvb(>>5`3qSIj{1foR_@Up+6c(H=}G-ZYi&|P<4 zR>JR9ZYH!>7z+UB2!A@=R?UamGLT6mn<^6XJ{T*=8W&jeE8 zUiX&RUsyb

@E}Q7HmryqarIxWXBsD9W9l?>YP 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

TaZoR+yex1nQT6Ur! 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 Fe*r}Fq&@%u literal 0 HcmV?d00001 diff --git a/documentation/operators/src/introduction.md b/documentation/operators/src/introduction.md index d2c148bf64..a97860f292 100644 --- a/documentation/operators/src/introduction.md +++ b/documentation/operators/src/introduction.md @@ -23,7 +23,8 @@ If you are looking for information on grants and beta-release Nym apps, check ou * [Network requesters](./nodes/network-requester-setup.md) * [Validators](./nodes/validator-setup.md) -**Troubleshooting and FAQ** +**Maintenance, troubleshooting and FAQ** +* [Maintenance](./nodes/maintenance.md) * [Troubleshooting](./nodes/troubleshooting.md) * [FAQ](./faq.md) diff --git a/documentation/operators/src/nodes/gateway-setup.md b/documentation/operators/src/nodes/gateway-setup.md index f4ee68e242..591cd3d1a9 100644 --- a/documentation/operators/src/nodes/gateway-setup.md +++ b/documentation/operators/src/nodes/gateway-setup.md @@ -1 +1,253 @@ -# Gateway +# Gateways + +> The Nym gateway was built in the [building nym](../binaries/building-nym.md) section. If you haven't yet built Nym and want to run the code, go there first. + +> Any syntax in `<>` brackets is a user's unique variable. Exchange with a corresponding name without the `<>` brackets. + +## Current version +``` + +``` + +## Preliminary steps + +Make sure you do the preparation listed in the [preliminary steps page](../preliminary-steps.md) before setting up your gateway. + + +## Gateway setup +Now that you have built the codebase, set up your wallet, and have a VPS with the `nym-gateway` binary, you can set up your gateway with the instructions below. + +To begin, move to `/taget/release` directory from which you run the node commands: + +``` +cd target/release +``` + +### Viewing command help +You can check that your binaries are properly compiled with: + +``` +./nym-gateway --help +``` + +~~~admonish example collapsible=true title="Console output" +``` + +``` +~~~ + +You can also check the various arguments required for individual commands with: + +``` +./nym-gateway --help +``` + +### Initialising your gateway +To check available configuration options use: + +``` + ./nym-gateway init --help +``` + +~~~admonish example collapsible=true title="Console output" +``` + +``` +~~~ + +The following command returns a gateway on your current IP with the `id` of `supergateway`: + +``` +./nym-gateway init --id supergateway --host $(curl ifconfig.me) --wallet-address n1eufxdlgt0puwrwptgjfqne8pj4nhy2u5ft62uq +``` + +~~~admonish example collapsible=true title="Console output" +``` + +``` +~~~ + +The `$(curl ifconfig.me)` command above returns your IP automatically using an external service. Alternatively, you can enter your IP manually if you wish. If you do this, remember to enter your IP **without** any port information. + +### Bonding your gateway +#### Via the Desktop wallet +You can bond your gateway via the Desktop wallet. + +1. Open your wallet, and head to the `Bonding` page, then select the node type `Gateway` and input your node details (Location format is , ). Press `Next` + +2. Enter the `Amount`, `Operating cost` and press `Next`. + +3. You will be asked to run a the `sign` command with your `gateway` - copy and paste the long signature as the value of `--contract-msg` and run it. + +``` +./nym-mixnode sign --id --contract-msg +``` + +It will look something like this: + +~~~admonish example collapsible=true title="Console output" +``` +./nym-gateway sign --id upgrade_test --contract-msg 2Mf8xYytgEeyJke9LA7TjhHoGQWNBEfgHZtTyy2krFJfGHSiqy7FLgTnauSkQepCZTqKN5Yfi34JQCuog9k6FGA2EjsdpNGAWHZiuUGDipyJ6UksNKRxnFKhYW7ri4MRduyZwbR98y5fQMLAwHne1Tjm9cXYCn8McfigNt77WAYwBk5bRRKmC34BJMmWcAxphcLES2v9RdSR68tkHSpy2C8STfdmAQs3tZg8bJS5Qa8pQdqx14TnfQAPLk3QYCynfUJvgcQTrg29aqCasceGRpKdQ3Tbn81MLXAGAs7JLBbiMEAhCezAr2kEN8kET1q54zXtKz6znTPgeTZoSbP8rzf4k2JKHZYWrHYF9JriXepuZTnyxAKAxvGFPBk8Z6KAQi33NRQkwd7MPyttatHna6kG9x7knffV6ebGzgRBf7NV27LurH8x4L1uUXwm1v1UYCA1WSBQ9Pp2JW69k5v5v7G9gBy8RUcZnMbeL26Qqb8WkuGcmuHhaFfoqSfV7PRHPpPT4M8uRqUyR4bjUtSJJM1yh6QSeZk9BEazzoJqPeYeGoiFDZ3LMj2jesbJweQR4caaYuRczK92UGSSqu9zBKmE45a + + + _ __ _ _ _ __ ___ + | '_ \| | | | '_ \ _ \ + | | | | |_| | | | | | | + |_| |_|\__, |_| |_| |_| + |___/ + + (nym-gateway - version {{platform_release_version}}) + + +>>> attempting to sign 2Mf8xYytgEeyJke9LA7TjhHoGQWNBEfgHZtTyy2krFJfGHSiqy7FLgTnauSkQepCZTqKN5Yfi34JQCuog9k6FGA2EjsdpNGAWHZiuUGDipyJ6UksNKRxnFKhYW7ri4MRduyZwbR98y5fQMLAwHne1Tjm9cXYCn8McfigNt77WAYwBk5bRRKmC34BJMmWcAxphcLES2v9RdSR68tkHSpy2C8STfdmAQs3tZg8bJS5Qa8pQdqx14TnfQAPLk3QYCynfUJvgcQTrg29aqCasceGRpKdQ3Tbn81MLXAGAs7JLBbiMEAhCezAr2kEN8kET1q54zXtKz6znTPgeTZoSbP8rzf4k2JKHZYWrHYF9JriXepuZTnyxAKAxvGFPBk8Z6KAQi33NRQkwd7MPyttatHna6kG9x7knffV6ebGzgRBf7NV27LurH8x4L1uUXwm1v1UYCA1WSBQ9Pp2JW69k5v5v7G9gBy8RUcZnMbeL26Qqb8WkuGcmuHhaFfoqSfV7PRHPpPT4M8uRqUyR4bjUtSJJM1yh6QSeZk9BEazzoJqPeYeGoiFDZ3LMj2jesbJweQR4caaYuRczK92UGSSqu9zBKmE45a +>>> decoding the message... +>>> message to sign: {"nonce":0,"algorithm":"ed25519","message_type":"gateway-bonding","content":{"sender":"n1ewmme88q22l8syvgshqma02jv0vqrug9zq9dy8","proxy":null,"funds":[{"denom":"unym","amount":"100000000"}],"data":{"gateway":{"host":"62.240.134.189","mix_port":1789,"clients_port":9000,"location":"62.240.134.189","sphinx_key":"FKbuN7mPdoCG9jA3CkAfXxC5X4rHhqeMVtmfRtJ3cFZd","identity_key":"3RoAhR8gEdfBETMjm2vbMFzKddxXDdE9ygBAnJHWqSzD","version":"1.1.13"}}}} +``` +~~~ + +* Copy the resulting signature: + +``` +>>> The base58-encoded signature is: +2SPDjLjX4b6XEtkgG7yD8Znsb1xycL1edFvRK4JcVnPsM9k6HXEUUeVS6rswRiYxoj1bMgiRKyPDwiksiuyxu8Xi +``` + +* And paste it into the wallet nodal, press `Next` and confirm the transaction. + +![Paste Signature](../images/wallet-screenshots/wallet-gateway-sign.png) + +* Your gateway is now bonded. + +> You are asked to `sign` a transaction on bonding so that the mixnet smart contract is able to map your nym address to your node. This allows us to create a nonce for each account and defend against replay attacks. + +#### Via the CLI (power users) +If you want to bond your mix node via the CLI, then check out the [relevant section in the Nym CLI](https://nymtech.net/docs/tools/nym-cli.html#bond-a-mix-node) docs. + +### Running your gateway +The `run` command starts the gateway: + +``` +./nym-gateway run --id +``` + +### Upgrading your gateway +Upgrading your node is a two-step process: +* Updating the binary and `config.toml` on your VPS +* Updating the node information in the [mixnet smart contract](../nyx/mixnet-contract.md). **This is the information that is present on the [mixnet explorer](https://explorer.nymtech.net)**. + +>These instructions are specifically regarding upgrading your gateway binary from one version to another. If you want to change node information such as the listening port, you can do this by clicking the `node settings` tab in the `Bonding` page of the wallet. + +#### Step 1: Upgrading your binary +Follow these steps to upgrade your binary and update its config file: +* pause your gateway process. +* replace the existing binary with the newest binary (which you can either compile yourself or grab from our [releases page](https://github.com/nymtech/nym/releases)). +* re-run `init` with the same values as you used initially. **This will just update the config file, it will not overwrite existing keys**. +* restart your gateway process with the new binary. + +> Do **not** use the `upgrade` command: there is a known error with the command that will be fixed in a subsequent release. + +#### Step 2: Updating your node information in the smart contract +Follow these steps to update the information about your node which is publically avaliable from the [Nym API](https://validator.nymtech.net/api/swagger/index.html) and information displayed on the [mixnet explorer](https://explorer.nymtech.net). + +You can either do this graphically via the Desktop Wallet, or the CLI. + +#### Updating node information via the Desktop Wallet +* Navigate to the `Bonding` page and click the `Node Settings` link in the top right corner: +![Bonding page](../images/wallet-screenshots/bonding.png) + +* Update the fields in the `Node Settings` page and click `Submit changes to the blockchain`. +![Node Settings Page](../images/wallet-screenshots/node_settings.png) + +#### Updating node information via the CLI +If you want to bond your mix node via the CLI, then check out the [relevant section in the Nym CLI](../tools/nym-cli.md#upgrade-a-mix-node) docs. + +## VPS Setup and Automation +### Configure your firewall +Although your gateway is now ready to receive traffic, your server may not be - the following commands will allow you to set up a properly configured firewall using `ufw`: + +``` +# check if you have ufw installed +ufw version +# if it is not installed, install with +sudo apt install ufw -y +# enable ufw +sudo ufw enable +# check the status of the firewall +sudo ufw status +``` + +Finally open your gateway's p2p port, as well as ports for ssh and incoming traffic connections: + +``` +sudo ufw allow 1789,22,9000/tcp +# check the status of the firewall +sudo ufw status +``` + +For more information about your gateway's port configuration, check the [gateway port reference table](#gateway-port-reference) below. + +### Automating your gateway with systemd +Although it's not totally necessary, it's useful to have the gateway automatically start at system boot time. Here's a systemd service file to do that: + +```ini +[Unit] +Description=Nym Gateway ({{platform_release_version}}) +StartLimitInterval=350 +StartLimitBurst=10 + +[Service] +User=nym +LimitNOFILE=65536 +ExecStart=/home/nym/nym-gateway run --id supergateway +KillSignal=SIGINT +Restart=on-failure +RestartSec=30 + +[Install] +WantedBy=multi-user.target +``` + +Put the above file onto your system at `/etc/systemd/system/nym-gateway.service`. + +Change the path in `ExecStart` to point at your gateway binary (`nym-gateway`), and the `User` so it is the user you are running as. + +If you have built nym on your server, and your username is `jetpanther`, then the start command might look like this: + +`ExecStart=/home/jetpanther/nym/target/release/nym-gateway run --id your-id`. Basically, you want the full `/path/to/nym-gateway run --id whatever-your-node-id-is` + + +Then run: + +``` +systemctl enable nym-gateway.service +``` + +Start your node: + +``` +service nym-gateway start +``` + +This will cause your node to start at system boot time. If you restart your machine, the node will come back up automatically. + +You can also do `service nym-gateway stop` or `service nym-gateway restart`. + +Note: if you make any changes to your systemd script after you've enabled it, you will need to run: + +``` +systemctl daemon-reload +``` + +This lets your operating system know it's ok to reload the service configuration. + +## Gateway related Validator API endpoints +Numerous gateway related API endpoints are documented on the Validator API's [Swagger Documentation](https://validator.nymtech.net/api/swagger/index.html). There you can also try out various requests from your broswer, and download the response from the API. Swagger will also show you what commands it is running, so that you can run these from an app or from your CLI if you prefer. + +## Ports +All gateway specific port configuration can be found in `$HOME/.nym/gateways//config/config.toml`. If you do edit any port configs, remember to restart your gateway. + +### Gateway port reference +| Default port | Use | +|--------------|---------------------------| +| 1789 | Listen for Mixnet traffic | +| 9000 | Listen for Client traffic | diff --git a/documentation/operators/src/nodes/maintenance.md b/documentation/operators/src/nodes/maintenance.md new file mode 100644 index 0000000000..b2fe722d0a --- /dev/null +++ b/documentation/operators/src/nodes/maintenance.md @@ -0,0 +1,357 @@ +# Maintenance + + + + + +### Upgrading your mix node + +Upgrading your node is a two-step process: +* Updating the binary and `~/.nym/mixnodes//config.toml` on your VPS +* Updating the node information in the [mixnet smart contract](../nyx/mixnet-contract.md). **This is the information that is present on the [mixnet explorer](https://explorer.nymtech.net)**. + +#### Step 1: Upgrading your binary +Follow these steps to upgrade your mix node binary and update its config file: +* pause your mix node process. +* replace the existing binary with the newest binary (which you can either [compile yourself](https://nymtech.net/docs/binaries/building-nym.html) or grab from our [releases page](https://github.com/nymtech/nym/releases)). +* re-run `init` with the same values as you used initially. **This will just update the config file, it will not overwrite existing keys**. +* restart your mix node process with the new binary. + +#### Step 2: Updating your node information in the smart contract +Follow these steps to update the information about your mix node which is publically avaliable from the [Nym API](https://validator.nymtech.net/api/swagger/index.html) and information displayed on the [mixnet explorer](https://explorer.nymtech.net). + +You can either do this graphically via the Desktop Wallet, or the CLI. + +#### Updating node information via the Desktop Wallet +* Navigate to the `Bonding` page and click the `Node Settings` link in the top right corner: +\ +![Bonding page](../images/wallet-screenshots/bonding.png) + +* Update the fields in the `Node Settings` page and click `Submit changes to the blockchain`. +\ +![Node Settings Page](../images/wallet-screenshots/node_settings.png) + +#### Updating node information via the CLI +If you want to bond your mix node via the CLI, then check out the [relevant section in the Nym CLI](../../documentation/docs/src/tools/nym-cli.md#upgrade-a-mix-node) docs. + +--- + +## VPS Setup and Automation +### Configure your firewall +The following commands will allow you to set up a firewall using `ufw`. + +``` +# check if you have ufw installed +ufw version + +# if it is not installed, install with +sudo apt install ufw -y + +# enable ufw +sudo ufw enable + +# check the status of the firewall +sudo ufw status +``` + +Finally open your mix node's p2p port, as well as ports for ssh and ports `8000` and `1790` for verloc and measurement pings: + +``` +sudo ufw allow 1789,1790,8000,22/tcp + +# check the status of the firewall +sudo ufw status +``` + +For more information about your mix node's port configuration, check the [mix node port reference table](./mix-node-setup.md#mixnode-port-reference) below. + +### Automating your mix node with tmux and systemd + +It's useful to have the mix node automatically start at system boot time. + +#### tmux + +One way is to use `tmux` shell on top of your current VPS terminal. Tmux is a terminal multiplexer, it allows you to create several terminal windows and panes from a single terminal. Processes started in `tmux` keep running after closing the terminal as long as the given `tmux` window was not terminated. + +Use the following command to get `tmux`. + +Platform|Install Command +---|--- +Arch Linux|`pacman -S tmux` +Debian or Ubuntu|`apt install tmux` +Fedora|`dnf install tmux` +RHEL or CentOS|`yum install tmux` +macOS (using Homebrew|`brew install tmux` +macOS (using MacPorts)|`port install tmux` +openSUSE|`zypper install tmux` + +In case it didn't work for your distribution, see how to build `tmux` from [version control](https://github.com/tmux/tmux#from-version-control). + +**Running tmux** + +No when you installed tmux on your VPS, let's run a mixnode on tmux, which allows you to detach your terminal and let the mixnode run on its own on the VPS. + +* Pause your mixnode +* Start tmux with the command +``` +tmux +``` +* The terminal should stay in the same directory, just the layout changed into tmux default layout. +* Start the mixnode again with a command: +``` +./nym-mixnode run --id +``` +* Now, without closing the tmux window, you can close the whole terminal and the mixnode (and any other process running in tmux) will stay active. +* Next time just start your teminal, ssh into the VPS and run the following command to attach back to your previous session: +``` +tmux attach session +``` +* To see keybinding options of tmux press `ctrl`+`b` and after 1 second `?` + +#### systemd + +Here's a systemd service file to do that: + +```ini +[Unit] +Description=Nym Mixnode ({{mix_node_release_version}}) +StartLimitInterval=350 +StartLimitBurst=10 + +[Service] +User= +LimitNOFILE=65536 +ExecStart=/home///nym-mixnode run --id +KillSignal=SIGINT +Restart=on-failure +RestartSec=30 + +[Install] +WantedBy=multi-user.target +``` + +Put the above file onto your system at `/etc/systemd/system/nym-mixnode.service`. + +Change the `` in `ExecStart` to point at your mix node binary (`nym-mixnode`), and the `` so it is the user you are running as. + +If you have built nym in the `$HOME` directory on your server, and your username is `jetpanther`, then the start command might look like this: + +`ExecStart=/home/jetpanther/nym/target/release/nym-mixnode run --id your-id`. Basically, you want the full `/path/to/nym-mixnode run --id whatever-your-node-id-is` + +Then run: + +``` +systemctl enable nym-mixnode.service +``` + +Start your node: + +``` +service nym-mixnode start +``` + +This will cause your node to start at system boot time. If you restart your machine, the node will come back up automatically. + +You can also do `service nym-mixnode stop` or `service nym-mixnode restart`. + +Note: if you make any changes to your systemd script after you've enabled it, you will need to run: + +``` +systemctl daemon-reload +``` + +This lets your operating system know it's ok to reload the service configuration. + +#### Setting the ulimit + +Linux machines limit how many open files a user is allowed to have. This is called a `ulimit`. + +`ulimit` is 1024 by default on most systems. It needs to be set higher, because mix nodes make and receive a lot of connections to other nodes. + +If you see errors such as: + +``` +Failed to accept incoming connection - Os { code: 24, kind: Other, message: "Too many open files" } +``` + +This means that the operating system is preventing network connections from being made. + +##### Set the ulimit via `systemd` service file + +Query the `ulimit` of your mix node with: + +``` +grep -i "open files" /proc/$(ps -A -o pid,cmd|grep nym-mixnode | grep -v grep |head -n 1 | awk '{print $1}')/limits +``` + +You'll get back the hard and soft limits, which looks something like this: + +``` +Max open files 65536 65536 files +``` + +If your output is **the same as above**, your node will not encounter any `ulimit` related issues. + +However if either value is `1024`, you must raise the limit via the systemd service file. Add the line: + +``` +LimitNOFILE=65536 +``` + +Reload the daemon: + +``` +systemctl daemon-reload +``` + +or execute this as root for system-wide setting of `ulimit`: + +``` +echo "DefaultLimitNOFILE=65535" >> /etc/systemd/system.conf +``` + +Reboot your machine and restart your node. When it comes back, use `cat /proc/$(pidof nym-mixnode)/limits | grep "Max open files"` to make sure the limit has changed to 65535. + +##### Set the ulimit on `non-systemd` based distributions + +In case you chose tmux option for mixnode automatization, see your `ulimit` list by running: + +``` +ulimit -a + +# watch for the output line -n +-n: file descriptors 1024 +``` + +You can change it either by running a command: + +``` +ulimit -u -n 4096 +``` + +or editing `etc/security/conf` and add the following lines: + +``` +# Example hard limit for max opened files +username hard nofile 4096 + +# Example soft limit for max opened files +username soft nofile 4096 +``` + +Then reboot your server and restart your mixnode. + + + + + +#### Step 1: Upgrading your binary +Follow these steps to upgrade your binary and update its config file: +* pause your gateway process. +* replace the existing binary with the newest binary (which you can either compile yourself or grab from our [releases page](https://github.com/nymtech/nym/releases)). +* re-run `init` with the same values as you used initially. **This will just update the config file, it will not overwrite existing keys**. +* restart your gateway process with the new binary. + +> Do **not** use the `upgrade` command: there is a known error with the command that will be fixed in a subsequent release. + +#### Step 2: Updating your node information in the smart contract +Follow these steps to update the information about your node which is publically avaliable from the [Nym API](https://validator.nymtech.net/api/swagger/index.html) and information displayed on the [mixnet explorer](https://explorer.nymtech.net). + +You can either do this graphically via the Desktop Wallet, or the CLI. + +#### Updating node information via the Desktop Wallet +* Navigate to the `Bonding` page and click the `Node Settings` link in the top right corner: +![Bonding page](../images/wallet-screenshots/bonding.png) + +* Update the fields in the `Node Settings` page and click `Submit changes to the blockchain`. +![Node Settings Page](../images/wallet-screenshots/node_settings.png) + +#### Updating node information via the CLI +If you want to bond your mix node via the CLI, then check out the [relevant section in the Nym CLI](../tools/nym-cli.md#upgrade-a-mix-node) docs. + +--- + +## VPS Setup and Automation +### Configure your firewall +Although your gateway is now ready to receive traffic, your server may not be - the following commands will allow you to set up a properly configured firewall using `ufw`: + +``` +# check if you have ufw installed +ufw version +# if it is not installed, install with +sudo apt install ufw -y +# enable ufw +sudo ufw enable +# check the status of the firewall +sudo ufw status +``` + +Finally open your gateway's p2p port, as well as ports for ssh and incoming traffic connections: + +``` +sudo ufw allow 1789,22,9000/tcp +# check the status of the firewall +sudo ufw status +``` + +For more information about your gateway's port configuration, check the [gateway port reference table](#gateway-port-reference) below. + +### Automating your gateway with systemd +Although it's not totally necessary, it's useful to have the gateway automatically start at system boot time. Here's a systemd service file to do that: + +```ini +[Unit] +Description=Nym Gateway ({{platform_release_version}}) +StartLimitInterval=350 +StartLimitBurst=10 + +[Service] +User=nym +LimitNOFILE=65536 +ExecStart=/home/nym/nym-gateway run --id supergateway +KillSignal=SIGINT +Restart=on-failure +RestartSec=30 + +[Install] +WantedBy=multi-user.target +``` + +Put the above file onto your system at `/etc/systemd/system/nym-gateway.service`. + +Change the path in `ExecStart` to point at your gateway binary (`nym-gateway`), and the `User` so it is the user you are running as. + +If you have built nym on your server, and your username is `jetpanther`, then the start command might look like this: + +`ExecStart=/home/jetpanther/nym/target/release/nym-gateway run --id your-id`. Basically, you want the full `/path/to/nym-gateway run --id whatever-your-node-id-is` + + +Then run: + +``` +systemctl enable nym-gateway.service +``` + +Start your node: + +``` +service nym-gateway start +``` + +This will cause your node to start at system boot time. If you restart your machine, the node will come back up automatically. + +You can also do `service nym-gateway stop` or `service nym-gateway restart`. + +Note: if you make any changes to your systemd script after you've enabled it, you will need to run: + +``` +systemctl daemon-reload +``` + +This lets your operating system know it's ok to reload the service configuration. + +## Gateway related Validator API endpoints +Numerous gateway related API endpoints are documented on the Validator API's [Swagger Documentation](https://validator.nymtech.net/api/swagger/index.html). There you can also try out various requests from your broswer, and download the response from the API. Swagger will also show you what commands it is running, so that you can run these from an app or from your CLI if you prefer. diff --git a/documentation/operators/src/nodes/mix-node-setup.md b/documentation/operators/src/nodes/mix-node-setup.md index 723984ff39..68f6bf9090 100644 --- a/documentation/operators/src/nodes/mix-node-setup.md +++ b/documentation/operators/src/nodes/mix-node-setup.md @@ -28,42 +28,11 @@ The `nym-mixnode` binary is currently one point version ahead of the rest of the ## Preliminary steps -There are a couple of steps that need completing before starting to set up your mix node: - -- preparing your [wallet](https://nymtech.net/docs/wallet/desktop-wallet.html) -- requisitioning a VPS (Virtual Private Server) - -### Wallet preparation - -#### Mainnet - -Before you initialise and run your mixnode, head to our [website](https://nymtech.net/download/) and download the Nym wallet for your operating system. If pre-compiled binaries for your operating system aren't available, you can build the wallet yourself with instructions [here](https://nymtech.net/docs/wallet/desktop-wallet.html). - -If you don't already have one, please create a Nym address using the wallet, and fund it with tokens. The minimum amount required to bond a mixnode is 100 `NYM`, but make sure you have a bit more to account for gas costs. - -`NYM` can be purchased via Bity from the wallet itself with BTC or fiat, and is currently present on several [exchanges](https://www.coingecko.com/en/coins/nym#markets). - -> Remember that you can **only** use Cosmos `NYM` tokens to bond your mixnode. You **cannot** use ERC20 representations of `NYM` to run a node. - -#### Sandbox testnet - -Make sure to download a wallet and create an account as outlined above. Then head to our [token faucet](https://faucet.nymtech.net/) and get some tokens to use to bond it. - -### VPS Hardware Specs - -You will need to rent a VPS to run your mix node on. One key reason for this is that your node **must be able to send TCP data using both IPv4 and IPv6** (as other nodes you talk to may use either protocol). - -For the moment, we haven't put a great amount of effort into optimizing concurrency to increase throughput, so don't bother provisioning a beastly server with multiple cores. This will change when we get a chance to start doing performance optimizations in a more serious way. Sphinx packet decryption is CPU-bound, so once we optimize, more fast cores will be better. - -For now, see the below rough specs: - -- Processors: 2 cores are fine. Get the fastest CPUs you can afford. -- RAM: Memory requirements are very low - typically a mix node may use only a few hundred MB of RAM. -- Disks: The mixnodes require no disk space beyond a few bytes for the configuration files. +Make sure you do the preparation listed in the [preliminary steps page](../preliminary-steps.md) before setting up your mixnode. ## Mix node setup -Now that you have built the [codebase](https://nymtech.net/docs/binaries/building-nym.html), set up your [wallet](https://nymtech.net/docs/wallet/desktop-wallet.html), and have a VPS with the `nym-mixnode` binary, you can set up your mix node with the instructions below. +Now that you have built the [codebase](https://nymtech.net/docs/binaries/building-nym.html), set up your [wallet](https://nymtech.net/docs/wallet/desktop-wallet.html), and have a VPS with the `nym-mixnode` binary, you can set up your mix node with the instructions below. To begin, move to `/taget/release` directory from which you run the node commands: diff --git a/documentation/operators/src/preliminary-steps.md b/documentation/operators/src/preliminary-steps.md new file mode 100644 index 0000000000..1c738b34bb --- /dev/null +++ b/documentation/operators/src/preliminary-steps.md @@ -0,0 +1,43 @@ +# Preliminary Steps + +> The Nym mixnode, gateway and network requester binaries were built in the [building nym](https://nymtech.net/docs/binaries/building-nym.html) section. If you haven't yet built Nym and want to run the code, go there first. + +## Preliminary steps + +There are a couple of steps that need completing before starting to set up your mixnode, gateway or a network requester: + +- preparing your [wallet](https://nymtech.net/docs/wallet/desktop-wallet.html) +- requisitioning a VPS (Virtual Private Server) + +### Wallet preparation +#### Mainnet +Before you initialise and run your mixnode, head to our [website](https://nymtech.net/download/) and download the Nym wallet for your operating system. If pre-compiled binaries for your operating system aren't available, you can build the wallet yourself with instructions [here](https://nymtech.net/docs/wallet/desktop-wallet.html). + +If you don't already have one, please create a Nym address using the wallet, and fund it with tokens. The minimum amount required to bond a mixnode is 100 `NYM`, but make sure you have a bit more to account for gas costs. + +`NYM` can be purchased via Bity from the wallet itself with BTC or fiat, and is currently present on several [exchanges](https://www.coingecko.com/en/coins/nym#markets). + +> Remember that you can **only** use Cosmos `NYM` tokens to bond your mixnode. You **cannot** use ERC20 representations of `NYM` to run a node. + + +#### Sandbox testnet +Make sure to download a wallet and create an account as outlined above. Then head to our [token faucet](https://faucet.nymtech.net/) and get some tokens to use to bond it. + +### VPS Hardware Specs +You will need to rent a VPS to run your node on. One key reason for this is that your node **must be able to send TCP data using both IPv4 and IPv6** (as other nodes you talk to may use either protocol). + +For the moment, we haven't put a great amount of effort into optimizing concurrency to increase throughput, so don't bother provisioning a beastly server with multiple cores. This will change when we get a chance to start doing performance optimizations in a more serious way. Sphinx packet decryption is CPU-bound, so once we optimize, more fast cores will be better. + +For now, see the below rough specs: + +- Processors: 2 cores are fine. Get the fastest CPUs you can afford. + +#### For Nym Mixnode + +- RAM: Memory requirements are very low - typically a mix node may use only a few hundred MB of RAM. +- Disks: The mixnodes require no disk space beyond a few bytes for the configuration files. + +#### For Nym Gateway + +- RAM: Memory requirements depend on the amount of users your Gateway will be serving at any one time. If you're just going to be using it yourself, then minimal RAM is fine. **If you're running your Gateway as part of a Service Grant, get something with at least 4GB RAM.** +- Disks: much like the amount of RAM your Gateway could use, the amount of disk space required will vary with the amount of users your Gateway is serving. **If you're running your Gateway as part of a Service Grant, get something with at least 40GB storage.**