From 522a363bda06316c8f72be24f5e6c75c0d142aa8 Mon Sep 17 00:00:00 2001 From: Jamie Holdstock Date: Wed, 15 Sep 2021 19:47:48 +0100 Subject: [PATCH] Add architecture diagram to deployment.md. (#296) Also add a note that voting wallets should not be run on the web server. --- README.md | 2 +- docs/deployment.md | 12 ++++++---- docs/img/architecture-source.md | 38 ++++++++++++++++++++++++++++++++ docs/img/architecture.png | Bin 0 -> 48503 bytes docs/{ => img}/stakey.png | Bin 5 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 docs/img/architecture-source.md create mode 100644 docs/img/architecture.png rename docs/{ => img}/stakey.png (100%) diff --git a/README.md b/README.md index 367c95d..9169b99 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## Overview - + vspd is a from scratch implementation of a Voting Service Provider (VSP) for the Decred network. diff --git a/docs/deployment.md b/docs/deployment.md index a52f98d..7134a6a 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -4,6 +4,10 @@ This guide is deliberately written at a high level and with minimal details because it is assumed that VSP operators will already have a level of familiarity with Decred software and a level of sysadmin experience. +

+ +

+ ## Prerequisites ### Build from source @@ -45,7 +49,7 @@ front-end server must be able to reach each instance of dcrwallet over RPC. The front-end server is where vspd will be running. A webserver (eg. nginx) should be configured with SSL and used to proxy requests from the internet to -vspd. +vspd. **Do not run a voting wallet on your webserver.** 1. Start an instance of dcrd on this server with transaction index enabled (`--txindex`). dcrd is used for fishing ticket details out of the chain, for @@ -59,9 +63,9 @@ vspd. 1. A vspd database must be initialized before vpsd can be started. To do this, provide vspd with the xpub key it should use for collecting fees: - ```no-highlight - $ vspd --feexpub=tpubVppjaMjp8GEW... - ``` + ```no-highlight + $ vspd --feexpub=tpubVppjaMjp8GEW... + ``` 1. Once the database is initialized, vspd can be started for normal operation by running it without the `--feexpub` flag. diff --git a/docs/img/architecture-source.md b/docs/img/architecture-source.md new file mode 100644 index 0000000..e8206aa --- /dev/null +++ b/docs/img/architecture-source.md @@ -0,0 +1,38 @@ +Below is the source for architecture.png in mermaid.js syntax. + +Can be rendered with any mermaid.js deployment, for example . + +```no-highlight +%%{init:{ + "theme": "neutral", + "themeVariables": { + "fontSize": "16px", + "clusterBkg": "#E9F8FE", + "clusterBorder": "#3D5873", + "mainBkg": "#2DD8A3", + "primaryColor": "#2970FF" + } +}}%% + +graph LR + +subgraph Front-end Server + nginx(nginx) --> vspd(vspd) + vspd --> dcrd0(dcrd) +end + +subgraph voting3 [Voting Server 3] + dcrwallet3(dcrwallet) --> dcrd3(dcrd) +end + +subgraph voting2 [Voting Server 2] + dcrwallet2(dcrwallet) --> dcrd2(dcrd) +end + +subgraph voting1 [Voting Server 1] + dcrwallet1(dcrwallet) --> dcrd1(dcrd) +end + +vspd ----> dcrwallet1 & dcrwallet2 & dcrwallet3 +web(Internet
Traffic) ---> nginx +``` diff --git a/docs/img/architecture.png b/docs/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..c45a5efc42d51d10f83565093e529c1362ca991b GIT binary patch literal 48503 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

o2kB z%q>g0`sS+pny{@|5&Y8MDZObF5OVCvYd zvZ&^&RK~4kww)TF)o5W&pip@HBEJ2?jxbZ7_ze=9m-)4&=jrb(^|N`@)4OAi!x{%d zyR`(ipLX3>p?Gw8)LSdi_3w_8Ghgj6{84wsyvS73eO*jO#9pI)a;9v(LOZWnQ)#c( zaZ#b#{o$KeP1!FTo|m<1_4Pv{>U-0sJ-!4wqM1{idwCI4dEVV4Z#t8o?)!6|o!{N9 zyg$UxYH!s&PmgAc`zm3!kLDfNUH;(tWa(!29=H99 zhaVk%dFQRd&ZY0Js&8CdwSK+DUM;^zMy*y)y-ycAthKJ|IQ;wH5!L_PMMu@+8=KgC z)ixTQ}iRDY|vFQAEr1YKr*;#$u{HN$o|gpHEI*z5iTXk3IA{c)xS!Hr?HhxdCg_ zxvkpMmrl8weMQ2%E?!*zK6DFK@QcUCKQ;C4a9_jnulkdG3}>B){OYLtfzx{19;HOy zd*d6(B%=*3EQLn^4C@EPm5R!-&XAI-}Ruf z!ou#&ubFQ=UUyBdc$j^RH!EjbbgnOdeSwYr z|DEpO@O)K)84sI(oi0xNdOy3V&3Crqk9V;;Gi-zRZQ16s^3uocuOv4;D*61&^vdcO zzr5Zvlg;({-rQv_eEm?}wn}x!4X3s5HBP%Z7jDwY|F#U&aa`1y7~v&6;?B9EDXxy z5mYbqJTiZGS<;Oeg`B&@pHFz^Gg~RuGbUYcUE%usD-7BAe!In;T$g(E<;%(HMN8lI z-w!_}{oCb_?CzST{^~DPkGo2@?pv)R&U^G^(VCl+53y+YajCa2)bvic|4sMC#zI@@ zUb8^6b64afj(V<@1g~c8bXC?1E@V?@V37F=S_?401G?oZ_V)H^Mqz8iWWTZ>;5ZAq zNzrUe&W&jt0dsOd_t%OtDSm%{a`nl@O3F{mY&Yii_g8^No}Yq8k>mQGeR8cgsb0P; zW~*k@rX@A3hugNUe!5h&-7nr@olD;O;A)qib5lS^!z?+uEeCYeep>MH18aRA^xv;L zc(M66Xt#w)_U(hGE^hdJ1T+#lOB~c2`B-Ig(6MobT_)4E{96qT(dJLrE)-oIHaVK( z@2M%F))j8)WlU&O99lvNa=l+};Z6v(5GrZw{T%up=@5+>%0$`foj}{kopEKUxyzgnb4?mp#pq z$=Ynq;eE2vJ71+ZK5Hv+Ei?j6z6Z?FIX=sFV#7+%1;f5m-riJU?3(Pmtk+T74Kx~e zW}XF~|NNGstDXz*1k4ffVgpT@{KPi0A35UybVH4ZeymvTu9D3K@89SdGKr{fea4Dw zSW(Bv;m(@xm$!Hdyf3fXU#mW4ZOGL_f*W>&h6S$75(dRA=z0s#t=5QLFw>YfGd0%t z%N|^%$_<*{D0yowAbH0qN|CEf64ax=76Te)#5(XdmE+I047+o4Ec&{xW-t86p1W3r zb+;%ed4eu}kHYS;PKN`%uV?%}?Be3?zWDKS+rS+ao}j@GO~0(Opeh5qu8E-2-Z$p| z7OQxAR(<=Mo40RA8_v3N+w`dC+B=}?lYOxwBjhw0_(mY2K%dH%ZA4g`aiAC{EM}T_^NO?2~WhVy>+M z6|dR;{i~L5y39D;*hTr)J+o(>&N>tH&oJJUcU>6Mnss9C`i7e;gXWy+n<0Axbnd2Z zN~hs1t;X5c*CqVB(rNT(Rq3mTcfUv9dKHjklm~Xi6pL0{&ZB+4*&DA*TTH$jsLNp{ z<-1MYFyongbC;_23%7YkvYss5YrWy*b`{lg3%(u`;JI*Xmn?=KK+a%3nnWtG=EI1p5&a2n5Ddhia+GZm&yA!k=W0j7g z-$Z?-4TVpQ&a9fnwo%OL_d>DM&u+?Lb7wu%=6~Phdgk`TnbG^@E7+s|-|9TNG$(r2 zBZIBB(#>v1S1V56-hcB%;G8pU(|B)#27Gl>yEoo4YFt{J23iz$;=we*_&&+})6N@b z-T-yzPeB(8{JYhts+wE;dTNwpwXxLx28}J{XZkmZu3jnkD*Ey6XZ3um^JEWyWBMhq z-0QmX#gmIwxPDJHjE>XrOLIQmmfOj2^yIWnMd4FZl zzcdl6RE@SpOHa@2RYcwWvwE#CN9`XD;dcIMhgSsc){`>JPkrqiWL4KSIqKy?Y#T-# zKsTE!O=w8v1g*Yoy}bOCpZ%MUtX#juHs>&`Tmc$-flN$d+iBv!6sA=0=L6%K=#4(# z?yaoW7txBk<2CWc?r6{q2YAK?hc=ahgzIHF(fi%pKm*l*Yo`3<`x;d^Bkb+0M=7Cy z@=HJ)u;hS6B?9Q-m$VKoqY2Ww1pqC z2y?Ay=b3GXK}D=R9{U6s3qyZ`2ByD0Vx6KB&balJxyv;fOVO?i-<&{EVH_>Ed_rio zpg|2|4gZ;jI+Ir7%Yx%3gCvV<#v0bt*4OC~&el%rM&5WQqdHnO*KNyDx z7Cinwt7(x%;GA7sR?UAhXJdD7Z|_x;#St@Da(Wn!o;)UWtRR?`vGDP|##n369+IMp zXKqt(y2P7rI* zo<}NnR<~|S-mMQ3_0{w<|9#%&$kFIs!s;J4-aW_g4Pz6_o_(qFGID2Y`>FjeOKw(~ zV8PfWoX*C%!c*bNKifC=cgh~;dpn&`OfOC-G-+$wuO~s)*j)p3NGc^8PN<%dTffmmX`LxNL&>C9yNT?B3fI)&8(< zD$DL!ARi98c)j4%N27aG-l?+pPr2$l%{|##b8I)OSSN-+_Ntr;ThsC^*LqLrf*!%; z$7la{y3n(=V^6VsCRYWMp`p?B^?6sTcl`3d6TeGVF#P=i#b)h0_cWW|)J7dN+#J2= z^O5rZB{!D)vpe6ai!RdeJLwlIroebvV1dQVHsxqV#$rK%@M-dQ_6ENYs~KM)ABtHi{05$-bL`2_4RSg z+bR~w@AUZS%a;p{cihVrx+He8*=KFG;~f5~P0v|2ea&JN-~Zr%pKA{%4nTlB&kLqK@v~eN2mz0}2lBaCz#~G5N=Yn2PTq zHsx6at`{KKp(%i_1{bu zDJiF(&wD3#Vw$r0rj*ltIhMsr)q4I9*~sju1|EeWwo@GA83TCk;K z@(+iaZ9d^CS>O4Jc;9}RpR%WDb)1ij%Afl$+hzVnE5BauJL!+Zn<>`XpUz26c<_3l zH=8iAou9nC{oJEl$M5gon(Mr;Thp&CAW2fl0JJ0qTyk$BerkZVgUW{`^ z#0}}d9Xpn_S1E~p z#K*Nxwt36Gd!1duGT+0`Z`mv7awl>}`14K+;nM0C{`tAL1;j+uoi#S{aL#C8IC_#r z;3f-a#7qYtA0DQ>IQIi*r8#yKI{%B?6EdBj^F`}{x3{+oiik{kQ($9j8~CpI`-W9} zya&Y|l5d|sJO6rib;I%n!JAT#x+-4Z?b~v`Nq^$LtWKAsnt9qOjrZM^V?R!xUb*L= zikjcTYCne@@!IIyC)qd}9-;16Qeb4|ba8ie+!GT1=evcDxEAm(zGRZpw*jKD7Tvg1`~cYmluXUfE5r zPZ;lh==649!HEY=Os|ifxGMFt zzJ;!HF6~s&-_Z6g*JEeB|6C)FIj5#*HkX{$O7?Gja`ffXpG)@@eA1qRfiX+^6s1@`aLG=muXUR z(uBqD**off`P{ppW*3qEE+RfpUF0^K{xx|8eW4SkYbNgzvdxp8x#L?@O!2!nQ+dme z>rPKDSREU6Z;5#2dqFv!+l_lZvnk&Fe{1)4iQTJ=_#WIZi85&2cKO0-pPg6CmWH}a z^oqLNDVZ%&{dn?-!UCnG zzDwuc)3|lo=lP7iuP-pqe0=7nZT9BtGw)X_J$$ou-`C%EC;n_cfAje?Z+X+%fAm5= zw*UL{HT!gXgvk5(@1~v({%SQh`L6EvV}Gsf#kJd}mw&bPYv2EMu~EQu|1-Z|r z;+=ZZyGgG3cA@KcTn@kUF}mb@+ozKqkJaP)ANgHb<-RY{?$zGQbIzo^efdkt!dLyt zec=}q8y;Ly_Bbt|aKVD{;L1o{Pr*5A%$JwHtKVRgW6s|`r2LuJUPC= zJ^ML!yYKs*G3VCj+|P#PEY^5eSfU|gx6YZtM-?icC2q+SLJE(>GE%* zzde2X)V_SyWXZL*XX{Tj1#kWrzkHURn82K0J9hTDB~0Vy@H;Ej5XZKBJNvSelfyXu z&IVx(%dtXe<0>YDf%V+(=ZWjQZ*oN!qE6uAJ-ltS|W1yypUQ z-u*rE&D?&{b90CG!q%4@5f|+MuO7(0Co}OU3_wHfE ztfpHWq*vqsjSaj=`>l}VBd*3=Z6c{nHaD3U?@ZidtZ(M$7U%5}sVp*=0^>V%7oJ-QT z8yg;^uyF{y$Oa|px1w`qUG3Mp%HbD!d!!NCYp>dxWC;;wRHC^sZUVn7*`FGvz_7=+{ z+uu*l%Ck2SvtGZ;@>>3lIbS>f{e1NKZpIH|Fi?uTLlU zzwgdwV^6x?rz`tiB4caR+7!`<84k=We;D$ZXDwi1VwuFj;pZ8ltsmuHASEx|ZEIg^ zA$QBh{@nSsF{`+(Ic$FXaj8kV+y402RrB=RlA^+)r* z%6C7M&hsjhJE$qSwzXJj29KZe>1oeGwncFYC>SU=?*IRIYQ>A&@v|>h@6}xEAbW77 z#lc2<8{z$S-@X3iZGCd(bl<&_Pf0n|nn}0Q_un|3dVk~AZ+1VsE3!V${BhdjUh$@9 zH;(>zvas^w%im>cTSewf`V?g&-l$};x9UlR-qTf+85o&jxoryGyYJd}jCHU03T=zt z*c}2#<&U1%wUcKLd-m78@cr(9+@n_)izmPCe!Q{p^YP@Pr$VoaW!?x~-q(N3xVm0+ zf2{3{+={5`5}R#*N_EWc?=_v)7c)O3qQL7^b|DiBhk$}Z!-3SsT}{CoAO9>)e|(_v zui>v-6D@2^B>qpFuhskLPS}wT(rYEURzK>qHdFnp5wVnM{f9+LHnJ6Y^>gfgyUD~^ z2#6c~Jau_b*pV({L2mZ-eZA7}dsI)muM0@}b((eg%icZB42)o_E(kYTHD69SnC>^f z>rtcN(en9wc8Sk0PWRJ^FcI-?3oofJbPJzjQ)UupU#fKM`0>pvstO7W#CUZ3UQgq_ z9=85Li1gN8u#*`YZ|Z&UV_AMP@7*7kDpduGuU?m|AiiN}%w%CvS9Vf}XFRBR|K7?u z5X(>aI24>(lXyz?f|`PbBsdT@Kh*6SYS>MGsII43)C17u2jpoE#RS`V4>=;RRt=Zpv8Fb zWQ@RxaEF3Z+sn1o9l(Yd2@A|I%AQfgxrLL%?^q+)TmglE$qf%egtz2!s0awm5n2#6 z2`X+dwc$aE9>)`H1&gP*t)~hrfDM_+$>BHC)MqElEfyB_$6z5A4uKV(4h5??Z<(Fb7m9HnK1^1v7g7d{kXA5eJgB+3O>?@# z?1l#^GLXn+WHROC@H2J1-R8i=cut6QsK$Qu+>*zJ#D+D1dXXPZlDsR=0*JGk1x*oEXZfsc7LyD z!K>MMRveJf0;}7~z2k9+^-f+`xUz5vobYuhIJGwUl`2>PIItF!F&Oo={z#T%Nq6dW2H-ZC`>zkOl`ODh5j4hrUs2Q|0%t(*=`#tsb(jkj3;ahr7i W;-7bY<7Ng11_n=8KbLh*2~7Yz;F-Dr literal 0 HcmV?d00001 diff --git a/docs/stakey.png b/docs/img/stakey.png similarity index 100% rename from docs/stakey.png rename to docs/img/stakey.png