From 35322369eff3976c3da058c56d49a3b6ca41b37e Mon Sep 17 00:00:00 2001 From: skywalker Date: Wed, 31 Jul 2024 16:56:12 +0800 Subject: [PATCH 1/4] seadoc architecture and faq --- manual/extra_setup/setup_seadoc.md | 20 ++++++++++++++++++++ manual/images/seadoc-arch.png | Bin 0 -> 65440 bytes 2 files changed, 20 insertions(+) create mode 100644 manual/images/seadoc-arch.png diff --git a/manual/extra_setup/setup_seadoc.md b/manual/extra_setup/setup_seadoc.md index 94fac4a4..c6ed7345 100644 --- a/manual/extra_setup/setup_seadoc.md +++ b/manual/extra_setup/setup_seadoc.md @@ -16,6 +16,10 @@ SeaDoc excels at: * Creating knowledge base articles and online manuals * Building internal Wikis +## Architecture + +![SeaDoc](../images/seadoc-arch.png) + ## Setup SeaDoc > Seafile version 11.0 or later is required to work with SeaDoc. @@ -318,3 +322,19 @@ docker compose down docker compose up -d ``` + +## FAQ + +### Load doc content error + +If this error occurs, please check the logs of Nginx, SeaDoc, Seahub, and Seaf-server. You can refer to the following solutions for troubleshooting. + +#### seafile.nginx.conf + +Please check whether the configuration correctly proxy the `/sdoc-server/` and `/socket.io`. + +eg : IF you found `GET /sdoc-server/...` in seahub.access.log, it means that the request that should have been sent to SeaDoc was mistakenly sent to Seahub. + +#### seahub_settings.py + +The values of `SEADOC_SERVER_URL` and `FILE_CONVERTER_SERVER_URL` are different in different deployment methods. diff --git a/manual/images/seadoc-arch.png b/manual/images/seadoc-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..b55dfab9db9c9ff9df38469a9e54619b81c8cb73 GIT binary patch literal 65440 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 z zL=-X@^cnE~ahu@ZxB_~ru0pv=lYu>%tXc*D0P>&?X-x9+XY6z^maCb&;>Z-;W2d^=0>*!uiSoU@nC z{PyD-Ky{{8?W1y;^+Ecjq==OH%&Q>vA*@1Y(t3O4i4*tglA>iY4Buu8S<}L|{qlZt zT@jy(h#IoYYm-E&^U|^9#Fri~dg_7<%Mj6L?k-;c?0xVr(O6fa)1Gfrer>?09ZhEJ z%{LWy7+Put6)ZVKcnq%vbDxwWBKUA5Y=aq+^W{j3x_NXSue#jcA=WpcU0X|(fIlyK z97n%Ukw2gv6&Jya1-yj>1>Ny;pT%Jqu$YYU>>sT;=j7}5XOpSg%>*m5?*l1?V1`0Y zvUGxQXQD`8UI;<68*o0h~Tvur`Jz4S%glGinl{1E|^6Z%xMi|7+YQH%${UfrV4mOtg!mv za2<<|j&2^9PNe`l7HP zgt1WR)Q*Du2@&A1Lr6fzbYoPZ$$&s=V# z)ZvC=vH4Xax^G&=T?2z+eIj2y#|pJ6jl^y!gyx7E8FgVl<)^@Rb;ZPyse*zG{wcqE z9B(RstExtNsN-NpcBvPKVRhy}KvkzM#V_Yy5VPxKp82(1;pOM6_rGF0FjmdGAoJrK zGI-Cgeu5FG5AQRszPzqp))Z}ROZP=HUj3js)u)gW#th#mZI!OLTafX%?uj4&r$ALle0tj~L&pr^~`K1Le{9<>}leDY? z)_L3QRr5ncD_0!p<3c*gq6~?5Lj{Y|VRJgWoAfI0JxL3f6BA*G0r*PdUDjo3HM z(NhxKc`Vz$QDB=D^}>Fmo=9WdLN_RM?RdWo1Qiytibh4ZJg?{)8scX*I4q%^E%L#? zHctkfkpj0UlYz>4lb!>ikZ>x}?S2(LTt+XXXO7U0r%b zBi0ct$c=#4(b8xGB$*twid2wk^io}2^4TpjtO}3-zpzQ~u)98yei1&DpSEy25=_A) z;BfIp*#EXf<1GvPl>v=*@`Ntm-}inBd9WfrRF`zeCl$vdm#0dlG=m$BmPhNuTIP78 zOjfkHkr#qE*gUG*bV|%L6^CbwRbWk-bX(DO1BOKJ#{(#1H_uY(P8-w{5}m&I2bk85$&r*QL-ogHU}l^LMe7J^ST-Av3V7IcydiU-vK=@ut2Bd z(d(jQH;`Ja{%te6uZkYI;v!!WZbFtXoZ0t`jMN7cse*S_BIbcG}C_yot$*XEHQr$QqW1Xd3lw7t}smyM+)R$!mED&%wP#{ny z3)?EDU`hf}J>_2d3Xn(D4Ser7-y|qqYlN+#O{Tg&UcRS0-x0SBS3j2dpm?Lb`l^Dg ztRNxe@GA>l-scS;I@=PR;IBxpYOx&@XIqYwhj^9teAP7ITE3W{rKgW&IT!k*yfm){MoiFT zREgtfD}Uegjhlt&1xNzoMA+|^;%g(*y^yCazV?S2ZgR9`=!BaUBNR}EUum~@nDnHX z?~#?* zS1SsbLBs*K_s&mu1a*)0chYf5cU~3ASiVw<99ErK3rJ5-|Ng}Aq~b;q6vL~^IgFIa z9|sb5W%StzUb~M$?1|76bwRb{^QT+im`FI&&Ox8t4JU+76jRk4J~unj4GzTwy_#%{eiCsRFXm}Csw-3Dm1mFJ)BrX2Om0kE9ouc-)UA1c{-wg4 z)9xjv2(3oAMn&a;Z37v3^JVSFj4@w^3yo%vV;nzWbLY768dvUVYki!qII2r+^ss&! z^)Qw3{fTI}%RbrFjj}rAn1R_+iVYS(uF*OqerR}XXLc4`fHB*2N^UnVbsYS05dQ4#|6x3?aS>1Y~aMM0fc56+7?+vnQt>!g?$Btx|V5 z?DypF*Wg!ia8O1>-_>*ICP|IlC7wBMgs(hmaZ`S&bFc+Qr$$8kLcS%myr;)9Y!*!T z3?G%{(0%c=wkYmyw9AK8^9qRW_bitHZ#S`0$*VDh@YjuE5f!)A${NKSM`-%&gM;%g zl5sun7|6-YOw4gUS`yVsv#cfHeEyZvN!x3K=`bsJt|-ahd7^10`wr_)HRzNP@Fxjm zyGj?4cw_gxr!L>_PxIkcQ3orsT&=u9o8e39H|!@7GYdxJp`P;R%XCVOmX##DFX}!! z8dZDdsbz2b69Y9(K~CUT^aN+ zN>-;|W)E%HB`nOV7T%0ww4PZIGTp|DQnA{tdyrH9q-w9#M7KGJHo7%5%nHP5C$(T2 z;IecXq8NR_G5UM|crC=T5#@{8dmu;CZWe^B=dB!IZ1=vrYbSmF#Z}`;oc{0h8V=5$ z%2nbRF*%N&yB>Tc_kYZf$o+|R z{BE_0pp5LV!(SUE!YnL_h6a=0U5O~{?sFf3n~zA)Th*#b$er70g!hIRAw>&0vf?ru zltyA-nO*LXl;7!!B(N`cM&L1(cTD=&*GvIZ6splRzmsuGa3(u2x{iPoNp53rYfh|y zx)RzU6zKEi9w@=i4#VoS;?iH%+*S9-Aw>2z? z#7iiL8y7Q5tc=hiHVx7g=%FX8qYj!IxlAh$tgnf&21TcBatI|c1r-FIY46ia2o7}< zFd+9XsW^}}7(;omB65cV_jr=1>XR;PubpQLpLe|) zQ}norCPv((a*x_-c|f|}&cC|en}~C`;LgooZx_{!r^f`joDj37e*_E-%m=c<3p4jy zU{<_b`N^YEqW!Pgv|Ui1pN4H16FII+NLnGW-palanswjjNW)R}a;pXiDm?B!zCH2t zml!dY+=c_pYvMG)sDde8_^zps?2E@A26UVKbkUT}x_NtRkgINGq4s-m(o z8VYh6Wr3^aLL2wmOFdFfV@fso7TJS|-#Sz@<_x~WomI1kEdx`tiOnCiALHm5Ms8%A zEM2@kZFIPqB}Ga6qFb+}x-ELhcwj$Sr?k~m>-r8y2F{3=%Nf$>+ji5R^OKq9lca62 zccr{QorrduG4AMI)W{lCp*QNGraKo|D1qV80V)NYcoC&GYpb-J*>z$}6+!Zuuj1-P z%o@ph5}pxWKL&n7qUem_3snHn=n1N;^nbYZ+s%smJiv&PmH8PLoXs_GH*#;NRw$6} z8_wVai9a?l=S2um=?@HN7$`5koP!ZfW)t!}ABcLX_|&P*IDkQcdr&zCoQe!kLf)fK z7kHOf$v~x|zV_()L~UAp{5#u_Tcjwz$Fn!>k9PXIcZTu@Sy`3d zer*3hNe?ZZoI5K*6ocwOpJ*>vL3Zg2w2mr}&hVAtSY?H1*+v7Y9>`#q*t~r9*L&f8 z-qUH35@k^O;lAo_Jo$=(h!}^R$@*xHnDXLi<@QDGo2(rU)RS$~7Z;^-OV>H660tq$ z){yV7xlJ+zfw`+(Y#PThzd@f9V%?Q>P$(JBCc+>+qm_P7*vC|d({l_sAuZ$q3#HeA zJbq{aC7aW}r4*h%)qu}?Ko+-qUHEn?bxr95!S$ixcZ#1_y~cLI!M zQx@sfD^-%Ve0V~>#ekf1Uj$9pmf^PogZ}hG09w!>IQ+XH)~~ZYb{iKxEYUY2G)$D8 zsGQ2R3Qh1DFVZp!CYcEGwWo>(b$_lc5B-)kbco$cQ?A2=-Nf(~YBYT3Lpe{j>NJ)u zd2xtivyla&vXR_55;!^9?t^s)h$D7(_MQ~UnEcNx;Fcj5DnWUL&31i!R_ZLvZ#Ou8 z3JE|)uz8L1A1q#csi<~cr6c|dxzQIPsB)?#Nq6X?J{?0B2d5nM>R1HVK7B32@P@o` z4W5*PfhMt4>WCAD&RIr(v5+%oZ-z`(d6xI=)Dx+{6f>(jIaVCtoz{L=mQ@1RZ`JpU)oB7=w#noI7P@*R^VS^Ft#JO0F-f%Y~- zuy1810&v!WRE6PY2joP$uX7T|_4*=w8=d%!nVz`YxcNL7a&mI|g`>dpiak9$n|k!b z5A}VD7isH$o2kTGUcr-jyGF+DlF5~>=w`}S|Cb@kkdS}`@`HXO6ODu3d4$E<| zj%FWh;_f4BPm*Sqib`NvK3lZK&j?UsTc(4hCkfJWWtly^&(pLB3fR8J7ub&`X7XfA zij}6BoB}dq#u^Dn8>kcy8VC~AVeU~#;bPcAEfOw5J9p1>Zq$nAI+X(g7Q#0^_l(-1 z)buLEVW9<4yp{uqRIGm?QVZc0TL5~NZMjVr7I7LM{l&Q2BK8OAnZ7lLabY*l>~Ot7 zum;D40%)qN;Ab(6V};1MPvBr+otda-FcyEreLJ0#fh^lVRfsd1BcO8YyR+UF(%rJu z*Y#*WKgGfyIYw&gP^(Y!>e$aWopd3;z??sDP8^#RwWUM3y!GUi+)sg>g+yW3P)J2$ zF(1!ZkD+m(qw~|L+3XL;bJTBcJUd~XnpU`Qc=-KGl3NThO_dCI$_9F}!Gb48e zgf7rA9pa1@_Au=oCCjw4D>$-3it+b}*(hx~uX^8(mnh@dU4$gsIFuemKI}=6%`ypl zqP4y`Oe#qx!rps)IG0lyiY=Ez8|3v^-9}dP@y@EHZJRm8Z)Ek4Ut{ynQ#Lo3>+ssK zD{CX?S)Cp+_~5H%uWVYXQneTv$temR4Xp^qWFANbcsGxg8ziu-Mirp6z<#`t=1_#p zTJVs)n5Yinju<`EP0|T-q?Uh#Xy?_Y$kkwqh$vdUP9nVrExg+|mleO-lZF^JZ92+% z8B{uKu+FSHODk!dE-)m=3_!#vf{FTlLy5y)`5FTO@1`#-_M+9T! z-+aVHV^6}Qn(5t+Lz^hYFYJDZ3s$^w$P)HmG%EYYvLb$%ZDdAkJxDfPZ4=h)`H(4(iNK+-?+O1)xm8kHot-zk8}-K}Zj z_{7AiIABw2G{X$vn}!_WPwl%PDCc=Wo$RsZR2#weYW!G-T?HvD1jcI-3R_XlS*5Y# zleItb?z%V(hG55n6$8R~xlSN<7x%lxE%~kDMxx=Fy^XUF2+Lsihlt%lF`e0=QT53_ zroigeYar+t$g5iH8B<}YZHz$mTiY39{Mcs@r+1PFkDnqtC3d)+8zXxHX5ji+1U0_> z-wi2bu40twz4F{is-e;1V82xk&t~{xk;?MKt@Mr7z$is8 zIA_<|$z%UyCY52s6-FEUlxP0)0)dS?Db_~m7&$PY4^W zws<)Ov3ysO-wv1`zjB~sG#+IZx@-3qm@IBL3A`hdJ1MiL%Nnf=sO*`e*O!wHluJ7v zS)8BE@kv(n?(2kiLz48i6dJAVjoU9~EyN0_&aWSp$}%;6(w&^mj1ZA@T<7L0pORnf zYEETm|9{e5s%nTu&?El{zf9wj1OV2@b_@5r18{$e~ z!(ZYGA5}jlKY1b)1ha0W+mF&ja1Vx+6xpos-)jW`Ajs9<*U?dbWvG=~cO{uDzik8M zXwBs?9W0A8cgY7?(A&JWUZO60y%KL#bTz)paT~Yw)n0Vhh8QnN)1Y6@{D_yAKo4tY z>HM%O_8&sWXK<%I_-!*pq1$xf8MlU(z6U&9ez?8jJ3Q}?M;<$|LYQc#N+UJ=wD_KO z@VB;yL+lz^b9$uo91-}XKtA>*6jqjzn@NSAb_4myQKFQgLw3Oato+CE7F zEIIQ$LNb82xZl=ZV^rNd=&kyWYE#s9PVkATkE2QF0Apj<_lr2vLWl{@kH?kk zwBc3Adj&bsFZ5JWgcqe{4`DmS5(GPqOA>;=T~Ytq;W5xxs*m@Jt3Mz4r6>^bJmV%Q z!XaX;xuQ(M(d`XC7Clis;#!$&p(A}&6k~y5dVp8)JsYc>S}805d-b5V1wZkRL+8SO13a9Tt7f>|(ye&2r&Uw)Ns`fQSu#O0 zeJd)0CYifs`}rA*vG|UdOYSl`97m~$J)&MJvf7c92%;_z1D)328+XQ zWJO3STN`s2n^yJFa^-94we%^^w)BxcoPRS_m_YHTd2|LB_v}sN`=@@;h-M|Oys@YD zl~|}DyeF_;#q@*D21S8-o~@$n;oFb6C3C)SVN`XM#Zg{t8Mijl=XO=1(%+`Oi~pzD zat1>fD?TTN?aEl*1+s#EqEzb6WG!|sk3MSBNTK4hV#Xtrgl5`{J9;ZG7}|EdROQ$V z*YLb$?Q{wL^l4J2=svQ=Q&K35OF(kn5%x@CNHRd?1droS=pxyTVG$#?%3hKL2mWOz7O~ z9YmeY98UcyH~QCkv;oL8MYVUqtXB9z@FlCdVjVg`CY>^#qU>8XMe0no6X~1!`yYV5RJ@qu=BvLzqxH(tFCFO8IJ)2I#-4=WJChQ%I-X8jPJ zq`=Pn|BFras-m+!o>}pJJRaUtXLIOvuxF_uaczit0qL3?e5dtdcA%4 z;#NvVHsD_#uHSW1zGxN>L`27MGizJub@%F%YNktBM(&*c>Kae|=|0{=0@1$#W>m<304BSh$w9auo8I`_{q9JQ zL^?-bmxXV{S&^8mFBS%4d+8@*H6su&ow;_>7p|3DPCja1!uXHG=ghxKd=7n{nvLT? zHTESCM^wgkYDV8s9>2irx5-p*nZN&w#E08BL(hS5joWqfXjvk>>iC}OOK(D&sEQq1 z(Jar1fr8JAqBGS#4aWKERjd->QPR|+Cl+|QM|R%Ikcy-6ly3f;SYCnrU)I!Z@TP97 z8-~sqLmI!edyATqR6^bnhXwJUu*L-`VjnRDihQ}Yjwkp4M!&1Yay}3Ps-deDa;{38 zdQb+a&bpmjSPYNjZ_E!eP6szy8HLRCDGt$Aa*vVCnX8jQ?~L&62;?VyMhqM}r{mP&(xQ5DoFnRMY;)B$bGE{zKRw%Xw3s;6{e zch$T|r-l1y^h~1$%||E{KeWXJlL+5Cc)^%YQp|_@l)58JnN!ZDGhXPkR_tBer+2>E zZoHApazL$0rzc$eWxEgJ0o(khrMD!xJ>yQ+T1-mDpaZd*JL%i(40G*;sKu7P2j@^t zZPsks^I1t9*Ye}eUA@Wt+C~2egzJ@=&#_fpLf4OuW8^j+uYRI(yZ=|xUe;$LbBy(AxF!&cnCw32fcK@MIw}P&Ew`Uu%SqaQU1zvyK(o{G_KYpqd zo2gequz+n`Ts%=#mC**-yQG!oE`^8Ha^8oO^Tl;2s1MNkAdV8Zj-P)&a{JrOr%$kc z?U-w>AqE)ac}#V@1v&|=wOL>7XYH+YNClK$v3lBD zJ*HNW1|UiP(#?l&un0)lK8DaMK9PhR zE}YWyhVtvs#$g`lTUK;uABW{>@pi+mmp+dMot=j&zJXEG&?EJG&uOA<=iWai|d zCH0?=MKqa69#1=`wmg)naph0DoSK!D1PX$^U|$*@JGLIr+m|tb3r%dt3DIT+dxdXj>tEk&~R)3)2@h4B99? zO&SuO?d%&)%%Ts+AoIq;;~+eLDt-X|{g^-qQ(7zw??*2eTz^eJoeWks@j;#7BXfKw5gdRQL>ZgvyspFDDKqC1fYJ zT0?Obi=JjZL;Xlp&lUu@yFr{pzobwqX8_kU#(vxtC$+phGBM}6GHEQ+FW)vD2m&2@ zi7OUaPwn0@j-DuS#U5zzQF%cIO&UgBhOUuy@EwSha1=q+1a*cS=1pj&JBPH{<4AGq zgkOX2NkQ9{HI)I?hX%simmVuu+W+8M8L&e7Qk?VcxBJ^$^vtm4vx93*jg};2$7&)O zE4s}C+eYonbpnRv9w~Q9tjd*(na)ukbbivPN^17HJ9ewXN%Im8D66a!ZAabYnPm8} z1QgBYiP<>w@H_TdA(tw0+r6xtJH;ku-TZ`|(@epIX1pn{fk0u$-mcXa1mj3YG892*v z$&phwphR9rwJYXA^Mjm3pm>Tvm%l^v%c}MZNuXxULMz`z$&2iVxL*bQb!K@_4!6?3 z3*eAFMb|4+f@YjFjEh$t&(RD&;9cFQx3*KmUq6~a^F&8XUp|YR--cWj4b$p4`IQ@D zrX448m)BNYhrbPApxXA~J$}=72ez)Fy*xDCd&i4Y>vC8 zi`^-NV0UxyvzaA{eVcoEe9pesodCpJ?}k6NNM3w^fPn2hK3qmY;TbRi;Z+5dHRu?} z{MA;r7oF8+%DW~{fl)mg!u?<5>ut>$lprqtP!bcuD&JO4`$+lxa#oQoN=)%h93&VuJcN zZjfg`1l3|nfiFx?;|t$7xjX0aZ}WUXmqaO@4iHN<8ZP|s@?1am&x;WaU&nck#G_j1 zr>b7UrXD%heDBE70*Y{j^A^fmgQNTMD^Xz%oE?A`NSvEH`Vf#d$z@nmQFVK*;ZcbV z=4ZR2tJ~+ch?4eYs+^pk%6Tp`#h9UVaK60jp5vpBxHT`wK1ymJ3{3?55v#!x_pzatS5ee-r8|OYIrTOEOrMnZS ztEn^42~ei*37<`HYPZ~+^nX-Y#Stz*bQ7%=bUT#TC4V`yZvtf25*;lvKR>3^_N%qrOEW)sU^-8DXI$k3KST0A6 zH)}&eVWy!Ys^LpR^z9?m3o56fi;_Z{7(cg#VNH{iXW9rsR)tDZ%aV6XSKu8nv(fy# z`0m|~^4lbNAa3H8NM8fR3keVU)^{qW2g9-Y;^7wS3b(t-f3fOfqW|_xs{vq zhB(cjdQPy#>jqlhWiDnn0(*G#zO;WucCuO)(%8KE**BMontx$o1JH5}*Fm-N^!RYU z5r->eqo`N*MibtCuAnGOo`LLWZwRpijipf{m)OOY*KVU;n@*`>V-Iv+ukdSiOv#2# z`~vp=VgdPMZvxz};A7LuKey;5&lYzgV)=AzYCgtWEmnc3l0U*alQT8U;qzNT8RFJb zxs>@-#t)p4xdJ9uGp`p%=R_CPyE#$VPcZ&GH(r5M0bV@gCl={aQMy8nJCHEHL4zx; zuQo19sBRMO>+aCcT~low>J`t{=wD4LN_mW<9YnNV?X%-6m!Hsjr>6{6(vy>Jz*=zQ z%`cag|F)hPJx}ma8AkUrTjZ_6rlnyUc6l}-j>&>|jSm`0c5~X)UNL2bA z8w4RqHq>xkt9rhdV>4ns3Ej3;Z=V0A_52US`hoL1$78>NmMfWF8#e!etE(F z4Gp)Mw?9;w3fa9Aw&a#_3h;Yqd|c|^Yd)g*U@YOfa)^-3C&Jb*9Z8?LUJ9if%X<>o zHOc2c?(|pcC41^r>g=ljK)-b{{@R~AKM2h@icSm94*6{6nJJg+ z%2_4k<+0E)F)2V}-`xLGW(b(MRKg%waHTBHj6KC-$+#y;!iFpJ@V?fg;b4SNjIqj7 zyng4&T|B)NBzwN`Fp1LIE?}Kgm>kSQRfFzJJ`+4gatm{G|1E*h1A}Kx&Bj5xz5eC30mm(ddDE zrW9){hskJUw-4)S6m2|ocfD!1Jm?;oN@NEA5N)Z1AJPLsAQ(K-d*b~ZzFK9}U&T|`~~mU!(c z@Q(s%V(9mQJISLRvGr&jjYudRE$MbM+(Nk(q=ISOW8Ek z@;x0L{BAge$l$A|SC_M{$3MErH=+jva_4d@&VN*<=UE{DTjVg+oZ@iFXZJ(ipr4jm z`K^)h|4o03?#!QLy?^O+|DU9sKe8CHQb3=&8N3bo2rf%^P3k^gwgmE1S#)AbxIuOt zNK(<}INrL(1SNMqe0T)PJSTj>BkBSo&2i=a5ad4X%_8W&)xQXX|ECSpwktWZ8x6YO z{M(f{=-OG1d9>`4O}B$0oJH$GZZ6|@Gh#-#RWT#n1c1-bb%$q4%tAuJ*|NV_m(bsQF>(ukV9M25lE;kpj z-nEQt-it1VGga~M3QBej*!1^qUHTisGv7N?8%<0T^cxs4y*y5AgLd_M5ZuF}EK+`Q zd_eUDS#nW(Daq{bwF(Nmd?g|#qkH#j*y-sY4U;I@r@z1AJ0)lw_0``aV>hp?M-d10pK?Px_ep8|zecngD8_h+ENduna#`# zu0xq{a2?ytJ0BaqGq2q6HAy6JK$koXM0v!P+VhQJ+MLuMc)YmpaPx5e_;ZEF?%bQh zEgj7OOel5GA>1VfLYfnKDv^@&XnA6BDv@G(jj#s3I?zJ4J?XnUkJ~OD=1C6+;y@Gk zqqk#t-?lsfkrr*<`l@RU5N8hR$KyIrnyT=3_h1j3&H`%VSgX1{##jAfdj}~5TD~6z zd}W_ap(kl1J_pLWxyAa?1xAQU9scnh??vYLhCyz^0yz zdGV2pAJ^i2bcUE_#l`ooE)qb9HE79sAqB6Y>JTOw6dX*fE~g!`z}kwIJ{`R&gm+s7 zGZz)S90qr>OWLJ`P%htfjdi?s@tm{&{&Io>YFJzb%FWCJ?XY}9`MLtXugtybH8D~S zLn(5O_2U^PXK9JI_r^f!-1z`8Mrn6QpfwJ-tFufVJDC9a(2Z02h2bN41H>YPA&Ig9 z0^=r|vkkwbK^;0vnix9A44JnN_q;``S;hmd)5bL1#s;TxnK&1xWAfbvwi=IbU|*@g z{?p4GlHH?8z&f=io}jha+X>`HA32N>saVL>kqGJ+kZ^i(ay(qTDuiM3%!6GHc25hE_Oxdi>dEO?8lhQw6p$r zlqj6jCP?gR9OAVXQ1w*r>R5+P-I9byvcnr1C(WfRi(gK7L^iBYZt^=bEr%~+O?BjOmH)Q7I$Ysc8x+IJ#8Sbuadiq57u zB`S2LJT{nkBzq`ocKh>*>K;dja9;Pl`76fb=fLpi+rLj{JMP+?%4s<-Wxv@(vjA)o z-K3dF*`{eRK+(9$8YlOIi=^(2KE#5ElyPt+!+m}Dz`g8kir>wX@U==1mvJ<_L;TZJ zkFCR9SF_iNvIJtcF=q&}?ZLN$$Qjej2b9k`?!Tz07<|sG(blJg& z>7+pB#e%O9F&?w#F{OYZ@42#uP6PUJ9iIj3H4OHoX&q~O!~cLp#TJ}(|7h07YDws3 z;I;s96)3E%ECuiEalBFtNWLx{eFXGiWv`qq`y56k_@upf0bw7s6chWZdj(=Qj^n2> zRtA)we-kS?-h?VBtA9bmxlfbuBB$_V&z zjF{X+nooHQ{d`DMiH|#aMdgv)Sd?*lM>Bh+5=CaMZ;LVWG ztD8h{8qm!bpc%Gu(P&3W?Xpk8bI{L(pnEfrtdpuogrec2fk{gZhlXY_A4r4C6vF6={GWx(jQ_8W>)-7rAh*#9 zV~Eq<<_sN7GKTN}wD;xVP`2&=kwObaMG;!GkS0|2rBW)TQb?9bLdh=6m@!DtBgs<9 z*r!6W4o$MpkeEUS5wZ-%G+D>k#+WhlyQb%Dd)|7!-{*MW-*J5Zc>1H`W^VUf_jO(8 zd7aDW{G6QMq8IbO)qm(l!W|z5O$47HwDHYyAm>qiJPeL_0m}9S$!O!n{Rp18_2Odt zs%l#4L9hRWo-XUcpoEuwHY47_@|}J9GR`WChWv`^rBT817=r7NN=6sKrW_tvK%q3K zkcM2-3NX1IvahD3R_?*+@!UU2?o9zU0<4##YwCTtxPProV8N%5t>5$8q%ZiF9y^bV z;h~s=(ZUrvM-EJ=qV2QqALeeE89mNz?u@%x1$?aeV=q*?8BN@0tLst(k)2Ed$_?nM zO*FPuU^dL?u!4|)cr;`2c!(b|1ZJy#d6=Tn@Nj0YxQ0os5A5-FR=2TF_j?l; zw{FHEJ{DW=m(RT^%KJ8(eG{yj@MSIf57mYGm=Qi`9>I{5(;vo0d`|>0s;-koMPpZ7 zSb7p`G`_P206K~c-}P*|n(B?wql4rmH>oC0tD9KN;tm8hcpIK9&c zX3Ko2Ei}lZ$GKS7VF!s@ef)dH{KIvSH;BVw$7A(3{pekMiRS|6MTl3xw`WVtpM09{ zejEX=jAM^d@WJmj%MaJ9c-1Z!kL>tG{1x2$9=Hy~QcM2dzSj>wT+79QU`^GX)BN9^ zr(ffVpD%KF&Y*XZz_PE775m(_g-z(ei-gVWY z;EUjlTB3ST_?I)59|=bKzDI0_z>m(=ccHf`9*v2^O|c(l>ATP6E^Z7qPtY(zwwg{IlYfQ&M9xpKD4!t2UeSx;sSq znQ}o?wK&fkf)Zy5`X%KyhIimkRHi+_H;mMI__AhH4*V;|BpUlxgneD%qwNos4?nP3 z*(-+8NY2-z1^InGe;KEbwdM0Umk10D)iNmnqE|j25ItBwsA5NSfY}I@jI|&!Z0D;j zJ3s3$=zb^oWM$Mj(tQp#^p1rPs4~dOm_xmsqY`Vk3bIe^V50cGcrL>B`jy7KN|`c9 zA4*EEb!qTHvC64yNAy0^Xzf_?%cYWQIw2rtZ*O1w*xn&t_uZX$AVCOm_*a6^sIbC= zBx?JF^*N!u6hF~0z2TRaJoH%jXVNN(IZCZ);em(I01TPXeCn1mAx&LsdU{gYq3J(# z1D0HsJ1q^KdZg?Wk3VW8yeo1b__>oWR;idFYL8GNgAx}Ex88HK(BB3jFXgvD) zSzbZW-@_-bE8iW8r(Jy4XQWMCWg|E@WU*xiY1Pky&FaMWS-C?7PjY%4Zv$fWU8ZKgJN<(6n z2AjwM-MX{;@N>TJUR>_v!}N-d@s5HJBxq96jKZ_+Hvk|NkFbZ=vr-c@JpNQAD4S+o z=9AvJX7fZlp7Q_)O4D0FD!y$Lg$I6WYhjB2aHa#^Oxdb09cA-a+*myru<_gm#SM~+ z`Ec!^Y*U+FQS`P`*Gw3~5n;YB!W{;V$mV2^+V%HV$O`1hN9UWV?pXSRP^=bu9X__N z-Rh9|wiCDH9{FXlL3!#EY@=rQx?Sg+42IS!nl%9wmJw(cED*pbBc&V42E>4#;1k>I zC)e68UM$t!(J?oJ39PVyus|cyW?*UN-HB(L^qOo`)dSsBuTttBTyH)s(F_0?mI}Am zwY%cl0e3_yAf<>by*_j>N_+CwTJlBZJEq+h>vmfm1uXb-E}hQ~&m`wrm%S*~y}49E zmam~h5eHuy@qGm9*{UX}Gc&!RHeS)9Rju(->RUjsldyj{pno~^p`~ldZ@gy73X4DF z+g8Wqq#L1HK)c|BfQ=}uzi-o=6WWuVMC9IM=Lb*c(b`iy

0AvrX+2)YpPVDx!wzi$sTkBhUGSJB5 zycR_BCz3Tyi6*xDTaR&AG(7q)Q5bQB@bpaTQy`eFWxj3$>(!ymI`b=SS*9tJ@SV!9 z9}-+j<_5w624A_SHO`x&=jtvy;mO=TvDPVPpjwkd4dfWUy+EO70q3Ii$w{dhLL{J_ zxaXI&ngCxU1Nx~9DLZr6Oa&weMHt=HM-w)4$Y)NTj3_lDL~hJ9jFNGh9h{#T(HS8o zs-23+&^|)<>%axT3%75k84de5mrLm)iZ`(Q8U`(foP!3H<3w4}%5+eu?QL#Kr=kOO ztv^Pn^&UkDvvk~ntFNFTVdc&TIEM`03fT9E0(yt%Cj=%>RF;I*HWp}SNH2G-)37iK zP;a<;CK*7@d^GB%O(K_QQdWrgdp^zo9N63_^0Ro=_ff3hr?B_hNrj(CkjC)bOLDuq zaoD{|l=8vhjuzXUiN^W6Doe4E4<06)GbmTCow?i zkS34QGs!};W<+&*u1UurlCQSrPj@0BO}ouE9zyyj_07hhP-ZU zdCjBMHh!FJ?9Ccdj_Mkt@LDyQhGK>q^3NWAj1aX7T$ni?=_P041h|E+>PXu?Yq#H$ zF1$E^yqh@=7v_wFN8zckF!3qo0D<#ZI~>J zojk^yPk=3B?**}%42mw`Upu~(ILrclR9nNM%OMg(PqMu!K?d$DZlQfY$}wf)YNEE{ zD_AoqyJse7Z;9;T@xf5axMX?vMx(S3Bkr@KoqK)9tqKL@P-OXQ<%U*Pu05sRPVZL` zj|`sO4SVvi!R7)Ep}_-?c~~nzJd4qFk0hl+OwIc{Fqj%Jd$Js@mA-@8hs2&Yyd&Lu01~??vO)zPR zB=$DCCyB>a1GKAXVJ=^kFQdm7onZQw9Icxg@3?$Y_ZCpwX}SUP(O}oWpG-C!NU>;$ zBwWJ8QHsO#aBMC7Mb4YXIWXtEqXhnhMjptO2T62g4`D^Qn5N_aNykbKX7H?wI`i| z(b2a)0-nDplV-WFa1iiaM6jjvkXXH+X`O zwgf3t3?S^SGTGzP#RJZm8w>Jr4x3kOEowG=1vCH34udn}% z45%3UweO^k78v|(7rOn9zY_A;eTjWG<26Plb8C+8pVoj6>?|lx8jU$?{0MLonN~DC ztBTqvn@8tzNZhlwjKF6x;r6%5=_LrK%~E=ul0|@G&;G>q+4AMuuvj%eUx$oaPoEPL z>#=qv9wn={9Pzuo0rY)$(v#W;^I~6eciz#r*q~z%=sAUv%tSP5P@hs@FSxycigsfp z+xFH<2-{k$rY0AM*P zs+~fgY~E9AWb>>Hu)p~Y^cCDZB}diEpYY-DrtwlXJ!QV;(y%ay)Vv>CoFHgCv482P zpGJ0j?CN=8?7ZYI6%mcWRl-jKbSnpppz~rH@VtAfb{2)nEM183N7`ba^6TbStu($& zqRVhQ25pd7gCYf=xhXLKTb}BeG%sI{v%>DI4vY|A((w>A5+&0`5nleH$t&ZM%^AGp z`Pk2g_e9r%`G)>gZHCeIes0@55LpAJ z=GKRuUwdik3Y*xN^}wX55_r-#MF`uT@>I9n zw;h6{FZYIGhX}tX0U|)Nu`)@XPpRF1gA|xHTd-GonC?d)?vr{nNlAd`fZkr>Js?xy zG)lE_E48zONDUT464eU=FDtU{quB;yBSX9R%(B@@xdxw_4P{MbUnByO6XztVc$Gcd z9>z9AJq%z^E1$pKcebGdNH!>pkec#iQ%5EnwD*H15(L(Kn7GbMr0CHAy^UM-L}X_r zRBwae1#IPDNka$LA|>+lt{NV*o2|?$=l>sYlJA(o>Wj4Z>&HvZBVhL==W8wA@B{;~aF?H!xYuSRaL+>&&2+%x&Y9>?nve&qLQD@y`aRc@tGk+De)w<2K6B&dT z?a1F@TsymmwAe%qiUYCy3WuhtGsh>zY^6eeB&<2TOW=m_g|~!o7q9#Qd2_^VC9Rah z84!#o6a$R&p{*9kTGlRl%dV6{6(rlwKFLU8Uc0iM=tt7h7>k8ArR(C0Wk5s8lUZz# z8onwPr8rPXNNT@xV8LG&Irm8BWT-}RSA#2H`83Xuunbz+#D3$@_nC%uI2$u-eek@q z%kQ{;p$XNO0hRR>uWrRx=WEDoqRdA-R&hWbQu<2wq}p0n80Q(ILrA7FPQNK!iRg2QY*x_F@=hvG zc79@_S~R;NW*VW>pnCY#%JnJ+OJ?T%aWUkReauD6INcy2tza>mMz)Yi%F~L!`#6Il z_Hn(6ia01*Y1%0D(eJ9oeggLL9N9+&ejoaT85DiVx7)Ww)C)SBFtY`#8D5dxq^Hf7 zqVv(G+i+56e8}!3u2vzXKr!@^w8yK}Lj?wY6S`?0yKAUQB7P?Z5B=6nUMoeJ4me?+ zd*Sd{SCKh(_`ECK%tl(b!(SUfY*{tl!|4ce`JlaCK* zmajlN{fXLE$<1A_1hcb-ajy6S}TG5>**?<}Ra_EMeL!q?bsxKq3yNIg1eOVHUl~zP*`Q$$=aut{#PbQ@D>v ztR%RkX!+*lIvv6|Y_1G!jkbS^2sDyjB(3l%$fZk=)#4gen-&Kqh3>Q)w1`>xVaVg|Gtg2Kp!IW5~JsI zA-OA6?V=P5sv<>~UD_Tf0GwLfJr7Oy7%*dNxSfWT%twoQj=P%;n)~TjTIy z-br5{|1!ZdXMQKu@OFx{!XHq;P(YdU*N}_mdrXa`8(+Am>otbE)Wv5$CJV1HTBy9S zM4?Zz)ud6S>$;Q$lpq)DX(N5M@xa=XEh8f%XB&@2pWN$heDZ__BsD7uOE9T}tv;dg zJ3a=x$-gwu>w;ZrBzD)X8p_Rj9BVugRKy!;uuf#|b=-eZGpagDXErVi4q8<{y-ua5 zDH(~XLkbm08WRUk8EY(k^IRMEd+#FtsU_P zM7qfKV!Sb9 znR@7GTKzNQ#+-wgOPTqk#k&UQM=<8kk}H<$*w^0Ou>h%?+ulxWpW4>Ge1woG>oBUJ zvsC1}faJsHLa%%M!D95HKpk&HU*J+BN!Ill8quxmASnt1Z5artg~j;_V; zit}`t(})dQX!{8DmduH85aSU;Z|lrFyS)%GO3>pJtT9(T3AE#;!nAO4*za<*^^|hS zcRZfo*^mMGi`t66F}P%k`>1*zOX2YX6-87v^P}x-^tFj=anT&juWrTNP&ssDc%;40 zLe(+J<9E%@I7cQOY{BxJ2-I5*NUwrT7MH$4*Hw*ZJiuD@e7kL?=asOr0r*=+5~|x% zHs3Zo7!hTPATj$S3HeV-7lAe)1rd(QqJXU}NpI;Y^tuLBmO2esY8eUy?i;_&NX;#B zmG!-lvQZUNE}*_OWzEy42;`lzi|Bx1T{WQZu2m>QfpWHkxhj%Uj}n)CQN@VDyk+&% zW#IENnO2c{CVGj-wK?))Wl`t)3eYHFcnMgB`NC?I$x_{xfla4t%?_VEW7S%q@FZi- zD`OyWXL9|y$QTey2Q@l+SJ?U=J-eU%VU*R6F&BY^B}@ObBp_B=Si-J^d|Ll*iaZYS z0MI6vOgwb%)j6bvr$ZuT+C&lW!IbG7_v;)@((r11W~96F?x{Bvie>7Nh|T+59lV@d zy&R^RpI?0k$X`Yxd}C)P-xS$IGM-!_OF}~_Q!Og6;K9lA>HDnS*LSzPiC>_~Z$7s{ zN|Ct)gbGB> zstvl-N2n+E9AUfX_F7++4W8IVFuRlY=PsxHwjQ}0fy&n`8y2`_PB2|>Jjd3Smh@#I!3Y4%IHCu*sl z+Ff@KP+e4SU79|LU8s2rx{@qo#u6;awcdvxgS4ie_Ub?WbFEQ%LPw7p-AFqLcq~vWz?*Xr0 zWE6wf@zSU35L3<9e|5(IuYCc%SL@232=TtA6q|1F%EWKD=_dT@j??7=Vz!YO<8Aj} zQ92z7hF87f7IrlHz{d9rEB>7B>2G9#z7Tf&PxJ!cx`te71uRvz=^eT@z_Z_a1NR{J>+k3!Qec|~Ul_3} zCb8+qGGajU9sr1VI`(FTs=m7x#H%s<+2vx}RXcWn&V53E%zbXEmA*gV z-1M&AEAGI^)oq?>cg7|SPR*7ij~3_tfxzIOWd{DzDHoFcn(_S1jIpR!?{SaXoxtYe zN9%+-3>J~mojpQ2cBj-h6Bpk+v~Sv5Hke{!)$Ra;@9o)m&*wI;#mnEp(*7Bo^QD9s z^n&@z4EHzYnIoy7>x`&k4TzDtF1(yP09ysRUufg2VhRX0ds4Zi-iqp@KIc|08t)7Y zstixQ;b(C1(93E$xuBbO7Of7_7g{YRBPMV;F7&3HT=1&s=;)(z@_hW^w_XYJufDkH zlAZ8i6MsuQv~46+Nj9%2Yy2EB))5ywkvW{D88BSt3n7~jKdj&v5LzXtAGC04G-*>t`B=dV6b+F#B_64b`VN5b2~!(+#k(JqXZ@3?fA{5UK( z1wz}Iv-u<4EO2I_F%JU2Y57XKcbJ&xHiPKg(*581KuMG=AoF{W9-h@&tu$~Ywhe8L z9g&(*Mpt?Z%}sTg=|V(9dd>NirbhO86t^d)rWE<(tga1F7uvlpjI}Ye%5Wc22X{k| zg~tOEq4>7>zvBzcFOGy>X2xYB?A#~_%bWJJ0&Xr{utGx3J_oWeIlz!BWZAJr2ynqbJc3Suj&pB8uoWxG{9*vx@HY1w1Zy0;lo>)riY~Ru_{2KFK z(rrpgE!%t|dtYrAyY}tyTDDUJeLvm<>%Rnl;ZP#)<B5gO=Hqe-Xr(aDm>2eT<#GO$zyNc*IVt!||0&q{b)WpM%mxfDSlEx%F~`mQF>6_O z;s}-tpBHF!wd?9BzihoST-%g=lzaGp>4P?zGuIZToOJR|_MPLWq$pxMMPpHVc*EcO z1Ho2p7NDA(&@DcGGQdY!BKdocA@ZGOkLtoyVG2UZG18m4S zy=`0F{ez3C12WnR+vf%NAriO1y4RqhhF7a6>vwy3h^CC+cQtkpgsV|6d=UPkjVcX- z)yn%<5}b)TjP6%CCabS3X9KbTbz^_B6saS{d1$PVOSYpCp6Sn8J;MdGxvtGMHqO~8fn|K zmSskLnZ3S8LggTQtE)|aB_0a$p`3{_(!%(o*1kh-X#JA*IvsQ5+Q|x90Bvk>K3N`& zCAN4)QJxSHAAstv>g5UI7qt#v!%=rCp1eB{062PX^n4gt#_xd%n16@1c_h8B`x2Nq zO9WlE<-HDfwo0p`i|VlU>+~zFngd+getw{sLX=`2g1AOoXEhO8UIQA76cONKpa+8% z0st5MUboH7b?xqB`gYNRMtbm664Ff&&Kk?v`sHLP?&tTV_3CJYh&{m?$?78MT3K0j zPi*Y!trjaTFV{wZ47~=DU4)y-t=a&AxjtsmOVeWJK0l82 z*aoeRvIKP7_bZhFaL)asqoWfb2{|wkBFpYuH`=idbM|5PSxRrI7qzi}yB_n6H}W}g zbJLm$_BFA1_a(veO!M)57!N){IN8DM%Tx<>s{}K^qJ%;hhRq4qfdF^nUF=(*$K6?E z$w_|!o;Onu~^(aTQK>yD$6yOOip3Cui23KMP_T?=6pSmi+|%sv%0Aw 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 U$!In&0{@O3Ha5sRc=5*n16s<75&!@I literal 0 HcmV?d00001 From 9e3a86eaf71f8746720f087517cfeaf097abc667 Mon Sep 17 00:00:00 2001 From: skywalker Date: Thu, 1 Aug 2024 11:36:42 +0800 Subject: [PATCH 2/4] update seadoc Architecture --- manual/extra_setup/setup_seadoc.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/manual/extra_setup/setup_seadoc.md b/manual/extra_setup/setup_seadoc.md index c6ed7345..f472ddfa 100644 --- a/manual/extra_setup/setup_seadoc.md +++ b/manual/extra_setup/setup_seadoc.md @@ -20,6 +20,11 @@ SeaDoc excels at: ![SeaDoc](../images/seadoc-arch.png) +1. Open a sdoc file in the browser, and send a request to Nginx, then Nginx proxy to SeaDoc. +2. SeaDoc needs to load the content, and sends the request to Seahub. +3. Seahub loads the content from Seaf-server and sends it to SeaDoc. +4. After SeaDoc receives the content, it sends the content to the browser. + ## Setup SeaDoc > Seafile version 11.0 or later is required to work with SeaDoc. From 632106b4b3b9b6a858e3e8f12c6dcafe9b95ea88 Mon Sep 17 00:00:00 2001 From: Daniel Pan Date: Thu, 1 Aug 2024 11:48:52 +0800 Subject: [PATCH 3/4] Update setup_seadoc.md --- manual/extra_setup/setup_seadoc.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/manual/extra_setup/setup_seadoc.md b/manual/extra_setup/setup_seadoc.md index f472ddfa..6038a23c 100644 --- a/manual/extra_setup/setup_seadoc.md +++ b/manual/extra_setup/setup_seadoc.md @@ -18,11 +18,15 @@ SeaDoc excels at: ## Architecture +The SeaDoc archticture is demonstrated as below: + ![SeaDoc](../images/seadoc-arch.png) -1. Open a sdoc file in the browser, and send a request to Nginx, then Nginx proxy to SeaDoc. -2. SeaDoc needs to load the content, and sends the request to Seahub. -3. Seahub loads the content from Seaf-server and sends it to SeaDoc. +Here are workflow when a user open sdoc file in browser + +1. When a user open a sdoc file in the browser, a file loading request will be sent to Nginx, and Nginx proxy the request to SeaDoc server. +2. SeaDoc server will send the content back if it is already cached, otherwise it sends a request to Seahub. +3. Seahub loads the content from seaf-server and sends it to SeaDoc server. 4. After SeaDoc receives the content, it sends the content to the browser. ## Setup SeaDoc From 2b25c0b89301149f75cb79b922e3fe165dbecc1e Mon Sep 17 00:00:00 2001 From: Daniel Pan Date: Thu, 1 Aug 2024 11:49:48 +0800 Subject: [PATCH 4/4] Update setup_seadoc.md --- manual/extra_setup/setup_seadoc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manual/extra_setup/setup_seadoc.md b/manual/extra_setup/setup_seadoc.md index 6038a23c..e67b7b76 100644 --- a/manual/extra_setup/setup_seadoc.md +++ b/manual/extra_setup/setup_seadoc.md @@ -22,7 +22,7 @@ The SeaDoc archticture is demonstrated as below: ![SeaDoc](../images/seadoc-arch.png) -Here are workflow when a user open sdoc file in browser +Here is the workflow when a user open sdoc file in browser 1. When a user open a sdoc file in the browser, a file loading request will be sent to Nginx, and Nginx proxy the request to SeaDoc server. 2. SeaDoc server will send the content back if it is already cached, otherwise it sends a request to Seahub.