From 5e1876dc49a8bd1dad3d52bf197f722ef0acbd24 Mon Sep 17 00:00:00 2001 From: afeiszli Date: Wed, 11 Aug 2021 00:25:40 -0400 Subject: [PATCH] docs done --- .../doctrees/client-installation.doctree | Bin 35758 -> 40899 bytes docs/_build/doctrees/environment.pickle | Bin 85726 -> 81739 bytes docs/_build/doctrees/support.doctree | Bin 18150 -> 14049 bytes docs/_build/doctrees/troubleshoot.doctree | Bin 3334 -> 30885 bytes docs/_build/doctrees/usage.doctree | Bin 10669 -> 11543 bytes .../html/_sources/client-installation.rst.txt | 29 ++++- docs/_build/html/_sources/support.rst.txt | 26 +---- .../_build/html/_sources/troubleshoot.rst.txt | 76 +++++++++++- docs/_build/html/_sources/usage.rst.txt | 21 +--- docs/_build/html/client-installation.html | 109 +++++++----------- docs/_build/html/genindex.html | 42 ------- docs/_build/html/index.html | 48 -------- docs/_build/html/search.html | 42 ------- docs/_build/html/searchindex.js | 2 +- docs/_build/html/support.html | 69 +++-------- docs/_build/html/troubleshoot.html | 91 ++++++++++++--- docs/_build/html/usage.html | 97 ++-------------- docs/client-installation.rst | 29 ++++- docs/examplecode/netclient-join.txt | 12 +- docs/examplecode/netconfig-example.yml | 17 +-- docs/support.rst | 26 +---- docs/troubleshoot.rst | 84 +++++++------- docs/usage.rst | 21 +--- 23 files changed, 349 insertions(+), 492 deletions(-) diff --git a/docs/_build/doctrees/client-installation.doctree b/docs/_build/doctrees/client-installation.doctree index df488dbf2030d0257f0cf4d3362a29a66156c1bb..08d31e7a6e447a182166eec296ef4ddf5d54d414 100644 GIT binary patch delta 4748 zcmd^C|8G-O6koe_urVhvgfU=VC(LcEg&{bd2#kS(vI;@sVnF)Z-uAuM*Y}$DrDN)N z8-9t9Mx(d$YmEM6j3y?g{$S!4{FZ2p#;7qSDkS;`7!x(|OAMZKZ`;?F4QFE1#Qt!5 z+k5W0=W{;i+;i@WkNV#^?GH=^W?p&vrNG(2_V-)s>LiUG+c9pKDa)2@#n6Y2uO+Ny zu%n?lJUq$-JEBr7@{Ot7us|y$Hyw=y^#51y? z(TtIUEgX(6Zm6H27Sj_W z3xEdFr5i9`Uic_+jgP=-3bG?)a6`Q6jBy$`4`XE-b3LPgg$21{giB4^P?ez6EMcpJ^PE>7!uM(8=2S?UyZQAq5;!<9fq-(I>jR?E_E(co0-5r4IPEhn`+;z`~yGUdf;-2)(?Beu?E*Qx* zmOsT!=Bz!AQ^6Wq{Rm$vvxXqfV-4lzVr?&XauPBqZCExm0x`T2Aw{sD^0c!iEVx54 z>#&YH)~uOVOJQ1E%(>1BtFI;VZO=;`K;|4~)i~!}bV0ZOP40;*S|q1<7r%yg^Z}L@q9NsNZ3Nu2Rnw z^HkJ|uoI=M^>~a|)Vq!kG%XHrsn!4+Si8|(gufuEi-l#%iB^=1zDOjiq{#-jaW|B& zT|P7Pgpv&61&kGR+pLk_iK=-^o$H=UO@QlR2gcg{BmgcD^<*_pg*Q$BphW?;q^HfD z91(q@q)%XPYs-{mB~y{28nuX`!yk%85{d>ro}|Z%U8N=3%qX^(mP~oWiaSL=%>^^2 z5rY;J)=I50G^Z$|(_`42(pXB-LwUD|<=--+qi9FDRZzDGCa(;zx4Jer-s5>HaXoa- ziVkV3$G{uK{u&`=OeHJXwA5DDG}~B9L-1IDb?lW1Jtn0y8ifZ3(!_mB5}-Oxu}WGZ ziI?YUk4p)j{{Hhk=pzF9uz-G_fc{Be8>@G3^i8oN!A_QPcQ+jtVz-G{zZHLZv3{y5 z*4I?FM=HEONYEx*Z6ihX*~42!Z6dr^mXm|j?5xcA09dJcK`whio`aQJd62I;a}aLi ziU=1(Bs3{$ksh{W@DjHd-(0|sX)1AyW7~!|Ed)OBf``M8V({|R3^ngf5Q)IU3f^Nt zzmbJqanch^_4cEj4vQQlE<3soWx%o|6P{sF$0qnT=`ZF=KYvA8uE?%p=99Do#RJPO zW>`skR*?udIaCUfvloI@udFGSCJQ8@zwGXXYz*D}^Pz1znM+fRJ%U-UC<$+bfC87BMYp0>iKdr#Ca_!RzB zKMt^0@0WIcfb;ioScpRahg)zsfWyN$Jcz^FIGl#T$u;4{V^3tLh24YtX@IFGuj@ud zVXh?16@>ZbFy9z6155?w)NbD&Vi7vi delta 924 zcmX@SpK0B6Ce{Ylsf)WevfeXiVdG<9*!;@PjZs1)B{eOvG^fN$K`ALQr694mxIDio zMM-nBzQ-fh$$fsdlLP$hCfnNEZ$9m(z%+Tk6VGP$Kx@X$_k)%&@p4VcV2_=WAr?U$ z^BB1{H;3M3;m+h_U?@&4DoZW0+8mfFz`~TDH+fyA*yQ(dx@vZ0EB@HY^TF@rfnCPOgb-mMBZFJB zaZ2qJjSSWdHc(hj-a8?HQ-lSqTZjd$n;*nO=q?B84w;f63}j&FzA(jtQx~FJ8=_kS zRd*Fgx9qflC?Eq}cZLAWEj|1pMfs&kIjO}N`S~T8dFjx2#uRUz0(E|t8^l@{u(ckJ zsMgj3t<8`F`BNcwN)LYtn(2udO2A~Kf<tPdc92gKzB5vm|U2}Ia|2x|}#4kAK;L}?FaUSe))No7H5 zF(?YM(pe_=&$ZP78R-W$&JS#qAJ`Z_un~S>?S7>h3Lp(YH+-5KYYDdg4BYy=AQsqq aP`pE|2gM=8dQg0Tt>z#$F_~mFTdFWo_`TKMo@hAPffc*~=PiW3gcK8OsQRjg8Iv*yUTiU=ACwy}uVP zGPAOxYC0p-)ieD^RaZphix=#wDlW?|}oH5wSMx zoww_Cr-%yfZ3SC=yU`S^+Di?)>N{T5Z=GocJHrMqHD;V@!>;r1mK6-v>Yi&C(Egzl zlKoaNT<~hkb!VZ3JP>W)=z1=~foU-B07zSpc5?6Olm+gb^> z#*gK_T0@A303NPd=kpDxQ3kc~P!5@cfDv-3+chuWtb^<|rADLX|LE-Og3~B9=Vl6C zWp<%%oyUVQ_~2ALQMJHZX%}dFKJb~d>a7Q4R%5w_iUybpYAkqVub!{for+aoMut-@ zItw18%NbUoAT)HOOpxT}%1t~yT=o{cyaUB(1%uDaF4;H#@Q*+g3uSN4DmT1BzG&AV z@uM4qt#KOYm8}}^S!o92EF)%3XwSyyKOYF~3nqwkt^pOAp)!Cmq97B-%U(g$5*F}n zt6nJ0c}tvN`@s~GZ&(ed5P?6K_eBDbpRjAqxqQL*^Ycy_+6&c~5RW91m`S&-&^QB{ z_nY(c&QdEFr8Yr<1(w0+9rdDJw~GfIs5Fe^&Q`E_rtXt@*KNO1Zx$L&WK-K(elT8b zR$ylNd9M!L5vD%qGc73UDgG~WE!i%L;X#P{kh3r&lD0IgIntM*)ATKpMhafh20mWl zES^8+_zkDJKsn7|;JgLcNX+|6JE0Yu;Cosp?r)VYFI`c}_U$c{1%*sURLLU0He#)7aARiq>+N9t?}0`T0ttb%F~Fm96SR(^{~@gi(Q{ zorhx*7!2}nzh&_QySd@{@Hv5&Q0-vnYwMoZxOe8YVcxy3g;?)x@q;53%ZEAU;s4;5 zpwadc=ai0>PI8e+38h_y+#o3^b+a*_yE*4O3zEu&EK;-TJ{k@2iAPIUm!8Ws#)|g5 z)hsvibq`?3R_?Zn#r%A;DzpO1SBLqOY#-u(fS;P80u`^=EZcc%OqB7Q28PdX)__E+dfVH&*qZNi5$q)!iu4OBy z<1(>V;)Y&T+RLC%hHf)I2X`+36!gc>+IB6!Xw|EbV8qO{->lW3@qV0hMpm{H?G|uA z(JB?M3cq8MB_UrB9D%vy?V1B85Xw^|K|R}&whBQ}=LWON&zCLKErmNF9T}jnSPtCN z#u`*o==fL_y(a`Dy5H7`6Qs>koYvN1-HRM#j8&{^4XWx3=Nl?;)oIk6!rA54iYPQ8 zf9IWrDs>HK_}Kxr>=2u6($Hbt_%C#g8(74rN~f8-NjQO09tGy0w^q3vK0Phc?Q@V* z=qe;Pqu~>1)C|I+*mLoN^pl<`af$DafP0t2Uf@2M+{; z&Fa~zw-^%S`u&24DoX!{pBfTRHJxG$DMIATdVvD3*7fa43n*oWNs_y|9rbTql)0#R zWHqwm6B(sLrNdk!i!BU{5`_Ym2D*3IyKiEm%sC|^`jciD74^}fKwTbguO9}VN3;Rs z3YC1jXlKQe>G?&cNa4d}{1mrFxIIKd)FC=m#8e>L1_d-a&yM~9PM#7p5t|n3j)=BM zhT;LvLGS`MGS@^<7v)TgXBO)Y^_}FS(Z!A+)^uKj!iep}^QGsNu9I$2#0*03!YD&z zl&&v5U-~mH!NJ|-QE-R&Gz0h5B$tgCg?dxr{$$*O8XI9mxcWmJjwby6u&9@Jsm{pRjo3J5Z>rQ1v}dW7532tn^O>8r!9{<$(oJOh@xk5Tq2LzYD<5B z(>dmj(`9VB@pnHWE9CI5T}cEzDezj^X-Mr^VS=1N(U1({q1p6AX`d{xQ?wus@S~V; z^GpNr9aG_EQmwFpD#xi5Ahp#^CKf&`8_9K3yE`(NoG^qqPLmRdR0pFD?%`wxBTw2+ zai^?;<>fUSwI=%8C9M;pfnQNScf;cWBgKh4JvlnT&i`4uV8v z9>*TCcG(WjYzsPsSh!l2RUYo6PTsX3dIBkPME}q_;X%L_##V`zQujdvrclgR3ZN)B z7O^osVPjMz1EtbWFc@5`=ur`KQ5au`tT=8U0ypK!Dpk{p|^U~^(~v57d>2be2j^gMHjsB zRX;_A&V+>`Ld;F5E0YU0hQ~_{3fV{%Fp?aUNuu|i3iBy?7tZVf_jQ=;pk8<^%xh97 zwi2ap4b#!#dUC)myN=7Ftk`)ptU6LDa9~Jwg=Na*hv1{CK4eLA0(%bKb?jK?#Qx*A zWp26c`2HiuUbg?>!8>m|b?T+9sPY~0(>xx*tbkR)!2Q_%6Nm5Ge;AJ*JNB}&Gvn14 z+8!GtxRzio3)J@nLp4GeDID}oa&G9=MUYck3J`Siyvz)hY@g@on7tT4Jk&%N(`Z>j z*GHHh`*4vm#VME$f`ST%DdWv6ID^~_|5w471b)8UtW;&BD!HQ~OK`Vg0K13FH@sTe zK5v)va{NidA&!r?bAe7rE%=c%+xq2=RrEIm`!;?|WRc@X@QS`(WKD1urfS4^1wDdD z-pR>r9Yz>?i0o0$<`B<)6KPjlJ=_Dwb|LblxDvgy$dDWWsRGo8`XpH%t_0y%;cQ1Z zKS4f*GblU^qx?N_a@{_M;dLWlvMqRyh~jj63B(%c;*M?*b+zR*oQe%UEalynvFOz? zorg!ZbUtEL3y2Wlj77%oxE7fa^B-*dk5@~5x-u?Sht|RkR?z2#wI6<2{o^9679@wE zi?YLpGl3Qlg<1@YZVzI}Ag{2FZU~ijoF0r7f)T%*5@~KSR4*FuV|v5GbQ71@=0oGk zHutFEoKP4^Ov7-T>bysTc@Z#$rWG@V82$?Pub~vd-aD#x1}(KSZGm6Lo6kfujpN51 zA5(IO=^=JMGPkW^Evk7S;#xZJZ4Ho(2VLrXS|iB*wATq%bO_BSQay(pp`#=V;Jx6 zE{LgtJSG4{Ho9|JKz0JV3bh&sWa>nLU~pO#=*rJ_%Ie9{6y+ioXfEW-o_7{QmK8)7 zQ~DG>4a;vkGU?<@lwrMLVE3&|te~YgBA^TufFMj*o*4FN%vz#Kk!7 zj|jBYb9N5G$8;3U!$;Pgqbc;L^i)g-r761V%5mMU(8N_Te^>l0&-{e$Yb7GTCoWQP zs_2dDm3$ffESzmzPn+O;bXahYMZZ=0YDA=sN1jG(&zy{FP-fb12WW9quZT-h%t(+! z?`hZ$Q;4}~10X8K6H#YkT03J}qUnf~Ib58aZTj`uIj1^Xa+(dN96!<~t%xo^GaWq> zX2efr;))R9(Ufo=7LFwi47?hihcR<3>?!CK>uEgCLUV#5QK;xNIpSoIU^MIj;Dsq1 zhrx&tUli*yhKVz&-w6i@;VAALdS$Ydm;*T^k{M!JR7`rxC&pw32LQpAD#n!O!=Xld zo)R5zYg=+cFI1~haD!o}@FKg~GciY2lKmn&UFj6s3xu8J36a-q&e7rt#qDBY0p@vh z1H4Fk3ZYQ9Ag^Em@fD_Lv5*%pdQI>^Z6@lQ22aZMuxN!XT(&C>)68`+1nKjX@xuu6 zw_y?wW}kDaSlB?1CSq@JP5F@c%G19g}?)(qq%2m)Fxhq21!m;ySK zu}0m)6qgN$=%M&v8DS@ev6uw3YFLTe()1DBA)O|CF=s(bKD(M`ejjz@%f60JQQ8LoBS;u$1jV_Qcqjl3v*M@M>X87q`kvHsPOL(4&Uppz}X zQABcS2RInuCt62uZU)<>SBFH=4kt+RO>kCgL>6KKL7z4`;eSPgUfWSYG0mBRFBPBk$zQF>i4 z0o@nAJHJFrX0)J6!xg_dmrNZgVQ~=M2gWln<6x(7PLK-bztNRq_(txrh<0vkpS=!O zp0E-qR>w-4g4LE|g7I)-7}#K@u=LenOpwfnv*^uW2zE(urz!bhtvs z3GaC3Y;5S9^v;{UnsgkL{3kDcX62UdK8Ulwbn}0WJ%dR4rLVvGZ##U7NdNo~?7`5P zP{Pwc^jilWb1Mjm=+~d#wo+JZ23TyPfiEVjXdqQO9*oL$ER2O|xs}%!p!4uso5(Xf z)_Ozh&elHn?Vv;Mau?4z&tk=`lq)(G7SAg)HS`9LxbKujCfkaLtmvU?C43}z!;D*_ zhaQ&?ZI=(xq&a!soA}Aj!6pTptt@i|m{Y3GgMoKT26jsZ z!Y(>jMQMKi@-V9+5_5hN%lW>~nOBCHg|M^8@r)p6Plef_CZE_LlW0?b@8{0i%Um=} zFVt;}EpuRm(?c0hr`yI=hy?MOB;+04lbGhm)Nbeny=W{ukZT z!!7rHlG@&xnOPE=voPDX?Z%&l51U!GXqUltqC^EtBR1`t!N@yD(_Q#E6FH`tWt4m* zX$e$u*!$uCWQU0a*+qgEQfE@btJ@)kq?oUqOciwmS9O-*F5UHeP>ex0p7zDs)4~nTA@PYrgaD;^ahOi

C5cjUPnHi6s}KESxU5#M0g-HdM#8{n@Y{u<%0G4a)OC-Ch~;sZR9XIh1)vHk6F zRf45t7ISo!AZ*UjudU9}Cmv11b9jy&e+XOlb`yI$em+Pp6H(W~Ho<^JM%%o^Fn%qcPA z4Y}qKZ$gk4F3K%wC0pXI;5U5ogZ%YI{(6|d9u;5GCqITC@X7CAo#Vk%azvb9E=pxS z-X_RJo_Nh9`sC{TO`dKW*dsVg;;-Z~zaQxnzaLng--)|ui6AogB)grN%n6a$BzOJ>)Dz^zD+dvBi+OyFxcfkz9c~fg~bh zS2P>@!Q@z3M422Zj?Oi)$(DB@MDb-ua3(^^VcMgR#|%@YN3nh3ZtWS&cgVPPI^5uZ zP?Ls)wNj6VnHg-amb)^06%%n{m!Q_YjM^%K!okhDK_Nx+JUNGnivjS^tUE1^#7B5O zT?DhG0(&aj>K(GlRc_R-Qc~(7AEx*NGzZS`JNW7rFYj}|-y_G}0A9L1;tur65Hg*< zr(`uUjvsk}Ta#{}OFnbDPrL0Y#T`s%7r|4`@oC5_UcYF`u3{JJ?+5`I_(VekW*_G8_*#>L!6FJIo% zU+gpW^;XiH~7epHsnSbR;pZUu{fFeTAd^Sd$P17S<`5NBZq%+`LFI*l#5#_c#xOxjaju_%(37T+ z%wh@Oqus=`5+2WDd?Yx@(Z&%)xTm#iR)qUXQxdVtpJ05}x}%^scp?-Kf0xUd+jv#C zW5)kN1sS2&YBw@1LRTaZ5`U5wD0nqZN%S4B$^Bw=J9E@t?qWDf zE+g~bw40L_nW=2N+U|EZpSNmPuE6n2rX>0f$8$R1xR3>{QkJ3mJ?*BZh3cwKs8+M1 zk887{0QWId5`715_yp|?P`jSCbOz+_wVRL@kddsIv2r!y3@+D%ArBba!r_vl$( zpk1vZ{Oe6g^j-M7BOwbL@q2`2y^Aq4r?eZG7MeZT2pTzRl>5TEgk&eRxloWgZc3u> zNbQj8{>QB#7L=(h?fTA1WV#MH|BH6z3LI}TCD93o!OTBR+p`pTR>6Qo z%mvSo8jy&&;JI%D5-}HVGo4o3oZ7b9 z3dWbU>ryoOOM-;K43+V8;P?R?@Id=S3pg>ZV?LxKkJbI(wOg4|qQOL#4x7NXZ^?_4 zPCV=J1MR960so7sfK3iLRxjf%AIGbPb?X%C)S#-W#$gGqr$sVwskXtSSI=0jOu)ZfL) zzfZeTMeOe}CDAE%gAg^2a=H69AQ5x%9gYBcEixGgQh0?0udCr`tIjB@J%e@NE84P5 zs{^A5p&~9MhH?D#W$k(uHTaSsVGy92cHxs@=OG8TN#jy-S-=}`M5W$KUugwA6?G+Y zaI5;be|z>){=O-RSk3>Lf$F8^rf>`c4t@zX2}D~uLvU^1Ai$bJ#Dk*Z&(*G0QSrT| zB>FD=f%-X|li1OrhlwoqBihWT)%?M%tX+}$A?-R9nIAAE(RZ1TM*ionjvX9{9F~4X zyBTSvKNkC)W|#dNu6D%=1Pi7l`VPS$O;H>?aVqI?qEr_BquT7J75$KymMG#_14Z*6 z(ymky`-7$=`Y!g#j@M(8;#YDRh7W5uCoK$9*^c9JR5(7UUAY3slcpp(;V_6%<1m+_ zECUiT7psK1rv3l)X}eIWV#{qggR_$85Q?N)bjfGM_*-qkrd5osSsZD^Jmqkbli*3Q z)W6ZLUQvy|G9}S>P%wRqBZwLf&eh5A7&Lmpq+6`EdU1wqc(`9t^wnaR!W`##)Ed2X zA~{wN9MI-QL2#2PiM}H^dW=p36|Ylw7*ryMami^nBdsZoWyPtak`D!f=WAE2KyaNY ziB1R%oMW4R6>|UvBw{YUV7e9|7t6#OzU#MGrkwfFJ{9ZU7_FDhYva>hx2Somt(O(F z>r&L|)q=!2PDhN~(X3}q;`}naZqqKppgn`l^bOk0ODW1=G>dDkayXTWxKOP0=d|lp z#QHO)Bx3t`9V4^W^AF=Bf1HX^En+pR!&P?VF$(Y2Zc17dCIkvN$Wij50P$KCR7xg3eQ> zB>IldmQ&)|mjoO#jphFhZPwGue;~_O&L{%^x^|U{z`tfnqVED9y$vU%|Q)=DQEjAiXMJ`@PHYFDg4FlkDn{}Ak#N2Ak$-3iSfZO>r{enh(&Y4v|B z8y=BId?*n7uy(}?1UH(J=!C!^0FGm54!sOW#9W*)HD?(^i?eaoFNSVEq^@1R-2GAb zT-S!CyIN7pRtuj!?Yb0ADhm?p7(Q=1)ttjXmkvhGSk=rC-^XpH?XnEImSCHGRJ*|` zg&SGBSk>^2@1us*2Gh62`;rX*5>WxU&9Iyy;{Oo@*BOqx-bd`9Ps+HFdU&Q?t7 z$qvSFS^V-cx z3&T{Rx5d($Y6S)D$`v?XZAzjO4ug?MJec7=#ehW21&3t@Bw{W&95)~lbK#h}b2+3E z$7ZkJkV-vcyL~X=-VqI~p3qj4?rKi$TWw(VxOQENR=-n_SjQM;>W%5ld9&W4ra+v)<{ z>XSK)OF3}YL(-wIR+y3cx^`pJBDI&|^^jXJ>Sb1~-4*+B z-7Sr!_$~lC;@;{G+yzTAYFo$FCMZ?hRd8h%M<;{N@Q$!t!^>H{A)C}@M1gF~ltd?F z1|3`6H?l`HAQ5x%HdEb`eWSRzVg35X3tj@@o{74~quTg%_Yl;))w;&pwd+#U={7;a zpldXqE7@|&Zs3~H_Q)cTX>6^ocB@iKFu-D%s9SNR3))pGf-GKGkZb-j<;VeXxfC7C zm6TkE3R<$l{y}IK)YT=s&6nQ5&M~+GbIswJI3}|c{@vRvF2JZ zcF?Ysz2%HJ-YBUD$t>1{-`18zT1^@L^LDu`cur1wM$S zD+-A$M&Ylt8cwhY*Z59-Ot~MpnX;23JQ{2UI9B4oy=Hlh1nkEB!apT$g1@tLzLTmRN z?%62Jf3-Gh-F1%|y;_)mM!POW$$nChSl2MW_dS+uy+5Pfs+1B$n9p}pRGTf}Q*SoLQ#zc}ghnfL5 zUJ7#gv39u_SaR$PSP>0K#6f+(I>Bx72wQpKu6V~W=@hz_VA0fs%IMtgmDV|6>nR^! zE63=}m(nv8yGgv)Awv3kaB-P+mJCfC$`7=KlGYlgI}bkTve@x2+O;dD@Et+oqM5=}$LTJ9_joBgc?sCTPch`% z!OOE8Jh9L(Njn%g+;nh#Ofp0Y6IlQ+*A_rpogd6DaP3MUbgOoqil*NpNL(~c-@=!5 zc6IX(Si9(M-ez=v(p1v1n`cR1lIned3vh#uJQl|T+Tuv7>=WYp!}!8@Md#n3UA3a~ zKPO0BG@ai>S3q>t_$R?wLgP0CeVsS%IvaM5A^ufUIma5$a=s)re)4qPYvPC~zvOx9 z+Z{?Si{!J~B1xf~Oa6&~kv%lZ{XpVqEaQS=Ex;-V?~ zVA!^$<7LW5s8QUy_P{!2|9BC6`6= ztJ)$-tNv3^|Dr8!oA;{4W}(Zv->+y_u2{e?3lbO20tR6LqHSHB{!?J?Qc(Y2W~@JI zD(+bQS=^VT`VSv-3N}t+>pZ2PEuF>iciLh|tMVh+a>RoY;e1uQT1DBvB1l|3W#`uQ z@b%-Va?uVl3O*(hCUuxBA+dyBcU6*3CFEJ$%<9D+u3DP3q_g*9Xj5phj z^QI%Y%^(qiyZ1*hmOC1?f*kCke2~B1$X^fh*Q4UAJB-x0t}q6}@q{A#1V_6{Ml+bE zJB6%5BVV)X)wMd5T* zwF1P`rX)InFzD8AMcphz?ve~h#9Z_%GT3%gJbLPWK0wzJ+^*qm{R$eVqhLOKpH+<& z2DEEe)MJw%v5v9AbZCC3?MkhTW9K?%54z;DsGqOh*tBN2HS&mi}aQaMr zL(qK-X5v}nAJbNu?ix>R?K*$&#v1;Jc3p~wzfq7_N6)^U?;(w@8l?-uI*yI&UWCQ_ zLG31|6mPI2%lD1qegeKTl{r&f{FB-oC_;a)DT&yW-p#o6a`DEq#8=6eVX<3GoB%6y z9oMkPL)ZE6k8RqutuHknIg$k;QhCnA=>uzNLWov^Fmacz?{2@AbCq+OKVG zzuT%i7G2?c(Dn;;hmTH4&RBLW!s7p~c9YYJe@FJbx^43i!oi6-@%rWIfV0Wdf7>jGK|j^+t+4rpmZ3)PI-=Vj?Ut_kX7u~WmrX*rZdV+CY>mX$h!v`D> zcy*gx+(E~ukg}r_yg)fd?a#EEm=?9&SqW4D91>u~kV7fw*y(*`IVja~1R$DC?&DRKadPNU>C8yR-UNwdFjQP!KG9sLS&pM%Zi;50IK z$!U(AvufvCv^i0fXQLpoj?Q?jeh#xFT|<&&77P1&?Ixx*((x>F(kmQ!o_5WOaI>Z) zVw=b?K5Okn$K=#Vm%uQY#V8!tZb*6*9@Fwl1q{UzYLuQT=dYHg3YFDiQ z@vte0P9O~W_c%o0zQ%w=%tgOKgsn%LIF=dfZ?+%C3CX~qTLIRLPio6Ht!8Y?o{hK) zV*)h@_+9P#74`TXL1G<)fC<_CbR7hDX0n+7PP>_D#f;V0#Nm{xh`*{`w<6-Nn39Nf z|I3WhT89GLum;X2^koiOcEzj04JCEIYY9eWWM{u(;q6&iqdYmV81W_L8jqg_wHZ*L z*=$Op6B+~07CT3_K?4#o7ppi&(`m$O#I`Z42b{O-n7BGw_m-A9Y{}37B~xlNY8_iz z(mlc|^rPD1PixrMX2m8mtQH8)ak(!z=Wr)SoadNxMWaJ|m ztgbs6)Hf1q+EubP^?oCqQo;Sgs+@H)q=5UUrX-%mgDjsup}O~o9~-chx%=daOxZaL zT)len#K{vKfUa7adHpx-=BBmOy;%p#MRHpyu24Q-tLBJbEFsm4)ml|W@B7-kDCqsO zDT%(Lcg;aBv+Ol9-aPhzWvuFQ1~)F*^;+FQU@IM12ZZS!VH}^kD>)ikv*-e*2r~rd zIBN-<;~w+nT+DgsdQ~v@YBQvOd8H|dzJs~rp3<_okMh*1lgBdhM3D~kdX!KfzzW$6uf1ucyRUcfF$K zr5ty@PrFKK)jdzbc@K+t{dNmuC8mN2$;=VoZ+5;l)se?y{+xE3Q;IpDRT|}T&0XjKPunLwXqd=i_>OiP(jqV@r|H99G#33o zY1gTU{{NYh_(wd*E$@@eH{Nw5DQ`;P8ZY0S3^&)zsRWy_F09IVmv()MoVS~j=)0V^ z>|a1cofNf9V`;xsoAtDsjf-_f-HK0niFTEWz;8As(RYC(@)Fzkk|K{%S?F`x?57nv z#baXGUDflvcBP8gUu8<7Q|xgtwYqgP7u}+A?z#18xiLHMGWC%62~oHoSl_^G;x0NS zHkztQD4F{?L|Cj}Z|%V8X%4|Y&tG5QuP^e~pNp^V`bDiv8JGQ%c9jy>o^jcKW(oI- z%X)?Z#>)X)Z(G8wN!2Q6PB$AKUg#=!tp9Z@zykl6cI#6LJlGcBAl8Vul7{(S)XMe$ zmUjJ;#D^jhzbQzpm_R?mmB(*+6_%B=&9^^;wN_jDgU{4<%*R5%#ef{ z41b>STI>1!>3ix7n!FEVRM;w^$IrsYKV>d13bt= zU{K;7X>}nm7u|X{Hb{M1ZS4GpX^XCdG`U6Wg`X7{k3AbMF!@ng-#&KRfwF^`IovSU z=`ZoxswT-PD(x}=6*7Lhn0 zNUWoe-_w5LZ>HhJ3x$c$CAdI2ZhT3*@hJrzT#oa3;!}xp4UZOB+qd$aV`rH@6U zqFj*gek?=`-ikIa3V8Rii-S~p_lrb?qwO^eWFRn6ehC3Kc~%nT7eH{c{ivk^UrG6smS~@rX>0<^PMN_ z&Uw7)Pj9Yfj$2jC7*&+{s$PW{lW%J`E-fazaGaRnPQ0C3iMf*kjy=mawRuo5`bSd| zofyTT+UmiGY2vm>t5Evv{i(Ua&<(G-xH?VtpG#vH`=XA3(2;u2phrG zg=Q80O1pjqn7O#kFF47Si4#TZFVn7B z5$?a5;uCBA_ZXkG?xH4+TW1M`yJ|)C1m@06M&decd8AeLNhmvUlWR(D6fCaMu3N$4 zYEu$@$71*XViB#My%TSno+nW7QpBQHKigp)y^AqEN3|Q67N0#?OK^yQjyWWs#2hL} z-LB1rg4AuMB>Ilj*j-im@(N%|4q%d5jEJY*khF-5XPfPuC@7S*YgSNjOi6U2U=Vu6 z(HnP91|(uGIC?W65p%)I9|k01E?#CjO+#EX=bFJ}!z<*g%}O5ATy?tJ?cUZt_w88z zIl9?>2YpSt@1(D3_t)ra(0vzu4Y`lg*Jk(KocJF4nh@8U9^D{r$;2-@Ui9cT@op*} zpgpxm2gC*yJVy&mN2i*>1XYhy*1!QyhM?Lx34`diq$!kY)NMQOR14)MX4z5Br8>`m z*~f7wtNTs*xOoB}ucVJR)5n+TBRh!?hd!R9k8jh*OK_vDOE;>!bg#5a_wCw#Fhysc z`uT>JuiJA?r(6`GAnFgJ7OL$LQBC}d>WhC-#qlrVApS+H#J`BA_!lu3{~|8qU&L(ZUxgUUAve_9pRge(05zZ_+Udpe2vyU zuaWncD|24C<=zWP1Oun|*JG{gUoYge0s3?z81tPu9Imynf6hB^x8mO~x69rles95+ z25kR35sVh?LK#TlTPyBGhB0~iSr@Im(r2CwT z=VYSL$?@sU-XJLzR0@qMH{s6 zMb>?$)ocbEU1DsX`{!U5rag!yvL=iSX_53dSFA>qJA5TE9OZ7R z<1V_mA#u9j5N;wE#i<7io;YV)v`#j7plr?A*tSKgH-z1%42*jfsFw=CxL+&bs-T&& zSFp-9j52?^ZdH9;UIJwl2SBtQgYfpEbTFAOTd!HpH)H`DIl%xw54nOgUTrS7f-Oe` z^o`c*TW%K5x!2Igwe;~keB9r^Yp_a(@It#J zllQ|$N61IS5D2+T;osMCUw{hSoL~{Zh*!xle!YZ#-6HcsEeW<@KOSrq=HCnkoC-Mi zTfwMAvDt6{z!aV8O%{om?%Y8KFG2~Au+RN1=rFlt(&a~jDVS^t2UgM@$d#EI!ah{` zFAUcNFjY#;FF00)5sCmu;3-xq8*m`pNTRPR-s_~e(tQj z92R&gQD8^45WO^w!zOFZsIosul-mYbQZ;yoQ&0@4eI`+AyoRnT!Oo`=`NKrQ51;+R zMBbDjU$h&RQ;v#!Ru&P#LogP$SW;+`I=qS$twA5>=;J5o;}m_IrH|Lp$KCXCoIV!m zqe>qq>BFXvIr_-cM+qN~pcgEbMI_U5Z%0Bfe$ZR2mOZOTis`d923xV66gPue<-E}1 ze6#LAtAk_@gdx@N1FpZ5Vh|z@4$``Cc$)?mD?Ws=nJbD_hPQEm_ RqCJO9qKNn{&Tr1m{D0nS6F&d| literal 85726 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 Ni8AuHq}*Sa`Tv*S+9Ch| diff --git a/docs/_build/doctrees/support.doctree b/docs/_build/doctrees/support.doctree index 04e3d89e5429bf9d592a28134eef2a1af68a6fef..06c075fc63150014c42916825b6a919de1b24450 100644 GIT binary patch delta 1929 zcmbtUU1(cX9Phd1#yA_bwHe*IhO;z_>6%0x?ONL=ZKYG^$E|aYAsX3ja^kr$y*J$4 z+Yi*G>zqDV>*PeAtaA(oMJJBD_yIonAP6G(!6q^ghv+sGAH;#e)bl?lO*5vf%$LKx z|NHy+f1Uf|OX&MabxwWt)b^9=d!Ew5zI&}{GDYkto-%YCBr^`NO+Am(d4rfvF&M?V zIg2x7%19IJP~E{rw@|Qbr-=6&Ho3>u?F>%qCY~Tz&tymjI~K2;|x zUB8gI%;@ag>tHor?{#)=>HoU1T{k@HU)pKntn0Wo!3M8JcMQucvi-ik63Az&#S~>V zlWx($ZV_rDSCk*bS)vOesIWL~IB5#?X~dEJsa1FM-#qcOk8*dO=JQ$!o-CfZFq?r*6)*ZhgX#+q+qZ+g6H zD+kT9=UWe=7FHMturD|4R^Q>Vw*_&zj@VWq8y`XJMZY9&68ngsSiY zAEdEHJ2VbC&%WE7Qs`ft9gZ}hhKB#<(@Ry^^X!eFgPK_~*cG{D?UW97xN|QG0nHb# zr?KW_M8!}G+ZCEcZO|kgms<&f!W$o7nu5}`JH@Bzl zxiL1^6YIQ*KaE0Qb&_G;nencbzCE#%Er#13y3!wKEgO=waly87B<)0TAy0IkVA?Vr zJ?&t_%vvK)+WM5?wFO}gnwguBE6+ZUH{w(LIbdEI8|Qg%vdqrotPM5jQ`>g&q%t}xsyym?iQRhI$b0?QMjo4R%yIU^Sz?Ti^ zZ!sW`7|=zwIn?bLl$=XL*%rUDVo>AEBpz1+3L6eae3*Z&-tnBD-I(n5BqVh>`2gy# zEF||SC|mhuHc9g+H&4)GbY3{qWoZj{ RSK7j;g)MJi<>-zb=pP(CkQV>| literal 18150 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 j+ym%=mxN*&fW5EdArBE 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%0Ar^4< z68#z}oBbPc3C?COWM;ENA86s>d^NL!pcz7CbZ;)gX%s1&i{5QRPPC-q(}omZ6QtPD zFK!Fx1AfBw6=x`<%Zh$h&z(Q>*xQcc?xUjwT9N6fn{%g%av=n!!0AiWS&;|6y+}Wl zwzA6qK8hC!?th^GokXE`Vbng$^cg7hj?I&1B+LWhgBz?<$z@aUZX^|iYy(yKE%ZZ+;psl zLg-YJ*n~!(ctsk;+wuM?zTeO*mDU*|LfU*$&j@U#P4b5%d0~>}(dtU+z>f-y1+7(n zP=HPv=X*f^eK8ipcauMPodgXXy&hGoIb+`rR{A~om4|9l>7Ri>CJWH>21^!PF{LL# zlhTWHR(2Vhf%|8z{uy{j9n(|8_7Zb&;!(ydjJZ#>9PUfL-42Jx6V(m)Dpl<^F$wdO ziZ^)--)|eg*w4J1w%%?D_ePPOYW%{#-SUZe@n5*pGkkiVAl_(rQ~Zj;CA@gdr=V## z{uDuhr%u%Fn+qq9@S~%9j@!crdIb=s-%b}Fc8O;2UOamlA19-af!oHXJ-$<~(u)G= zTQoPuSknvlFCjIEO=m{p%d=a;J@kG=JLpue0z*2u8#~;K7ou6+DqTg3q8_R|D4yV8 z3qPsSPPeLjT_IYG3PkTOoC|lm23>SmZQ~l&cJJ)gaMIM<@yD_7CgZB*SJ4|k@FdY# zIMy&0gC?5WyQ;f%@*fnqF{*uS#&5BKVU?^M;JaH|ES+S3R+-D<3O5G+67GfPO;Qic2Y38ZU# zH2msO*E5h#u3qhsO5JE&rE4Fm$&#!kb-%h|;dWJ)x_3s-)XteAmh9>T0>WhRZzd zvg0-@c(Y&ylwPG5-by8?Mk-N7h8t4G< zMc#$?n8qJrcsF`$wy$5UnpV?n<3H4Ndz)TO81D8uxSzE8Yyk81Q1WK}EIwA-P91Oi zWCe6_;_b4WP>*s(o0dp{e4f_#i7TjZ7KdhFC(B=r{ehzdMN&$Y8{7twjQJ(UqC{k z^*Q=+oPIn=Ki*3}-c3I~NI!m+e$3-=Nb4f~_*dMm(fS_!ct5sjwBAQQK86{t^%44U zA5~hxk06|&7X7s@dW$!ka+`D9-W<2}0=M%5xA6kkKgV^y!1c~?opW5@TwrQc12Jsw zW^T=C!73f-7OY;5SzV*Qm{q!LTd?|V;+I*aZQ6oWTI@2bJn07Eo}_}Z%=XkRx|kM1 zhaANd0uf0k1}FJM(Bb8@P}9z$(~fnXNpDF#jHxI3YMhX*a-scw_4DGACZJo>bw%Ic zEe?P1Ex7FuW|Ss&tJlbJl}f~c8)uJfgCua;Q?JmgE7+eJ>C^R RW<|vdGy%R5P6_9x{C~eTTQ2|r delta 342 zcmZY4F-rnr9LI5?Nw_QNx0IH59Ew3L4w7IzCk~F1 ziy*|&=1XYojWoOTziv5j`!1j1`|-<0N9v0@+i9QbJCk!ZWR_%xEpLrHM;!)ga$yt> zQ3XQ+$H?R4D&^XiyepP;3Z!$d{dst!`*j|PG0m>?N AlK=n! diff --git a/docs/_build/doctrees/usage.doctree b/docs/_build/doctrees/usage.doctree index b0928a1336c5605d91c7f65008cef713f2bc6346..8421f93277468fdb5d4476c5ce929ce33c1d0820 100644 GIT binary patch delta 2060 zcmcIl%}*0S6z_r+2*hBZOVdSJpoLbMB4DH#1Ly${L@t~(A+X&J%$By>><7qK3Na=e zHWHXMm>AS}H6|h?UW{k;Vq!w#!GoTRAu;g}FgmmSpl-oR#LL_Hc=O(y_xt^3pAN6z za4tIUR)J0Dx~tlcl)#d?VEU2M*clt_!hLQRe#t&&y6{pB*NVzUOa!tX(K*K9pi6!< zmt8Z=y;JiTxXVlHtSEfu%N|2qbP;!O4fw%{>?XVQ*4@Cg)J=A&KvZOv*qE$Gh}BgM zDyD#%NM7%VX%H8D$`kOclFT|fgYKY>L54(Jpz|xWu zcE+wrB*kDTb2D#cUPAocRogZ#X$XXMDW(A_0V0wr&>DaOMR^J;GawumVQ2TaDE36U zaX;%X%LXJ3YO^)y`92L=DON$>VJhey8#S$@tWlpWq|eQl=S{4ZzsR=SwqqD^{EBU| zcj4+`YA`7hvjm0hGzu#@G9>Y4T|tLahl$;rzTIg`NuCg(K2G7A3>70v&X3Q-m$wLo z&v{tSYa4+wrL)EWA&@T*Qy*hr;V6Z-F~gm8){)UO(%BH@R_eppFcftK@`5NrRpm9A zPb$)spg~@R%9KPF`AbOClIq3wc3~V!>TFC3#$iO#<3Ul5wk2?Jp<{$>rUL?9l@b#m0kwF8FiChSBqCs1Qs9IxC=t*R?&=J6M$U)31%Z&Y zK9vs255b$7r7@m@L8e-qo(`tFy{GW6`w;liKU_0)1otd*%{)ak7T|Hk4v2Z%%)WPp z-UZGC?r&KkrT)g>FlPQ2;HflZe*iqE%U!!J=Z}DgsRM~v3?Q4N8w-e@>3fdkc|U-R zGm)74AdTVAl{H-Sr%m9Q9?0KChJu V=2ETYQoW%gnkwqpn(z-WzW_DX!}tII delta 1399 zcmaKs!D|yi6vn$PTWgY9Yn!AoX}Y9|HpVR;RPdl^wS`hyiUFxYp__DNGKopZZY&-| zdk}KSMQ5cHrJ^?v9waBB3W6Yr1$$H~D$&0{5QHMmo88T3W1Gu2yYJ1s@AqbAcjfBy zB!7p0@HGB{U-9}-DZZ@V(#H^A{jo4pPAR3lqA6rHc#3@W&5_f-Lu6wh5_0Ki&%BPr z#^n00lcQw4zt8>fzx;wL++5#FwuA1L5U-;kUMBZON66Z~o|a_owO`;|;cSEP`;gH5 z`fNDP-6!LLA#!Qp3HcPrkdIvlNqux{61gpG)Xm!1Z@pLf30cjgjplsT+g;t<68wSd z=%7gN=|GCz;tBi?0vzf>A(TMFGl6nSMq$`KVP3EDDOOBI5xP~;Mu4nE!*g_I8;stI zg|wU#Bt=^)l(H61OVq~tX<*e&tV#UMi4}5S_2!_sNY9lOxABaGU?u?bGF{mQ)050- zil`Mt7%fU?(1!eLKyI6m=kXsW2!!@c{_f#~pDX4=z$GQ3Wdzti()_TG{9Yt`ocnah#J#hSnBU?w}x7XqMCCDR?Rgf -f`` + +**to view all logs** + ``journalctl -u netclient@`` + +**to get most recent log run** + ``systemctl status netclient@`` + Making Updates ---------------- +``vim /etc/netclient/netconfig-`` + +Change any of the variables in this file, and changes will be pushed to the server and processed locally on the next checkin. + +For instance, change the private address, endpoint, or name. See above example config file for details + + Adding/Removing Networks --------------------------- +``netclient join -t `` + +Set any of the above flags (netclient join --help) to override settings for joining the network. +If a key is provided (-k), then a token is unnecessary, but grpc, server, ports, and network must all be provided via flags. + + Uninstalling --------------- -Troubleshooting ------------------ +``netclient uninstall`` + diff --git a/docs/_build/html/_sources/support.rst.txt b/docs/_build/html/_sources/support.rst.txt index 4bdde5c4..d1c2329f 100644 --- a/docs/_build/html/_sources/support.rst.txt +++ b/docs/_build/html/_sources/support.rst.txt @@ -10,22 +10,15 @@ Does/Will Netmaker Support X Operating System? Netmaker is initially available on a limited number of operating systems for good reason: Every operating system is designed differently. With a small team, we can either focus on making Netmaker do a lot on a few number of operating systems, or a little on a bunch of operating systems. We chose the first option. You can view the System Compatibility docs for more info, but in general, you should only be using Netmaker on systemd linux right now. -However, as of v0.4, we will technically be able to bring any operating system into the network. This is a bit of a hack. v0.4 introduces Ingress Gateways. Think of it this way. You set up a private network. You want devices to access it. You set up a single node as an "Ingress Gateway" and generate config files for "external clients." These clients are unmanaged and unmeshed, meaning they can access the network but only via the gateway. It also means they will not automatically account for changes to the network, and the user will have to update the configs manually. +However, via "external clients", any device that supports WireGuard can be added to the network. -This lets us immediately "support" any device which can run WireGuard, which includes most operating systems at this point including phones and Windows. - -As we stabilize the design and feature set of Netmaker, we will expand the operating system support for Netclient which configures dynamic, fully-meshed devices. Expect to see updates about new OS support every few weeks, until eventually the Ingress Gateway becomes unnecessary (though you will still want it for certain use cases). +In future iterations will expand the operating system support for Netclient, and devices that must use the "external client" feature can switch to Netclient. How do I install the Netclient on X? --------------------------------------- As per the above, there are many unsupported operating systems. You are still welcome to try, it is just an executable binary file after all. If the system is unix-based and has kernel WireGuard installed, netclient may very well mesh the device into the network. However, the service likely will encounter problems retrieving updates. -Why MongoDB? SQL is better and smaller. ----------------------------------------- - -We are in a phase of rapid iteration. Every week the database schema changes. MongoDB makes our development process much more flexible. That said, we agree! SQL will be better for production, and indeed, we plan to switch over to SQL before v1.0, so please be patient with the resource consumption of MongoDB for the time being; it is helping to support a rapid pace of development. - Is Netmaker a VPN like NordNPN? -------------------------------- @@ -41,10 +34,11 @@ https://github.com/pivpn/pivpn https://github.com/subspacecloud/subspace https://github.com/mullvad/mullvadvpn-app -Do you offer any paid support? ---------------------------------- +Do you offer any enterprise support? +-------------------------------------- + +If you are interested in enterprise support for your project, please contact info@gravitl.com. -Not at this time, but eventually we will. If you are interested, or if you are interested in sponsoring the project generally, please contact Alex Feiszli (alex@gravitl.com). Why the SSPL License? ---------------------- @@ -57,14 +51,6 @@ If you have concerns about the license leading to project restrictions down the All that said, we will re-evaluate the license on a regular basis and determine if an OSI-approved license makes more sense. It's just easier to move from SSPL to another license than vice-versa. -Issues, Bugs, and Feature Requests -===================================== - -Issues / Bugs ----------------- - -Feature Requests -------------------- Contact =========== diff --git a/docs/_build/html/_sources/troubleshoot.rst.txt b/docs/_build/html/_sources/troubleshoot.rst.txt index 9690dde5..73e7217d 100644 --- a/docs/_build/html/_sources/troubleshoot.rst.txt +++ b/docs/_build/html/_sources/troubleshoot.rst.txt @@ -3,17 +3,91 @@ Troubleshooting ================= Common Issues ---------------- +-------------- +**How can I connect my Android, IOS, MacOS or Windows device to my Netmaker VPN?** + Currently meshing one of these devices is not supported, however it will be soon. + For now you can connect to your VPN by making one of the nodes an Ingressgateway, then + create an Ext Client for each device. Finally, use the official WG app or another + WG configuration app to connect via QR or downloading the device's WireGuard configuration. + +**I've made changes to my nodes but the nodes themselves haven't updated yet, why?** + Please allow your nodes to complete a check in or two, in order to reconfigure themselves. + In some cases, it could take up to a minute or so. + +**Do I have to use access keys to join a network?** + Although keys are the preferred way to join a network, Netmaker does allow for manual node sign-ups. + Simply turn on "allow manual signups" on your network and nodes will not connect until you manually aprove each one. + +**Is there a community or forum to ask questions about Netmaker?** + Yes, we have an active `discord `_ community and issues on our `github `_ are answered frequently! + You can also sign-up for updates at our `gravitl site `_! Server ------- +**Can I secure/encrypt all the traffic to my server and UI?** + This can fairly simple to achieve assuming you have access to a domain and are familiar with Nginx. + Please refer to the quick-start guide to see! + +**Can I connect multiple nodes (mesh clients) behind a single firewall/router?** + Yes! As of version 0.7 Netmaker supports UDP Hole Punching to allow this, without the use of a third party STUN server! + Is UDP hole punching a risk for you? Well you can turn it off and make static nodes/ports for the server to refer to as well. + +**What are the minimum specs to run the server?** + We recommend at least 1 CPU and 2 GB Memory. + +**Does this support IPv6 addressing?** + Yes, Netmaker supports IPv6 addressing. When you create a network, just make sure to turn on Dual Stack. + Nodes will be given IPv6 addresses along with their IPv4 address. It does not currently support IPv6 only. + +**Does Netmaker support Raft Consensus?** + Netmaker does not directly support it, but it uses `rqlite `_ (which supports Raft) as the database. + +**How do I uninstall Netmaker?** + There is no official uninstall script for the Netmaker server at this time. If you followed the quick-start guide, simply run ``sudo docker-compose -f docker-compose.quickstart.yml down --volumes`` + to completely wipe your server. Otherwise kill the running binary and it's up to you to remove database records/volumes. UI ---- +**I want to make a seperate network and give my friend access to only that network.** + Simply navigate to the UI (as an admin account). Select users in the top left and create them an account. + Select the network(s) to give them and they should be good to go! They are an admin of that network(s) only now. + +**I'm done with an access key, can I delete it?** + Simply navigate to the UI (as an admin account). Select your network of interest, then the select the ``Access Keys`` tab. + Then delete the rogue access key. + +**I can't delete my network, why?** + You **MUST** remove all nodes in a network before you can delete it. + +**Can I have multiple nodes with the same name?** + Yes, nodes can share names without issue. It may just be harder on you to know which is which. Agent ------- +**How do I connect a node to my Netmaker network with Netclient?** + First get your access token (not just access key), then run ``sudo netclient join -t ``. + **NOTE:** netclient may be under /etc/netclient/, i.e run ``sudo /etc/netclient/netclient join -t `` + +**How do I disconnect a node on a Netmaker network?** + In order to leave a Netmaker network, run ``sudo netclient leave -n `` + +**How do I check the logs of my agent on a node?** + You will need sudo/root permissions, but you can run ``sudo systemctl status netclient@`` + or you may also run ``sudo journalctl -u netclient@``. + Note for journalctl: you should hit the ``end`` key to get to view the most recent logs quickly or use ``journalctl -u netclient@ -f`` instead. + +**Can I check the configuration of my node on the node?** + **A:** Yes, on the node simply run ``sudo cat /etc/netclient/netconfig-`` and you should see what your current configuration is! + You can also see the current WireGuard configuration with ``sudo wg show`` + +**I am done with the agent on my machine, can I uninstall it?** + Yes, on the node simply run ``sudo /etc/netclient/netclient uninstall``. + CoreDNS -------- +**Is CoreDNS required to use Netmaker?** + CoreDNS is not required. Simply start your server with ``DNS_MODE="off"``. +**What is the minimum DNS entry value I can use?** + Netmaker supports down to two characters for DNS names for your networks domains** diff --git a/docs/_build/html/_sources/usage.rst.txt b/docs/_build/html/_sources/usage.rst.txt index deeeb29d..7abdfca8 100644 --- a/docs/_build/html/_sources/usage.rst.txt +++ b/docs/_build/html/_sources/usage.rst.txt @@ -19,21 +19,6 @@ Video Tutorials Written Tutorials ----------------- -* `Kubernetes Cross-cloud cluster `_: Tutorial on setting up cross-cloud Kubernetes clusters using Netmaker. - -Basic -===== - -Local Network -============= - -Site-to-Site -============ - -Dual Stack with IPv6 -==================== - -Kubernetes Node Network -======================== - - +* `K3s Cross-cloud cluster `_: Tutorial on setting up cross-cloud K3s clusters using Netmaker. +* `MicroK8s Cross-cloud cluster `_: Tutorial on setting up cross-cloud MicroK8s clusters using Netmaker. +* `Secure access to private services `_: Tutorial on setting up secure Nextcloud with Netmaker. \ No newline at end of file diff --git a/docs/_build/html/client-installation.html b/docs/_build/html/client-installation.html index 505f6db1..f1e3b08a 100644 --- a/docs/_build/html/client-installation.html +++ b/docs/_build/html/client-installation.html @@ -375,7 +375,14 @@

  • - DNS Mode Prereqisite Setup + Server Configuration Reference + + +
  • +
  • + + + DNS Mode Setup
  • @@ -399,13 +406,6 @@ Kubernetes Install - -
  • - - - Configuration Reference - -
  • @@ -463,8 +463,6 @@
  • Adding/Removing Networks
  • Uninstalling -
  • -
  • Troubleshooting
  • @@ -556,41 +554,6 @@ External Tutorials - -
  • - - - Basic - - -
  • -
  • - - - Local Network - - -
  • -
  • - - - Site-to-Site - - -
  • -
  • - - - Dual Stack with IPv6 - - -
  • -
  • - - - Kubernetes Node Network - -
  • @@ -682,13 +645,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • @@ -832,8 +788,6 @@
  • Adding/Removing Networks
  • Uninstalling -
  • -
  • Troubleshooting
  • @@ -917,7 +871,8 @@

    sudo netclient join --help

    -
    NAME:
    +
    alex@workstation:~$ sudo netclient join --help
    +NAME:
        netclient join - Join a Netmaker network.
     
     USAGE:
    @@ -925,7 +880,7 @@
     
     OPTIONS:
        --network value, -n value            Network to perform specified action against. (default: "all") [$NETCLIENT_NETWORK]
    -   --password value, -p value           Password for authenticating with netmaker. (default: "badpassword") [$NETCLIENT_PASSWORD]
    +   --password value, -p value           Password for authenticating with netmaker. [$NETCLIENT_PASSWORD]
        --endpoint value, -e value           Reachable (usually public) address for WireGuard (not the private WG address). [$NETCLIENT_ENDPOINT]
        --macaddress value, -m value         Mac Address for this machine. Used as a unique identifier within Netmaker network. [$NETCLIENT_MACADDRESS]
        --publickey value, --pubkey value    Public Key for WireGuard Interface. [$NETCLIENT_PUBLICKEY]
    @@ -938,14 +893,15 @@
        --address value, -a value            WireGuard address for machine within Netmaker network. [$NETCLIENT_ADDRESS]
        --addressIPv6 value, --a6 value      WireGuard address for machine within Netmaker network. [$NETCLIENT_ADDRESSIPV6]
        --interface value, -i value          WireGuard local network interface name. [$NETCLIENT_INTERFACE]
    -   --apiserver value                    Address + API Port (e.g. 1.2.3.4:8081) of Netmaker server. [$NETCLIENT_API_SERVER]
    -   --grpcserver value                   Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server. [$NETCLIENT_GRPC_SERVER]
    +   --apiserver value                    Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server. [$NETCLIENT_API_SERVER]
    +   --grpcserver value                   Address + API Port (e.g. 1.2.3.4:8081) of Netmaker server. [$NETCLIENT_GRPC_SERVER]
        --key value, -k value                Access Key for signing up machine with Netmaker server during initial 'add'. [$NETCLIENT_ACCESSKEY]
        --token value, -t value              Access Token for signing up machine with Netmaker server during initial 'add'. [$NETCLIENT_ACCESSTOKEN]
        --localrange value                   Local Range if network is local, for instance 192.168.1.0/24. [$NETCLIENT_LOCALRANGE]
    -   --dns value                          Sets private dns if 'on'. Ignores if 'off'. Will retrieve from network if unset. [$NETCLIENT_DNS]
    +   --dns value                          Sets private dns if 'on'. Ignores if 'off'. Will retrieve from network if unset. (default: "on") [$NETCLIENT_DNS]
        --islocal value                      Sets endpoint to local address if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_IS_LOCAL]
        --isdualstack value                  Sets ipv6 address if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_IS_DUALSTACK]
    +   --udpholepunch value                 Turns on udp holepunching if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_UDP_HOLEPUNCH]
        --ipforwarding value                 Sets ip forwarding on if 'on'. Ignores if 'off'. On by default. (default: "on") [$NETCLIENT_IPFORWARDING]
        --postup value                       Sets PostUp command for WireGuard. [$NETCLIENT_POSTUP]
        --postdown value                     Sets PostDown command for WireGuard. [$NETCLIENT_POSTDOWN]
    @@ -959,6 +915,7 @@
     

    Config File Reference

    There is a config file for each node under /etc/netconfig-<network name>. You can change these values and then set “postchanges” to “true”, or go to the CLI and run netclient push -n <network>

    server:
    +    corednsaddr: 147.182.251.203 # Address of CoreDNS Server (set locally with resolvectl)
         grpcaddress: 10.101.0.1:50051 # Address of GRPC Server (used for all interaction with server after registration)
         apiaddress: 1.2.3.4:8081 # Address of API Server (used only for registration/unregistration)
         accesskey: 5qKTbTgsvb45y3qyRmWft # Key used to sign up with server. Used only during registration
    @@ -971,12 +928,12 @@
         localaddress: 192.168.1.32 # Address on local network, used as endpoint for other local nodes for faster comms
         wgaddress: 10.7.11.2 # Private WG addres on network
         wgaddress6: "f8:34:41:77:5c:15" # Private ipv6 address if network is dual stack
    -    roaming: "on" # Whether or not to grab new endpoint value automatically
    -    dns: "off" # Whether or not to set local DNS based on Netmaker's Private DNS server
    +    roaming: "yes" # Whether or not to grab new endpoint value automatically
    +    dnson: "no" # Whether or not to set local DNS based on Netmaker's Private DNS server
         islocal: "no" # Based on network. If yes, will use local IP as endpoint.
         isdualstack: "yes" # Use IPv6 in addition to IPv4
         isingressgateway: "no" # whether or not node is an ingress gateway (will set iptables forwarding rules)
    -    allowedips: "" # not currently used
    +    allowedips: "" # additional IP's to add to client
         localrange: "" # local range if it's a local network. For instance, 192.168.1.0/24
         postup: "" # postup command, used by ingress/egress gateways to set iptables
         postdown: "" # postdown command, used by ingress/egress gateways to set iptables
    @@ -986,9 +943,11 @@
         privatekey: "" # private key, set only for changing and then will revert to blank in config
         endpoint: 78.170.22.168 # public endpoint for reaching node 
         postchanges: "false" # if true, will post and config file changes on next checkin and then revert to false
    -    ipforwarding: "on" # set ip forwarding; highly recommended to leave on
    -network: home # the network (duplicate of node.network)
    -daemon: "on" # whether or not to manage systemd
    +    ipforwarding: "yes" # set ip forwarding; highly recommended to leave on
    +    isstatic: "no" # if yes, daemon will not change pubkey, endpoint, or address
    +    udpholepunch: "yes" # run UDP hole punching (will ignore port above, e.g. 51821)
    +    network: home # the network (duplicate of node.network)
    +daemon: "yes" # whether or not to manage systemd
     operatingsystem: "" # not currently in use
     
    @@ -1007,18 +966,32 @@

    Managing Netclient

    Viewing Logs

    +
    +
    to view current networks

    netclient list

    +
    +
    to tail logs

    journalctl -u netclient@<net name> -f

    +
    +
    to view all logs

    journalctl -u netclient@<net name>

    +
    +
    to get most recent log run

    systemctl status netclient@<net name>

    +
    +

    Making Updates

    +

    vim /etc/netclient/netconfig-<network>

    +

    Change any of the variables in this file, and changes will be pushed to the server and processed locally on the next checkin.

    +

    For instance, change the private address, endpoint, or name. See above example config file for details

    Adding/Removing Networks

    +

    netclient join -t <token>

    +

    Set any of the above flags (netclient join –help) to override settings for joining the network. +If a key is provided (-k), then a token is unnecessary, but grpc, server, ports, and network must all be provided via flags.

    Uninstalling

    - - -

    Troubleshooting

    +

    netclient uninstall

    diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index e0fb5a7e..7399f8c0 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -502,41 +502,6 @@ External Tutorials - -
  • - - - Basic - - -
  • -
  • - - - Local Network - - -
  • -
  • - - - Site-to-Site - - -
  • -
  • - - - Dual Stack with IPv6 - - -
  • -
  • - - - Kubernetes Node Network - -
  • @@ -628,13 +593,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index 5412907f..e8d2a6e9 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -503,41 +503,6 @@ External Tutorials -
  • -
  • - - - Basic - - -
  • -
  • - - - Local Network - - -
  • -
  • - - - Site-to-Site - - -
  • -
  • - - - Dual Stack with IPv6 - - -
  • -
  • - - - Kubernetes Node Network - -
  • @@ -629,13 +594,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • @@ -903,11 +861,6 @@ @@ -946,7 +899,6 @@
  • @@ -634,13 +599,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index afd60d72..07615fed 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about","api","architecture","client-installation","conduct","contribute","external-clients","getting-started","index","license","quick-start","server-installation","support","troubleshoot","usage"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["about.rst","api.rst","architecture.rst","client-installation.rst","conduct.rst","contribute.rst","external-clients.rst","getting-started.rst","index.rst","license.rst","quick-start.rst","server-installation.rst","support.rst","troubleshoot.rst","usage.rst"],objects:{},objnames:{},objtypes:{},terms:{"0afehuytvin":3,"100":[1,7],"101":3,"127":11,"1443":[],"168":3,"170":3,"172":1,"192":3,"200":1,"236":6,"247":6,"254":7,"27017":[],"2cpu":10,"2gb":10,"30s":11,"443":[10,11],"4gb":10,"500":[],"50051":[2,3,7,11],"50052":[],"50555":[],"51821":3,"51822":6,"534":[],"5gb":10,"5qktbtgsvb45y3qyrmwft":3,"6400":1,"8081":[1,2,3,11],"8082":11,"abstract":2,"break":3,"case":[1,2,3,6,8,10,11,12,14],"class":11,"default":[1,2,3,6,7,10,11],"function":[1,3,11,12],"import":[2,6,7],"long":[0,7,12],"new":[2,3,7,12],"null":10,"public":[2,3,4,6,9,10],"return":[2,10],"short":3,"static":[2,10,11],"switch":[11,12],"true":[3,11],"try":12,"var":[1,11],"while":[2,12],AWS:[0,10,12],Adding:[7,8],Being:4,DNS:[2,8,14],For:[2,3,6,7,10,11],IPs:2,Not:[2,12],That:[2,12],The:[0,1,2,3,4,6,7,10,11,12],Then:[6,7],There:[0,1,3,7,12],These:[2,3,7,12],Use:[3,8],Used:[3,11],Useful:11,Using:[0,1,4,7,8],Will:3,With:[2,12],aa3bvg0rnitirxdx:1,abil:12,abl:[1,2,6,12],abou:7,about:[2,3,7,11,12],abov:[2,7,10,11,12],absent:3,abus:4,acceler:[],accept:[3,4,6],access:[0,2,3,6,7,8,10,11,12,14],access_token_valu:11,accesskei:[1,3],accomplish:12,account:[4,12],achiev:[1,2,12],acm:10,across:[0,3],act:[2,4,6],action:[1,3,4],actual:2,adapt:[4,11],add:[0,1,2,3,6,7,10,11],added:[2,3,7,11],adding:7,addit:[2,3,7,10,11,12],addnetwork:1,addr:3,address:[2,3,4,6,7,11],addressipv6:3,addressrang:1,adequ:11,adm:1,admin:[0,1,2,3,7,11],adopt:2,advanc:[1,4,7,8,10],after:[3,6,7,12],again:10,against:3,age:4,agent:[0,2,3,7,8,11],agent_backend:11,agentbackend:11,aggreg:2,agre:[10,12],alex:12,algo:12,align:4,all:[0,1,2,3,4,6,7,8,9,10,11,12],allow:[1,2,3,6,7,10,11,14],allowedip:[3,6],allowedorigin:11,alreadi:[2,3,7,11],also:[0,1,2,7,10,11,12],altern:[2,11],alwai:11,amd64:10,android:2,ani:[0,2,3,4,6,7,10,11],anoth:[2,12],anyth:2,anywai:12,anywher:10,aorijqalrik3ajflaqrdajhkr:1,apach:[2,11],api:[2,3,7,10,11],api_port:11,apiaddress:3,apihost:11,apiport:11,apiserv:3,app:[6,11,12],appear:[4,7],appli:[4,11],applic:1,appoint:4,appropri:[2,4,6,10],approv:[1,3,7,12],apt:10,arbitrari:0,arch:[2,10],architectur:11,archiv:10,argument:3,arm:3,around:10,arrai:2,artifact:9,ask:3,asset:11,assum:[2,6,10,11],attach:6,attack:4,attempt:2,attent:4,attribut:8,authent:[2,3,7],author:1,authsourc:[],autom:0,automat:[2,3,6,11,12],avail:[3,4,9,11,12],averag:[],awai:2,await:2,back:[2,6],backend:11,backend_url:11,background:2,backup:12,badpassword:3,balanc:12,ban:4,bare:2,base64:7,base:[2,3,10,11,12],bash:2,basi:[2,12],basic:8,bearer:1,becaus:[0,2],becom:[2,12],been:[2,3],befor:[2,10,12],begin:[2,10],behavior:4,behind:[2,6,10],being:[2,11,12],believ:12,bellow:11,below:[1,2,7,10,11,14],best:[4,12],better:2,between:[0,2],bewar:3,beyond:[11,12],bin:[10,11],binari:[2,3,7,11,12],bind:11,bit:[12,14],biz:10,blank:3,blob:11,block:11,bodi:4,both:[2,4,11,12],bottom:7,bring:12,brows:12,browser:[],bug:8,build:8,built:2,bunch:12,busi:12,button:[],call:[0,2,3,8,11],callabl:3,can:[0,1,2,3,6,7,9,10,11,12,14],cang:11,cannot:[3,6],cap_add:11,car:12,carrier:2,caus:2,caution:[],center:0,cento:2,certain:[2,12],certbot:10,certif:[10,11],certonli:10,cgnat:[],cgroup:11,challeng:10,chang:[0,1,2,3,6,7,11,12],check:[1,2,3,7,10,11],checkin:[1,2,3],chmod:10,choic:6,choos:[3,10],chose:12,chosen:[2,3,10],cidr:7,circumst:[3,4],clarifi:4,clear:12,cli:[2,10],click:[2,7,10],client:[0,7,10,11,12],client_max_body_s:11,client_mod:11,clientmod:11,close:12,cloud:[0,10,14],cluster:[11,14],code:[2,3,6,9],com:[3,4,7,10,11,12],combin:11,come:[2,8,11],comfort:10,comm:3,command:[2,3,7,10,11],comment:[4,11],commit:4,common:[2,8],commun:[2,3,4,8,10,11,12,14],compat:[6,8,12],compil:[2,3],complaint:4,complet:2,complex:2,complic:2,compon:[8,11],compos:[7,8,10],comput:[0,2,3],concept:8,concern:12,concurr:10,conf:[10,11],confidenti:4,config:[1,2,6,12],configur:[0,1,2,7,8,10,12],conflict:[2,11],conflift:[],connect:[0,2,3,6,7,11,14],consensu:2,consequ:11,consid:[2,4,7],consider:2,consist:2,consol:7,construct:4,consum:[3,10,11],consumpt:12,contact:[4,8,10],contain:[2,7,11],container_nam:11,containerd:10,content:1,context:11,continu:11,contrast:2,contribut:4,contributor:4,control:[2,7,11],copi:[7,11],core:[0,8,12],coredn:8,coredns_addr:11,corefil:11,coreo:2,corpor:12,correct:4,correctli:11,cors_allowed_origin:11,could:[0,4,7],cours:10,coven:4,cover:8,cpu:10,creat:[0,1,2,3,4,6,8,10,11,14],createadmin:1,creategatewai:1,createus:[],creation:0,credenti:11,critic:4,cron:2,cross:14,cryptocurr:0,curl:[7,10,11],current:[2,3,11],custom:[2,8,10,11],customiz:[],cycl:[1,2],daemon:2,dashboard:10,data:[0,2,11],databas:[2,12],date:1,dbadminanydatabas:[],dbu:11,ddflzqn:6,dearmor:10,deb:10,debian:2,debug:11,decis:8,decod:[2,3,7],deem:4,defaultkeepal:[],defin:4,delet:[1,6,7],deletegatewai:1,depend:[2,3,8],depends_on:11,deploi:[2,8,10,11],deploy:[2,11],depreci:11,derogatori:4,deserv:12,design:[2,3,6,8,12],desktop:[2,3,6],detail:[1,2,3,4,7,8,11],determin:[4,12],dev:[10,11],develop:[7,10,11,12],devic:[0,2,3,8,12],diabl:[],diagram:2,differ:[0,2,4,7,11,12,14],digitalocean:10,directli:[0,1,2,6,11],directori:10,disabl:[2,4,10],disable_remote_ip_check:11,disableremoteipcheck:11,discord:12,discuss:[],displai:[],displaynam:1,distibut:2,distribut:2,distributionshav:2,dns:[2,3,10,11],dns_mode:11,dnsconfig:11,dnsmode:11,dnsstublisten:[10,11],doc:[7,10,11,12],docker:[2,7,8],document:[0,2,3,7,11],doe:[2,6,8,10,11],doing:0,domain:11,don:[2,3,12,14],doubl:[],down:[0,7,12],download:[6,7,10,11],dual:[3,8],duplic:3,dure:3,dynam:[0,2,8,12],each:[0,2,3,7,11],easi:[2,11],easier:[2,12],easiest:2,easili:0,echo:10,econom:12,edit:[4,6],effect:7,effici:2,egress:3,either:[2,6,12],ejf6yy51m:6,electron:4,elev:11,elimin:2,els:12,email:[10,12],empathi:4,empti:11,enabl:[2,7,10,11],encod:7,encompass:0,encount:[2,12],encrypt:[0,2,3],end:[2,10,11,12],endpoint:[1,2,3,6],enforc:8,engin:10,enhanc:8,enough:[],ensur:12,enter:[7,10],enterpris:10,entir:7,entireti:2,entri:11,env:[1,11],environ:[0,1,2,4,11],equal:11,equival:11,error:[],escal:[],especi:[],establish:6,etc:[3,7,10,11],eth0:1,ethnic:4,evalu:12,even:[0,2],event:4,eventu:12,everi:[2,3,7,12],everyon:4,everyth:[2,11],evolv:2,examin:[],exampl:[2,3,4,6,8,10,11],except:11,execut:12,exist:[0,2,7,11],expand:12,expect:[4,8,11,12],experi:4,explain:[2,8],explicit:4,explicitli:11,expos:2,express:4,expressvpn:12,extens:2,extern:[3,11,12],face:4,fact:0,fail:[7,10],fair:4,fairli:2,faith:4,fals:[3,11],familiar:[0,2,12],faq:8,fast:[2,8,11],faster:[0,2,3],featur:[8,10,11],fedora:2,feiszli:12,few:[3,12],field:[],figur:14,file:[2,6,10,12],filenam:1,financi:12,find:[2,11,14],fine:0,firewal:11,firmli:12,first:[2,3,7,11,12,14],fit:[10,14],flag:[],flat:0,flexibl:[0,12],flow:2,focu:12,focus:4,folder:2,follow:[4,7,10,11,12],forc:11,fork:8,form:3,format:11,forward:[3,6,10],foster:4,found:[0,2,9,11],free:4,freeli:9,from:[0,1,2,3,4,6,7,10,11,12,14],front:[2,11],fssl:10,full:[0,2,11],fulli:[0,2,12],fundament:[],further:4,futur:[2,7],gain:[],gatewai:[1,2,3,8,12,14],gcp:10,gender:4,gener:[1,2,3,6,10,11,12],generate_config_j:11,get:[1,3,8,10,11,14],github:[2,3,8,10,11,12],githubusercont:[7,10,11],give:[2,7,8,11],given:[0,2,7],global:3,gnupg:10,goe:[0,11],going:11,golang:2,good:[4,6,12,14],googl:11,gpg:10,grab:3,gracefulli:4,grade:2,gravitl:[3,4,7,10,11,12],grpc:[2,3,7,10],grpc_port:11,grpc_ssl:11,grpcaddr:[],grpcaddress:3,grpcaddrrang:[],grpcendpoint:[],grpchost:11,grpcifac:[],grpcport:11,grpcserver:3,grpcwg:[],guid:[0,2,7,10,11],guidelin:12,hack:12,hand:8,handl:[0,2,10],harass:4,hard:12,harm:4,has:[0,2,3,7,11,12,14],hasadmin:1,have:[0,2,3,4,6,7,10,11,12,14],head:10,header:[1,11],health:12,heart:3,heavi:2,heaviest:[],heavili:[],help:[1,2,3,7,8,11,12,14],here:[2,4,7,9,10,11,12,14],high:2,highli:3,hold:[0,2,3],home:[0,2,3],hook:[2,6],horizont:[],host:[2,3,10,11,12],host_ip:11,hous:1,how:[2,3,8,11],howev:[1,2,3,10,11,12],html:11,http:[1,3,7,8,10,12],http_port:11,hub:[0,2],hundr:10,idea:12,ident:4,identifi:3,ignor:3,imag:11,imageri:4,immedi:12,impact:[2,12],implement:2,importantli:7,inappropri:4,inbound:10,incid:4,includ:[2,4,6,8,11,12],inclus:4,incompat:[],incorrect:[3,11],increas:2,inde:12,independ:6,individu:[4,11],industri:2,info:[2,4,10,11,12],inform:[2,3,4,7],ingress:[2,3,8,11,12],initi:[3,12],ins:2,insert:[10,11],insid:11,instal:[0,2,6,7],instanc:[1,2,3,4,7,10,11],instead:[0,3,6,10,11],instruct:[10,11],insult:4,intact:3,integr:11,intend:3,interact:[0,2,3],interest:[4,12],interfac:[1,3,6,7,11],intern:11,internet:[0,2,12],intro:14,introduc:[2,12],introduct:[2,8],invalid:[6,7],investig:4,invis:2,iot:[0,2],ipforward:3,iphon:2,ipsec:2,iptabl:3,ipv4:3,ipv6:[3,8],isdualstack:3,isingressgatewai:3,isloc:3,issu:[4,8,10,11],iter:12,its:[0,2,3,4,6,7,11],itself:[2,3,7],job:2,join:[2,3,7],journalctl:11,json:1,just:[0,2,3,6,11,12],jwt:[1,3],keep:1,keepal:3,kei:[2,3,10,11],kernel:[0,2,12],keynam:1,keyr:10,keyrequir:[],keyupd:1,keyvalu:[],know:[11,12,14],known:2,kube:11,kubectl:11,kubernet:[0,8],lack:[],lan:3,languag:4,laptop1:1,laptop:6,larg:2,larger:[],last:1,lastmodifi:1,latenc:2,later:2,latest:[2,3,6,11],layer:0,layout:2,lead:12,leadership:4,learn:[],least:0,leav:[3,7],left:11,less:[2,7],let:[0,12,14],letsencrypt:10,level:[2,4,11],light:11,lighter:[],lightweight:2,like:[0,2,3,7,10,11],likewis:[],limit:[8,11,12],line:2,link:[8,10,11],linod:10,linux:[2,3,7,8,10,12],linuxserv:11,list:[0,2,3,10,11],listen:11,listenport:1,littl:[2,12],load:[2,11,12],local:[2,3,7,8,10,11],localaddress:[1,3],localhost:1,localrang:3,locat:[0,2,3,11],log:[10,11],logic:6,login:7,look:12,lookup:2,lot:[2,12],lsb:10,lsb_releas:10,lxc:11,mac:[2,3],macaddress:[1,3],machin:[0,2,3,6,7,10],made:[0,2],mai:[1,2,3,4,7,10,11,12],mail:4,main:[],mainfram:[],maintain:[4,12],make:[0,2,4,6,10,11,12],man:6,manag:[0,2,6,8,11,14],mandatori:[],mani:[0,2,11,12,14],manual:[2,3,7,10,11,12],map:11,master:[10,11],master_kei:11,masterkei:[1,11],match:[3,11],mean:[2,3,6,11,12],meant:11,media:4,member:[4,14],memori:[],mesh:[0,6,12,14],meshclient:1,metal:2,method:[1,2,3,6,7],mgmt:1,microk8:11,middl:6,might:[0,2,11],min:10,mind:[],mint:2,minu:11,minut:[10,11],miss:2,mix:3,mode:[2,8],model:[0,2],modif:11,modifi:[1,2,3,7,10,11,12],monet:12,mongo:11,mongo_admin:[],mongo_host:[],mongo_initdb_root_password:[],mongo_initdb_root_usernam:[],mongo_opt:[],mongo_pass:[],mongo_port:[],mongoadmin:[],mongoconn:[],mongodb:11,mongopass:[],mongovol:[],more:[0,1,2,6,7,8,11,12],most:[1,2,3,10,11,12],mostli:[2,3],mount:11,move:[7,10,12],much:[0,2,12],mullvad:12,mullvadvpn:12,multipl:[0,7],must:[1,2,3,6,7,10,11],mykei:[1,7],mynet:7,myserv:7,mysit:10,name:[1,2,3,6,7,11],nameserv:[2,3,10,11],namespac:11,nat:[2,6],nation:4,navig:10,nebula:0,necessari:[2,3,4,11],need:[0,1,2,3,10,11,12],neighborhood:0,neither:2,net:10,net_admin:11,netclient:[0,6,8],netclient_accesskei:3,netclient_accesstoken:3,netclient_address:3,netclient_addressipv6:3,netclient_api_serv:3,netclient_daemon:3,netclient_dn:3,netclient_endpoint:3,netclient_grpc_serv:3,netclient_interfac:3,netclient_ipforward:3,netclient_is_dualstack:3,netclient_is_loc:3,netclient_keepal:3,netclient_localaddress:3,netclient_localrang:3,netclient_macaddress:3,netclient_nam:3,netclient_network:3,netclient_o:3,netclient_password:3,netclient_port:3,netclient_postdown:3,netclient_postup:3,netclient_privatekei:3,netclient_publickei:3,netclient_roam:3,netconfig:3,netid:1,netmak:[1,3,6,9,11],netmaker_base_domain:[10,11],netmaker_env:11,network:[0,6,7,8,11,12],network_mod:11,next:[3,7],nginx:[2,8],noclient:[],node:[3,6,8,11,12],nodn:11,non:[2,3,7,11],none:0,noonewillguessthi:1,nordvpn:12,note:[1,3,6,11],notifi:2,now:[0,6,7,10,11,12],nslookup:10,number:[2,7,12],oblig:4,obtain:[1,3],ode:3,off:[2,3,11],offens:4,offic:[0,14],offici:[1,4,10],offlin:4,omit:11,onc:[6,7,11],one:[2,3,6,7,10,11],onli:[1,2,3,6,7,12],onlin:4,onto:[],open:[2,4,10,12],openvpn:2,oper:[2,3,11],operatingsystem:3,opinion:10,opt:[],option:[2,3,8,11,12],order:[10,11,12],org:[10,11],orient:4,origin:11,osi:12,other:[0,2,3,4,6,7,11,12],otherwis:[0,3,4],our:[8,10,12],out:[0,2,7,10,11,12,14],outlin:[2,11],output:[3,7],outsid:[8,11],over:[0,2,11,12],overlai:[0,8],overlap:7,overrid:11,overridden:[2,11],overview:[2,8,14],overwhelm:14,own:[2,10,11],pace:12,page:2,pai:12,pair:[2,11],pane:7,part:[2,3,11],partial:2,particip:4,particular:[2,3],pass:[2,3,11],password:[1,3,7],path:[1,11,12],patient:12,peer:[2,3,6,14],pend:[1,7],peopl:12,per:12,perform:[1,2,3,11],period:2,perman:4,permiss:[4,10],permit:7,persistenkeepal:[],persistentkeepal:[3,6],person:4,perspect:[0,2],phase:12,phone:[3,6,12],physic:4,pick:[2,7],pictur:2,pidof:[],ping:7,pivpn:12,place:[3,11],plaintext:3,plan:[11,12],platform:[2,8],pleas:[3,10,11,12],pledg:8,plu:3,point:[2,10,12],polici:4,polit:4,popul:11,port:[2,3,7,10,11],posit:4,possibl:[2,8,10],post:[1,2,3,4],postchang:3,postdown:3,postup:3,practic:2,pre:11,preced:2,precend:11,prefer:[10,11],prepar:8,prereqisit:7,prerequisit:[2,7,8,11],present:[],previou:2,primari:11,prior:11,privaci:12,privat:[2,4,7,8,11,12,14],privatekei:[3,6],privileg:11,privkei:3,probabl:[0,12],problem:12,proce:[],process:[7,8,11,12],product:[11,12],profession:4,project:[1,4,8,11,12],prompt:10,proof:0,properli:3,properti:3,proto:10,protocol:11,provid:[0,2,10,11],proxi:[8,10],proxy_pass:11,proxy_pass_request_head:11,proxy_set_head:11,pubkei:3,publickei:[1,3,6],publicli:10,publish:[4,9],pull:[2,3,6,11],push:[3,6],put:1,pwd:[],python3:10,q9cog7c9qjnoxygvri:3,quarantin:3,quick:[7,11],quickli:[8,10],quickstart:10,race:[4,12],raft:2,ram:10,rang:[3,7],rangestr:1,rapid:12,rapidli:[],raspian:2,raw:[3,7,10,11],reach:[0,2,3,6],reachabl:[2,3,6,10,11],reactj:2,read:11,readwriteanydatabas:[],reallysecret:1,reason:[2,4,11,12],reccommend:[],recent:2,reciev:[1,2],recommend:[1,3,6,11],reconfigur:[2,3],record:10,reduc:[],refactor:2,refer:[2,7,10],regard:[2,4],regardless:4,regist:[2,3],registr:3,regular:12,reiter:[],reject:4,rel:2,relai:[2,6,12],relat:10,releas:[2,3,10,11],reli:[0,3],relianc:[],religion:4,reload:10,remot:[0,3,11],remov:[1,2,4,7,10,11],removenetwork:1,repeat:7,repercuss:4,replac:[3,10,11],replace_master_kei:10,report:[2,4],repositori:[2,9],repres:4,represent:4,request:[1,2,8,11],requir:[1,2,3,7,10,11],resolut:10,resolv:[2,3,10,11],resolvectl:[3,11],resourc:[6,8,12],respect:4,respons:[2,8],rest:11,rest_backend:11,restart:[10,11],restbackend:11,restrict:[11,12],result:4,retriev:[0,1,2,3,7,12],revers:[8,10],revert:3,review:4,rhel:2,right:[0,4,12],rkxlgk2mg:6,rncjjbsaa3hzuhrk5hpyxm:3,road:12,roam:3,role:[],root:[10,11],rout:[0,2],route53:10,router:2,rpumvsbpgq:6,rqlite:[],rule:[3,10],run:[0,1,2,3,6,7,8,10,11,12],runc:10,runnin:6,runtim:11,rwx:11,said:[2,12],same:[0,3,7],sampl:0,save:7,scalabl:[],scan:6,scenario:7,schema:12,scope:8,screen:7,script:[2,3,7,11],second:7,secret:[1,3,7],secretkei:11,section:[3,11],secur:[0,1,2,3,8,10],securebetween:[],sed:[10,11],see:[1,2,3,7,10,11,12],select:[6,7,14],self:12,send:[2,3,11],sens:[2,12],sensibl:[0,2,7],separ:[2,4,14],seri:10,serv:[2,10,11],server:[0,3,6,7,9,10,12],server_api_conn_str:11,server_api_host:11,server_grpc_conn_str:11,server_grpc_host:11,server_grpc_wg_address:[],server_grpc_wg_address_rang:[],server_grpc_wg_interfac:[],server_grpc_wg_keyrequir:[],server_grpc_wg_port:[],server_grpc_wg_privkei:[],server_grpc_wg_pubkei:[],server_grpc_wireguard:[],server_host:11,server_http_host:11,server_nam:11,server_public_ip:10,servic:[2,3,6,10,11,12],set:[1,2,3,4,7,10,11,12,14],setup:[0,2,8],sever:[2,11],sexual:4,sfl:[7,11],share:[10,11],ship:[],should:[0,1,2,3,6,7,8,10,11,12],show:[3,4,11],side:9,sign:[2,3,7,10],signific:2,signigif:2,signup:[2,3],similar:[0,7,11,12],simpl:[2,3,7,11],simplest:[2,3],simpli:[2,3,6,7],simplifi:11,simultan:0,sinc:[],singl:[1,2,12],site:[0,2,8,11],situat:2,size:4,skynet:1,slim:[],slow:0,small:[2,7,12],smartgui:1,snap:10,social:4,solut:2,solv:2,some:[1,2,3,11,12,14],someon:12,someth:[6,7,10,11,12],somewher:7,soon:8,sort:0,sourc:[2,3,8,9,10,12],space:4,special:[2,3,11],specif:[2,3,4,11],specifi:[3,11],speed:[0,2],split:3,spoke:[0,2],sponsor:12,spread:0,sql:2,sqldata:11,sqlite:2,ssh:[7,10],ssl:[10,11],sspl:9,stabil:12,stabl:10,stack:[3,8],stai:3,stake:0,standard:[2,8],start:[11,14],startup:1,state:7,statement:8,statu:11,step:[2,3,7,10,11],still:[0,11,12],stock:12,stop:[10,11],storag:[10,11],storageclassnam:11,store:[2,11],string:[7,11],structur:[],subdomain:[10,11],submit:[7,8],subnet:2,subsequ:2,subspac:12,subspacecloud:12,substanti:0,success:2,sudo:[3,7,10,11],support:[2,10,11],sure:[10,12],surfshark:12,suse:2,swag:11,swagger:8,sys:11,sys_modul:11,system:[7,8],system_bus_socket:11,systemctl:[10,11],systemd:[3,7,10,11,12],tab:7,tailor:[],tailscal:0,take:[0,1,2,4,7,11],talk:[0,2],tcp:10,team:[4,12],technic:[0,8,12],technolog:2,tee:10,tell:[0,2,3,11],templat:11,temporari:4,temporarili:4,term:12,terrain:12,test:[7,8],than:[2,7,11,12],thei:[0,2,4,11,12],them:[2,7,11,12],themselv:2,thhe:[],thi:[0,1,2,3,4,6,7,8,9,10,11,12],thing:[0,2,12],think:[12,14],thmpvlcykonxi:3,those:[0,2,3,6,10],though:12,thought:12,thousand:0,threaten:4,three:[7,10],through:[2,11],ticket:12,time:[1,2,3,6,7,11,12,14],timer:2,timestamp:2,token:[3,7,11],tool:[0,3,10],top:[2,10],topic:14,topolog:2,tos:10,total:[],toward:4,traefik:11,traffic:[0,2,6,10,11],trailofbit:12,transact:2,transport:10,treat:[2,3],tricki:2,troll:4,troubleshooot:10,troubleshoot:[1,7,10],tunnel:[0,2],tunnelbear:12,turn:[2,11],tutori:8,two:[0,1,2],txt:10,type:1,typic:[0,2,6,7,11],ua2zjt8wn7ga:6,ubuntu:[2,10,11],udp:[10,11],ufw:10,ultim:12,unabl:2,unaccept:4,unam:10,uncom:[10,11],uncordon:1,under:[3,7,9,11],underlai:[0,14],underli:[],underscores_in_head:11,understand:[],uninstal:8,uninstral:[],uniqu:[3,10],unix:[2,3,12],unless:[3,11],unmanag:[2,12],unmesh:12,unnecessari:12,unregist:3,unregistr:3,unset:[3,11],unsupport:12,unsur:[6,7],unten:12,until:[3,7,12],unwelcom:4,unzip:11,updat:[1,2,7,10,12],upon:[2,3],upstream_app:11,upstream_port:11,upstream_proto:11,urandom:10,url:11,usag:[3,8,11,14],use:[0,1,2,3,4,6,7,8,10,11,12,14],used:[1,2,3,6,7,11],useful:[],user:[2,3,7,12],useradminanydatabas:[],usernam:[1,7],uses:[0,1,2,6,7,11],using:[0,1,2,3,4,6,8,10,11,12,14],usr:[10,11],usual:3,util:3,v02:10,valid:[2,11],valu:[1,2,3,7,11],vari:[],variabl:[2,3],variou:[3,8,11],vehicl:12,verbos:11,veri:[0,2,3,12],verifi:2,versa:12,version:[2,4,9,10],via:[1,2,4,6,7,10,11,12,14],vice:12,view:[7,12],viewpoint:4,vim:[10,11],virtual:[0,3,6,8,10,12,14],visibl:[7,11],vm3ow4thatogiwnsla3thsl3894th:7,vne197vmradjodkb1zsuja:3,volum:[7,11],vpc:[0,12],vpn:[2,14],wai:[11,12],wait:10,want:[0,2,10,12],warn:11,web:[11,12],webserv:2,websit:2,week:12,weight:11,welcom:[4,12],well:[2,3,7,8,12],wgaddress6:3,wgaddress:3,wget:[10,11],what:[2,4,6,8],whatev:[3,10,11],when:[2,3,4,11],where:[2,6,7,8,11,14],wherev:0,whether:[0,3],which:[0,2,3,4,6,7,9,10,11,12],who:4,why:[2,3,8],wide:2,wider:2,wiki:4,wildcard:[10,11],window:[2,3,12],wiregard:[],wireguard:[0,3,6,7,8,10,11,12],wish:[6,11],within:[2,3,4],without:[1,2,3,4,7,8,12],won:12,work:[2,8,10,12],workstat:7,world:[0,2],wors:2,worth:2,would:[0,3,6,7,10,11,12],write:[2,11],ws2:3,www:11,x86:3,yaml:[1,11],ydazgedrpuxmmrqul35wfjmhvrzr1rq0u:6,yes:3,yml:[10,11],you:[0,1,2,3,6,7,8,10,11,14],your:[0,1,2,3,6,7,10,11,14],your_pass:1,your_password:1,your_secret_kei:1,yourwildcard:11,zeroti:0,zip:11,zrb9vfhk8a:12},titles:["About","API Reference","Architecture","Client Installation","Code of Conduct","Contribute","External Clients","Getting Started","Welcome to the Netmaker Documentation","License","Quick Install","Advanced Server Installation","Support","Troubleshooting","Using Netmaker"],titleterms:{"case":0,Adding:[3,6],DNS:[3,10,11],Use:0,Using:14,Will:12,about:[0,8],access:1,advanc:11,agent:13,ani:12,annot:11,api:[1,8],architectur:[2,8],attribut:4,authent:1,basic:14,better:12,bug:12,build:5,call:1,cli:3,client:[2,3,6,8],code:[4,5,8],common:13,compat:[2,3,11],compon:2,compos:11,concept:2,conduct:[4,8],config:[3,11],configur:[3,6,11],contact:12,contribut:[5,8],core:2,coredn:[2,11,13],creat:7,curl:1,daemon:3,daemonset:11,depend:10,deploi:7,descript:11,disabl:11,docker:[10,11],document:[1,8],doe:[0,12],domain:10,dual:14,enabl:[],enforc:4,enhanc:5,exampl:1,extern:[2,6,8,14],faq:12,featur:12,file:[1,3,11],firewal:10,fork:5,format:1,full:[],gatewai:6,get:7,grpc:11,guid:8,how:[0,12],http:11,ingress:6,instal:[3,8,10,11,12],introduct:[3,6,10],ipv6:14,issu:[5,12,13],kei:[1,7],kubernet:[11,14],licens:[8,9,12],like:12,limit:2,linux:11,local:14,log:3,make:3,manag:[1,3,7],manual:[],mesh:2,mode:[3,11],mongodb:12,netclient:[2,3,7,11,12],netmak:[0,2,7,8,10,12,14],network:[1,2,3,14],nginx:[10,11],node:[1,2,7,14],nordnpn:12,note:[],offer:12,onli:[],oper:12,option:[],our:4,paid:12,pledg:4,prepar:10,prereqisit:[],prerequisit:[3,10],privat:3,process:2,proxi:11,quick:[8,10],refer:[1,3,8,11],remov:3,request:12,respons:4,revers:11,rqlite:[2,11],scope:4,secur:11,server:[1,2,8,11,13],setup:[7,11],site:14,slim:[],smaller:12,sql:12,sspl:12,stack:14,standard:4,start:[7,8,10],submit:5,support:[8,12],system:[2,3,11,12],systemd:2,technic:2,templat:10,test:[5,11],token:[],troubleshoot:[3,8,13],tutori:14,uninstal:[3,7],uninstral:[],updat:3,usag:1,user:1,variabl:11,video:14,view:3,vpn:12,welcom:8,what:0,why:12,wireguard:2,without:11,work:0,written:14,you:12}}) \ No newline at end of file +Search.setIndex({docnames:["about","api","architecture","client-installation","conduct","contribute","external-clients","getting-started","index","license","quick-start","server-installation","support","troubleshoot","usage"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["about.rst","api.rst","architecture.rst","client-installation.rst","conduct.rst","contribute.rst","external-clients.rst","getting-started.rst","index.rst","license.rst","quick-start.rst","server-installation.rst","support.rst","troubleshoot.rst","usage.rst"],objects:{},objnames:{},objtypes:{},terms:{"0afehuytvin":3,"100":[1,7],"101":3,"127":11,"1443":[],"147":3,"168":3,"170":3,"172":1,"182":3,"192":3,"1b3282d4b7aa":[],"1b3282d4b7aa_":[],"200":1,"203":3,"236":6,"247":6,"251":3,"254":7,"27017":[],"2cpu":10,"2gb":10,"30s":11,"443":[10,11],"4gb":10,"500":[],"50051":[2,3,7,11],"50052":[],"50555":[],"51821":3,"51822":6,"534":[],"5gb":10,"5qktbtgsvb45y3qyrmwft":3,"6400":1,"8081":[1,2,3,11],"8082":11,"abstract":2,"break":3,"case":[1,2,3,6,8,10,11,13,14],"class":11,"default":[1,2,3,6,7,10,11],"final":13,"function":[1,3,11,12],"import":[2,6,7],"long":[0,7,12],"new":[2,3,7],"null":10,"public":[2,3,4,6,9,10],"return":[2,10],"short":3,"static":[2,10,11,13],"switch":[11,12],"true":[3,11],"try":12,"var":[1,11],"while":[2,12],AWS:[0,10,12],Adding:[7,8],Being:4,DNS:[2,8,13,14],For:[2,3,6,7,10,11,13],IOS:13,IPs:2,K3s:14,Not:2,That:2,The:[0,1,2,3,4,6,7,10,11,12],Then:[6,7,13],There:[0,1,3,7,12,13],These:[2,3,7],Use:[3,8],Used:[3,11],Useful:11,Using:[0,1,4,7,8],Will:3,With:[2,12],Yes:13,aa3bvg0rnitirxdx:1,abil:12,abl:[1,2,6],abou:7,about:[2,3,7,11,12,13],abov:[2,3,7,10,11,12],absent:3,abus:4,acceler:[],accept:[3,4,6],access:[0,2,3,6,7,8,10,11,12,13,14],access_token_valu:11,accesskei:[1,3],accomplish:12,account:[4,13],achiev:[1,2,12,13],acm:10,across:[0,3],act:[2,4,6],action:[1,3,4],activ:13,actual:2,adapt:[4,11],add:[0,1,2,3,6,7,10,11],added:[2,3,7,11,12],adding:7,addit:[2,3,7,10,11,12],addnetwork:1,addr:3,address:[2,3,4,6,7,11,13],addressipv6:3,addressrang:1,adequ:11,adm:1,admin:[0,1,2,3,7,11,13],adopt:2,advanc:[1,4,7,8,10],afeiszli:[],after:[3,6,7,12],again:10,against:3,age:4,agent:[0,2,3,7,8,11],agent_backend:11,agentbackend:11,aggreg:2,agre:10,alex:3,algo:12,align:4,all:[0,1,2,3,4,6,7,8,9,10,11,12,13],allow:[1,2,3,6,7,10,11,13,14],allowedip:[3,6],allowedorigin:11,along:13,alreadi:[2,3,7,11],also:[0,1,2,7,10,11,12,13],altern:[2,11],although:13,alwai:11,amd64:10,android:[2,13],ani:[0,2,3,4,6,7,10,11],anoth:[2,12,13],answer:13,anyth:2,anywai:12,anywher:10,aorijqalrik3ajflaqrdajhkr:1,apach:[2,11],api:[2,3,7,10,11],api_port:11,apiaddress:3,apihost:11,apiport:11,apiserv:3,app:[6,11,12,13],appear:[4,7],appli:[4,11],applic:1,appoint:4,appropri:[2,4,6,10],approv:[1,3,7,12],aprov:13,apt:10,arbitrari:0,arch:[2,10],architectur:11,archiv:10,argument:3,arm:3,around:10,arrai:2,artifact:9,ask:[3,13],asset:11,assum:[2,6,10,11,13],attach:6,attack:4,attempt:2,attent:4,attribut:8,authent:[2,3,7],author:1,authsourc:[],autom:0,automat:[2,3,6,11],avail:[3,4,9,11,12],averag:[],awai:2,await:2,back:[2,6],backend:11,backend_url:11,background:2,backup:12,badpassword:[],balanc:12,ban:4,bare:2,base64:7,base:[2,3,10,11,12],bash:2,basi:[2,12],basic:14,bearer:1,becaus:[0,2],becom:2,been:[2,3],befor:[2,10,13],begin:[2,10],behavior:4,behind:[2,6,10,13],being:[2,11],believ:12,bellow:11,below:[1,2,7,10,11,14],best:[4,12],better:2,between:[0,2],bewar:3,beyond:[11,12],bin:[10,11],binari:[2,3,7,11,12,13],bind:11,bit:14,biz:10,blank:3,blob:11,block:11,bodi:4,both:[2,4,11,12],bottom:7,bring:[],brows:12,browser:[],bug:[],build:8,built:2,bunch:12,busi:12,button:[],call:[0,2,3,8,11],callabl:3,can:[0,1,2,3,6,7,9,10,11,12,13,14],cang:11,cannot:[3,6],cap_add:11,car:12,carrier:2,cat:13,caus:2,caution:[],center:0,cento:2,certain:2,certbot:10,certif:[10,11],certonli:10,cgnat:[],cgroup:11,challeng:10,chang:[0,1,2,3,6,7,11,13],charact:13,check:[1,2,3,7,10,11,13],checkin:[1,2,3],chmod:10,choic:6,choos:[3,10],chose:12,chosen:[2,3,10],cidr:7,circumst:[3,4],clarifi:4,clear:12,cli:[2,10],click:[2,7,10],client:[0,7,10,11,12,13],client_max_body_s:11,client_mod:11,clientmod:11,close:12,cloud:[0,10,14],cluster:[11,14],code:[2,3,6,9],com:[3,4,7,10,11,12],combin:11,come:[2,8,11],comfort:10,comm:3,command:[2,3,7,10,11],comment:[4,11],commit:4,common:[2,8],commun:[2,3,4,8,10,11,12,13,14],compat:[6,8,12],compil:[2,3],complaint:4,complet:[2,13],complex:2,complic:2,compon:[8,11],compos:[7,8,10,13],comput:[0,2,3],concept:8,concern:12,concurr:10,conf:[10,11],confidenti:4,config:[1,2,6],configur:[0,1,2,7,8,10,13],conflict:[2,11],conflift:[],connect:[0,2,3,6,7,11,13,14],consensu:[2,13],consequ:11,consid:[2,4,7],consider:2,consist:2,consol:7,construct:4,consum:[3,10,11],consumpt:[],contact:[4,8,10],contain:[2,7,11],container_nam:11,containerd:10,content:1,context:11,continu:11,contrast:2,contribut:4,contributor:4,control:[2,7,11],copi:[7,11],core:[0,8,12],coredn:[3,8],coredns_addr:11,corednsaddr:3,corefil:11,coreo:2,corpor:12,correct:4,correctli:11,cors_allowed_origin:11,could:[0,4,7,13],cours:10,coven:4,cover:8,cpu:[10,13],creat:[0,1,2,3,4,6,8,10,11,13,14],createadmin:1,creategatewai:1,createus:[],creation:0,credenti:11,critic:4,cron:2,cross:14,cryptocurr:0,curl:[7,10,11],current:[2,3,11,13],custom:[2,8,10,11],customiz:[],cycl:[1,2],daemon:2,dashboard:10,data:[0,2,11],databas:[2,13],date:1,dbadminanydatabas:[],dbu:11,ddflzqn:6,dearmor:10,deb:10,debian:2,debug:11,decis:8,decod:[2,3,7],deem:4,defaultkeepal:[],defin:4,delet:[1,6,7,13],deletegatewai:1,depend:[2,3,8],depends_on:11,deploi:[2,8,10,11],deploy:[2,11],depreci:11,derogatori:4,deserv:12,design:[2,3,6,8,12],desktop:[2,3,6],detail:[1,2,3,4,7,8,11],determin:[4,12],dev:[10,11],develop:[7,10,11],devic:[0,2,3,8,12,13],diabl:[],diagram:2,differ:[0,2,4,7,11,12,14],digitalocean:10,directli:[0,1,2,6,11,13],directori:10,disabl:[2,4,10],disable_remote_ip_check:11,disableremoteipcheck:11,disconnect:13,discord:[12,13],discuss:[],displai:[],displaynam:1,distibut:2,distribut:2,distributionshav:2,dns:[2,3,10,11],dns_mode:[11,13],dnsconfig:11,dnsmode:11,dnson:3,dnsstublisten:[10,11],doc:[7,10,11,12],docker:[2,7,8,13],document:[0,2,3,7,11],doe:[2,6,8,10,11,13],doing:0,domain:[11,13],don:[2,3,12,14],done:13,doubl:[],down:[0,7,12,13],download:[6,7,10,11,13],dual:[3,13,14],duplic:3,dure:3,dynam:[0,2,8],each:[0,2,3,7,11,13],easi:[2,11],easier:[2,12],easiest:2,easili:0,echo:10,econom:12,edit:[4,6],effect:7,effici:2,egress:3,either:[2,6,12],ejf6yy51m:6,electron:4,elev:11,elimin:2,els:12,email:[10,12],empathi:4,empti:11,enabl:[2,7,10,11],encod:7,encompass:0,encount:[2,12],encrypt:[0,2,3,13],end:[2,10,11,12,13],endpoint:[1,2,3,6],enforc:8,engin:10,enhanc:8,enough:[],ensur:12,enter:[7,10],enterpris:10,entir:7,entireti:2,entri:[11,13],env:[1,11],environ:[0,1,2,4,11],equal:11,equival:11,error:[],escal:[],especi:[],establish:6,etc:[3,7,10,11,13],eth0:1,ethnic:4,evalu:12,even:[0,2],event:4,eventu:12,everi:[2,3,7,12],everyon:4,everyth:[2,11],evolv:2,examin:[],exampl:[2,3,4,6,8,10,11],except:11,execut:12,exist:[0,2,7,11],expand:12,expect:[4,8,11],experi:4,explain:[2,8],explicit:4,explicitli:11,expos:2,express:4,expressvpn:12,ext:13,extens:2,extern:[3,11,12],face:4,fact:0,fail:[7,10],fair:4,fairli:[2,13],faith:4,fals:[3,11],familiar:[0,2,12,13],faq:8,fast:[2,8,11],faster:[0,2,3],featur:[10,11,12],fedora:2,feiszli:[],few:[3,12],field:[],figur:14,file:[2,6,10,12],filenam:1,financi:12,find:[2,11,14],fine:0,firewal:[11,13],firmli:12,first:[2,3,7,11,12,13,14],fit:[10,14],flag:3,flat:0,flexibl:0,flow:2,focu:12,focus:4,folder:2,follow:[4,7,10,11,12,13],forc:11,fork:8,form:3,format:11,forum:13,forward:[3,6,10],foster:4,found:[0,2,9,11],free:4,freeli:9,frequent:13,friend:13,from:[0,1,2,3,4,6,7,10,11,12,14],front:[2,11],fssl:10,full:[0,2,11],fulli:[0,2],fundament:[],further:4,futur:[2,7,12],gain:[],gatewai:[1,2,3,8,14],gcp:10,gender:4,gener:[1,2,3,6,10,11,12],generate_config_j:11,get:[1,3,8,10,11,13,14],github:[2,3,8,10,11,12,13],githubusercont:[7,10,11],give:[2,7,8,11,13],given:[0,2,7,13],global:3,gnupg:10,goe:[0,11],going:11,golang:2,good:[4,6,12,13,14],googl:11,gpg:10,grab:3,gracefulli:4,grade:2,gravitl:[3,4,7,10,11,12,13],grpc:[2,3,7,10],grpc_port:11,grpc_ssl:11,grpcaddr:[],grpcaddress:3,grpcaddrrang:[],grpcendpoint:[],grpchost:11,grpcifac:[],grpcport:11,grpcserver:3,grpcwg:[],guid:[0,2,7,10,11,13],guidelin:12,hack:[],hand:8,handl:[0,2,10],harass:4,hard:12,harder:13,harm:4,has:[0,2,3,7,11,12,14],hasadmin:1,have:[0,2,3,4,6,7,10,11,12,13,14],haven:13,head:10,header:[1,11],health:12,heart:3,heavi:2,heaviest:[],heavili:[],help:[1,2,3,7,8,11,12,14],here:[2,4,7,9,10,11,12,14],high:2,highli:3,hit:13,hold:[0,2,3],hole:[3,13],holepunch:3,home:[0,2,3],hook:[2,6],horizont:[],host:[2,3,10,11,12],host_ip:11,hous:1,how:[2,3,8,11,13],howev:[1,2,3,10,11,12,13],html:11,http:[1,3,7,8,10,12],http_port:11,hub:[0,2],hundr:10,idea:12,ident:4,identifi:3,ignor:3,imag:11,imageri:4,immedi:[],impact:[2,12],implement:2,importantli:7,inappropri:4,inbound:10,incid:4,includ:[2,4,6,8,11],inclus:4,incompat:[],incorrect:[3,11],increas:2,inde:[],independ:6,individu:[4,11],industri:2,info:[2,4,10,11,12],inform:[2,3,4,7],ingress:[2,3,8,11],ingressgatewai:13,initi:[3,12],ins:2,insert:[10,11,13],insid:11,instal:[0,2,6,7],instanc:[1,2,3,4,7,10,11],instead:[0,3,6,10,11,13],instruct:[10,11],insult:4,intact:3,integr:11,intend:3,interact:[0,2,3],interest:[4,12,13],interfac:[1,3,6,7,11],intern:11,internet:[0,2,12],intro:14,introduc:2,introduct:[2,8],invalid:[6,7],investig:4,invis:2,iot:[0,2],ipforward:3,iphon:2,ipsec:2,iptabl:3,ipv4:[3,13],ipv6:[3,13,14],isdualstack:3,isingressgatewai:3,isloc:3,isstat:3,issu:[4,8,10,11,12],iter:12,its:[0,2,3,4,6,7,11],itself:[2,3,7],job:2,join:[2,3,7,13],journalctl:[3,11,13],json:1,just:[0,2,3,6,11,12,13],jwt:[1,3],keep:1,keepal:3,kei:[2,3,10,11,13],kernel:[0,2,12],keynam:1,keyr:10,keyrequir:[],keyupd:1,keyvalu:[],kill:13,know:[11,12,13,14],known:2,kube:11,kubectl:11,kubernet:[0,8,14],lack:[],lan:3,languag:4,laptop1:1,laptop:6,larg:2,larger:[],last:1,lastmodifi:1,latenc:2,later:2,latest:[2,3,6,11],layer:0,layout:2,lead:12,leadership:4,learn:[],least:[0,13],leav:[3,7,13],left:[11,13],less:[2,7],let:[0,12,14],letsencrypt:10,level:[2,4,11],light:11,lighter:[],lightweight:2,like:[0,2,3,7,10,11],likewis:[],limit:[8,11,12],line:2,link:[8,10,11],linod:10,linux:[2,3,7,8,10,12],linuxserv:11,list:[0,2,3,10,11],listen:11,listenport:1,littl:[2,12],load:[2,11,12],local:[2,3,7,10,11],localaddress:[1,3],localhost:1,localrang:3,locat:[0,2,3,11],log:[10,11,13],logic:6,login:7,look:12,lookup:2,lot:[2,12],lsb:10,lsb_releas:10,lxc:11,mac:[2,3],macaddress:[1,3],machin:[0,2,3,6,7,10,13],maco:13,made:[0,2,13],mai:[1,2,3,4,7,10,11,12,13],mail:4,main:[],mainfram:[],maintain:[4,12],make:[0,2,4,6,10,11,12,13],man:6,manag:[0,2,6,8,11,14],mandatori:[],mani:[0,2,11,12,14],manual:[2,3,7,10,11,13],map:11,master:[10,11],master_kei:11,masterkei:[1,11],match:[3,11],mean:[2,3,6,11],meant:11,media:4,medium:[],member:[4,14],memori:13,mesh:[0,6,12,13,14],meshclient:1,metal:2,method:[1,2,3,6,7],mgmt:1,microk8:[11,14],middl:6,might:[0,2,11],min:10,mind:[],minimum:13,mint:2,minu:11,minut:[10,11,13],miss:2,mix:3,mode:[2,8],model:[0,2],modif:11,modifi:[1,2,3,7,10,11,12],monet:12,mongo:11,mongo_admin:[],mongo_host:[],mongo_initdb_root_password:[],mongo_initdb_root_usernam:[],mongo_opt:[],mongo_pass:[],mongo_port:[],mongoadmin:[],mongoconn:[],mongodb:11,mongopass:[],mongovol:[],more:[0,1,2,6,7,8,11,12],most:[1,2,3,10,11,13],mostli:[2,3],mount:11,move:[7,10,12],much:[0,2],mullvad:12,mullvadvpn:12,multipl:[0,7,13],must:[1,2,3,6,7,10,11,12,13],mykei:[1,7],mynet:7,myserv:7,mysit:10,name:[1,2,3,6,7,11,13],nameserv:[2,3,10,11],namespac:11,nat:[2,6],nation:4,navig:[10,13],nebula:0,necessari:[2,3,4,11],need:[0,1,2,3,10,11,12,13],neighborhood:0,neither:2,net:[3,10],net_admin:11,netclient:[0,6,8,13],netclient_accesskei:3,netclient_accesstoken:3,netclient_address:3,netclient_addressipv6:3,netclient_api_serv:3,netclient_daemon:3,netclient_dn:3,netclient_endpoint:3,netclient_grpc_serv:3,netclient_interfac:3,netclient_ipforward:3,netclient_is_dualstack:3,netclient_is_loc:3,netclient_keepal:3,netclient_localaddress:3,netclient_localrang:3,netclient_macaddress:3,netclient_nam:3,netclient_network:3,netclient_o:3,netclient_password:3,netclient_port:3,netclient_postdown:3,netclient_postup:3,netclient_privatekei:3,netclient_publickei:3,netclient_roam:3,netclient_udp_holepunch:3,netconfig:[3,13],netid:1,netmak:[1,3,6,9,11,13],netmaker_base_domain:[10,11],netmaker_env:11,network:[0,6,7,8,11,12,13,14],network_mod:11,next:[3,7],nextcloud:14,nginx:[2,8,13],noclient:[],node:[3,6,8,11,13],nodn:11,non:[2,3,7,11],none:0,noonewillguessthi:1,nordvpn:12,note:[1,3,6,11,13],notifi:2,now:[0,6,7,10,11,12,13],nslookup:10,number:[2,7,12],oblig:4,obtain:[1,3],ode:3,off:[2,3,11,13],offens:4,offic:[0,14],offici:[1,4,10,13],offlin:4,omit:11,onc:[6,7,11],one:[2,3,6,7,10,11,13],onli:[1,2,3,6,7,12,13],onlin:4,onto:[],open:[2,4,10,12],openvpn:2,oper:[2,3,11],operatingsystem:3,opinion:10,opt:[],option:[2,3,8,11,12],order:[10,11,12,13],org:[10,11],orient:4,origin:11,osi:12,other:[0,2,3,4,6,7,11,12],otherwis:[0,3,4,13],our:[8,10,13],out:[0,2,7,10,11,12,14],outlin:[2,11],output:[3,7],outsid:[8,11],over:[0,2,11],overlai:[0,8],overlap:7,overrid:[3,11],overridden:[2,11],overview:[2,8,14],overwhelm:14,own:[2,10,11],pace:[],page:2,pai:12,paid:12,pair:[2,11],pane:7,part:[2,3,11],parti:13,partial:2,particip:4,particular:[2,3],pass:[2,3,11],password:[1,3,7],path:[1,11,12],patient:[],peer:[2,3,6,14],pend:[1,7],peopl:12,per:12,perform:[1,2,3,11],period:2,perman:4,permiss:[4,10,13],permit:7,persistenkeepal:[],persistentkeepal:[3,6],person:4,perspect:[0,2],phase:[],phone:[3,6],physic:4,pick:[2,7],pictur:2,pidof:[],ping:7,pivpn:12,place:[3,11],plaintext:3,plan:11,platform:[2,8],pleas:[3,10,11,12,13],pledg:8,plu:3,point:[2,10],polici:4,polit:4,popul:11,port:[2,3,7,10,11,13],posit:4,possibl:[2,8,10],post:[1,2,3,4],postchang:3,postdown:3,postup:3,practic:2,pre:11,preced:2,precend:11,prefer:[10,11,13],prepar:8,prereqisit:7,prerequisit:[2,7,8,11],present:[],previou:2,primari:11,prior:11,privaci:12,privat:[2,4,7,8,11,12,14],privatekei:[3,6],privileg:11,privkei:3,probabl:[0,12],problem:12,proce:[],process:[3,7,8,11],product:11,profession:4,project:[1,4,8,11,12],prompt:10,proof:0,properli:3,properti:3,proto:10,protocol:11,provid:[0,2,3,10,11],proxi:[8,10],proxy_pass:11,proxy_pass_request_head:11,proxy_set_head:11,pubkei:3,publickei:[1,3,6],publicli:10,publish:[4,9],pull:[2,3,6,11],punch:[3,13],push:[3,6],put:1,pwd:[],python3:10,q9cog7c9qjnoxygvri:3,quarantin:3,question:13,quick:[7,11,13],quickli:[8,10,13],quickstart:[10,13],race:[4,12],raft:[2,13],ram:10,rang:[3,7],rangestr:1,rapid:[],rapidli:[],raspian:2,raw:[3,7,10,11],reach:[0,2,3,6],reachabl:[2,3,6,10,11],reactj:2,read:11,readwriteanydatabas:[],reallysecret:1,reason:[2,4,11,12],reccommend:[],recent:[2,3,13],reciev:[1,2],recommend:[1,3,6,11,13],reconfigur:[2,3,13],record:[10,13],reduc:[],refactor:2,refer:[2,7,10,13],regard:[2,4],regardless:4,regist:[2,3],registr:3,regular:12,reiter:[],reject:4,rel:2,relai:[2,6,12],relat:10,releas:[2,3,10,11],reli:[0,3],relianc:[],religion:4,reload:10,remot:[0,3,11],remov:[1,2,4,7,10,11,13],removenetwork:1,repeat:7,repercuss:4,replac:[3,10,11],replace_master_kei:10,report:[2,4],repositori:[2,9],repres:4,represent:4,request:[1,2,11],requir:[1,2,3,7,10,11,13],resolut:10,resolv:[2,3,10,11],resolvectl:[3,11],resourc:[6,8],respect:4,respons:[2,8],rest:11,rest_backend:11,restart:[10,11],restbackend:11,restrict:[11,12],result:4,retriev:[0,1,2,3,7,12],revers:[8,10],revert:3,review:4,rhel:2,right:[0,4,12],risk:13,rkxlgk2mg:6,rncjjbsaa3hzuhrk5hpyxm:3,road:12,roam:3,rogu:13,role:[],root:[10,11,13],rout:[0,2],route53:10,router:[2,13],rpumvsbpgq:6,rqlite:13,rule:[3,10],run:[0,1,2,3,6,7,8,10,11,12,13],runc:10,runnin:6,runtim:11,rwx:11,said:[2,12],same:[0,3,7,13],sampl:0,save:7,scalabl:[],scan:6,scenario:7,schema:[],scope:8,screen:7,script:[2,3,7,11,13],second:7,secret:[1,3,7],secretkei:11,section:[3,11],secur:[0,1,2,3,8,10,13,14],securebetween:[],sed:[10,11],see:[1,2,3,7,10,11,13],select:[6,7,13,14],self:12,send:[2,3,11],sens:[2,12],sensibl:[0,2,7],separ:[2,4,14],seper:13,seri:10,serv:[2,10,11],server:[0,3,6,7,9,10,12],server_api_conn_str:11,server_api_host:11,server_grpc_conn_str:11,server_grpc_host:11,server_grpc_wg_address:[],server_grpc_wg_address_rang:[],server_grpc_wg_interfac:[],server_grpc_wg_keyrequir:[],server_grpc_wg_port:[],server_grpc_wg_privkei:[],server_grpc_wg_pubkei:[],server_grpc_wireguard:[],server_host:11,server_http_host:11,server_nam:11,server_public_ip:10,servic:[2,3,6,10,11,12,14],set:[1,2,3,4,7,10,11,14],setup:[0,2,8],sever:[2,11],sexual:4,sfl:[7,11],share:[10,11,13],ship:[],should:[0,1,2,3,6,7,8,10,11,12,13],show:[3,4,11,13],side:9,sign:[2,3,7,10,13],signific:2,signigif:2,signup:[2,3,13],similar:[0,7,11,12],simpl:[2,3,7,11,13],simplest:[2,3],simpli:[2,3,6,7,13],simplifi:11,simultan:0,sinc:[],singl:[1,2,13],site:[0,2,8,11,13,14],situat:2,size:4,skynet:1,slim:[],slow:0,small:[2,7,12],smartgui:1,snap:10,social:4,solut:2,solv:2,some:[1,2,3,11,12,13,14],someon:12,someth:[6,7,10,11,12],somewher:7,soon:[8,13],sort:0,sourc:[2,3,8,9,10,12],space:4,spec:13,special:[2,3,11],specif:[2,3,4,11],specifi:[3,11],speed:[0,2],split:3,spoke:[0,2],sponsor:[],spread:0,sql:2,sqldata:11,sqlite:2,ssh:[7,10],ssl:[10,11],sspl:9,stabil:[],stabl:10,stack:[3,13,14],stai:3,stake:0,standard:[2,8],start:[11,13,14],startup:1,state:7,statement:8,statu:[3,11,13],step:[2,3,7,10,11],still:[0,11,12],stock:12,stop:[10,11],storag:[10,11],storageclassnam:11,store:[2,11],string:[7,11],structur:[],stun:13,subdomain:[10,11],submit:[7,8],subnet:2,subsequ:2,subspac:12,subspacecloud:12,substanti:0,success:2,sudo:[3,7,10,11,13],support:[2,10,11,13],sure:[10,12,13],surfshark:12,suse:2,swag:11,swagger:8,sys:11,sys_modul:11,system:[7,8],system_bus_socket:11,systemctl:[3,10,11,13],systemd:[3,7,10,11,12],tab:[7,13],tail:3,tailor:[],tailscal:0,take:[0,1,2,4,7,11,13],talk:[0,2],tcp:10,team:[4,12],technic:[0,8,12],technolog:2,tee:10,tell:[0,2,3,11],templat:11,temporari:4,temporarili:4,term:12,terrain:12,test:[7,8],than:[2,7,11,12],thei:[0,2,4,11,12,13],them:[2,7,11,12,13],themselv:[2,13],thhe:[],thi:[0,1,2,3,4,6,7,8,9,10,11,12,13],thing:[0,2,12],think:[12,14],third:13,thmpvlcykonxi:3,those:[0,2,3,6,10],though:[],thought:12,thousand:0,threaten:4,three:[7,10],through:[2,11],ticket:12,time:[1,2,3,6,7,11,13,14],timer:2,timestamp:2,token:[3,7,11,13],tool:[0,3,10],top:[2,10,13],topic:14,topolog:2,tos:10,total:[],toward:4,traefik:11,traffic:[0,2,6,10,11,13],trailofbit:12,transact:2,transport:10,treat:[2,3],tricki:2,troll:4,troubleshooot:10,troubleshoot:[1,3,7,10],tunnel:[0,2],tunnelbear:12,turn:[2,3,11,13],tutori:8,two:[0,1,2,13],txt:10,type:1,typic:[0,2,6,7,11],ua2zjt8wn7ga:6,ubuntu:[2,10,11],udp:[3,10,11,13],udpholepunch:3,ufw:10,ultim:12,unabl:2,unaccept:4,unam:10,uncom:[10,11],uncordon:1,under:[3,7,9,11,13],underlai:[0,14],underli:[],underscores_in_head:11,understand:[],uninstal:[8,13],uninstral:[],uniqu:[3,10],unix:[2,3,12],unless:[3,11],unmanag:2,unmesh:[],unnecessari:3,unregist:3,unregistr:3,unset:[3,11],unsupport:12,unsur:[6,7],unten:12,until:[3,7,13],unwelcom:4,unzip:11,updat:[1,2,7,10,12,13],upon:[2,3],ups:13,upstream_app:11,upstream_port:11,upstream_proto:11,urandom:10,url:11,usag:[3,8,11,14],use:[0,1,2,3,4,6,7,8,10,11,12,13,14],used:[1,2,3,6,7,11],useful:[],user:[2,3,7,13],useradminanydatabas:[],usernam:[1,7],uses:[0,1,2,6,7,11,13],using:[0,1,2,3,4,6,8,10,11,12,14],usr:[10,11],usual:3,util:3,v02:10,valid:[2,11],valu:[1,2,3,7,11,13],vari:[],variabl:[2,3],variou:[3,8,11],vehicl:12,verbos:11,veri:[0,2,3,12],verifi:2,versa:12,version:[2,4,9,10,13],via:[1,2,3,4,6,7,10,11,12,13,14],vice:12,view:[7,12,13],viewpoint:4,vim:[3,10,11],virtual:[0,3,6,8,10,12,14],visibl:[7,11],vm3ow4thatogiwnsla3thsl3894th:7,vne197vmradjodkb1zsuja:3,volum:[7,11,13],vpc:[0,12],vpn:[2,13,14],wai:[11,12,13],wait:10,want:[0,2,10,12,13],warn:11,web:[11,12],webserv:2,websit:2,week:[],weight:11,welcom:[4,12],well:[2,3,7,8,12,13],wgaddress6:3,wgaddress:3,wget:[10,11],what:[2,4,6,8,13],whatev:[3,10,11],when:[2,3,4,11,13],where:[2,6,7,8,11,14],wherev:0,whether:[0,3],which:[0,2,3,4,6,7,9,10,11,12,13],who:4,why:[2,3,8,13],wide:2,wider:2,wiki:4,wildcard:[10,11],window:[2,3,13],wipe:13,wiregard:[],wireguard:[0,3,6,7,8,10,11,12,13],wish:[6,11],within:[2,3,4],without:[1,2,3,4,7,8,12,13],won:12,work:[2,8,10,12],workstat:[3,7],world:[0,2],wors:2,worth:2,would:[0,3,6,7,10,11,12],write:[2,11],ws2:3,www:11,x86:3,yaml:[1,11],ydazgedrpuxmmrqul35wfjmhvrzr1rq0u:6,yes:3,yet:13,yml:[10,11,13],you:[0,1,2,3,6,7,8,10,11,13,14],your:[0,1,2,3,6,7,10,11,12,13,14],your_pass:1,your_password:1,your_secret_kei:1,yourwildcard:11,zeroti:0,zip:11,zrb9vfhk8a:12},titles:["About","API Reference","Architecture","Client Installation","Code of Conduct","Contribute","External Clients","Getting Started","Welcome to the Netmaker Documentation","License","Quick Install","Advanced Server Installation","Support","Troubleshooting","Using Netmaker"],titleterms:{"case":0,Adding:[3,6],DNS:[3,10,11],Use:0,Using:14,Will:12,about:[0,8],access:1,advanc:11,agent:13,ani:12,annot:11,api:[1,8],architectur:[2,8],attribut:4,authent:1,basic:[],better:[],bug:[],build:5,call:1,cli:3,client:[2,3,6,8],code:[4,5,8],common:13,compat:[2,3,11],compon:2,compos:11,concept:2,conduct:[4,8],config:[3,11],configur:[3,6,11],contact:12,contribut:[5,8],core:2,coredn:[2,11,13],creat:7,curl:1,daemon:3,daemonset:11,depend:10,deploi:7,descript:11,disabl:11,docker:[10,11],document:[1,8],doe:[0,12],domain:10,dual:[],enabl:[],enforc:4,enhanc:5,enterpris:12,exampl:1,extern:[2,6,8,14],faq:12,featur:[],file:[1,3,11],firewal:10,fork:5,format:1,full:[],gatewai:6,get:7,grpc:11,guid:8,how:[0,12],http:11,ingress:6,instal:[3,8,10,11,12],introduct:[3,6,10],ipv6:[],issu:[5,13],kei:[1,7],kubernet:11,licens:[8,9,12],like:12,limit:2,linux:11,local:[],log:3,make:3,manag:[1,3,7],manual:[],mesh:2,mode:[3,11],mongodb:[],netclient:[2,3,7,11,12],netmak:[0,2,7,8,10,12,14],network:[1,2,3],nginx:[10,11],node:[1,2,7],nordnpn:12,note:[],offer:12,onli:[],oper:12,option:[],our:4,paid:[],pledg:4,prepar:10,prereqisit:[],prerequisit:[3,10],privat:3,process:2,proxi:11,quick:[8,10],refer:[1,3,8,11],remov:3,request:[],respons:4,revers:11,rqlite:[2,11],scope:4,secur:11,server:[1,2,8,11,13],setup:[7,11],site:[],slim:[],smaller:[],sql:[],sspl:12,stack:[],standard:4,start:[7,8,10],submit:5,support:[8,12],system:[2,3,11,12],systemd:2,technic:2,templat:10,test:[5,11],token:[],troubleshoot:[8,13],tutori:14,uninstal:[3,7],uninstral:[],updat:3,usag:1,user:1,variabl:11,video:14,view:3,vpn:12,welcom:8,what:0,why:12,wireguard:2,without:11,work:0,written:14,you:12}}) \ No newline at end of file diff --git a/docs/_build/html/support.html b/docs/_build/html/support.html index 270f6123..49a24f48 100644 --- a/docs/_build/html/support.html +++ b/docs/_build/html/support.html @@ -375,7 +375,14 @@
  • - DNS Mode Prereqisite Setup + Server Configuration Reference + + +
  • +
  • + + + DNS Mode Setup
  • @@ -399,13 +406,6 @@ Kubernetes Install - -
  • - - - Configuration Reference - -
  • @@ -639,24 +639,14 @@
  • How do I install the Netclient on X?
  • -
  • Why MongoDB? SQL is better and smaller. -
  • Is Netmaker a VPN like NordNPN?
  • -
  • Do you offer any paid support? +
  • Do you offer any enterprise support?
  • Why the SSPL License?
  • -
  • Issues, Bugs, and Feature Requests -
  • Contact
  • @@ -670,13 +660,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • @@ -793,24 +776,14 @@
  • How do I install the Netclient on X?
  • -
  • Why MongoDB? SQL is better and smaller. -
  • Is Netmaker a VPN like NordNPN?
  • -
  • Do you offer any paid support? +
  • Do you offer any enterprise support?
  • Why the SSPL License?
  • -
  • Issues, Bugs, and Feature Requests -
  • Contact
  • @@ -831,19 +804,14 @@

    Does/Will Netmaker Support X Operating System?

    Netmaker is initially available on a limited number of operating systems for good reason: Every operating system is designed differently. With a small team, we can either focus on making Netmaker do a lot on a few number of operating systems, or a little on a bunch of operating systems. We chose the first option. You can view the System Compatibility docs for more info, but in general, you should only be using Netmaker on systemd linux right now.

    -

    However, as of v0.4, we will technically be able to bring any operating system into the network. This is a bit of a hack. v0.4 introduces Ingress Gateways. Think of it this way. You set up a private network. You want devices to access it. You set up a single node as an “Ingress Gateway” and generate config files for “external clients.” These clients are unmanaged and unmeshed, meaning they can access the network but only via the gateway. It also means they will not automatically account for changes to the network, and the user will have to update the configs manually.

    -

    This lets us immediately “support” any device which can run WireGuard, which includes most operating systems at this point including phones and Windows.

    -

    As we stabilize the design and feature set of Netmaker, we will expand the operating system support for Netclient which configures dynamic, fully-meshed devices. Expect to see updates about new OS support every few weeks, until eventually the Ingress Gateway becomes unnecessary (though you will still want it for certain use cases).

    +

    However, via “external clients”, any device that supports WireGuard can be added to the network.

    +

    In future iterations will expand the operating system support for Netclient, and devices that must use the “external client” feature can switch to Netclient.

    How do I install the Netclient on X?

    As per the above, there are many unsupported operating systems. You are still welcome to try, it is just an executable binary file after all. If the system is unix-based and has kernel WireGuard installed, netclient may very well mesh the device into the network. However, the service likely will encounter problems retrieving updates.

    -

    Why MongoDB? SQL is better and smaller.

    -

    We are in a phase of rapid iteration. Every week the database schema changes. MongoDB makes our development process much more flexible. That said, we agree! SQL will be better for production, and indeed, we plan to switch over to SQL before v1.0, so please be patient with the resource consumption of MongoDB for the time being; it is helping to support a rapid pace of development.

    - -

    Is Netmaker a VPN like NordNPN?

    No. Netmaker makes Virtual Networks, which are technically VPNs, but different. It’s more like a corporate VPN, or a VPC (if you’re familiar with AWS).

    If you’re looking to achieve self-hosted web browsing, with functionality similar to NordVPN, ExpressVPN, Surfshark, Tunnelbear, or Private Internet Access, this is probably not the project for you. Technically, you can accomplish this with Netmaker, but it would be a little like using a all-terrain vehicle for stock car racing.

    @@ -854,8 +822,8 @@ https://github.com/mullvad/mullvadvpn-app

    -

    Do you offer any paid support?

    -

    Not at this time, but eventually we will. If you are interested, or if you are interested in sponsoring the project generally, please contact Alex Feiszli (alex@gravitl.com).

    +

    Do you offer any enterprise support?

    +

    If you are interested in enterprise support for your project, please contact info@gravitl.com.

    Why the SSPL License?

    @@ -866,15 +834,6 @@ -

    Issues, Bugs, and Feature Requests

    - -

    Issues / Bugs

    - - -

    Feature Requests

    - - -

    Contact

    If you need help, try the discord or open a GitHub ticket.

    Email: info@gravitl.com

    diff --git a/docs/_build/html/troubleshoot.html b/docs/_build/html/troubleshoot.html index 9cca1484..b9eb1fb7 100644 --- a/docs/_build/html/troubleshoot.html +++ b/docs/_build/html/troubleshoot.html @@ -375,7 +375,14 @@
  • - DNS Mode Prereqisite Setup + Server Configuration Reference + + +
  • +
  • + + + DNS Mode Setup
  • @@ -399,13 +406,6 @@ Kubernetes Install - -
  • - - - Configuration Reference - -
  • @@ -654,13 +654,6 @@ FAQ -
  • -
  • - - - Issues, Bugs, and Feature Requests - -
  • @@ -796,18 +789,86 @@

    Troubleshooting

    Common Issues

    +
    +
    How can I connect my Android, IOS, MacOS or Windows device to my Netmaker VPN?

    Currently meshing one of these devices is not supported, however it will be soon. +For now you can connect to your VPN by making one of the nodes an Ingressgateway, then +create an Ext Client for each device. Finally, use the official WG app or another +WG configuration app to connect via QR or downloading the device’s WireGuard configuration.

    +
    +
    I’ve made changes to my nodes but the nodes themselves haven’t updated yet, why?

    Please allow your nodes to complete a check in or two, in order to reconfigure themselves. +In some cases, it could take up to a minute or so.

    +
    +
    Do I have to use access keys to join a network?

    Although keys are the preferred way to join a network, Netmaker does allow for manual node sign-ups. +Simply turn on “allow manual signups” on your network and nodes will not connect until you manually aprove each one.

    +
    +
    Is there a community or forum to ask questions about Netmaker?

    Yes, we have an active discord community and issues on our github are answered frequently! +You can also sign-up for updates at our gravitl site!

    +
    +

    Server

    +
    +
    Can I secure/encrypt all the traffic to my server and UI?

    This can fairly simple to achieve assuming you have access to a domain and are familiar with Nginx. +Please refer to the quick-start guide to see!

    +
    +
    Can I connect multiple nodes (mesh clients) behind a single firewall/router?

    Yes! As of version 0.7 Netmaker supports UDP Hole Punching to allow this, without the use of a third party STUN server! +Is UDP hole punching a risk for you? Well you can turn it off and make static nodes/ports for the server to refer to as well.

    +
    +
    What are the minimum specs to run the server?

    We recommend at least 1 CPU and 2 GB Memory.

    +
    +
    Does this support IPv6 addressing?

    Yes, Netmaker supports IPv6 addressing. When you create a network, just make sure to turn on Dual Stack. +Nodes will be given IPv6 addresses along with their IPv4 address. It does not currently support IPv6 only.

    +
    +
    Does Netmaker support Raft Consensus?

    Netmaker does not directly support it, but it uses rqlite (which supports Raft) as the database.

    +
    +
    How do I uninstall Netmaker?

    There is no official uninstall script for the Netmaker server at this time. If you followed the quick-start guide, simply run sudo docker-compose -f docker-compose.quickstart.yml down --volumes +to completely wipe your server. Otherwise kill the running binary and it’s up to you to remove database records/volumes.

    +
    +

    UI

    +
    +
    I want to make a seperate network and give my friend access to only that network.

    Simply navigate to the UI (as an admin account). Select users in the top left and create them an account. +Select the network(s) to give them and they should be good to go! They are an admin of that network(s) only now.

    +
    +
    I’m done with an access key, can I delete it?

    Simply navigate to the UI (as an admin account). Select your network of interest, then the select the Access Keys tab. +Then delete the rogue access key.

    +
    +
    I can’t delete my network, why?

    You MUST remove all nodes in a network before you can delete it.

    +
    +
    Can I have multiple nodes with the same name?

    Yes, nodes can share names without issue. It may just be harder on you to know which is which.

    +
    +

    Agent

    +
    +
    How do I connect a node to my Netmaker network with Netclient?

    First get your access token (not just access key), then run sudo netclient join -t <access token>. +NOTE: netclient may be under /etc/netclient/, i.e run sudo /etc/netclient/netclient join -t <access token>

    +
    +
    How do I disconnect a node on a Netmaker network?

    In order to leave a Netmaker network, run sudo netclient leave -n <network-name>

    +
    +
    How do I check the logs of my agent on a node?

    You will need sudo/root permissions, but you can run sudo systemctl status netclient@<insert network name> +or you may also run sudo journalctl -u netclient@<network name>. +Note for journalctl: you should hit the end key to get to view the most recent logs quickly or use journalctl -u netclient@<network name> -f instead.

    +
    +
    Can I check the configuration of my node on the node?

    A: Yes, on the node simply run sudo cat /etc/netclient/netconfig-<network name> and you should see what your current configuration is! +You can also see the current WireGuard configuration with sudo wg show

    +
    +
    I am done with the agent on my machine, can I uninstall it?

    Yes, on the node simply run sudo /etc/netclient/netclient uninstall.

    +
    +

    CoreDNS

    +
    +
    Is CoreDNS required to use Netmaker?

    CoreDNS is not required. Simply start your server with DNS_MODE="off".

    +
    +
    What is the minimum DNS entry value I can use?

    Netmaker supports down to two characters for DNS names for your networks domains**

    +
    +
    diff --git a/docs/_build/html/usage.html b/docs/_build/html/usage.html index 7c097481..9ef699f6 100644 --- a/docs/_build/html/usage.html +++ b/docs/_build/html/usage.html @@ -375,7 +375,14 @@
  • - DNS Mode Prereqisite Setup + Server Configuration Reference + + +
  • +
  • + + + DNS Mode Setup
  • @@ -399,13 +406,6 @@ Kubernetes Install - -
  • - - - Configuration Reference - -
  • @@ -514,16 +514,6 @@
  • Written Tutorials
  • - -
  • Basic -
  • -
  • Local Network -
  • -
  • Site-to-Site -
  • -
  • Dual Stack with IPv6 -
  • -
  • Kubernetes Node Network
  • @@ -536,41 +526,6 @@ External Tutorials - -
  • - - - Basic - - -
  • -
  • - - - Local Network - - -
  • -
  • - - - Site-to-Site - - -
  • -
  • - - - Dual Stack with IPv6 - - -
  • -
  • - - - Kubernetes Node Network - -
  • @@ -662,13 +617,6 @@ FAQ - -
  • - - - Issues, Bugs, and Feature Requests - -
  • @@ -786,16 +734,6 @@
  • Written Tutorials
  • - -
  • Basic -
  • -
  • Local Network -
  • -
  • Site-to-Site -
  • -
  • Dual Stack with IPv6 -
  • -
  • Kubernetes Node Network
  • @@ -826,26 +764,13 @@

    Written Tutorials

    -

    Basic

    - - -

    Local Network

    - - -

    Site-to-Site

    - - -

    Dual Stack with IPv6

    - - -

    Kubernetes Node Network

    - - diff --git a/docs/client-installation.rst b/docs/client-installation.rst index 7ea096e0..14ce6238 100644 --- a/docs/client-installation.rst +++ b/docs/client-installation.rst @@ -112,15 +112,40 @@ Managing Netclient Viewing Logs --------------- +**to view current networks** + ``netclient list`` + +**to tail logs** + ``journalctl -u netclient@ -f`` + +**to view all logs** + ``journalctl -u netclient@`` + +**to get most recent log run** + ``systemctl status netclient@`` + Making Updates ---------------- +``vim /etc/netclient/netconfig-`` + +Change any of the variables in this file, and changes will be pushed to the server and processed locally on the next checkin. + +For instance, change the private address, endpoint, or name. See above example config file for details + + Adding/Removing Networks --------------------------- +``netclient join -t `` + +Set any of the above flags (netclient join --help) to override settings for joining the network. +If a key is provided (-k), then a token is unnecessary, but grpc, server, ports, and network must all be provided via flags. + + Uninstalling --------------- -Troubleshooting ------------------ +``netclient uninstall`` + diff --git a/docs/examplecode/netclient-join.txt b/docs/examplecode/netclient-join.txt index 345c00b2..2e514eed 100644 --- a/docs/examplecode/netclient-join.txt +++ b/docs/examplecode/netclient-join.txt @@ -1,3 +1,4 @@ +alex@workstation:~$ sudo netclient join --help NAME: netclient join - Join a Netmaker network. @@ -6,7 +7,7 @@ USAGE: OPTIONS: --network value, -n value Network to perform specified action against. (default: "all") [$NETCLIENT_NETWORK] - --password value, -p value Password for authenticating with netmaker. (default: "badpassword") [$NETCLIENT_PASSWORD] + --password value, -p value Password for authenticating with netmaker. [$NETCLIENT_PASSWORD] --endpoint value, -e value Reachable (usually public) address for WireGuard (not the private WG address). [$NETCLIENT_ENDPOINT] --macaddress value, -m value Mac Address for this machine. Used as a unique identifier within Netmaker network. [$NETCLIENT_MACADDRESS] --publickey value, --pubkey value Public Key for WireGuard Interface. [$NETCLIENT_PUBLICKEY] @@ -19,17 +20,18 @@ OPTIONS: --address value, -a value WireGuard address for machine within Netmaker network. [$NETCLIENT_ADDRESS] --addressIPv6 value, --a6 value WireGuard address for machine within Netmaker network. [$NETCLIENT_ADDRESSIPV6] --interface value, -i value WireGuard local network interface name. [$NETCLIENT_INTERFACE] - --apiserver value Address + API Port (e.g. 1.2.3.4:8081) of Netmaker server. [$NETCLIENT_API_SERVER] - --grpcserver value Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server. [$NETCLIENT_GRPC_SERVER] + --apiserver value Address + GRPC Port (e.g. 1.2.3.4:50051) of Netmaker server. [$NETCLIENT_API_SERVER] + --grpcserver value Address + API Port (e.g. 1.2.3.4:8081) of Netmaker server. [$NETCLIENT_GRPC_SERVER] --key value, -k value Access Key for signing up machine with Netmaker server during initial 'add'. [$NETCLIENT_ACCESSKEY] --token value, -t value Access Token for signing up machine with Netmaker server during initial 'add'. [$NETCLIENT_ACCESSTOKEN] --localrange value Local Range if network is local, for instance 192.168.1.0/24. [$NETCLIENT_LOCALRANGE] - --dns value Sets private dns if 'on'. Ignores if 'off'. Will retrieve from network if unset. [$NETCLIENT_DNS] + --dns value Sets private dns if 'on'. Ignores if 'off'. Will retrieve from network if unset. (default: "on") [$NETCLIENT_DNS] --islocal value Sets endpoint to local address if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_IS_LOCAL] --isdualstack value Sets ipv6 address if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_IS_DUALSTACK] + --udpholepunch value Turns on udp holepunching if 'yes'. Ignores if 'no'. Will retrieve from network if unset. [$NETCLIENT_UDP_HOLEPUNCH] --ipforwarding value Sets ip forwarding on if 'on'. Ignores if 'off'. On by default. (default: "on") [$NETCLIENT_IPFORWARDING] --postup value Sets PostUp command for WireGuard. [$NETCLIENT_POSTUP] --postdown value Sets PostDown command for WireGuard. [$NETCLIENT_POSTDOWN] --daemon value Installs daemon if 'on'. Ignores if 'off'. On by default. (default: "on") [$NETCLIENT_DAEMON] --roaming value Checks for IP changes if 'on'. Ignores if 'off'. On by default. (default: "on") [$NETCLIENT_ROAMING] - --help, -h show help (default: false) + --help, -h show help (default: false) \ No newline at end of file diff --git a/docs/examplecode/netconfig-example.yml b/docs/examplecode/netconfig-example.yml index 2a99d325..737c8c48 100644 --- a/docs/examplecode/netconfig-example.yml +++ b/docs/examplecode/netconfig-example.yml @@ -1,4 +1,5 @@ server: + corednsaddr: 147.182.251.203 # Address of CoreDNS Server (set locally with resolvectl) grpcaddress: 10.101.0.1:50051 # Address of GRPC Server (used for all interaction with server after registration) apiaddress: 1.2.3.4:8081 # Address of API Server (used only for registration/unregistration) accesskey: 5qKTbTgsvb45y3qyRmWft # Key used to sign up with server. Used only during registration @@ -11,12 +12,12 @@ node: localaddress: 192.168.1.32 # Address on local network, used as endpoint for other local nodes for faster comms wgaddress: 10.7.11.2 # Private WG addres on network wgaddress6: "f8:34:41:77:5c:15" # Private ipv6 address if network is dual stack - roaming: "on" # Whether or not to grab new endpoint value automatically - dns: "off" # Whether or not to set local DNS based on Netmaker's Private DNS server + roaming: "yes" # Whether or not to grab new endpoint value automatically + dnson: "no" # Whether or not to set local DNS based on Netmaker's Private DNS server islocal: "no" # Based on network. If yes, will use local IP as endpoint. isdualstack: "yes" # Use IPv6 in addition to IPv4 isingressgateway: "no" # whether or not node is an ingress gateway (will set iptables forwarding rules) - allowedips: "" # not currently used + allowedips: "" # additional IP's to add to client localrange: "" # local range if it's a local network. For instance, 192.168.1.0/24 postup: "" # postup command, used by ingress/egress gateways to set iptables postdown: "" # postdown command, used by ingress/egress gateways to set iptables @@ -26,7 +27,9 @@ node: privatekey: "" # private key, set only for changing and then will revert to blank in config endpoint: 78.170.22.168 # public endpoint for reaching node postchanges: "false" # if true, will post and config file changes on next checkin and then revert to false - ipforwarding: "on" # set ip forwarding; highly recommended to leave on -network: home # the network (duplicate of node.network) -daemon: "on" # whether or not to manage systemd -operatingsystem: "" # not currently in use + ipforwarding: "yes" # set ip forwarding; highly recommended to leave on + isstatic: "no" # if yes, daemon will not change pubkey, endpoint, or address + udpholepunch: "yes" # run UDP hole punching (will ignore port above, e.g. 51821) + network: home # the network (duplicate of node.network) +daemon: "yes" # whether or not to manage systemd +operatingsystem: "" # not currently in use \ No newline at end of file diff --git a/docs/support.rst b/docs/support.rst index 4bdde5c4..d1c2329f 100644 --- a/docs/support.rst +++ b/docs/support.rst @@ -10,22 +10,15 @@ Does/Will Netmaker Support X Operating System? Netmaker is initially available on a limited number of operating systems for good reason: Every operating system is designed differently. With a small team, we can either focus on making Netmaker do a lot on a few number of operating systems, or a little on a bunch of operating systems. We chose the first option. You can view the System Compatibility docs for more info, but in general, you should only be using Netmaker on systemd linux right now. -However, as of v0.4, we will technically be able to bring any operating system into the network. This is a bit of a hack. v0.4 introduces Ingress Gateways. Think of it this way. You set up a private network. You want devices to access it. You set up a single node as an "Ingress Gateway" and generate config files for "external clients." These clients are unmanaged and unmeshed, meaning they can access the network but only via the gateway. It also means they will not automatically account for changes to the network, and the user will have to update the configs manually. +However, via "external clients", any device that supports WireGuard can be added to the network. -This lets us immediately "support" any device which can run WireGuard, which includes most operating systems at this point including phones and Windows. - -As we stabilize the design and feature set of Netmaker, we will expand the operating system support for Netclient which configures dynamic, fully-meshed devices. Expect to see updates about new OS support every few weeks, until eventually the Ingress Gateway becomes unnecessary (though you will still want it for certain use cases). +In future iterations will expand the operating system support for Netclient, and devices that must use the "external client" feature can switch to Netclient. How do I install the Netclient on X? --------------------------------------- As per the above, there are many unsupported operating systems. You are still welcome to try, it is just an executable binary file after all. If the system is unix-based and has kernel WireGuard installed, netclient may very well mesh the device into the network. However, the service likely will encounter problems retrieving updates. -Why MongoDB? SQL is better and smaller. ----------------------------------------- - -We are in a phase of rapid iteration. Every week the database schema changes. MongoDB makes our development process much more flexible. That said, we agree! SQL will be better for production, and indeed, we plan to switch over to SQL before v1.0, so please be patient with the resource consumption of MongoDB for the time being; it is helping to support a rapid pace of development. - Is Netmaker a VPN like NordNPN? -------------------------------- @@ -41,10 +34,11 @@ https://github.com/pivpn/pivpn https://github.com/subspacecloud/subspace https://github.com/mullvad/mullvadvpn-app -Do you offer any paid support? ---------------------------------- +Do you offer any enterprise support? +-------------------------------------- + +If you are interested in enterprise support for your project, please contact info@gravitl.com. -Not at this time, but eventually we will. If you are interested, or if you are interested in sponsoring the project generally, please contact Alex Feiszli (alex@gravitl.com). Why the SSPL License? ---------------------- @@ -57,14 +51,6 @@ If you have concerns about the license leading to project restrictions down the All that said, we will re-evaluate the license on a regular basis and determine if an OSI-approved license makes more sense. It's just easier to move from SSPL to another license than vice-versa. -Issues, Bugs, and Feature Requests -===================================== - -Issues / Bugs ----------------- - -Feature Requests -------------------- Contact =========== diff --git a/docs/troubleshoot.rst b/docs/troubleshoot.rst index 0238eeb2..73e7217d 100644 --- a/docs/troubleshoot.rst +++ b/docs/troubleshoot.rst @@ -4,90 +4,90 @@ Troubleshooting Common Issues -------------- -- **How can I connect my Android, IOS, MacOS or Windows device to my Netmaker VPN?** -* **A:** Currently meshing one of these devices is not supported, however it will be soon. +**How can I connect my Android, IOS, MacOS or Windows device to my Netmaker VPN?** + Currently meshing one of these devices is not supported, however it will be soon. For now you can connect to your VPN by making one of the nodes an Ingressgateway, then create an Ext Client for each device. Finally, use the official WG app or another WG configuration app to connect via QR or downloading the device's WireGuard configuration. -- **I've made changes to my nodes but the nodes themselves haven't updated yet, why?** -* **A:** Please allow your nodes to complete a check in or two, in order to reconfigure themselves. +**I've made changes to my nodes but the nodes themselves haven't updated yet, why?** + Please allow your nodes to complete a check in or two, in order to reconfigure themselves. In some cases, it could take up to a minute or so. -- **Do I have to use access keys to join a network?** -* **A:** Although keys are the preferred way to join a network, Netmaker does allow for manual node sign-ups. +**Do I have to use access keys to join a network?** + Although keys are the preferred way to join a network, Netmaker does allow for manual node sign-ups. Simply turn on "allow manual signups" on your network and nodes will not connect until you manually aprove each one. -- **Is there a community or forum to ask questions about Netmaker?** -* **A:** Yes, we have an active `discord `_ community and issues on our `github `_ are answered frequently! +**Is there a community or forum to ask questions about Netmaker?** + Yes, we have an active `discord `_ community and issues on our `github `_ are answered frequently! You can also sign-up for updates at our `gravitl site `_! Server ------- -- **Can I secure/encrypt all the traffic to my server and UI?** -* **A:** This can fairly simple to achieve assuming you have access to a domain and are familiar with Nginx. +**Can I secure/encrypt all the traffic to my server and UI?** + This can fairly simple to achieve assuming you have access to a domain and are familiar with Nginx. Please refer to the quick-start guide to see! -- **Can I connect multiple nodes (mesh clients) behind a single firewall/router?** -* **A:** Yes! As of version 0.7 Netmaker supports UDP Hole Punching to allow this, without the use of a third party STUN server! +**Can I connect multiple nodes (mesh clients) behind a single firewall/router?** + Yes! As of version 0.7 Netmaker supports UDP Hole Punching to allow this, without the use of a third party STUN server! Is UDP hole punching a risk for you? Well you can turn it off and make static nodes/ports for the server to refer to as well. -- **What are the minimum specs to run the server?** -* **A:** We recommend at least 1 CPU and 2 GB Memory. +**What are the minimum specs to run the server?** + We recommend at least 1 CPU and 2 GB Memory. -- **Does this support IPv6 addressing?** -* **A:** Yes, Netmaker supports IPv6 addressing. When you create a network, just make sure to turn on Dual Stack. +**Does this support IPv6 addressing?** + Yes, Netmaker supports IPv6 addressing. When you create a network, just make sure to turn on Dual Stack. Nodes will be given IPv6 addresses along with their IPv4 address. It does not currently support IPv6 only. -- **Does Netmaker support Raft Consensus?** -* **A:** Netmaker does not directly support it, but it uses `rqlite `_ (which supports Raft) as the database. +**Does Netmaker support Raft Consensus?** + Netmaker does not directly support it, but it uses `rqlite `_ (which supports Raft) as the database. -- **How do I uninstall Netmaker?** -* **A:** There is no official uninstall script for the Netmaker server at this time. If you followed the quick-start guide, simply run ``sudo docker-compose -f docker-compose.quickstart.yml down --volumes`` +**How do I uninstall Netmaker?** + There is no official uninstall script for the Netmaker server at this time. If you followed the quick-start guide, simply run ``sudo docker-compose -f docker-compose.quickstart.yml down --volumes`` to completely wipe your server. Otherwise kill the running binary and it's up to you to remove database records/volumes. UI ---- -- **I want to make a seperate network and give my friend access to only that network.** -* **A:** Simply navigate to the UI (as an admin account). Select users in the top left and create them an account. +**I want to make a seperate network and give my friend access to only that network.** + Simply navigate to the UI (as an admin account). Select users in the top left and create them an account. Select the network(s) to give them and they should be good to go! They are an admin of that network(s) only now. -- **I'm done with an access key, can I delete it?** -* **A:** Simply navigate to the UI (as an admin account). Select your network of interest, then the select the ``Access Keys`` tab. +**I'm done with an access key, can I delete it?** + Simply navigate to the UI (as an admin account). Select your network of interest, then the select the ``Access Keys`` tab. Then delete the rogue access key. -- **I can't delete my network, why?** -* **A:** You **MUST** remove all nodes in a network before you can delete it. +**I can't delete my network, why?** + You **MUST** remove all nodes in a network before you can delete it. -- **Can I have multiple nodes with the same name?** -* **A:** Yes, nodes can share names without issue. It may just be harder on you to know which is which. +**Can I have multiple nodes with the same name?** + Yes, nodes can share names without issue. It may just be harder on you to know which is which. Agent ------- -- **How do I connect a node to my Netmaker network with Netclient?** -* **A:** First get your access token (not just access key), then run ``sudo netclient join -t ``. +**How do I connect a node to my Netmaker network with Netclient?** + First get your access token (not just access key), then run ``sudo netclient join -t ``. **NOTE:** netclient may be under /etc/netclient/, i.e run ``sudo /etc/netclient/netclient join -t `` -- **How do I disconnect a node on a Netmaker network?** -* **A:** In order to leave a Netmaker network, run ``sudo netclient leave -n `` +**How do I disconnect a node on a Netmaker network?** + In order to leave a Netmaker network, run ``sudo netclient leave -n `` -- **How do I check the logs of my agent on a node?** -* **A:** You will need sudo/root permissions, but you can run ``sudo systemctl status netclient@`` +**How do I check the logs of my agent on a node?** + You will need sudo/root permissions, but you can run ``sudo systemctl status netclient@`` or you may also run ``sudo journalctl -u netclient@``. Note for journalctl: you should hit the ``end`` key to get to view the most recent logs quickly or use ``journalctl -u netclient@ -f`` instead. -- **Can I check the configuration of my node on the node?** -* **A:** Yes, on the node simply run ``sudo cat /etc/netclient/netconfig-`` and you should see what your current configuration is! +**Can I check the configuration of my node on the node?** + **A:** Yes, on the node simply run ``sudo cat /etc/netclient/netconfig-`` and you should see what your current configuration is! You can also see the current WireGuard configuration with ``sudo wg show`` -- **I am done with the agent on my machine, can I uninstall it?** -* **A:** Yes, on the node simply run ``sudo /etc/netclient/netclient uninstall``. +**I am done with the agent on my machine, can I uninstall it?** + Yes, on the node simply run ``sudo /etc/netclient/netclient uninstall``. CoreDNS -------- -- **Is CoreDNS required to use Netmaker?** -* **A:** CoreDNS is not required. Simply start your server with ``DNS_MODE="off"``. +**Is CoreDNS required to use Netmaker?** + CoreDNS is not required. Simply start your server with ``DNS_MODE="off"``. -- **What is the minimum DNS entry value I can use?** -* **A:** Netmaker supports down to two characters for DNS names for your networks domains** +**What is the minimum DNS entry value I can use?** + Netmaker supports down to two characters for DNS names for your networks domains** diff --git a/docs/usage.rst b/docs/usage.rst index deeeb29d..7abdfca8 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -19,21 +19,6 @@ Video Tutorials Written Tutorials ----------------- -* `Kubernetes Cross-cloud cluster `_: Tutorial on setting up cross-cloud Kubernetes clusters using Netmaker. - -Basic -===== - -Local Network -============= - -Site-to-Site -============ - -Dual Stack with IPv6 -==================== - -Kubernetes Node Network -======================== - - +* `K3s Cross-cloud cluster `_: Tutorial on setting up cross-cloud K3s clusters using Netmaker. +* `MicroK8s Cross-cloud cluster `_: Tutorial on setting up cross-cloud MicroK8s clusters using Netmaker. +* `Secure access to private services `_: Tutorial on setting up secure Nextcloud with Netmaker. \ No newline at end of file