From a77d23b1bd9abd3e623e0f35a991e9acab7a7a07 Mon Sep 17 00:00:00 2001 From: vishalkadam47 Date: Mon, 16 Sep 2024 18:35:59 +0530 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=93=9D=20added=20documentation=20usin?= =?UTF-8?q?g=20mkdocs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/README.md | 25 ------ docs/assets/logo/favicon.ico | Bin 0 -> 9368 bytes docs/assets/logo/horizontal-480.png | Bin 0 -> 22776 bytes docs/assets/logo/horizontal.png | Bin 0 -> 61125 bytes docs/assets/logo/icon-192x192.png | Bin 0 -> 9456 bytes docs/assets/logo/icon-512x512.png | Bin 0 -> 33284 bytes docs/assets/logo/logo.png | Bin 0 -> 213886 bytes docs/assets/logo/logo.svg | 13 +++ docs/assets/logo/vertical.png | Bin 0 -> 32143 bytes docs/component.md | 50 ++++++------ docs/development.md | 14 ++-- docs/faq.md | 97 ++++++++++++++++++++++ docs/firewall.md | 4 +- docs/index.md | 55 +++++++++++++ docs/start.md | 14 ++-- docs/usage.md | 121 +--------------------------- mkdocs.yml | 120 +++++++++++++++++++++++++++ requirements.txt | 1 + 19 files changed, 329 insertions(+), 187 deletions(-) delete mode 100644 docs/README.md create mode 100644 docs/assets/logo/favicon.ico create mode 100644 docs/assets/logo/horizontal-480.png create mode 100644 docs/assets/logo/horizontal.png create mode 100644 docs/assets/logo/icon-192x192.png create mode 100644 docs/assets/logo/icon-512x512.png create mode 100644 docs/assets/logo/logo.png create mode 100644 docs/assets/logo/logo.svg create mode 100644 docs/assets/logo/vertical.png create mode 100644 docs/faq.md create mode 100644 docs/index.md create mode 100644 mkdocs.yml create mode 100644 requirements.txt diff --git a/README.md b/README.md index 8069cd69..c4c791b7 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Selkies-GStreamer is designed for researchers, including people in the graphical While designed for clustered or unprivileged containerized environments, Selkies-GStreamer can also be deployed in desktop computers, and any performance issue that would be problematic in cloud gaming platforms is also considered a bug. -**[Read the Documentation](/docs/README.md) to get started.** +**[Read the Documentation](/docs/index.md) to get started.** ## Citations in Academic Publications diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index b289d016..00000000 --- a/docs/README.md +++ /dev/null @@ -1,25 +0,0 @@ -![Selkies WebRTC](/logo/horizontal-480.png) - -[![Build](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml/badge.svg)](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml) - -[![Discord](https://img.shields.io/badge/dynamic/json?logo=discord&label=Discord%20Members&query=approximate_member_count&url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FwDNGDeSW5F%3Fwith_counts%3Dtrue)](https://discord.gg/wDNGDeSW5F) - -**Please read [Troubleshooting](usage.md#troubleshooting-and-faqs) first, then use [Discord](https://discord.gg/wDNGDeSW5F) or [GitHub Discussions](https://github.com/selkies-project/selkies-gstreamer/discussions) for support questions. Please only use [Issues](https://github.com/selkies-project/selkies-gstreamer/issues) for technical inquiries or bug reports.** - -**NOTE: this project is licensed under the [Mozilla Public License, version 2.0](https://www.mozilla.org/en-US/MPL/2.0/FAQ/), which obliges to share modified code files licensed by MPL-2.0 when distributed externally, but does not apply for any larger work outside this project, which might be open-source or proprietary under any license of choice. Externally originated components outside this project may contain works licensed over more restrictive copyleft/proprietary licenses, as well as other terms of intellectual property, including but not limited to patents, which users or developers are obliged to adhere to.** - -[**What is Selkies-GStreamer?**](design.md) - -[**Getting Started**](start.md) - -[**Troubleshooting and FAQs**](usage.md#troubleshooting-and-faqs) - -[**WebRTC and Firewall Issues (cannot connect)**](firewall.md) - -[**Usage**](usage.md#usage) - -[**Components including Encoders and Interfaces**](component.md) - -[**Development and Contributions**](development.md) - -\* Funding agencies including, but not limited to the National Science Foundation, remain neutral with regard to jurisdictional claims in published articles and software code of this Code Repository. The Selkies Project logo and name have been created and are utilized or distributed with authorization by Dan Isla. In the context including, but not limited to this Code Repository, as well as in the context including, but not limited to any and all derivative works based on this Code Repository, all trademarks, trade names, logos, patents, or any and all other forms of external intellectual property, that are mentioned or used, unless otherwise stated, are the property of their respective owners, including but not limited to, The Linux Foundation®, Linus Torvalds, The Apache Software Foundation, Canonical Ltd., Google LLC, Alphabet Inc., NumFOCUS Foundation, Anaconda Inc., conda-forge, Project Jupyter, Coder Technologies, Inc., Docker®, Inc., SchedMD LLC, NVIDIA Corporation, Intel Corporation, Advanced Micro Devices, Inc., Valve Corporation, Epic Games, Inc., Unity Software Inc., Cendio AB, RealVNC® Limited, Amazon.com, Inc., Amazon Web Services, Inc., or its affiliates including but not limited to NICE s.r.l. or NICE USA LLC, Microsoft Corporation, Oracle Corporation, StarNet Communications Corporation, TeamViewer SE, GStreamer Foundation, Fabrice Bellard, Moonlight Project, and LizardByte. Every best effort has been undertaken to properly identify and attribute trademarks, trade names, logos, patents, or any and all other forms of external intellectual property to their respective owners, unless otherwise stated, wherever possible and practical. The inclusion of such trademarks, trade names, logos, patents, or any and all other forms of external intellectual property in association with this project, unless otherwise stated, serves solely for the purpose of description and must never be construed as an indication of affiliation, competition, endorsement, or a challenge to any and all legal standings of the trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. All project contributors, maintainers, owners, or organizations agree to not willfully breach or infringe legal regulations, in any and all global law, regarding trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. Therefore, all project contributors, maintainers, owners, or organizations, are immune to, and are not to be in any and all cases held legally liable for, any and all jurisdictional claims on trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. No component of this Code Repository is an official product of Google LLC or Alphabet Inc. diff --git a/docs/assets/logo/favicon.ico b/docs/assets/logo/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c46352cc5bf06e605b05bde266ce1133534526bf GIT binary patch literal 9368 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 ZL@kjn-KS8ndEZ+ED9fwAt&+0{`ybWrT7Lil literal 0 HcmV?d00001 diff --git a/docs/assets/logo/horizontal-480.png b/docs/assets/logo/horizontal-480.png new file mode 100644 index 0000000000000000000000000000000000000000..a84372d5ef2ad77cf792b4eb04eccdf6e914b74a GIT binary patch literal 22776 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 LHI=Frtit~X``p{m literal 0 HcmV?d00001 diff --git a/docs/assets/logo/horizontal.png b/docs/assets/logo/horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e87fa6f3d02a5907fc8e1aa7052cf6dbfc4b3a GIT binary patch literal 61125 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

n>s3$>0|weW}T|1uidtlqz^mji5#O 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%0A}9m`g9go5^QnWNOQHjV?%o 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 TNwnY^0D0u3lqGA#O~U>Mx-E8O literal 0 HcmV?d00001 diff --git a/docs/assets/logo/icon-192x192.png b/docs/assets/logo/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..889baa25caf63958bb6bcc8ae038aa3c59d7ee95 GIT binary patch literal 9456 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

9wBhTV(I_oqj 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 literal 0 HcmV?d00001 diff --git a/docs/assets/logo/logo.svg b/docs/assets/logo/logo.svg new file mode 100644 index 00000000..b8dbcc98 --- /dev/null +++ b/docs/assets/logo/logo.svg @@ -0,0 +1,13 @@ + + + +Created with Fabric.js 2.3.5 + + + + \ No newline at end of file diff --git a/docs/assets/logo/vertical.png b/docs/assets/logo/vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..3a31e53557171f11bfa8ebcb8bc7da7dfd251a91 GIT binary patch literal 32143 zcmd>l^;?ut*X}TMcXziS-Q7r+fOHJq-AIZsDBU34-K_{nNH+-54blzg;eEgFoIm3H zz{NH5#NK=5z3#QRbHC5})U95{SyTTLiD zobF2}-PU$dH=IH#a##53XDd!3QVUX2Qf0S9%aIg%{rdY8(U)pZhA|5x0Y{DyTeoJY%4B z?oBdsCJfHyDXO8AW}z+w)w=5j}obv0Zy#@_k)UHcT_<)NLn%&PZXj~`c< zv=J|?a8O0`+TdUziey|CIROXAr#Bs8Bh#}TArXJuvlSB2eDuQ|h6I%gF$7&*a+qFT z&41ak<1qK0J;ZEP(7LTm#9w>Ayz3WAwXgUn+zt%fNT-L>F`<=Q|@l@ zsv|X7*~wZ$Cez&Iph8$BO8qOiqF5t;?*Ko^!DcH@T2|$50`MeoY%+5GJ0(Cf7sxgd z5%N2jMazuVJIUE!jNW^Kd4ytls$%l?WAr}zs?Gl#bXk~h;$_!gSZg;+{M4_cAw|Uo ztlsy7j^lN8Zm_<7vS5T3=E$3@fB-+;p|*DRP4$q5%k)Esr(rcX|KOWL_6p-RB%9Ni zbf{)6)<0=Ly*#LZW`Yf~@twvO9lpR8{QPp~{en8IYQG`@p>-Ah2pil1Q?* ze=B{sgf9+vfVhDyeW2tBtgW^DoZp2NjT?G?bjH1tQye+-X~IFisA!i=H6v%!U4}`u z{M_3TPMwgpZ%w+9broG!+uNe-BWp-c&7IV6a;kt8{vuXF1`PTy20P;}hXwZtgd#Oj z&$qIVNJvv{JWDzwXIq5E((RwNLkKR}_47bAJ0;uR>Qn#y!VGm0N+<_%G;GQoVDS=3 za40eL%8c425JHLsBawY2L%&sxkYNvU-27WO4OwR2+HtZ-3)zc%!m*#LbJ=g1jAQV? z4@kh{1Fw&#!P#-e#Gr6RamCrfZ*vo1$A(Gz#TAz%3!p{|5X+^_4m|N{UQ<8dva{Z> zfpd;N`(J6A4Pybu&Q(kx8zFHChcXPwPSD|8k8E6dJBVYu2`Z8`F`x-hEbnnY9QO)3 zJ0E9nGs{Lok{$R0NG(c+jsq!Fn^8SW+-&ad)W&ZKZFd`i04*=(Q$%!oM{`X_oBQEL zl(}X%UdH*Wlml?FKvGl!p`CTpW2_kgM?EnAo}J1?9kauTt8Ewf&%KP1k^0Bb%>=^Z4nBSSN!-JWl2@s&FYOLNjNg*BA5e@bcJbX*xb?MF^#m6#3`Uex^%m#YRpgM;WP7(#>{8xq zLV>VTpqkgnQ{%R=IBwhAm?&qILItj!R#BdI?ZYoIHvrks z{pdTtOZkMgu;Oe*L1Vb_Dnfx~9K{HU56D|;0w)PS&TTOziEUl01bz&=)pP#~bIyty z8LN`bP#HX*MZewu6TjYozD&c$JacGy>CyB!e{wbcA~=(I?oN$`0UUo_J;6I%Vi;TC zyRKm1)Utt}ZdLM4&}US4mwC)LgT#!gh^{A?H`8;g5vOZcoT~=)1C}FY(6JO9JrCZ% zOQnPGu*_KXm}U7_k3s-E>Y7$P=%-cc0@np4oOV0@**~+=gdZPP9x_Sa+8Z>PVEg+a z{+pOS-MG2wjD8NKhB#GYi_375U8hvDEAM(98yJdjoEL^9F__9FzOxO<@5E9N0>i`0 zZtFl^22)bB?EATUBEPvvcnUs0ey-X0Tb3+&=59LIp*+8Fy(SjPt|I)+cIOC{G}1zU zaQ8*9qy#b#Eo|sv!s7>=b~Dm|1qb{|GS6kI^WuC2BZy2rW%{nzW(5tH6+E@9VJ;)GcH8nuXaQ09xL2O++S~U zJ)dwgi&a{dj^@=-2suPByjR@bp1U>BG}CfOzpQr?x~>&Co4Nd=IJcp#2kCu6Z`vn!jxiGN30RQq$+~$V zHYIocBF~D))&A|kYzZwZ_r0TSM_(wRu?e)}`I5)$=!j>tbP6Qt*{|RUsYCgR;+}`uSGw*IovOn=;uP6FDN>y=KFtpR&c5yYK5v7@{X=tdRhr7JUMe=wCW@ z9<%Er-_4SzWtOqj8-LV`hO>s#Ao$%ZFCLFXaH+`7PT=}Q%>(+9u>a_%FHkk%gS|iP z8;{N8BWrPLo|?*RfM-GJjhGFQ=rCXmw`1+sW*qh}D*uM~{`L&erw%&%qwIRnX)HP)mWdbaFN&-l35>EY>sGnJ& zeqSUO3*y4UsxZaf#d&PFm}2ISP02azIwG?VY@dgX`UEtI^E3BkxkJ zjtQ4to^D&HQpZ?H6!y9h_Ix6!?B=7(0e^ZCtT$ z^-r9*b4~Cu1SA*Sh-Y$~Sk33!s|eB5P(YHAGJSUvo(}0!@>@Fl8i0T3EeQJDpsS-o z_8FCc>@&AoRwy&>pxm*5iSI5hWX9c4o}Wj{O>-b4)Qx{msksz>oWQEe_;%f$I**l z#h=bKA1}S*!`!7AFQvnCnpM_T{`|{W8AzIleAM&-_Gzx5A&n%XlvnTOl|mA{kl9{L z3E3u%f6vjs&m{3nL9MTjyLh9xV!Zb|FFw;R%uW$ePMbkmwVvH~l0)e=ozBWJNwa%B ztuV5O~z7erbbc!hUNd# zsvy67K^T;H5&fOJ8XUGFne}gutQc^N+jNl#W+t9+I;QQdA(X%~s76Cg8eZ+;`He?kex`T*{HgCPJDOGkqO zlZd>xJzWzto|0l!mNm|Bm`2zC)$DZH9Ws(3ADlsl@`=P42r0_$SYT#3)5k{p>USf* z+6g(iG~ZppX{DMHUGu7B9zx}pBTwLPjenwt0ej@6dc}9PNLzXYsd~TtS5tBr8%!!l zlN-OCkmnjt*IDiNRJ|$xMMw^K#iVOuO}K;<4pW-TXc_!wd;qb;kJBfHLKqsXC8yKi z`t8J^=s+7d3ZNHw^}?k^n48%Kii^s zY5xf`nA}( z_uxg@pYSBjtia*lyRTEdDt%8`CG6vq>G2mwsi`m)$e@}rShZ}SA7j!9@wG<-Kvatl zO_j-6ADcXRYD79Zd>1wCKQm9I%L10FPgg`nZK?=P*5Aa)eA1Lt-T$OC^mLrUgAJlV zf9mQ8T5I1aGpuAO_+=#q$a;r687Csd3JFh5^zh?Ke#{{5@c``zDE2c|!0g|@#V5r# zyQj8)YMI~YDAA`-0eiu*#-a|FU_-*g*M28{N-xTOeEUA>ja7!6X=zWz{!aFxN&8?U zPElSsaI*mQD4i5a=r820WEI2rJo^ibFqU%9O##@HU^v9s_>9y)+>{}3#{G!xR(9Bk z4#Zl~R8qY%;6z4AL-}=??EI1M~c=qEa|&(=LK^ zs=qSts7HK?OO0gvckK$mvvU?WWPRiuzZka#M(br@s z0V*sLDB`5%Y=>ik7`cWPZ;Qb(4f)~E;Eh!~D-cUp_-_wfULSvxUuw^19?aAB%_@P&_RhQ!Xk@ z1r}2d;ACxplVOJ(J;^!Xfs-crChD$MMLYCfs(K1!ucK(KnJ8s|eYq6=+zO;NRRO0b zb65KsHCW9Jubv{I$q1o6{LNUs9uT+t^EF$~N~|8cjH`|wo7 z26D_I%_J$b83uGE;x6d7=azf#nisQ&xp+Rezq)942{c+sKzPC9?JUg}fkR;=4-N`i zTvr>Ja<6ny;!LU=oNRdr9gFlnIXSdc>ums$y` zyd%sq>XDntjw7d{({A~nB#;$>GfQQtgcE?@fbVdjZG|q6v4|jA>9n7rA)2HuL63W` z65fVnc8M$rS->9X_-jj3N8zlCb;x}Gk^0H4iZIcp<2S`RMY%YM~s)93%hH*`z1lNw(GT$QbC z9UOhH@(`IVskxG2hMw4F<;#M@J|jbE&L?I*+r2+cXAs9Y=jT{08~S1#nkF5fs%nm* zmw_fRd@=Gf^<8bXokv5zKCye*kj*iI_v{t4ipu@Kwcol6V_C%0>cgr=a^GS2+~ode zsRn%I#wW1)m{=(WWL0Z*4aV5bN9R;n4k&3fNcub1({2FX&}t)OaLU$5#eP|Z!x-fq z^Q!|6ujC(<;+Be3wN}>tOKFU)9N{sX!&AHD`WiXrIHI~dUB7Xa$CZ+@ldSgPw)A&O zn}l^wfwf9gLz$CX@Q6@bt=Y`GFJ$MMJOLhFdV2r#b&UIuB4qKWb6}I4T$2;ui%8u-bs(M&M#KDSL$q-D3_z^2 z^Em&8g``5&aMa5jv1x5&p*-HEJ?)_NjqF*Bgk*0qQ0s81WNO~)+Ko}fiZ z5`pg61GVkFZ$^$7vvwrQ>cg?)n#V(RT+J%6cKSxf<2katIAmm0T*FC(B(Q-rGSGMW zJa`mwg7nE?A$i;PtiokX9vovd0h zM9hCBWaxD!OR}H%p<((TE*(1hwP@4RbkrL}PNH!0>+tmXZdCw#GAl2c$FOeOI4{>* znyrmpDYG+VL?`}V6mW>8kQ;C-86l`c2-!;dBQ=3SE^0uzVp67E7UU-(v#fKFg$|cKV>~l_-nPs(}4Udv^s^C-_xPu z!B9q-VopPnt_}o*TmsII(WZgmwoRxYo%e?;@98PGG3wvCWGt;Lg>o{`v0}CAV>{z( z^;+-G4CKMq#*6D5V5J~EX{oq1RFM!8l7)xU6txy3^iKPDli!+JT-aYs4lL`7_sscV z*!>^Zr%_Q#R==d^`BCI0%e2jO=6)FF)OC2+IMbS(#b?Vl)9sIyjX!L@Y#7yjH%!V5 z^AUDn_xG{0ntT^7{BWE+fn#Oi)fHc-(cE0~x8;1CnD+#X08rRKz&YDck{Ev@ zy7#NoRsKWjSEGO;;q{229@?zYwaKQ6GADx<=v8KzO-Y>a5i18|3oqBY`XZinoUSGo z!K>2Wci``8)nUR14Gj)CxOXQX%;}2oSmDf-sYH9+27a#8$*-7APpgF%$CIB?I8*s5 z_DMi4UYebJp8Y}K6LMWLuPd;q@S!4*I}Q8dD?LaKmb$O=#~eLhi1h`}JcIG~GJ$JSVtsl-n|Ai4O_}v+?eajqzKw?arTJj2+k&@k+wwWrvFxIHZemet zUU;i?@+QuQ>>XnM*YO4FZQAK@uYMbfEgPYL{BDem#3Vp_u2s6nOnF2IrZ81DLxOgS zMD&z2@;=Y@PW0mA@1V~mSsr#LX=Nf6!?Dd2cW>Un;U&4Q&BdQ~iM?r3q*nyE50|NQ zZ9Ehyi4juq)7!_o)%{KX9hfk5MR%2tHH8MDI~>q0dc;C_l;;l54Vkk5!i-?28saKa)G4L zK`d!#=cmEZA=dI|XwFx6uCF=5ev5?)=vUs)H`lZAPedW>gc7bQLEA}7j69;7jklOs z8`cSQ6$*#@4*GmO6}J8Iip6QAxQIZc+63vBM+?IksxD$*xDAqB#>F0)V^|Kyb-;tJIK(8D)CICD7NHU;oIDu^m^QtC(!oy}fc*8oqX<%v%0)UM3?I6|b`D@t^97 z`V-QO2d|+d%CN@tYEk2t zRTf1SKoW_=S+8P^QOJ1NTRrHiC)<@Cq{e-$hb@ch~o~O>dZPv9^BF!eN-e_v~H{3M#Ue*gJ2g4QG+xi`<@Sr@o%0K zOp!tr0PFz`Pw6DZ1jCUf==#0CD%;=hZ&`349{ku?IjNk7jhS2o{mCFfbZ~e(f6W_j zg3mdmWX{SoH5d)VUZT)s^8#x13_XEwJ0B|(G7hJ>+~PlK+D<0XtRaQo;+P_KKKwbh zUlk$TTfkjwFKU)~&Awl&Qt9dm@qe>PxULfm_9r?|HC`@`m0Am`Ceh8Q!1E$Sb_H*q zkdN%%GzB!XOn9?+Iojm8 z-O82_0UD`~uV|hsQi&c|$XcsDlktEU8!g`ls=FL&$F3+KrljDj* zO;ukF0XsmW1#*m(a*|YC0dqQfrW3B&?A)hBZ5~u8AJ0G0BfF^XjqRv8Ej1kXy)+bt z&?M0Vq*ZgFe!{!b$Kj3qgbZ%?0Wy~cgkuFPF3W*TOFmUkPlc$r6Yk#AC73}Rvl`LQ z>wv+NiLv@}n}cyb4^Rd@_8Z8}&9pfPNS1RI(E;&XrI;mzX3P3SAkfs0qLSSfM$1SyoYo&{1%DoN~os zg5cU+wu~lM+9vQ98~kp2+!| zk^x;aWFl%#96(R1E8qz_9>)Os1<^}lI8!IP5e zMFUp&otIW#n<{uM)eb4Kpsz3w zpq+2TMWdv|@VMpfF%{z@?4tkpu+CwA#qwKKa>Sg-hwum>_@(ghcY3~Q&-6y6rZ(jR zp0UPN={&z&ah?9$FhFr_LQG7Y3Z(uf`*=MlE`1KOtT{Kbz!9vocV+O|@ak$a0ryC9 zeRxO|pi(?1RQ>*K-1^~Slhka{6A~4*Oe$6W2-2|96WNe>lB@3N^L|6UZ#8X-6G)-& zU;A{d^>gfcBjnzDl7bc(&jxb3`+^{yA$sIF-V_A_XYg2oT#cuL&pt`pd+OCAts0;b zVYa+@d>b{lrTxy(QhB87D^C~Fumbh5tPV9+4Cwpn{FT>83L%G-o}Pbc%l596Y2mA7 zC*=V+?LrA7EkjG}sXewbpA}!58C2JCbkQ`#av#k9xYPAuti6U0Sng|u}{e3$6 zL5J&XZ~0eBV2bq!5eN6`7H_i+9}c)$bZsn-!(?@NxjB%IeyBx?>eXauza>+h?!=1z zi>~|#OJIecY$BP5)0WL7iNB_cTIdl6g!sY7Bz-z>jDCQC-dHT zqWq_QEinuPoUC&d3DAFA-MuzITofUhDN+TVeXaO?f&FTABO`(S`!2IWKpnnB0tp9A(Q-y$r^=qel`?Vof&5%c*DwMB+hRl=}tVeLesC%Gg z{>=hSg+{i71cvpgzL3OU>q>H4!ty17A$V`&HSzjNQqGk()7FR9pW7!hunePV3K z*%Egx)WT9}n@l3E1Zxi3jzqm@|0D zMLS4>Cg=VwslA)hh`|OI1DbX~k+a9+GTWIyWz4RwQyPSzv(U(@gO!?^c!NFcoJY!& zt-rEli0n>v)q+Q&KO|KM9R@Q!e77bx7$$xToQhV?CL26J5wL&5eSsQ` zZZ(#Y`oXf7ARgNE)U-W0e^OPH=F?;6w}dyzZm*qm6!O++U^7PjogAHdntG8Fs5@l_a8W~CKm5UojX|KF_sA6HXhOqLo;%0yUz9gg zrbQO6aDD4ORkr;XgrF)>>wT7Oq)?mJUQtRGe9uUYh_#*B-Pc3V0vl6Kw52|{@JQO9 z(oX*lNnR$?-MYC`q@zAyT~lQmT06#;hAt6iBs~9|=kER|7bL)DkAuxd4*(!l8g59+ zc-DK(w-)KDe(6m@U34F_8p|gn|wtH*KerktHkZz}p=!l4j z{QdpG4BcWyctJ8))+PQfS0@vH_e4cmrMFU4=73ew%2}^tDk)zKq>cx3u{Z4T z05xfIqNl9AmVa}0onzm~$Zwpw)}2RG_s@f3FiiGWyjjtOB~NumxuQXBwx1M6KQe3= zqQTfdX%?bgr!i+3d+oK|K(?SAqg?6H=EdcB4ni(3Ios7po)dj&J0jg%+&%B1#jt&qKIQS#COYe;4cj@893Z}_CXe@&x zj`kEigEI6}tPnOo*#@gDyya%%s-NNCp2u!loQ>W1+B234*k!wM!RtWjO!lS>&d+&N z67^)9CCx|0;bs{LA(mZ5g@fW_3PD44y)xA>Gi`ZUGkX@N_iGzuwchCq72>z6mjc^< zSbk7#No=z0qy_-NeY9%_o2T9)vbVB!xNKAnM_*Mb%=A<|N0cR~Fg0JltDXWl?GkpM zxsWP}p5|8bYw;xP!w(lcGi{EG zi$=@hzO!(3MbUWFoX>fgV`?M(6foK;ygEAtiqN@}lyS8~2jlwT46YdMA%Kx`;d(zQ zAC*cU!tgK`J(16Ad{@t!IPX(C<6Pe}L@B<>Z+P9ud>OF4P~HMN^Q!J7O8U^wbA1S* z&X^w;g(Hs=Hq6vSm;0X^VZJW!md4Xk=HV#G*8uWk=c~>Kv2Qk0iZx49ZkV5%On8pM zSeNH}y7F4QN3Q8)m|6N`CG=IdN4Y8HFJs}~R+!7cC-zm7sWk_mEjd22GU)%$UYDQS4Oo>8Q&Z5TI%d?)q*xT`MNB}O? z{snTFp|b|d=Mi7crs-e)T9y^2R12IhIUnxtd&AZluhJ4lK1~;I->9f*Cgtm*A>*lK zc`E^vaFq0MO6KoXzT_jTL+832<64@Wm(HWv1mmIjnoYU@;cb7H@wO<6{5n3{ppWX}cMcoB`@;9m$+v_#i1A?~hWy=beG@sy ztnc*HQSiXjuSz^&NHBiyd-S98Eb5uxc3;aPH6sB5p&fyssk+C63z6R2pG&19_Hj64 z>L8I4fPs*KwL2V%nd!BThtTfpS@B~hsPmib4;WM!tw-Zt>@FqI^t*9Fk3R;BC~0eQgt z@8RjebKLH`X@q(G4Kd#b{$z@Y)b&{WnZuK2IfzuFsxrUN_rGe4t=Q~2itS$QatyY$ z_uJGeRo5*Mw<@q$Ey#ZDJb5@=&HNUd;(@l zUUa7$Z9}Hy@)>gxPwWg|uAq_Lqn*8hbTmUPbJThGsz(3f9ydPqgmG=`21t4h{$1s7 zZ)Wc(^1mTGtO}E+!v>l{z*)QKw|=v+SEPABcXEzO&v}?cuR`jkWpiV`0au znr^gSilO=QYOH8Rz*f!*9nadiP>0K7D#kjeQ&L=Ad0-5b%9_blNYyBpo}qNSwXIc~ z)W*85zw3%-8Aat~tjMIXzW9J?`!S2T2D1i?H4(_Ee6tq`S>DEf!fg zF{-eBW>XYHXR_+?TOPa-%_($|sp3S&)1mN^F}^$6g%QQjuWlvPa(wC%4(_^Wh<`?D zyo_Wn?qqzmStC()g=4(s~LZ)+QLd^%jn1+TA7IYSZM7q{bT-&h=Yl2%NtCegM=l9A}tI zV)CE5b)CI90ruF9quv}Ml@KYqEGFiuHge8iSr)B;PYd3+z!17QseG)@lt!PD(-i-T z@nCwBkz@2{?ZCnBb6`Zbi$NdT+(G_rqDztXeDSIO`*UR{66r+1ly`@Ai(-1ta&$M;)U?^sfk#@TdSB@v z!|y1_4AMJ4`zlb*F}sCnJN6ucTUZzIa~$t(Pj?y93}~E^;9|;EyWiF{?$p#RU(hpI zHF|kF-D&I&%u|5>Mr&%{y+e8rv{6iz(`mnkGmlewZfjIk0`$c<3Nq_0w?Trn2>;G~KrvJY@PNXU^o2woMbCf5&_NQW1 z@O$JZ>A@w%@$11)c?@5Fh;UEFc zCx9angPU2xb&F#gRLgUr2yp`iWjmsMUsPOYCz;@|ED@jb%euED;g>Eult=^jnozF5 zn-+kNKs?o2w2e%ERnVb?=5MKp%8btgJ%E?W52|$I0JO^hTqMbEPC4_YH;9~IvmA`S zCLcbZ{6h$Y3sXLy^i-pL@qNr@tB!xPEh+jLE&@k~9b{bdAKa15dpLOmryB z08@+FE6%fhyJlncNiOJaAONtY-w+mhfI0#uw4nD(%aX0+5(a6qj)-3{sTfCZL~G6} z`3NO2LnJ}Ipl(nSj4Uh65p_Nnd{eLJ!wKxakY=41g6!Kj$$P<34bvOsF;h!CqNFvbd&r$#qua?b^g8IMa{I z8pW`G#mD4fPI1?%Y8L5x#xX8U#Yg6j1Qx&6H+TlBy;mA;L-eQ0Gk_TesS`H z586LV?eE*9x#LRod@?u1Dz`b!bq>|+nL%)PA&@6SZk`O*Bm1|vEI|j*SG}J@y6Ud& z3;*>{XAua$-^MVANueAM%7(5ChGK&D5Y$Nu|MJ1M(p9yeR7sqo@lpiG6gNJ67@5}) zm3BFXb)QJvUEJLH@!fnio+e@*8CqefFT^reaQ+p@ncv?e19HTQ4k`F{jSWhbS1473 z$;IZJ#%_9SW?!p$p1n-tHV}yfjsV4{eDF?>7YghRR zPOw{fToX4Mx*E)wM1>7SN&%|6Fi0pQL=RsbU5Yu08|(Knv;VN3j89JU9${pM2t}Of zd7SU7U zu1@GTO&jI{p(qlFc+DX`LyN?=S&F?{C~2~JyeJ2zU@;xg>C?Tt*M~W|II@ykIr;_+ zyZp1*k3y``7{cF75d~>Ge7V-jB@B@ThM!b$@p!NX+O{_(!(c;Tq*}OYBR{M`&xone zKF*9^mD79ETUxw(`wf^b{m(BVYR6G|$I^=>#I;Z^{)8&5y4>g0<{)(>{UD?|;tIKO z9Ij(XQO=S^Z@S?9I|OP__3C^qneGZ6d1zEU-CiZUehe0n+u1fUwq8Y#c)(kC02jmV z(MRCNxEK&c+d!u5;Bi)$l79EZt zh6JUpKew-4n&2JU>Pcdqef5`u5bmsO%y06{4xl}6>zAoT(%mfCm=lmTyhM66E!JiG zT+LH&WeDbtzS=6Q@M0PImx7S(cC&!g;_jFA=ukzNKBQLb^no>)esZ5yjR948`Ce9x zeDT(m9Jil8s7cYAoLK}A;kz+~4W9erPtgR(SpBWP<~&Wmfp?$^i5EQM;-$P>@2$v2 zS&-?Sgc;j!hg0`4t|${8>@dHXx@eHR4qOa9@9R+xqJ$49gmFAsGjX5?aQvT zXc8uhBj-AtIeJriJ_4SFWN_^ay4B)gxcD*(0MHY8PD%>S>k{PAV%&8L{aU_#RLDr= z9Wv7b3)goU`Y#Z$z;W8Lk+u)~LuW~v?|+eFV$ygBc##yEAQ#p1W(P?n61rbjh%jKg z@QgljNIa29v~mxK!Cz5-z2-@}=KyI1%B<@%Q*JIIlzQ_-T@wnKp6yP?*w4&AM?ngM zx}9nDB1;#mVa#UY4UG>p)sJlKdC*gd5PVEE@w^tIAJ|oteqd zn?{pw5@D~ZI%7vMA)V(UIiV5U`v}4xZh}R_XvMswIhe1;Jpz$Qd62p9A5m_IPDDsRJZd7?@v5y|4dDZZH>MaG^Ts~gIj!<%{ z@i&Vw4GkC5YUR2rw!2!tH!!b#C+{~0ND8?Py;jBI8v^z21k{2cUv4}C6WnXb*y2wQ z;BvKg*5sdSAPB#McZoSM6*|eeQ@a$oU8q&69_YxJ&Q%{@Ia2Y9QhV*(aSqo)bTQd* z+>iJ_AS74p_bWDGHjxLr*`;64(sJ2Ep3DE_6Ayqh?w^+w@EiC?MROJYz{0{(u_3s8 zql~HnU6mSl(M^>uDD*3Sx*@-E4}!_3lwEJkUvH57dY@Behm2WC;}?6sq}R6+WrcX8 z-aGhHmVQiFORM-6jDvi%n*hu}{M7;d%chYA9xLk6-^ED;(yjZ0 zA7O|X0-HL~AtMVX@jlj1hF$GY#HsW5UjSr^N<#ldq1@HD>RW8dpRe&b^FF6B!kDKD zzm4HN8>;+{k65 zNdmVrIgsHNO|CkBYBZBkj~)-jc8*9>JsKWPJ45NLLm&qjQGPr#VwHwAPN}O6Qo#%+ zFsq03M>+_OGvAELex0$xL%hmeuE^ATQJAj04Sy#@1+XI5dr*`jyNyA-dRG@ad|noP z@4^r~m?Od@i6|X7mP9R_VK|3cXf%CP0H-wyLaYR)6>E8qH}uLu*!ejgKC1pB2Ee48uef{tmJ}P1D4nBb_B#*5EPG^Rd!&KPHjV5Di$Ms~a-M`_ShSN1UK5K5r8y>Szi zm$^uAq6Lm;ut^xUicRpqUK~b{wyeMx4W4b5+#~zc>vMtG7^Y7y|1Vdj{pYJAN1W^siS7F;M!u0MxPa)(5W^0i~Vh-Sn*h_P9eb zw_Q5q^YMw5(HMGHm>LpR=#7bQapxKvcCRja#9PZrx5!6^(WahP}r zSf1g6!;K0N4eLpx#$Xh?0$cQYpp7t5Gk}h1MRhh^rk9_JUc1Qn!KxE(@YAKQ7tWqp z$u)VG-;l{2yiV}SdqmrKY@3|iO8IZ)(5+ps5Q?b^!r<8lS_obHwQ{s$uA>g*)Kj^OcA(_!(-8F7o8(k&qg)X9bXUmNp{>~ zB*hT;rq;4m5Qt6GD*RsJYKhV=HHku{!r<66ddb8G4WtymA9cnL-co!%3!qHQYwr~- z%$5%kkjl`D>x_T$d3LfXG?LIcosH1soER@yYcW3B}S*V`hMB+ zm&?R0mccK;W=Fky69A??mibYmxXKeJ(fXYNrSSvhJK=1MAbaoD2lkkdQ~+W} ztj`pX>`*vKbP=7fzg_hog$^tke(U`t_jp|7`_WlsF~JAx`$$=iKA*Sd5uV7daG&e1 zBips9@%Tj!}J_OWtI0?k}LC?xvTU1MZO43u}f>`dO|_n2-%D`ZT&?-txAB`dE(y6)a$&aJil_GFpR>r06+}lQW zOe_HnuL>X~1?oAAKHlP@dyo7a3};+Cp+Kl)xM;hVm+5!h^{6T4BmM9K*Re45pT5z3 z_QA#&3zO;(!5}9W)XgrAq2S#>SBg9LsPRvyf*GkVak#8L)h?*sx`W?^SIn&at^ZEK zmqz^9d2D00740hFZv~;J$MD@S30IB*hiIBbFx{1m>9&d!IHT2~$T^l$Jgrtp5yRnYo zKgvyrKImvdXn*rfy&odYNe2#)YP$dR#_JJu>N)>dg@yWoN?mGh)3z)&ql8~T|J9c`0P91#sZx25lv&V2lHM;j9 zFKa@4it&vtY#7`kyznWx3-WYe;9p9Z64Aia%eFt9sAJo|l?%vHd&iczku=qBql~o( zoeYtNXI2GvX*7RgKZ+n-1h$fkD&>($;Iq!x@#mml;9mcI`vqhsU@AO#3d^%7D)Co1 z%GWmoapHlz?m|y3dS$dPtzvX7J{+t)rq21g8yf$F9AGf3h)z&2w!388di0z?|PAXahgwWKGgMl)U6+ z!V{)VY1z~JH`NZ5$3mK8;ZNQEegVSh-aF49Eq<&Ioc^TWw#L&q!RSWI;dw&IIDg~) z??H47uWUbz1KTBb98<5&dNAM5& z7rDz`Ya|AfCnC>i_|y(;45IgnSf6nWCQitHJLAF&c111Xz&f9{@3_b-Ghsp8k^qJa zaCz!P9OmX6|CQr^6@MA@wB<4d@;hdC7yJ$tyhCTv3@~x6l4d>bTO8Fr0J zH&9#qwjhe(|tY=Fi(pZv8Sa2=;LsZ{N@E!&r#>@ z06DoZtr~<-H$?FZ9r|;%+J$cB4YHA^FF7H~Px@bMQ>TpG`pp3;HKHTVorObg=QyQ$ z1Jw5=G*{Hb2NEhJghv=EVZ~Dpwa))i|4(OM*%e0@bju9x9&B)z;O-tII0OqCB)Ge~ z2G`)OfdqF3cLsNNch}4FzIWXpaJ#RzYLuHC!p>`spquy3srsBXT#kAYy3nGbJy zwnN$+Z4LB+CVb-5!}qb_7ft#aZnBk28XE=t;{h48j*9}wI$Eb;yY)Py9vPzEDhT(C zE6joe2~9rk)_rIZ?|ufYku-_FMTBFX_~wJc8%4cqn;g8sSofx+nH=f&1?|MUmNu-f zg))lB4|C_jIs*FVCCR)!5WYku&iuaoWL=by^cfshase-Y93Jy7~ zyJ%0yP-_6DH5c2NK?k|Nby4IWjB|QR1k`@GLc0P1po>WNTwPeVV`m~^^{#uQWYvxe zzaO0XBf1milEC(H5Tpd%-!yISi?r=MWm3!{n|n$c>u;JR5~e)#oY3Gs;H!dvce{em z0?27=?fYmkTp4%Un!{p=6+6xLPS>Y2(ZGb zBwP4d9H>W!-(-R;T?G_Vu0AH(OR0N!kw-UB$V5Xht!7NKWeOn2BPV2Xg6?~2L3*B2_d^bgQFi`k}p$4hyZ zs$b9k2@@gSExd+V6`xrFgXB$I==L|6*1YB(#ciQ-a*cIg75FN&^0H($ItV<(q00H| z#`&3L``QwC+#5gaH)(a$L4Z~Ql|C%Um)88%&quMh?Ca~$*3ZgUR2=tDqc)QQ&)O4O z{`S5i;)f&~2&4nF-m#EJES&S|YX(_b0h3++jy^`pHg(c(ICa%1;~66;uLBeI*~eH| zvq}@fWFf6(W|#1JCMh|w|DE|PunQ`s3TMKnyfH=8_o|>oq(JgK5c!Ein>S6%KX;y8 zlN0bImosrsU}Maw1Rt$WQ}Ai;>)pacVn^)&PjhF1?>Nf}9&9k-guQmL6x=g6v&ai? zU`93Z%?`$$BsN}VmgM)BAAsqyGyHxmq#I5ZRug3sC(2Y!6bIC^+qe4lYBnt`aTYGy@a9(3%h|50Yqx*QY)^SMVCv)vW z636rR%h>iis4@a&?@*4)wxODdxL)Hyj}!t#XPZzJ z9|&VD?k-PKepHH^h1gQF{kPbuM;cj(7dqRxD)1EB)>w6+b+oRFiDzQKaxMxgalv#kffbY#0x3 zx{~4n-dRmiSS-KjnRD74&==)OWc1mG0Saq^zq=8cYJZ(vt&^sJ?MoJY$g=$2moO}j zshnXoK!n!!#pprR-B-}!T`<0@V?ZBBf_cS9xUrsC zj+b~ylclwX?sZ8ig5DHS;OE%%++GaNd%3CP`5 zB_DE>>d_aZNMh7RauN&&Iml-SW431ztH{o`7%oqJV&Jn5K|2sn^bLv5Re4V0RWVtWCh30?fceGpV_sv=_3fW& z*DU_burrGOyg$^zD@*^vgV9)_(dr@V1qka68nX^DyMIYOwsjBGgY5y=886ISGO>fqmBIlWTU(#R$cbA>DFS6d9 zml;<|v!pz8Vo$X&p#AGE9Xdgntz7ct(+)=Nm5kuKsIA)wtle~mFVJ2~Is5EEKD&(F zs(y!nRXi1@E9hRe(0yjZjKv7vZmn(?DKW;%$fs#2Z{w&GF;|E)P zH4@UtW?y}-O@A(>tHjr*Aeq>M2NTOBmM1OxHu;@4%y7!;$9+L;QdOk+1iLVi_H$cP5*P0y$C`1_jASkk4i2PSDBvfW=p`M?A-%j=U}a@QW)rGM3R8*TIbeyBB|09GWysn zfBojO(|9lLi9g>d<$T|KokQ+?>f|IK<=^W{VecVn`}H?J0w!s9o+Q^fKZj0;XLr+KHZv$hw1RQ)-8 z@`G~MG;^`r1B<>ofXS;UQFJbv!%QU=(e$ z?nmoTBdCj)`9)d!3&}YlRk_L$!RC)4~-=U5}o(hM8A z@95~~Mad1up=m0}UF0(ZD#DM7DGFBHNkV+la+g+B(4EBByutt}!dV>5Kz-$^@w97^ z>ja*2^!uNo|NM(PI_KsEKT5hT(uM1Tps{<-_kn*+Ki2Qlh*$ED_DRg+E~7QCkRZZU zw4To+KOOEZC4ve53f5%QupEwz`(dPCXY!zX3o_z+vs}XY(|Euc#M|G{Uz(O5>FUTf!1j;8*1SghQAH+?E}$Kb(*E0#AN&)0d9z zwEWCc<3Q6ryUVr-(;__i2DaQH`XT5A?y9kPRN^_{^X&VyskrWhyYc!VS=XDT4<+y8 zzh4f)p6Uq-5UnNd#oPj5L89Oj1Y7Z|qL6l0MnMIq0Jtn5X9FGy=SV)4{qf=`@a)*V*u`%vwA0p48l| zpx$nBuqZDe zs_H>0IGrC}sd7M$n$+%`M^6^qLx;b_dk0ksy8NTu*|j^<68Mlr;c@olfdB?~Cf5>d&;2jX3m7Y&l9NQAg zlD~D_Zu>V^!QDe0jbvnYWY+UXA)3V+6~u-%L+I$%_HPuNyMk%~baiyywqqVN^B$B_ zCM1LDTnpiIfQu63_Y+Y$`X2ml z!loaRvExtb@FmV^sFJi%N~!SP6*e1}=v@LVh@pqDD~RpGS`GD}zk*q|cICVE-|6V4 zhGkk0{70Yr_TzS* ziKDX;1bzNPZS5A-f5ygh7OP`=?uK@&K$#g4q$G2d`p&P=>gW0GZ9mS2d8&5YciGhEREW$z zl*5-KC<-2O@o3b(csIh!_(_zuHFm>6;NTOywWpd=8n6#Q8(juOKKfbuDgtGIZr?j_ z-!r>p_#~T2)lFO0_YH$2?8BSM3NhZFdKfH?(SfK;l;k;c>vn%KU+;Fncea!MSaZFH zV7=;ew!jEWEgXH`?JLmopBQc*=GAbQ?kJs7&g9>e={O&c zhsKc4g_@R)~R@=O0iXXy2%` zg^W(3^n2K6h%99QwEZsJD){n%d#FY-cGEl1yfAYn$@f@VBg6diJa1 zS!GoCg`mwOOLX$}F8}K&2J|lKezLz$5LE*u4v4T+SIhy1gS6zTU3DU8*ekAY^f|fP zQR*QC?q!;hE`s{$t6INz`J+F)VX>gF%ED$!vm(*goa3x!rWJId^GEC26?AbToQ~_= z=Y-YbnX~<_I?#5 zjEF9HPj>CcC!ong&&i-LE5--i@&E+rNBV-GSf2kS?vH1u!a<*QopC0)%Ib`Hoj<5e z{7idp`{J9}kFzoTeE;fM(8?vinn zczaaK1^-ySSa(>9t?)&q&~M%lGSpl}YCPt00d?687ZAqe{1Ek;@+o9kIF;`?<{&># z%h?cp6S{g~z7;nLqPW4l_zSF>%x%F5r+nudJ4PRE<1iiUGf|JN&G!N#mVN2g2+5Le*@i{mu}xXI-$i(FVYX) z&Ac+@67Rj6drSw0-^ZVQgE~gC#K8IHq!GvcP>+RN3J>cAg3V&e|_7W+cCjk*GN9j*m+euQTz9_od_YQip*D}tl*Xd zq^_Jqyl%1~i*RdSj=ZCYFAc%VfNO5sWY8Ark`0|0wFQ{1RvC*B0oG7++79B+q=}p3GXkn^232ba*lSL~tZu$5 zVqw>H1Yl}!SKf({o*2dE@nr5q4xwV53LN6EU=!eH%}C-J2DcK(4G7cN0ytV-g{wFSIg{Rn&+}| z|5%q@t)F{q2f~y*GtA`vcH0gjb>Xk=a( zxzm|lcFdvH$NMCKHKXeL^ur$FYk9%u)_)EEoW-ChP`C@vPt#%bgytpr7D;a0luho_!N<(!9SIq z$&v)CUL&#zCw5?wgbv)`oyCN@PDTU8 zM#WSUj%R&m{@tCT$3zkkr%T@%%h?}2VoMRXO_dyiSlWP-XZv{n{p8>z?cS6Rt4l%< z)nRjlU;3_*1F3b9mk??sckBMZYMcP}h9Xl(X04_{~C=Z7S zZu26GRI!Djb|)h(FyBT98@kV-l-d0|28^!hl`U29exRhek$9D0)|J3U&h^$=R-Tc> z@Pzal<|^xK6E*Hs{hFMVm| z77K|;S3kJney3Dc2rx(=XJ1ebqR0RpHOz2*GNQ*kkcr+_kolG`$Zw_hxKEy2NnTQc zx@i;-yhp0{!)-0|r!~@t{^Mi@&4<=B$hne+8TUohh`O(&4bQ9>ABEe{3f4A>_w@QF z-4nE^aIz%Ps8uF(!>c<_&vPd9S~Lw;a#+3u`@uJ$_yI~9d@&OU5i8rIl-mIxM|z)P zSSrX!+A{5G-C650KV8hC;rA~q*m!j#7R?mE2okRDhCk}Wt`Xo(=|?DeXpqg3-xxj# zwcI=@!MkmVSkY366OSaBcQEo(64G3Rv0G`j_!SbxOb~I98?wD6JQvkc;O+FOwOQmW z$qt6Lpsx>0sG>;5w*MmceohAb+p;xIAWUUHp=l4txJavZZYN;p2khXXvcEj^1`1{- z72zgA(-6^MnXpg;kOGZp`u2P5_X|B?ac2Q4Ah~1DP!cQ)zfX|gK@`cqF|t)5WC(B^ zz|zKd*z!fJ_R>Px+!%f0~FuWOeHh^DwW&h`}e*pW2TgfyOeF(F=vAGeD6OeNhgMewBvTfNQv@SZQC94Evy0MB(v%3<`>v`oDh!{HV&# zEnc|1#5vh)XJ>c#ArhUL2fK^Eb%ozYOi^leqNQ!tj}RVDXEM!JRIuUjb4R@s-QQ*W z(96t?4Q}{z*(|M=i0}lX*#Q#%=Z&)VVXkAM>MMJb%(8xny1nw1f_I-5{KX-q&DvOcMem*tV-4>Y8i8E{u}GQaIRy3U*$%=*D&faong@_(dr}A2hfe!Dy2)CjnuY8HNC0!fPcGzf`fi)|p_S8A z9@8OGgx%K~A{}#mZxFQ6GztfvVRpjq$L8gMuH5xukIe3Uw~K41;Zm8)x-D<&n!kt& zsc8+P;a)EAha)&oZ=xB)Rp30d)1`=CAWnTw zv7rmxJ1~cOv@~O*c}nA2&<4+aUPF3k8R4eo{vkJ9dH^$uD}@Q;ncS^QU+$NXxnt}x z&{UQFj<2ViVb&CKV0ExkJP8sq&KPi4g8c3!#_7z4y#a-^Y5U_vZoT2q{j$0Derg~t zY_;3e{tw)FXoYU+q>}#W2bf}ElU>XtWLEC5^?G+KDm&@7{-L03`fk3)_KjTiHMG+`fp)CpJOAneC5o774mbPz&Mvy>&9bsl`jjy&%`5I( zhm;}*(0t4cx0P~H%bsZzmuRu0MEz!PX^_g|lUGX(StZ>IC}^%pmNEivvCDnQ)ctq! z4U^V*gHJ_f$LWam`LTas@zs=CdO6hfQub+vxR}#;Hf~p;rTUrFS1@5|CYp+E<&@>aPb( zK%Q=gI7Z-d9KbMh%E<1i>g%Xl2Sv)SW+KG)dD&IQ>Fhj&12F^^56DEW1t=Bx`;kPL z(o7F%%pVr<*MZot@e$RjizU8yR{mzma%q8Us-1M$ z@A0+nHsgo66M%a@bZfn^bcYv+;aQ>GDU?#@p!GXFyf-u*v6 zsy~Ob^Itv}udiaJXHGqy&PLvQV4bi~&Nn6_?zVI8?~MJsm@&gIbx(-(NPi{{9A|Ob z1P-G@@vu?lvpyaa|LWCSuzpbm02@idHd@Q&bOu**Vcdt1$yM5KjiK%r+N!N7m_V#q za5i!Qh@oA4!YRaTl}h%y$yV)1F@Ju2&D7h?vpqkJE7)f&OLA#XNM|e#$fUo|pDEVN zaW`)~y=qp61)dHlbMXAgFL$GgcIwr8z+}Y|XX>X}ni4K$yPf(_I$r+UIghokV4ZQM zn#;qKRO!~Uo6KqLONNBK)>YljbN!@&(ZBD`0wnx@oL>8|NgF-HLL+NZ$XqBDR!iY{ zT?1dvo9)4ZuQkjmd@ge1S@eNIoMz#ky)>2Sz*-09vj9VQx{lp>+BfRo>_NPm*6Xp3 zg@&Fd8OpCF@VbpSjv1mJkyK+QqMRPyenbyrW-X#c=m=F9UG8lKjv^5cA> z85Bk~jp%VIQ)!dS_~`FBV8-sRyr?kIrm>jBw$4Z58scDMh#KZ;iNBXjD9s%u7RI~G ze=_^1b38qW5VE9s6%0KpB&R)0OpH3oF9~D2swC&YPT?WYx3k$2&kZ?sZ`fw@d}jjN zuN-Q(q`|YkK(h?NQ>wZwPutQaNy&}`gsS&0<>1@tZ6zz1R(&`Ac{CEHcw5@C{E{R-Jd;X#V<68fu;UZr4o%2e>Wg+mZ{>c2 z*Hh_g&$Z=$WMuXw$Rd-r#D2hE>K(;ttau|TS<4-1Pz{^?S{&Oa)nf#ZZ4V2_? z6bUQ>cA-`Vg~p^b@*Ei?UXiG03un83?;ImS<*OO;ddUSSc|=k(xPK{cE1!}s`bpua z2!_#RGtZVr37ZISv!Zqbil6k{X}8^??}VNG5MnNPR-}0eY_OdOlW&eEoLIk`~&)M#cr(l5@QZ|MHS# z57!{6+B{C?@_C|=%}9*fuHZXprIR(J6B#7GxUCTPExv66QK6dtRn ztsfJLV%w24TY&RJep!1IBGj|=&56#ej1E=;0b5cJNuJEJph=$SM@dC%Ca|2%wgQ#6&B!wH?&$4JjZb z8wt-D*L+GnSgn4#y~MUzw{gl5OH2IdpvruGQJM-dMPVx+K10mwV?sMUd6wU~Ub3`% zR;d`iYb8^*z(%Gsg65DIm6+F+Qn%jAofb;Jboe1jj+HGqHv6@g8Q+GLC^LJA)$syw znvtGn7}AL>hiTiA34P`=9QNd~?;qy*6e&P@y(KLtBtYXFR7l{RL%xO4Wm+EZ2qC4l zldUz?&S@}iU!KDSF7lM{nBMjSa!Woq0Lzl1gk>Hj@lJbr%{R$)1iFx2k0WEcn1F!KhmyhmjK85BMmNh44g4I#`Nj>rx$;1b{DmNAblK80+P`?}tH~u={!=b7+$n!Dy+-&fg8kQ!5#ozR ztK%W5o)ybtH(_ssCOVG;#Y)8IvWuLb8YjZLj*cX^Z=KN{)5O>1fsr37!1t?}Rs0TbLV%0Jnn3GmBC&+@>Le&GSV(uEMfOY7D*tAcT6l_NpD4MaQ`CV*Qld?oF!J)m0uxw$8u^pJiR z7{Kj3fUZ2wCUUZkqAl(IIyOy{cr2~OiTaW=w%uzuFu@w8IxAEG;5Euw8tOfU0ZuCG zao-3;bXavb8jara>X6qfZlHwEh*l({V{*;xmvDIhmim1RMf+3N$;Y&=SxB+yV z5Uq30i5a)Y8W`_-p)zIi8uaT9;P(RXGWOLc{vQPu-^)%7J#XAgm9aDUPHN;~9V0YJ z&5wrkkSG3=6u`2FnyGRiO3WdqJR@eVb~^3Z_u}V;fS25B0bDyZG-93scc3_-{ z{RHF*DFGEwdeszGl9$CvJ)Eksq1iP!mF7#waegdsAeaw%YSXDta_-cvxkz{)bYUiV z&6g+s_K?m)O_(TP|0bZTsOrHsjN!MSQ+Fks!J@e9j~b=YAe1s&X~w%WQ@zKWHgX>! zBV$rx75$Q}(aC|9=ArZ^F(B(z?5CtuelP&g-k}#xxR9U~uj-C{ER|;Myz**RExr&+-wzB7Ds|R-&sf?`0Qaz@4Q)kP|7XN8 z>MTKA^I^H1xw0c#%P3ku<-SsCw6yX0@ZsrZwj_D@R5v#B%-ImG`$=-&<>ieWs_N#@ zlI3*9edpUspc_<+7#Rv}28fOa|D^;YDXA@K%DGPCuH%!s;w4^ej&h%{>HQ~GZWm9c z`fHix&Sf3kMA?&Y1t4v33$uNcvT zizkG}X{dd55#sScP->cz+k`B=5&23cNw!ujp{0}!aJ-UOCHCc*2Z=qt&8D+lsC z5rRzO3W<+g%|WP2?%BpR3FlVVt3&S#KWEAr`h8%+?uh!9U=3q3!qr}%B=f`TEM&x- zZcIcG*vn0H=aiorUwq&lkQ6Zes3gUb5%$$5vcK;5T)nuL`Oh|=H$hAAqn%QpEb%|x~BcVXnN5MY}+?lUb~ z;1AkUiXv#6YVNY$of)@3)DLtc4ZYq1es(C2!oPz}qkf9|?LS`e1eI=|lq)ufYAyyQ z^(=sA5HiAhbV5ipDwOmM1uz@#lP%P*>li19Io8E?>*O0mWa|#$lt(=FA`h5Z{0|s@ zQXLLna@=-daCW&$TB^C6So!)SB&CJmvB4PSYS#UWS|lji|F_7seRkCUk&SLY>d8H6 zXgSSHCa$C>HS|+hYP6!4m#`1|^nI>2%8Qwxy!A@KBd`k?HDYMQ$6^du$9>_zr6HruYXA=Ws#W>_GZ!e=-@#POG ziTCKMgXw$?;-Q&YA~prm;aFb=P#Uji_SMo$Gt|F)p{*~I7K}nC6XA9Gmx*^rPZV;1 zY%E-Ia_)_OWk-Hf0F0)iusvTqFpc6v|NV;t5I0<_TGy45*ml$7z=P8J@jmFimB{-= zxMlFIaMnqAi5#D_*KJ5x?_uz!U)b#A0Ur8{lJ*r00n8jY>5S?QmEmmwgjhv+y2vff zJVRZ8mUPls-}uf1LkydcNw#l99QRG|X#6z2Dc+B{QQtMv^oQ}>j@-cW03sIK(W~Po zWRU$%#`0w6qAd{(=P=jRjD>T?&~m#(_4}5?A(h|xWIa-A zNav*+yPI7Up5I#WC8%Nt?NW%?=Js;-E$rD}{#ej%5Y%HR| zm#d6(!GntQC`>xjlT4!hlSSr^#UIqYD|_P&Mf$bduMXM|`dHn*@uzx6QvHYDlYM|Y zP`6m`vC7s@t)etg{R18E$wY>j)BY;=8{%>j)g2m1y?z=rMe?Z^Ex{4rt46?GJ^ya6 z7?X{OSOe};{{^erDc6pa)bcfw*0sF00xhy7Ir(Fp#X(Yx@^z1gW*x+aE;u>8h_+)Q zGI;JF@8{MS)t6%1m`CV0VXfT0msqq*Gtt_nEJ7w=@TDPpIMtLSEoxBP*Jmqj7*#Uw zOcg8q3oL&XMglqpU?e2ggC|?~mkj?k`1?j$&@ZL7NH5HQhI}iv&(@(S9RH|qy{0>} zQjl!1eqH%#EP@yA{^%>9kw}j7SZylQHL7;<~op!LWnq@8D?TJ zW@wd1>w{+qYCSWDH|nND3zmbwc$M+}x;55KWe5hB1XeVvxjLiJnL}>{N)8P7g>SBx zz&4SK(bT?#m&~TIv|LO1kHY%;IPN*8#$|Xz@<)fw&eAhpBKAkhoHo5Fmlb|x!^K0) z_`hHx=Lb4{`~(V3uB87Cg}RNGcn;E*L#wjX26u1{MIbAA$cM=D0I~7OJ@Ld{Z1QZ8 zn6+zOICzc`&CQ+pruF^9FwGpc~Pat;k*=DRw?I}tvqNH6I>8Ew0Ecffpv3h z*K;~Jo+!5_2nfnUp0%iIeKi#phH7sy-BrA+bMHmsE5N>NIGe z;eR!Rk5ldy=qO{>B!NkyHRXSydSUr8C*AL-vlL&ms)|E=S+wHEO<*gNlK zlLOhGAzyBrv&OeTUp`;lYlq%nYd8#UEm`>3|8`;qU%avIIs;_J2D|{d5WFr_EI86b z^L7iE(aZLNTwZp4W#@F!-}zl^uhu18T%Jv$F+m#|=^@9$baP^VW&AbrjIER~f{_d) zS;B^08Jb7}@glbVK+*mA!is{3g-_uJiYr=!J4cpMESUufiIXL%>{u|{O;XV#C^4hR zItA=n+%w=d7jm<|T|YjZB#c34DR8SR*41p%+8*mKBBt@UiE8f4sn+Q0s6*g)7%{%@ z#(wqA)y!~4OgKgcE;({cS%kmn^U@xcqI62tw5ZhO9o3UeV81-=bZYuctctk(C;6RO zpXw0C!8ToV&%0jDZf5rP=)G2j5_PkLB@sE&T>IECJFZ@LWz`kR$yr@s#5F z{#2*JYW>ymQfY71hZ&p<`RRqM8f*Ehr4`=dqh!Nd=-u0z2f&(r_>yoDb{81FqNV6n zs1IW~Gt07z6AQMp!PqJ~_&9(;N_ey{9raoD=9TXtZ$hA@BeucBp>aEZh-x_f!JSUQ z1mr`++jn^e-mk3ad`Ohd^^I0z+J^d{!8(hE$G=kLVR~y@7?NuwsbwdkkgjrIO#by} zvirjj5!9E~GrWq4yKVY29vkRte|Aw*Zz<-j7|68Ou65p6$M2Qxs5H92U)BA%>zU1d zw(}=^Ib?Md2~D%ljLKBQ3k+Bc3p7IxcVmdIDkZDQ44ShM^Us8>uq1D47_tGj6rN>I z`7h5y`L50^TraPOpbi?KWo}a~1IvtDzBvwVOTS zUnzrKo}e6&`BV0i`dh)y|mJ8!!$e$-sMbf#C(&mKN#rn7zBmagW79E}tt!t_l%s=vfq$L}Oy< zeatDL=M#YpRpEuIJlbV&uaw_j$XavF$U}|ovK!^!#s#Ut$w-{;{J4YEHC+P6$|a350-h@FAVDEQ z!b!s_^+8W`cP+`-)cB$0{gs1sIK-Lm7@~EoZZF29Bk4ky$A1?=nF>r=~aXzudwz?FwacjP$oKh$r>mIyf@n0N$Y@=rqd-rIr*Fvsxs*Plcj z#-SwsYjTG9BCSGY!v1fBPX5PLwkw;31(13FCs5iyB(D#R$Qj!H)Bgs(^nWEKx_0mB zglXe{g7xOV&3{lbfeP0C-!S~>GJ-Bx$A2H!*82ZXfG7S-ro0?+9w>9b|3rXM-N)ke l@LE+t#)1DE|KAVvB9g|fd0pa-N&xk7$x10oR*4%1{vYwPoUZ@? literal 0 HcmV?d00001 diff --git a/docs/component.md b/docs/component.md index 3a2f7c19..7abfcce9 100644 --- a/docs/component.md +++ b/docs/component.md @@ -28,9 +28,9 @@ All mandatory components are available for download from the [Releases](https:// For the most recent unreleased commit, download from the [GitHub Actions Workflow Runs](https://github.com/selkies-project/selkies-gstreamer/actions) `Build & publish all images` Build Artifacts (under `Artifacts (Produced during runtime)`) for each commit from the `main` branch. Build Artifacts can also be downloaded using the [GitHub CLI](https://cli.github.com) command [`gh run download`](https://cli.github.com/manual/gh_run_download). -#### Conda Toolchain: +#### Conda Toolchain -Our [reference portable distribution toolchain](/addons/conda) is compiled with the distribution-neutral [Conda](https://conda-forge.org) build toolchain, distributing all three mandatory components as well as portable versions of most dependencies in a tarball. +Our [reference portable distribution toolchain](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/conda) is compiled with the distribution-neutral [Conda](https://conda-forge.org) build toolchain, distributing all three mandatory components as well as portable versions of most dependencies in a tarball. Pre-built `x86_64` portable distributions for **any Linux distribution with `glibc ≥ 2.17`** (CentOS 7 or newer) are available with the name **`selkies-gstreamer-portable-v${SELKIES_VERSION}_amd64.tar.gz`** for download in the [Releases](https://github.com/selkies-project/selkies-gstreamer/releases) for the latest stable version. @@ -51,11 +51,11 @@ cd ~ && tar -xzf /tmp/selkies-gstreamer-conda.tar.gz && rm -f /tmp/selkies-gstre Otherwise (for different system architectures), you can build your own portable distribution (currently tested with `aarch64` and `ppc64le`). -#### Python Application: +#### Python Application -The term `host` or `server` refers to the [Python Components](/src/selkies_gstreamer) across this documentation. +The term `host` or `server` refers to the [Python Components](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer) across this documentation. -The [Python Components](/src/selkies_gstreamer) are responsible for the host server backend, capturing and encoding the host screen and audio, receiving input signals and communicating other data (including the clipboard) between the client and the host, and establishing the WebRTC (with RTP underneath) connection to the client. +The [Python Components](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer) are responsible for the host server backend, capturing and encoding the host screen and audio, receiving input signals and communicating other data (including the clipboard) between the client and the host, and establishing the WebRTC (with RTP underneath) connection to the client. Host screen video and audio are transported using the WebRTC `MediaStream` interface, and other data are transported using the WebRTC `DataChannel` interface. @@ -87,11 +87,11 @@ sudo PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install --no-cache-dir --force-reinstall . selkies-gstreamer --addr=0.0.0.0 --port=8080 --enable_https=false --https_cert=/etc/ssl/certs/ssl-cert-snakeoil.pem --https_key=/etc/ssl/private/ssl-cert-snakeoil.key --basic_auth_user=user --basic_auth_password=mypasswd --encoder=x264enc --enable_resize=false ``` -#### Web Application: +#### Web Application -The term `client` refers to the [Web Components](/addons/gst-web) across this documentation. +The term `client` refers to the [Web Components](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gst-web) across this documentation. -The [Web Components](/addons/gst-web) are responsible the web browser interface that you see when you use Selkies-GStreamer. +The [Web Components](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gst-web) are responsible the web browser interface that you see when you use Selkies-GStreamer. They receive and display the received screen and audio within the web browser, detect input signal and other data (including the clipboard) from the user, then send them to the host server backend. @@ -121,11 +121,11 @@ cd selkies-gstreamer/addons/gst-web sudo INSTALL_DIR=/opt/gst-web ./install.sh ``` -#### GStreamer: +#### GStreamer [GStreamer](https://gstreamer.freedesktop.org) "is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing." GStreamer is likely inside your smart TV, car infotainment system, or the digital street signage or surveillance camera near you, as well as many media players and video editing software. -GStreamer is responsible for the actual heavy lifting of Selkies-GStreamer, starting from capturing and encoding the host screen and audio to transporting the stream and other data between the host and the client web browser using WebRTC. GStreamer can be installed from your Linux distribution (but the required newest version may not be available), be [built for your distribution](/addons/gstreamer), or be compiled and distributed in portable form with [Conda](/addons/conda). +GStreamer is responsible for the actual heavy lifting of Selkies-GStreamer, starting from capturing and encoding the host screen and audio to transporting the stream and other data between the host and the client web browser using WebRTC. GStreamer can be installed from your Linux distribution (but the required newest version may not be available), be [built for your distribution](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gstreamer), or be compiled and distributed in portable form with [Conda](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/conda). Check [GStreamer Components](#gstreamer-components) for more details. @@ -151,9 +151,9 @@ Otherwise (for different operating system distributions or system architectures) These components are not required for Selkies-GStreamer, but may be required in specific cases of deployments or preferences. These sections are recommended to be nonetheless, read carefully. -#### Joystick Interposer: +#### Joystick Interposer -The [Joystick Interposer](/addons/js-interposer) is a special library that allows the usage of joysticks or gamepads inside unprivileged containers (most of the occasions with shared Kubernetes clusters or HPC clusters), where host kernel devices required for creating a joystick interface are not available. It uses a `LD_PRELOAD` hack to intercept `uinput` input commands from joysticks or gamepads into Selkies-GStreamer (much like how [VirtualGL](https://github.com/VirtualGL/virtualgl) intercepts OpenGL commands). +The [Joystick Interposer](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/js-interposer) is a special library that allows the usage of joysticks or gamepads inside unprivileged containers (most of the occasions with shared Kubernetes clusters or HPC clusters), where host kernel devices required for creating a joystick interface are not available. It uses a `LD_PRELOAD` hack to intercept `uinput` input commands from joysticks or gamepads into Selkies-GStreamer (much like how [VirtualGL](https://github.com/VirtualGL/virtualgl) intercepts OpenGL commands). Pre-built `x86_64` and `aarch64` joystick interposer components for Ubuntu are available with the name (fill in the OS version `DISTRIB_RELEASE` such as `24.04`, `22.04`, Ubuntu-style architecture `ARCH` such as `amd64` and `arm64`) **`selkies-js-interposer_v${SELKIES_VERSION}_ubuntu${DISTRIB_RELEASE}_${ARCH}.tar.gz`** or **`selkies-js-interposer_v${SELKIES_VERSION}_ubuntu${DISTRIB_RELEASE}_${ARCH}.deb`** for download in the [Releases](https://github.com/selkies-project/selkies-gstreamer/releases) for the latest stable version. @@ -199,7 +199,7 @@ export SDL_JOYSTICK_DEVICE=/dev/input/js0 You can replace `/usr/$LIB/selkies_joystick_interposer.so` with any non-root path of your choice if using the `.tar.gz` tarball. -Check the [Joystick Interposer README.md](/addons/js-interposer/README.md) documentation for usage instruction and compiling information on other platforms. +Check the [Joystick Interposer README.md](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/js-interposer/README.md) documentation for usage instruction and compiling information on other platforms. Check the following links for explanations of similar, but different attempts, for reference: @@ -213,13 +213,13 @@ Check the following links for explanations of similar, but different attempts, f -#### Example Container: +#### Example Container -The [Example Container](/addons/example) is the reference minimal-functionality container developers can base upon, or test Selkies-GStreamer quickly. The bare minimum Xfce4 desktop environment is installed together with Firefox, as well as an embedded TURN server inside the container for quick WebRTC firewall traversal. +The [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) is the reference minimal-functionality container developers can base upon, or test Selkies-GStreamer quickly. The bare minimum Xfce4 desktop environment is installed together with Firefox, as well as an embedded TURN server inside the container for quick WebRTC firewall traversal. Read the [Development](development.md) section for customizing this container for your own usage. -Run the Docker®/Podman container built from the [`Example Dockerfile`](/addons/example/Dockerfile), then connect to port **8080** of your Docker®/Podman host to access the web interface (Username: **`ubuntu`**, Password: **`mypasswd`**, **change `DISTRIB_RELEASE` to `24.04`, `22.04`, or `20.04`, and replace `main` to `latest` for the latest stable release**): +Run the Docker®/Podman container built from the [`Example Dockerfile`](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example/Dockerfile), then connect to port **8080** of your Docker®/Podman host to access the web interface (Username: **`ubuntu`**, Password: **`mypasswd`**, **change `DISTRIB_RELEASE` to `24.04`, `22.04`, or `20.04`, and replace `main` to `latest` for the latest stable release**): ```bash docker run --name selkies -it -d --rm -e SELKIES_TURN_PROTOCOL=udp -e SELKIES_TURN_PORT=3478 -e TURN_MIN_PORT=65534 -e TURN_MAX_PORT=65535 -p 8080:8080 -p 3478:3478 -p 3478:3478/udp -p 65534-65535:65534-65535 -p 65534-65535:65534-65535/udp ghcr.io/selkies-project/selkies-gstreamer/gst-py-example:main-ubuntu${DISTRIB_RELEASE} @@ -237,15 +237,15 @@ If you are behind a reverse proxy or can only expose one HTTP port, you will nee **Follow the instructions from [coTURN](#coturn) and [WebRTC and Firewall Issues](firewall.md) in order to make the container work using an external TURN server.** -#### coTURN: +#### coTURN > Check the [WebRTC and Firewall Issues: coTURN](firewall.md#coturn) section for installing and running coTURN on self-hosted standalone machines, cloud instances, or virtual machines. > > [Pion TURN](https://github.com/pion/turn)'s `turn-server-simple` executable or [eturnal](https://eturnal.net) are recommended alternative TURN server implementations that support Windows as well as Linux or MacOS. [STUNner](https://github.com/l7mp/stunner) is a Kubernetes native STUN and TURN deployment if Helm is possible to be used. -The [coTURN Container](/addons/coturn) is a reference container which provides the [coTURN](https://github.com/coturn/coturn) TURN server. Other than options including `-e TURN_SHARED_SECRET=`, `-e TURN_REALM=`, `-e TURN_PORT=`, `-e TURN_MIN_PORT=` (at least `49152`), and `-e TURN_MAX_PORT=` (at most `65535`), add more command-line options in `-e TURN_EXTRA_ARGS=`. +The [coTURN Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/coturn) is a reference container which provides the [coTURN](https://github.com/coturn/coturn) TURN server. Other than options including `-e TURN_SHARED_SECRET=`, `-e TURN_REALM=`, `-e TURN_PORT=`, `-e TURN_MIN_PORT=` (at least `49152`), and `-e TURN_MAX_PORT=` (at most `65535`), add more command-line options in `-e TURN_EXTRA_ARGS=`. -Run the Docker®/Podman container built from the [`coTURN Dockerfile`](/addons/coturn/Dockerfile) (**replace `main` to `latest` for the latest stable release**): +Run the Docker®/Podman container built from the [`coTURN Dockerfile`](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/coturn/Dockerfile) (**replace `main` to `latest` for the latest stable release**): ```bash docker run --name coturn -it -d --rm -e TURN_SHARED_SECRET=n0TaRealCoTURNAuthSecretThatIsSixtyFourLengthsLongPlaceholdPlace -e TURN_REALM=example.com -e TURN_PORT=3478 -e TURN_MIN_PORT=65500 -e TURN_MAX_PORT=65535 -p 3478:3478 -p 3478:3478/udp -p 65500-65535:65500-65535 -p 65500-65535:65500-65535/udp ghcr.io/selkies-project/selkies-gstreamer/coturn:main @@ -261,7 +261,7 @@ In addition, use the option `-e TURN_EXTRA_ARGS="--no-udp-relay"` if you cannot Consult the [WebRTC and Firewall Issues: TURN Server Authentication Methods](firewall.md#turn-server-authentication-methods) and [TURN-REST](#turn-rest) sections for the difference between static auth secret/TURN REST API authentication and traditional long-term credential authentication. -#### TURN-REST: +#### TURN-REST **The below is an advanced concept likely required for multi-user environments.** @@ -273,19 +273,19 @@ In easier words, if both the host and client are behind restrictive firewalls, t The recommended multi-user TURN server authentication mechanism is the [time-limited short-term credential/TURN REST API mechanism](https://datatracker.ietf.org/doc/html/draft-uberti-behave-turn-rest-00), where there is a single [shared secret](https://github.com/coturn/coturn/blob/master/README.turnserver) that is never exposed externally (only the TURN-REST Container and the coTURN TURN server know), but instead authenticates WebRTC clients (which are Selkies-GStreamer hosts and clients) based on generated credentials which are valid for only a short time (typically 24 hours). -The [TURN-REST Container](/addons/turn-rest) is an easy way to distribute short-term TURN server authentication credentials and the information of the TURN server based on the REST API to many Selkies-GStreamer host instances, particularly when behind a local area network (LAN), which may or may not have restricted firewalls. +The [TURN-REST Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/turn-rest) is an easy way to distribute short-term TURN server authentication credentials and the information of the TURN server based on the REST API to many Selkies-GStreamer host instances, particularly when behind a local area network (LAN), which may or may not have restricted firewalls. Using the `selkies-gstreamer --turn_rest_uri=` option or `SELKIES_TURN_REST_URI` environment variable, the Selkies-GStreamer host periodically queries a URI such as `https://turn-rest.myinfrastructure.io/myturnrest` or `http://192.168.0.10/myturnrest`. This URI is ideally behind a local area network (LAN) inaccessible from the outside and only accessible to the Python hosts inside the LAN, or alternatively behind authentication using any web server or reverse proxy, if accessible from the outside. This information is periodically sent to the web client (that is also preferably behind authentication with HTTP Basic Authentication or a web server/reverse proxy) through HTTP(S), thus the TURN server information and credentials being propagated to both the Python host and the web client without exposing the TURN server information outside. -Because the time-limited TURN credentials automatically expire after some time, they are not useful even if they are leaked outside, as long as the pathway to the air-gapped or authenticated TURN-REST Container REST HTTP endpoint is not exposed plainly to the internet. [app.py](/addons/turn-rest/app.py) may also be hosted standalone without a container using the same startup command in the [Dockerfile](/addons/turn-rest/Dockerfile). +Because the time-limited TURN credentials automatically expire after some time, they are not useful even if they are leaked outside, as long as the pathway to the air-gapped or authenticated TURN-REST Container REST HTTP endpoint is not exposed plainly to the internet. [app.py](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/turn-rest/app.py) may also be hosted standalone without a container using the same startup command in the [Dockerfile](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/turn-rest/Dockerfile). Other authentication methods such as TURN-REST over various types of REST API authentication (but adding support for TURN-REST behind Basic Authentication is trivial, so reach out with some funding) or TURN oAuth authentication are not supported as of now, and likely requires funding. The TURN-REST Container (or similarly, Kubernetes Pod) should be triggered with the Docker®/Podman options `-e TURN_SHARED_SECRET=`, `-e TURN_HOST=`, `-e TURN_PORT=`, `-e TURN_PROTOCOL=`, `-e TURN_TLS=`, `-e STUN_HOST=`, `-e STUN_PORT=`, where the options are dependent on the TURN server configuration of [coTURN](#coturn) or other TURN server implementations. -Run the Docker®/Podman container built from the [`TURN-REST Dockerfile`](/addons/turn-rest/Dockerfile) (replace `main` to `latest` for the latest stable release**): +Run the Docker®/Podman container built from the [`TURN-REST Dockerfile`](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/turn-rest/Dockerfile) (replace `main` to `latest` for the latest stable release**): ```bash docker run --name turn-rest -it -d --rm -e TURN_SHARED_SECRET=n0TaRealCoTURNAuthSecretThatIsSixtyFourLengthsLongPlaceholdPlace -e TURN_HOST=turn.myinfrastructure.io -e TURN_PORT=3478 -e TURN_PROTOCOL=udp -e TURN_TLS=false -p 8008:8008 ghcr.io/selkies-project/selkies-gstreamer/turn-rest:main @@ -295,9 +295,9 @@ From Selkies-GStreamer, it is sufficient to use the `selkies-gstreamer --turn_re Consult the [WebRTC and Firewall Issues: TURN Server Authentication Methods](firewall.md#turn-server-authentication-methods) section for more information on TURN authentication methods. -#### coTURN-Web: +#### coTURN-Web -The [coTURN-Web Container](/addons/coturn-web) is a legacy component meant to provide similar capabilities to the [TURN-REST Container](/addons/turn-rest) for the Google Kubernetes Engine, mostly old remnants from the Google era. This component may be phased out as well as the [`infra/gce`](/infra/gce) and [`infra/gke`](/infra/gke) components and `cloudbuild.yml` configurations in favor of platform-agnostic Kubernetes configurations. Contributions are welcome. +The [coTURN-Web Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/coturn-web) is a legacy component meant to provide similar capabilities to the [TURN-REST Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/turn-rest) for the Google Kubernetes Engine, mostly old remnants from the Google era. This component may be phased out as well as the [`infra/gce`](https://github.com/selkies-project/selkies-gstreamer/tree/main/infra/gce) and [`infra/gke`](https://github.com/selkies-project/selkies-gstreamer/tree/main/infra/gke) components and `cloudbuild.yml` configurations in favor of platform-agnostic Kubernetes configurations. Contributions are welcome. ## GStreamer Components diff --git a/docs/development.md b/docs/development.md index e4ad29e4..8a81728b 100644 --- a/docs/development.md +++ b/docs/development.md @@ -20,7 +20,7 @@ As the relatively permissive license compared to similar projects is for the ben Please join our [Discord](https://discord.gg/wDNGDeSW5F) server, then start out with the [Issues](https://github.com/selkies-project/selkies-gstreamer/issues) to see if new enhancements that you can make or things that you want solved have been already raised. -**No programming experience:** You can still be a tester or a community helper/moderator at [Discord](https://discord.gg/wDNGDeSW5F)! Do you see anything that feels uncomfortable compared to other projects? Raise an issue and suggest various improvements including to the documentation. Have you used OBS, FFmpeg, or any other live streaming/video editing software before? You can suggest optimized parameters for the video encoders from your experiences. You can experiment with various encoder parameters which are exposed in a very accessible way under [gstwebrtc_app.py](/src/selkies_gstreamer/gstwebrtc_app.py). You can add or modify properties exposed under the comment `ADD_ENCODER:` for each encoder, improving streaming performance. +**No programming experience:** You can still be a tester or a community helper/moderator at [Discord](https://discord.gg/wDNGDeSW5F)! Do you see anything that feels uncomfortable compared to other projects? Raise an issue and suggest various improvements including to the documentation. Have you used OBS, FFmpeg, or any other live streaming/video editing software before? You can suggest optimized parameters for the video encoders from your experiences. You can experiment with various encoder parameters which are exposed in a very accessible way under [gstwebrtc_app.py](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer/gstwebrtc_app.py). You can add or modify properties exposed under the comment `ADD_ENCODER:` for each encoder, improving streaming performance. **Some Python or HTML/JavaScript frontend experience:** Our codebase and web interface always has room for improvement. Consider helping out on various issues or cleaning up the code otherwise. @@ -90,7 +90,7 @@ This section is a knowledge base for code contributions and development. ## Resources -- **Our [Documentation](/docs/README.md) and [Issues](https://github.com/selkies-project/selkies-gstreamer/issues)/[Pull Requests](https://github.com/selkies-project/selkies-gstreamer/pulls)** (including closed Issues/Pull Requests) and +- **Our [Documentation](https://github.com/selkies-project/selkies-gstreamer/tree/main/docs/index.md) and [Issues](https://github.com/selkies-project/selkies-gstreamer/issues)/[Pull Requests](https://github.com/selkies-project/selkies-gstreamer/pulls)** (including closed Issues/Pull Requests) and - GStreamer Repository (sources of truth are below, other repositories such as `gst-plugins-base` have been relocated to the below): @@ -163,13 +163,13 @@ ENTRYPOINT ["/usr/bin/supervisord"] ## Container Guide -The [`docker-nvidia-glx-desktop`](https://github.com/selkies-project/docker-nvidia-glx-desktop)/[`docker-nvidia-egl-desktop`](https://github.com/selkies-project/docker-nvidia-egl-desktop) desktop container repositories (referenced as Desktop Containers here), and the [Example Container](/addons/example) share various components between each other: +The [`docker-nvidia-glx-desktop`](https://github.com/selkies-project/docker-nvidia-glx-desktop)/[`docker-nvidia-egl-desktop`](https://github.com/selkies-project/docker-nvidia-egl-desktop) desktop container repositories (referenced as Desktop Containers here), and the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) share various components between each other: -`LICENSE`, `supervisord.conf`, `kasmvnc-entrypoint.sh`, and `selkies-gstreamer-entrypoint.sh` are always identical in both Desktop Containers (copy and paste between each container). As these components are also very similar to the [Example Container](/addons/example), **you need to do three Pull Requests including the [Example Container](/addons/example) if relevant lines changed in the [Example Container](/addons/example), and at least two Pull Requests for both Desktop Containers.** +`LICENSE`, `supervisord.conf`, `kasmvnc-entrypoint.sh`, and `selkies-gstreamer-entrypoint.sh` are always identical in both Desktop Containers (copy and paste between each container). As these components are also very similar to the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example), **you need to do three Pull Requests including the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) if relevant lines changed in the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example), and at least two Pull Requests for both Desktop Containers.** -The `Dockerfile` is always identical below and above the lines that say `Anything above/below this line should always be kept the same...` in both Desktop Containers. This component is not shared with the [Example Container](/addons/example), and installation procedures for Selkies-GStreamer should be updated to the desktop containers on every release, so **you need to do three Pull Requests including the [Example Container](/addons/example) if relevant lines changed in the [Example Container](/addons/example), and at least two Pull Requests for both Desktop Containers.** +The `Dockerfile` is always identical below and above the lines that say `Anything above/below this line should always be kept the same...` in both Desktop Containers. This component is not shared with the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example), and installation procedures for Selkies-GStreamer should be updated to the desktop containers on every release, so **you need to do three Pull Requests including the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) if relevant lines changed in the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example), and at least two Pull Requests for both Desktop Containers.** -The `entrypoint.sh` components are always identical from the start until the line containing `export PULSE_SERVER=..."` in both Desktop Containers. The script for installing NVIDIA userspace driver components are always identical except for the outermost `if` condition. Other script sections require manual assessment when updating, so **you need to do three Pull Requests including the [Example Container](/addons/example) if relevant lines changed in both Desktop Containers and the [Example Container](/addons/example).** +The `entrypoint.sh` components are always identical from the start until the line containing `export PULSE_SERVER=..."` in both Desktop Containers. The script for installing NVIDIA userspace driver components are always identical except for the outermost `if` condition. Other script sections require manual assessment when updating, so **you need to do three Pull Requests including the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) if relevant lines changed in both Desktop Containers and the [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example).** `README.md` and `egl.yml`/`xgl.yml` files in both Desktop Containers are similar but have different components, thus requiring manual assessment for both Desktop Containers when updating. @@ -191,7 +191,7 @@ The `entrypoint.sh` components are always identical from the start until the lin - **Write or edit code in relevant files and reference them so that the code style is kept consistent.** For instance, many handler methods that start with `on_` are initially unset, then set and referenced in other components or classes during initialization. If you are implementing a new capability on certain methods or handlers that use methods starting with `on_` frequently, you have to create new `on_` methods as well to handle your capability. This assists with keeping the code highly readable, and putting methods or functions in the wrong files will harm the consistency of the code style. **If you are starting to feel that the location you are writing code in does not blend properly into adjacent code, you are probably writing it in the wrong place!** -- For example, assume that we are writing a new component that receives WebRTC Metrics from the web interface and writes them into multiple CSV files in the host ([#141](https://github.com/selkies-project/selkies-gstreamer/pull/141)). Because the WebRTC RTCDataChannel interface is used, receiving the metrics will be handled in [`webrtc_input.py`](/src/selkies_gstreamer/webrtc_input.py). But this does not mean that everything should be implemented in this file. Instead, they should be [implemented in the `Metrics` class](https://github.com/selkies-project/selkies-gstreamer/pull/141/commits/abae13645fdf0082f27041c59a14e1c030cf3763) of [`metrics.py`](/src/selkies_gstreamer/metrics.py), and be initialized in [`__main__.py`](/src/selkies_gstreamer/__main__.py). This way, relevant code stays in appropriate files and is initialized only when the capabilities are needed. +- For example, assume that we are writing a new component that receives WebRTC Metrics from the web interface and writes them into multiple CSV files in the host ([#141](https://github.com/selkies-project/selkies-gstreamer/pull/141)). Because the WebRTC RTCDataChannel interface is used, receiving the metrics will be handled in [`webrtc_input.py`](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer/webrtc_input.py). But this does not mean that everything should be implemented in this file. Instead, they should be [implemented in the `Metrics` class](https://github.com/selkies-project/selkies-gstreamer/pull/141/commits/abae13645fdf0082f27041c59a14e1c030cf3763) of [`metrics.py`](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer/metrics.py), and be initialized in [`__main__.py`](https://github.com/selkies-project/selkies-gstreamer/tree/main/src/selkies_gstreamer/__main__.py). This way, relevant code stays in appropriate files and is initialized only when the capabilities are needed. - Some code components have `CAPITALIZED_COMMENT:` comment sections such as `ADD_ENCODER:` or `OPUS_FRAME:`. These sections indicate that locations with the `CAPITALIZED_COMMENT:` must be edited or added simultaneously. diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 00000000..005200e2 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,97 @@ +# Troubleshooting and FAQs + +## The HTML5 web interface loads and the signaling connection works, but the WebRTC connection fails or the remote desktop does not start + +??? "Open Answer" + + First of all, ensure that there is a running PulseAudio or PipeWire-Pulse session as the interface does not establish without an audio server. + + **Moreover, check that you are using X.Org instead of Wayland (which is the default in many distributions but not supported) when using an existing display.** + + **Then, please read [WebRTC and Firewall Issues](firewall.md).** + + Also check if the WebRTC video codec is supported in the web browser, as the server may panic if the codecs do not match. H.264, VP8, and VP9 are supported by all major web browsers. + + Moreover, if using HTTP but not HTTPS on a remote host that is not `localhost`, use port forwarding to `localhost` as much as possible. Many browsers do not support WebRTC or relevant features including pointer and keyboard lock in HTTP outside localhost. + + If you created the TURN server or the example container inside a VPN-enabled environment or virtual machine and the WebRTC connection fails, then you may need to add the `SELKIES_TURN_HOST` environment variable to the private VPN IP of the TURN server host, such as `192.168.0.2`. + + Make sure to also check that you enabled automatic login with your display manager, as the remote desktop cannot access the initial login screen after boot without login. + +## The HTML5 web interface is slow, lagging, or stuttering + +??? "Open Answer" + + **First, check if the TURN server is shown as `staticauth.openrelay.metered.ca` with a `relay` connection, and if so, please read [WebRTC and Firewall Issues](firewall.md).** + + **Usually, if the host-client distance is not too far physically, the issue arises from using a Wi-Fi router with bufferbloat issues, especially if you observe stuttering. Try using the [Bufferbloat Test](https://www.waveform.com/tools/bufferbloat) to identify the issue first before moving on.** + + If this is the case, first try enabling `--congestion_control`, meant to mitigate such issues in coordination with the web browser. + + Moreover, always make sure that there are minimal background network processes, as live interactive streaming is much less tolerant to network fluctuation compared with other forms of video that may load the stream in advance. Using wired ethernet or a good 5GHz Wi-Fi connection is important (wired ethernet will eliminate all remaining issues of a good but slightly stuttering Wi-Fi connection). + + Ensure the latency to your TURN server from the server and the client is ideally under 50-75 ms. If the latency is too high, your connection might be too laggy for most interactive 3D applications. + + Next, there currently exists a current issue with CPU congestion from the web interface when the side panel is open. Please make sure to test your experience when the side panel is closed. + + Also note that a higher framerate will improve performance if you have sufficient bandwidth. This is because one screen refresh from a 60 fps screen takes 16.67 ms at a time, while one screen refresh from a 15 fps screen inevitably takes 66.67 ms, and therefore inherently causes a visible lag. Also try to keep the total bitrate reasonable, keeping around your service level agreement (SLA) bandwidth (which might be different from your maximum bandwidth contract). + + If the latency becomes higher while the screen is idle or the tab is not focused for a long time, the internal efficiency control mechanism of the web browser may activate, which will be resolved automatically after a few seconds if there is new activity. + + If it does not, disable all power saving or efficiency features available in the web browser. In Windows 10 or 11, try `Start > Settings > System > Power & battery > Power mode > Best performance`. Also, note that if you saturate your CPU or GPU with an application on the host, the remote desktop interface will also substantially slow down as it cannot use the CPU or GPU enough to decode the screen. Also, check for GPU driver/firmware updates in the client computer. + + However, it might be that the parameters for the WebRTC interface, video encoders, the RTP payloader, or other [GStreamer](https://gstreamer.freedesktop.org) plugins are not optimized enough. If you find that it is the case, we always welcome [contributions](development.md). If your changes show noticeably better results in the same conditions, please make a [Pull Request](https://github.com/selkies-project/selkies-gstreamer/pulls), or tell us about the parameters in any channel that we can reach so that we could also test. + +## The clipboard does not work + +??? "Open Answer" + + This is very likely a web browser constraint that is applied because you are using HTTP for an address to the web interface that is not localhost. The clipboard only works when you use HTTPS (with a valid or self-signed certificate), or when accessing localhost (some browsers do not support this as well). You could use port forwarding to access through localhost or obtain an HTTPS certificate. + +## The web interface refuses to start up in the terminal after rebooting my computer or restarting my desktop in a standalone instance + +??? "Open Answer" + + This is because the desktop session starts as `root` when the user is not logged in. Next time, set up automatic login in the settings with the user you want to use. + + In order to use the web interface when this is not possible (or when you are using SSH or other forms of remote access), check `sudo systemctl status sddm`, `sudo systemctl status lightdm`, or `sudo systemctl status gdm3` (use your display session manager) and find the path next to the `-auth` argument. Set the environment variable `XAUTHORITY` to the path you found while running Selkies-GStreamer as `root` or `sudo`. + +## My touchpad does not move while pressing a key with the keyboard + +??? "Open Answer" + + This is a setting from the client operating system and will show the same behavior with any other application. In Windows, go to `Settings > Bluetooth & devices > Touchpad > Taps` to increase your touchpad sensitivity. In Linux or Mac, turn off the setting `Touchpad > Disable while typing`. + +## I want to pass multiple screens within a server to another client using the WebRTC HTML5 web interface + +??? "Open Answer" + + You can start a new instance of Selkies-GStreamer by changing the `DISPLAY` environment variable (or even use the same one for multiple instances) and setting a different web interface port in a different terminal to pass a different screen simultaneously to your current screen. Reverse proxy server/web servers supporting WebSocket such as `nginx` can be utilized to expose the interfaces to multiple users in different paths. + +## I want to test a shared secret TURN server by manually generating a TURN credential from a shared secret + +??? "Open Answer" + + Try the [TURN-REST Container](component.md#turn-rest) or its underlying turn-rest `app.py` Flask web application. This will output TURN credentials automatically when the Docker®/Podman options `-e TURN_SHARED_SECRET=`, `-e TURN_HOST=`, `-e TURN_PORT=`, `-e TURN_PROTOCOL=`, `-e TURN_TLS=` or environment variables `export TURN_SHARED_SECRET=`, `export TURN_HOST=`, `export TURN_PORT=`, `export TURN_PROTOCOL=`, `export TURN_TLS=` are set. + + The below steps can be used when you want to test your TURN server configured with a shared secret instead of the legacy username/password authentication: + + **1. Run the [Example Container](component.md#example-container) (fill in `DISTRIB_RELEASE` to Ubuntu versions such as `24.04`):** + + ```bash + docker run --name selkies -it -d --rm -p 8080:8080 -p 3478:3478 ghcr.io/selkies-project/selkies-gstreamer/gst-py-example:main-ubuntu${DISTRIB_RELEASE} + docker exec -it selkies bash + ``` + + **2. From inside the test container, call the `generate_rtc_config` method.** + + ```bash + export SELKIES_TURN_HOST="YOUR_TURN_HOST" + export SELKIES_TURN_PORT="YOUR_TURN_PORT" + export SELKIES_TURN_SECRET="YOUR_SHARED_SECRET" + export SELKIES_TURN_USER="user" + + python3 -c 'import os;from selkies_gstreamer.signalling_web import generate_rtc_config; print(generate_rtc_config(os.environ["SELKIES_TURN_HOST"], os.environ["SELKIES_TURN_PORT"], os.environ["SELKIES_TURN_SECRET"], os.environ["SELKIES_TURN_USER"]))' + ``` + + Using both methods, you can then test your TURN server configuration from the [Trickle ICE](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) website. diff --git a/docs/firewall.md b/docs/firewall.md index bbd771c5..9c9856ed 100644 --- a/docs/firewall.md +++ b/docs/firewall.md @@ -181,7 +181,7 @@ Consult the [coTURN Documentation](https://github.com/coturn/coturn/blob/master/ ### Deploy coTURN with Docker® -The [coTURN Container](/addons/coturn) is a reference container which provides the [coTURN](https://github.com/coturn/coturn) TURN server. Other than options including `-e TURN_SHARED_SECRET=`, `-e TURN_REALM=`, `-e TURN_PORT=`, `-e TURN_MIN_PORT=`, and `-e TURN_MAX_PORT=`, add more command-line options in `-e TURN_EXTRA_ARGS=`. +The [coTURN Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/coturn) is a reference container which provides the [coTURN](https://github.com/coturn/coturn) TURN server. Other than options including `-e TURN_SHARED_SECRET=`, `-e TURN_REALM=`, `-e TURN_PORT=`, `-e TURN_MIN_PORT=`, and `-e TURN_MAX_PORT=`, add more command-line options in `-e TURN_EXTRA_ARGS=`. **Read the [coTURN](component.md#coturn) section to get started.** @@ -213,7 +213,7 @@ Consult the [coTURN Documentation](https://github.com/coturn/coturn/blob/master/ In both types of containers, the `--cert=` and `--pkey=` options are required for using TURN over TLS/DTLS, but are otherwise optional. They should lead to the certificate and the private key from a legitimate certificate authority such as [ZeroSSL](https://zerossl.com/features/acme/) or [Let's Encrypt](https://letsencrypt.org/getting-started/) with a valid hostname which resolves to the TURN server. -Provide the certificate and private files to the coTURN container with `-v /my_local_path/coturncert.crt:/etc/coturn_tls.crt -v /my_local_path/coturnkey.key:/etc/coturn_tls.key` (specified paths are an example), then add the options `-e TURN_EXTRA_ARGS="--cert=/etc/coturn_tls.crt --pkey=/etc/coturn_tls.key"` for the Selkies [coTURN Container](/addons/coturn) and use the options `--cert=/etc/coturn_tls.crt --pkey=/etc/coturn_tls.key` for the official coTURN container. +Provide the certificate and private files to the coTURN container with `-v /my_local_path/coturncert.crt:/etc/coturn_tls.crt -v /my_local_path/coturnkey.key:/etc/coturn_tls.key` (specified paths are an example), then add the options `-e TURN_EXTRA_ARGS="--cert=/etc/coturn_tls.crt --pkey=/etc/coturn_tls.key"` for the Selkies [coTURN Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/coturn) and use the options `--cert=/etc/coturn_tls.crt --pkey=/etc/coturn_tls.key` for the official coTURN container. ### Deploy coTURN With Kubernetes diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..e659c5d9 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,55 @@ +--- +hide: + - navigation + - toc +--- + +# Welcome to Selkies + +

+ ![Selkies WebRTC](assets/logo/horizontal-480.png) +
+ +[![Build](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml/badge.svg)](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml) + +[![Discord](https://img.shields.io/badge/dynamic/json?logo=discord&label=Discord%20Members&query=approximate_member_count&url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FwDNGDeSW5F%3Fwith_counts%3Dtrue)](https://discord.gg/wDNGDeSW5F) + +**Moonlight, Google Stadia, or GeForce NOW in noVNC form factor for Linux X11, in any HTML5 web interface you wish to embed inside, with at least 60 frames per second on Full HD resolution.** + +**We are in need of maintainers and community contributors. Please consider stepping up, as we can never have too much help!** + +Selkies-GStreamer is an open-source low-latency high-performance Linux-native GPU/CPU-accelerated WebRTC HTML5 remote desktop streaming platform, for self-hosting, containers, Kubernetes, or Cloud/HPC platforms, [started out first by Google engineers](https://web.archive.org/web/20210310083658/https://cloud.google.com/solutions/gpu-accelerated-streaming-using-webrtc), then expanded by academic researchers. + +Selkies-GStreamer is designed for researchers, including people in the graphical AI/robotics/autonomous driving/drug discovery fields, SLURM supercomputer/HPC system administrators, Jupyter/Kubernetes/Docker®/Coder infrastructure administrators, and Linux cloud gaming enthusiasts. + +While designed for clustered or unprivileged containerized environments, Selkies-GStreamer can also be deployed in desktop computers, and any performance issue that would be problematic in cloud gaming platforms is also considered a bug. + +## Citations in Academic Publications + +> **NOTE: This section is also applicable for developers applying, embedding, forking, deriving, or taking influence from this project.** + +**Citations are the currency of scientific research. Citing in your publications is the main driver of keeping this project alive.** + +Remote desktop software projects have always been primarily proprietary. It is difficult to maintain such a project without consistent full-time compensation or financial upkeep. + +Therefore, citations in academic publications are crucial for keeping this project under academic community governance, as well as to track and report the demographics of our users. + +Therefore, we kindly, but strongly ask all software projects which are applying into, embedding in, forking from, deriving from, or taking influence from this project to retain the below sections in a clearly visible location of your project and/or documentation. + +**Users of this open-source software project should cite the following publications when publishing in academic form to keep this project and original upstream projects sustainable:** + +(Please note that this is currently a placeholder, an upcoming publication will be available after article review.) + +`Kim, S., Isla, D., Hejtmánek, L., et al., Selkies-GStreamer, (2024), GitHub repository, https://github.com/selkies-project/selkies-gstreamer` + +: !!! info "Maintainers of derivative open-source projects should also place this text in a clearly visible location of your project." + + This project has been developed and is supported in part by the National Research Platform (NRP) and the Cognitive Hardware and Software Ecosystem Community Infrastructure (CHASE-CI) at the University of California, San Diego, by funding from the National Science Foundation (NSF), with awards #1730158, #1540112, #1541349, #1826967, #2138811, #2112167, #2100237, and #2120019, as well as additional funding from community partners, infrastructure utilization from the Open Science Grid Consortium, supported by the National Science Foundation (NSF) awards #1836650 and #2030508, and infrastructure utilization from the Chameleon testbed, supported by the National Science Foundation (NSF) awards #1419152, #1743354, and #2027170. This project has also been funded by the Seok-San Yonsei Medical Scientist Training Program (MSTP) Song Yong-Sang Scholarship, College of Medicine, Yonsei University, the MD-PhD/Medical Scientist Training Program (MSTP) through the Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health & Welfare, Republic of Korea, and the Student Research Bursary of Song-dang Institute for Cancer Research, College of Medicine, Yonsei University. + +**Please read [Troubleshooting](faq.md) first, then use [Discord](https://discord.gg/wDNGDeSW5F) or [GitHub Discussions](https://github.com/selkies-project/selkies-gstreamer/discussions) for support questions. Please only use [Issues](https://github.com/selkies-project/selkies-gstreamer/issues) for technical inquiries or bug reports.** + +**NOTE: this project is licensed under the [Mozilla Public License, version 2.0](https://www.mozilla.org/en-US/MPL/2.0/FAQ/), which obliges to share modified code files licensed by MPL-2.0 when distributed externally, but does not apply for any larger work outside this project, which might be open-source or proprietary under any license of choice. Externally originated components outside this project may contain works licensed over more restrictive copyleft/proprietary licenses, as well as other terms of intellectual property, including but not limited to patents, which users or developers are obliged to adhere to.** + +: !!! info "Selkies-GStreamer" + + Funding agencies including, but not limited to the National Science Foundation, remain neutral with regard to jurisdictional claims in published articles and software code of this Code Repository. The Selkies Project logo and name have been created and are utilized or distributed with authorization by Dan Isla. In the context including, but not limited to this Code Repository, as well as in the context including, but not limited to any and all derivative works based on this Code Repository, all trademarks, trade names, logos, patents, or any and all other forms of external intellectual property, that are mentioned or used, unless otherwise stated, are the property of their respective owners, including but not limited to, The Linux Foundation®, Linus Torvalds, The Apache Software Foundation, Canonical Ltd., Google LLC, Alphabet Inc., NumFOCUS Foundation, Anaconda Inc., conda-forge, Project Jupyter, Coder Technologies, Inc., Docker®, Inc., SchedMD LLC, NVIDIA Corporation, Intel Corporation, Advanced Micro Devices, Inc., Valve Corporation, Epic Games, Inc., Unity Software Inc., Cendio AB, RealVNC® Limited, Amazon.com, Inc., Amazon Web Services, Inc., or its affiliates including but not limited to NICE s.r.l. or NICE USA LLC, Microsoft Corporation, Oracle Corporation, StarNet Communications Corporation, TeamViewer SE, GStreamer Foundation, Fabrice Bellard, Moonlight Project, and LizardByte. Every best effort has been undertaken to properly identify and attribute trademarks, trade names, logos, patents, or any and all other forms of external intellectual property to their respective owners, unless otherwise stated, wherever possible and practical. The inclusion of such trademarks, trade names, logos, patents, or any and all other forms of external intellectual property in association with this project, unless otherwise stated, serves solely for the purpose of description and must never be construed as an indication of affiliation, competition, endorsement, or a challenge to any and all legal standings of the trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. All project contributors, maintainers, owners, or organizations agree to not willfully breach or infringe legal regulations, in any and all global law, regarding trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. Therefore, all project contributors, maintainers, owners, or organizations, are immune to, and are not to be in any and all cases held legally liable for, any and all jurisdictional claims on trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. No component of this Code Repository is an official product of Google LLC or Alphabet Inc. diff --git a/docs/start.md b/docs/start.md index 78f2aa73..feccdf38 100644 --- a/docs/start.md +++ b/docs/start.md @@ -66,7 +66,7 @@ You can replace `/usr/$LIB/selkies_joystick_interposer.so` with any non-root pat Please read [**WebRTC and Firewall Issues**](firewall.md). -**8. Read [**Troubleshooting and FAQs**](usage.md#troubleshooting-and-faqs) if something is not as intended and [**Usage**](usage.md#usage) for more information on customizing.** +**8. Read [**Troubleshooting and FAQs**](faq.md) if something is not as intended and [**Usage**](usage.md#usage) for more information on customizing.** ## Desktop Container @@ -78,7 +78,7 @@ The [`selkies-vdi`](https://github.com/selkies-project/selkies-vdi) or [`selkies ## Minimal Container -The [Example Container](/addons/example) is the reference minimal-functionality container developers can base upon, or test Selkies-GStreamer quickly. The bare minimum Xfce4 desktop environment is installed together with Firefox, as well as an embedded TURN server inside the container for quick WebRTC firewall traversal. +The [Example Container](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/example) is the reference minimal-functionality container developers can base upon, or test Selkies-GStreamer quickly. The bare minimum Xfce4 desktop environment is installed together with Firefox, as well as an embedded TURN server inside the container for quick WebRTC firewall traversal. Instructions are available in the [Example Container](component.md#example-container) section. @@ -96,7 +96,7 @@ This distribution is slightly more complicated to deploy, yet is the recommended Selkies-GStreamer has a highly modularized architecture, composed of multiple components. -Three mandatory components are required to run Selkies-GStreamer: the [standalone or distribution-provided build of GStreamer](/addons/gstreamer) with the most recent version (currently ≥ 1.22), the [Python component wheel package](/src/selkies_gstreamer) including the signaling server, and the [HTML5 web interface components](/addons/gst-web). Currently, Ubuntu 24.04 (Mint 22), 22.04 (Mint 21), 20.04 (Mint 20) are supported, but other operating systems should also work if using your own GStreamer build of the newest version (contributions for build workflows of more operating systems are welcome). +Three mandatory components are required to run Selkies-GStreamer: the [standalone or distribution-provided build of GStreamer](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gstreamer) with the most recent version (currently ≥ 1.22), the [Python component wheel package](https://github.com/selkies-project/selkies-gstreamer/blob/main/src/selkies_gstreamer) including the signaling server, and the [HTML5 web interface components](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gst-web). Currently, Ubuntu 24.04 (Mint 22), 22.04 (Mint 21), 20.04 (Mint 20) are supported, but other operating systems should also work if using your own GStreamer build of the newest version (contributions for build workflows of more operating systems are welcome). All three of the components are built and packaged every [Release](https://github.com/selkies-project/selkies-gstreamer/releases). In addition, every latest commit gets built and is made available in container forms [`ghcr.io/selkies-project/selkies-gstreamer/gstreamer`](https://github.com/selkies-project/selkies-gstreamer/pkgs/container/selkies-gstreamer%2Fgstreamer), [`ghcr.io/selkies-project/selkies-gstreamer/py-build`](https://github.com/selkies-project/selkies-gstreamer/pkgs/container/selkies-gstreamer%2Fpy-build), and [`ghcr.io/selkies-project/selkies-gstreamer/gst-web`](https://github.com/selkies-project/selkies-gstreamer/pkgs/container/selkies-gstreamer%2Fgst-web). @@ -104,7 +104,7 @@ For more information, check the [Components](component.md#components) section. The [All-In-One Desktop Containers](#desktop-container) support unprivileged self-hosted Kubernetes clusters and Docker®/Podman. -Example Google Compute Engine/Google Kubernetes Engine deployment configurations of all components are available in the [`infra/gce`](/infra/gce) and [`infra/gke`](/infra/gke) directories, but may be deprecated in favor of vendor-agnostic Kubernetes configurations. +Example Google Compute Engine/Google Kubernetes Engine deployment configurations of all components are available in the [`infra/gce`](https://github.com/selkies-project/selkies-gstreamer/tree/main/infra/gce) and [`infra/gke`](https://github.com/selkies-project/selkies-gstreamer/tree/main/infra/gke) directories, but may be deprecated in favor of vendor-agnostic Kubernetes configurations. ### Install the packaged version on self-hosted standalone machines, cloud instances, or virtual machines @@ -124,7 +124,7 @@ Install additional dependencies if using Ubuntu ≥ 22.04 (Mint 21) or a higher sudo apt-get update && sudo apt-get install --no-install-recommends -y xcvt libopenh264-dev svt-av1 aom-tools ``` -If using supported NVIDIA GPUs, install NVENC (bundled with the GPU driver) and NVRTC (bundled with pre-built GStreamer component, check the [GStreamer Dockerfile](/addons/gstreamer/Dockerfile) for manual installation instructions). +If using supported NVIDIA GPUs, install NVENC (bundled with the GPU driver) and NVRTC (bundled with pre-built GStreamer component, check the [GStreamer Dockerfile](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gstreamer/Dockerfile) for manual installation instructions). If using AMD or Intel GPUs, install its graphics and VA-API drivers, as well as `libva2`. The bundled VA-API driver in the AMDGPU Pro graphics driver is recommended for AMD GPUs and the `i965-va-driver-shaders` or `intel-media-va-driver-non-free` packages are recommended depending on your Intel GPU generation. Optionally install `vainfo`, `intel-gpu-tools`, `radeontop`, or `nvtop` for GPU monitoring. @@ -144,7 +144,7 @@ Read [GStreamer](component.md#gstreamer) for more details of this step and proce cd /opt && curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/gstreamer-selkies_gpl_v${SELKIES_VERSION}_ubuntu${DISTRIB_RELEASE}_amd64.tar.gz" | sudo tar -xzf - ``` -This will install the GStreamer components to the default directory of `/opt/gstreamer`. If you are unpacking to a different directory, make sure to set the the environment variable `GSTREAMER_PATH` to the directory. GStreamer builds for `aarch64` are not provided but can be built following procedures in the [GStreamer Dockerfile](/addons/gstreamer/Dockerfile) or [Conda Dockerfile](/addons/conda/Dockerfile). +This will install the GStreamer components to the default directory of `/opt/gstreamer`. If you are unpacking to a different directory, make sure to set the the environment variable `GSTREAMER_PATH` to the directory. GStreamer builds for `aarch64` are not provided but can be built following procedures in the [GStreamer Dockerfile](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/gstreamer/Dockerfile) or [Conda Dockerfile](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons/conda/Dockerfile). **3. Install the Selkies-GStreamer Python components** (this component is pure Python and any operating system is compatible, fill in `SELKIES_VERSION`)**:** @@ -242,7 +242,7 @@ The default username (set with `--basic_auth_user=` or `SELKIES_BASIC_AUTH_USER` Please read [**WebRTC and Firewall Issues**](firewall.md). -**8. Read [**Troubleshooting and FAQs**](usage.md#troubleshooting-and-faqs) if something is not as intended and [**Usage**](usage.md#usage) for more information on customizing.** +**8. Read [**Troubleshooting and FAQs**](faq.md) if something is not as intended and [**Usage**](usage.md#usage) for more information on customizing.** ### Install the latest build on self-hosted standalone machines, cloud instances, or virtual machines diff --git a/docs/usage.md b/docs/usage.md index 5630df5b..23b2a20c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -26,123 +26,4 @@ Environment variables for command-line options are available as capitalizations ## CI/CD Build -We use Docker® containers for building every commit. The root directory [`Dockerfile`](/Dockerfile) and Dockerfiles within the [`addons`](/addons) directory provide directions for building each component, so that you may replicate the procedures in your own setup even without Docker® by copying the commands to your own shell. - -# Troubleshooting and FAQs - -## The HTML5 web interface loads and the signaling connection works, but the WebRTC connection fails or the remote desktop does not start. - -
- Open Answer - -First of all, ensure that there is a running PulseAudio or PipeWire-Pulse session as the interface does not establish without an audio server. - -**Moreover, check that you are using X.Org instead of Wayland (which is the default in many distributions but not supported) when using an existing display.** - -**Then, please read [WebRTC and Firewall Issues](firewall.md).** - -Also check if the WebRTC video codec is supported in the web browser, as the server may panic if the codecs do not match. H.264, VP8, and VP9 are supported by all major web browsers. - -Moreover, if using HTTP but not HTTPS on a remote host that is not `localhost`, use port forwarding to `localhost` as much as possible. Many browsers do not support WebRTC or relevant features including pointer and keyboard lock in HTTP outside localhost. - -If you created the TURN server or the example container inside a VPN-enabled environment or virtual machine and the WebRTC connection fails, then you may need to add the `SELKIES_TURN_HOST` environment variable to the private VPN IP of the TURN server host, such as `192.168.0.2`. - -Make sure to also check that you enabled automatic login with your display manager, as the remote desktop cannot access the initial login screen after boot without login. - -
- -## The HTML5 web interface is slow, lagging, or stuttering. - -
- Open Answer - -**First, check if the TURN server is shown as `staticauth.openrelay.metered.ca` with a `relay` connection, and if so, please read [WebRTC and Firewall Issues](firewall.md).** - -**Usually, if the host-client distance is not too far physically, the issue arises from using a Wi-Fi router with bufferbloat issues, especially if you observe stuttering. Try using the [Bufferbloat Test](https://www.waveform.com/tools/bufferbloat) to identify the issue first before moving on.** - -If this is the case, first try enabling `--congestion_control`, meant to mitigate such issues in coordination with the web browser. - -Moreover, always make sure that there are minimal background network processes, as live interactive streaming is much less tolerant to network fluctuation compared with other forms of video that may load the stream in advance. Using wired ethernet or a good 5GHz Wi-Fi connection is important (wired ethernet will eliminate all remaining issues of a good but slightly stuttering Wi-Fi connection). - -Ensure the latency to your TURN server from the server and the client is ideally under 50-75 ms. If the latency is too high, your connection might be too laggy for most interactive 3D applications. - -Next, there currently exists a current issue with CPU congestion from the web interface when the side panel is open. Please make sure to test your experience when the side panel is closed. - -Also note that a higher framerate will improve performance if you have sufficient bandwidth. This is because one screen refresh from a 60 fps screen takes 16.67 ms at a time, while one screen refresh from a 15 fps screen inevitably takes 66.67 ms, and therefore inherently causes a visible lag. Also try to keep the total bitrate reasonable, keeping around your service level agreement (SLA) bandwidth (which might be different from your maximum bandwidth contract). - -If the latency becomes higher while the screen is idle or the tab is not focused for a long time, the internal efficiency control mechanism of the web browser may activate, which will be resolved automatically after a few seconds if there is new activity. - -If it does not, disable all power saving or efficiency features available in the web browser. In Windows 10 or 11, try `Start > Settings > System > Power & battery > Power mode > Best performance`. Also, note that if you saturate your CPU or GPU with an application on the host, the remote desktop interface will also substantially slow down as it cannot use the CPU or GPU enough to decode the screen. Also, check for GPU driver/firmware updates in the client computer. - -However, it might be that the parameters for the WebRTC interface, video encoders, the RTP payloader, or other [GStreamer](https://gstreamer.freedesktop.org) plugins are not optimized enough. If you find that it is the case, we always welcome [contributions](development.md). If your changes show noticeably better results in the same conditions, please make a [Pull Request](https://github.com/selkies-project/selkies-gstreamer/pulls), or tell us about the parameters in any channel that we can reach so that we could also test. - -
- -## The clipboard does not work. - -
- Open Answer - -This is very likely a web browser constraint that is applied because you are using HTTP for an address to the web interface that is not localhost. The clipboard only works when you use HTTPS (with a valid or self-signed certificate), or when accessing localhost (some browsers do not support this as well). You could use port forwarding to access through localhost or obtain an HTTPS certificate. - -
- -## The web interface refuses to start up in the terminal after rebooting my computer or restarting my desktop in a standalone instance. - -
- Open Answer - -This is because the desktop session starts as `root` when the user is not logged in. Next time, set up automatic login in the settings with the user you want to use. - -In order to use the web interface when this is not possible (or when you are using SSH or other forms of remote access), check `sudo systemctl status sddm`, `sudo systemctl status lightdm`, or `sudo systemctl status gdm3` (use your display session manager) and find the path next to the `-auth` argument. Set the environment variable `XAUTHORITY` to the path you found while running Selkies-GStreamer as `root` or `sudo`. - -
- -## My touchpad does not move while pressing a key with the keyboard. - -
- Open Answer - -This is a setting from the client operating system and will show the same behavior with any other application. In Windows, go to `Settings > Bluetooth & devices > Touchpad > Taps` to increase your touchpad sensitivity. In Linux or Mac, turn off the setting `Touchpad > Disable while typing`. - -
- -## I want to pass multiple screens within a server to another client using the WebRTC HTML5 web interface. - -
- Open Answer - -You can start a new instance of Selkies-GStreamer by changing the `DISPLAY` environment variable (or even use the same one for multiple instances) and setting a different web interface port in a different terminal to pass a different screen simultaneously to your current screen. Reverse proxy server/web servers supporting WebSocket such as `nginx` can be utilized to expose the interfaces to multiple users in different paths. - -
- -## I want to test a shared secret TURN server by manually generating a TURN credential from a shared secret. - -
- Open Answer - -Try the [TURN-REST Container](component.md#turn-rest) or its underlying turn-rest `app.py` Flask web application. This will output TURN credentials automatically when the Docker®/Podman options `-e TURN_SHARED_SECRET=`, `-e TURN_HOST=`, `-e TURN_PORT=`, `-e TURN_PROTOCOL=`, `-e TURN_TLS=` or environment variables `export TURN_SHARED_SECRET=`, `export TURN_HOST=`, `export TURN_PORT=`, `export TURN_PROTOCOL=`, `export TURN_TLS=` are set. - -The below steps can be used when you want to test your TURN server configured with a shared secret instead of the legacy username/password authentication: - -**1. Run the [Example Container](component.md#example-container) (fill in `DISTRIB_RELEASE` to Ubuntu versions such as `24.04`):** - -```bash -docker run --name selkies -it -d --rm -p 8080:8080 -p 3478:3478 ghcr.io/selkies-project/selkies-gstreamer/gst-py-example:main-ubuntu${DISTRIB_RELEASE} -docker exec -it selkies bash -``` - -**2. From inside the test container, call the `generate_rtc_config` method.** - -```bash -export SELKIES_TURN_HOST="YOUR_TURN_HOST" -export SELKIES_TURN_PORT="YOUR_TURN_PORT" -export SELKIES_TURN_SECRET="YOUR_SHARED_SECRET" -export SELKIES_TURN_USER="user" - -python3 -c 'import os;from selkies_gstreamer.signalling_web import generate_rtc_config; print(generate_rtc_config(os.environ["SELKIES_TURN_HOST"], os.environ["SELKIES_TURN_PORT"], os.environ["SELKIES_TURN_SECRET"], os.environ["SELKIES_TURN_USER"]))' -``` - -Using both methods, you can then test your TURN server configuration from the [Trickle ICE](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) website. - -
+We use Docker® containers for building every commit. The root directory [`Dockerfile`](https://github.com/selkies-project/selkies-gstreamer/blob/main/Dockerfile) and Dockerfiles within the [`addons`](https://github.com/selkies-project/selkies-gstreamer/tree/main/addons) directory provide directions for building each component, so that you may replicate the procedures in your own setup even without Docker® by copying the commands to your own shell. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..3201256f --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,120 @@ +site_name: SELKIES +site_description: >- + Open-Source Low-Latency Accelerated Linux WebRTC HTML5 Remote Desktop Streaming Platform for Self-Hosting, Containers, Kubernetes, or Cloud/HPC +theme: + name: material + +# Repository +repo_name: selkies-gstreamer +repo_url: https://github.com/selkies-project/selkies-gstreamer + +# Copyright +copyright: Copyright © 2024 Kim, S., Isla, D., Hejtmánek, L., et al.,
Selkies-GStreamer + +# Configuration +theme: + name: material + # custom_dir: overrides + features: + - announce.dismiss + - content.action.edit + - content.action.view + - content.code.annotate + - content.code.copy + - content.code.select + # - content.footnote.tooltips + # - content.tabs.link + - content.tooltips + # - header.autohide + # - navigation.expand + - navigation.footer + - navigation.indexes + # - navigation.instant + # - navigation.instant.prefetch + # - navigation.instant.progress + # - navigation.prune + - navigation.path + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky + - navigation.top + - navigation.tracking + - search.highlight + - search.share + - search.suggest + - toc.follow + - toc.integrate + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/link + name: Switch to light mode + - media: "(prefers-color-scheme: light)" + scheme: default + primary: indigo + accent: indigo + toggle: + icon: material/toggle-switch + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: black + accent: indigo + toggle: + icon: material/toggle-switch-off + name: Switch to system preference + font: + text: Roboto + code: Roboto Mono + favicon: assets/logo/favicon.ico + logo: assets/logo/icon-512x512.png + icon: + admonition: + quote: octicons/quote-16 + +# Plugins +plugins: + - search: + separator: '[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + +# Additional configuration +extra: + generator: false + social: + - icon: fontawesome/brands/github + link: https://github.com/selkies-project/selkies-gstreamer + - icon: fontawesome/brands/discord + link: https://discord.gg/wDNGDeSW5F + +# Extensions +markdown_extensions: + - abbr + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - tables + - toc: + permalink: true + - pymdownx.details + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + + +# Page tree +nav: + - Home: index.md + - Design: design.md + - Getting started: start.md + - FAQs: faq.md + - Firewall: firewall.md + - Usage: usage.md + - Components: component.md + - Development: development.md + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..898468cb --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +mkdocs-material \ No newline at end of file From 2086cfc98e60eb26896dade67760112752f2e406 Mon Sep 17 00:00:00 2001 From: PMohanJ Date: Sat, 21 Sep 2024 13:36:23 +0530 Subject: [PATCH 2/5] Add Github workflow to deploy website to github pages --- .github/workflows/build_and_deploy_pages.yaml | 40 +++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 41 insertions(+) create mode 100644 .github/workflows/build_and_deploy_pages.yaml diff --git a/.github/workflows/build_and_deploy_pages.yaml b/.github/workflows/build_and_deploy_pages.yaml new file mode 100644 index 00000000..813de21b --- /dev/null +++ b/.github/workflows/build_and_deploy_pages.yaml @@ -0,0 +1,40 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +name: Build & deploy pages + +on: + workflow_dispatch: + push: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup python for mkdocs + uses: actions/setup-python@v5 + with: + python-version: 3.x + - run: pip install mkdocs-material + - run: mkdir -p /tmp/mkdocs + - name: Generate the static files + run: mkdocs build --site-dir /tmp/mkdocs + - uses: actions/upload-pages-artifact@v3 + with: + path: /tmp/mkdocs/ + deploy: + needs: build + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 3201256f..f509c0e6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,5 @@ site_name: SELKIES +site_url: site_url: https://selkies-project.github.io site_description: >- Open-Source Low-Latency Accelerated Linux WebRTC HTML5 Remote Desktop Streaming Platform for Self-Hosting, Containers, Kubernetes, or Cloud/HPC theme: From 2307a6074dd9e6e7680140309fad8d86d583d1ad Mon Sep 17 00:00:00 2001 From: vishalkadam47 Date: Thu, 26 Sep 2024 16:51:28 +0530 Subject: [PATCH 3/5] fixed syntax to support github mardown --- docs/faq.md | 125 +++++++++++++++++++++++++++++--------------------- docs/index.md | 28 +++++++---- mkdocs.yml | 13 +++--- 3 files changed, 98 insertions(+), 68 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 005200e2..0897a4c6 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,97 +1,118 @@ # Troubleshooting and FAQs -## The HTML5 web interface loads and the signaling connection works, but the WebRTC connection fails or the remote desktop does not start +## The HTML5 web interface loads and the signaling connection works, but the WebRTC connection fails or the remote desktop does not start. -??? "Open Answer" +
+ Open Answer - First of all, ensure that there is a running PulseAudio or PipeWire-Pulse session as the interface does not establish without an audio server. +First of all, ensure that there is a running PulseAudio or PipeWire-Pulse session as the interface does not establish without an audio server. - **Moreover, check that you are using X.Org instead of Wayland (which is the default in many distributions but not supported) when using an existing display.** +**Moreover, check that you are using X.Org instead of Wayland (which is the default in many distributions but not supported) when using an existing display.** - **Then, please read [WebRTC and Firewall Issues](firewall.md).** +**Then, please read [WebRTC and Firewall Issues](firewall.md).** - Also check if the WebRTC video codec is supported in the web browser, as the server may panic if the codecs do not match. H.264, VP8, and VP9 are supported by all major web browsers. +Also check if the WebRTC video codec is supported in the web browser, as the server may panic if the codecs do not match. H.264, VP8, and VP9 are supported by all major web browsers. - Moreover, if using HTTP but not HTTPS on a remote host that is not `localhost`, use port forwarding to `localhost` as much as possible. Many browsers do not support WebRTC or relevant features including pointer and keyboard lock in HTTP outside localhost. +Moreover, if using HTTP but not HTTPS on a remote host that is not `localhost`, use port forwarding to `localhost` as much as possible. Many browsers do not support WebRTC or relevant features including pointer and keyboard lock in HTTP outside localhost. - If you created the TURN server or the example container inside a VPN-enabled environment or virtual machine and the WebRTC connection fails, then you may need to add the `SELKIES_TURN_HOST` environment variable to the private VPN IP of the TURN server host, such as `192.168.0.2`. +If you created the TURN server or the example container inside a VPN-enabled environment or virtual machine and the WebRTC connection fails, then you may need to add the `SELKIES_TURN_HOST` environment variable to the private VPN IP of the TURN server host, such as `192.168.0.2`. - Make sure to also check that you enabled automatic login with your display manager, as the remote desktop cannot access the initial login screen after boot without login. +Make sure to also check that you enabled automatic login with your display manager, as the remote desktop cannot access the initial login screen after boot without login. -## The HTML5 web interface is slow, lagging, or stuttering +
-??? "Open Answer" +## The HTML5 web interface is slow, lagging, or stuttering. - **First, check if the TURN server is shown as `staticauth.openrelay.metered.ca` with a `relay` connection, and if so, please read [WebRTC and Firewall Issues](firewall.md).** +
+ Open Answer - **Usually, if the host-client distance is not too far physically, the issue arises from using a Wi-Fi router with bufferbloat issues, especially if you observe stuttering. Try using the [Bufferbloat Test](https://www.waveform.com/tools/bufferbloat) to identify the issue first before moving on.** +**First, check if the TURN server is shown as `staticauth.openrelay.metered.ca` with a `relay` connection, and if so, please read [WebRTC and Firewall Issues](firewall.md).** - If this is the case, first try enabling `--congestion_control`, meant to mitigate such issues in coordination with the web browser. +**Usually, if the host-client distance is not too far physically, the issue arises from using a Wi-Fi router with bufferbloat issues, especially if you observe stuttering. Try using the [Bufferbloat Test](https://www.waveform.com/tools/bufferbloat) to identify the issue first before moving on.** - Moreover, always make sure that there are minimal background network processes, as live interactive streaming is much less tolerant to network fluctuation compared with other forms of video that may load the stream in advance. Using wired ethernet or a good 5GHz Wi-Fi connection is important (wired ethernet will eliminate all remaining issues of a good but slightly stuttering Wi-Fi connection). +If this is the case, first try enabling `--congestion_control`, meant to mitigate such issues in coordination with the web browser. - Ensure the latency to your TURN server from the server and the client is ideally under 50-75 ms. If the latency is too high, your connection might be too laggy for most interactive 3D applications. +Moreover, always make sure that there are minimal background network processes, as live interactive streaming is much less tolerant to network fluctuation compared with other forms of video that may load the stream in advance. Using wired ethernet or a good 5GHz Wi-Fi connection is important (wired ethernet will eliminate all remaining issues of a good but slightly stuttering Wi-Fi connection). - Next, there currently exists a current issue with CPU congestion from the web interface when the side panel is open. Please make sure to test your experience when the side panel is closed. +Ensure the latency to your TURN server from the server and the client is ideally under 50-75 ms. If the latency is too high, your connection might be too laggy for most interactive 3D applications. - Also note that a higher framerate will improve performance if you have sufficient bandwidth. This is because one screen refresh from a 60 fps screen takes 16.67 ms at a time, while one screen refresh from a 15 fps screen inevitably takes 66.67 ms, and therefore inherently causes a visible lag. Also try to keep the total bitrate reasonable, keeping around your service level agreement (SLA) bandwidth (which might be different from your maximum bandwidth contract). +Next, there currently exists a current issue with CPU congestion from the web interface when the side panel is open. Please make sure to test your experience when the side panel is closed. - If the latency becomes higher while the screen is idle or the tab is not focused for a long time, the internal efficiency control mechanism of the web browser may activate, which will be resolved automatically after a few seconds if there is new activity. +Also note that a higher framerate will improve performance if you have sufficient bandwidth. This is because one screen refresh from a 60 fps screen takes 16.67 ms at a time, while one screen refresh from a 15 fps screen inevitably takes 66.67 ms, and therefore inherently causes a visible lag. Also try to keep the total bitrate reasonable, keeping around your service level agreement (SLA) bandwidth (which might be different from your maximum bandwidth contract). - If it does not, disable all power saving or efficiency features available in the web browser. In Windows 10 or 11, try `Start > Settings > System > Power & battery > Power mode > Best performance`. Also, note that if you saturate your CPU or GPU with an application on the host, the remote desktop interface will also substantially slow down as it cannot use the CPU or GPU enough to decode the screen. Also, check for GPU driver/firmware updates in the client computer. +If the latency becomes higher while the screen is idle or the tab is not focused for a long time, the internal efficiency control mechanism of the web browser may activate, which will be resolved automatically after a few seconds if there is new activity. - However, it might be that the parameters for the WebRTC interface, video encoders, the RTP payloader, or other [GStreamer](https://gstreamer.freedesktop.org) plugins are not optimized enough. If you find that it is the case, we always welcome [contributions](development.md). If your changes show noticeably better results in the same conditions, please make a [Pull Request](https://github.com/selkies-project/selkies-gstreamer/pulls), or tell us about the parameters in any channel that we can reach so that we could also test. +If it does not, disable all power saving or efficiency features available in the web browser. In Windows 10 or 11, try `Start > Settings > System > Power & battery > Power mode > Best performance`. Also, note that if you saturate your CPU or GPU with an application on the host, the remote desktop interface will also substantially slow down as it cannot use the CPU or GPU enough to decode the screen. Also, check for GPU driver/firmware updates in the client computer. -## The clipboard does not work +However, it might be that the parameters for the WebRTC interface, video encoders, the RTP payloader, or other [GStreamer](https://gstreamer.freedesktop.org) plugins are not optimized enough. If you find that it is the case, we always welcome [contributions](development.md). If your changes show noticeably better results in the same conditions, please make a [Pull Request](https://github.com/selkies-project/selkies-gstreamer/pulls), or tell us about the parameters in any channel that we can reach so that we could also test. -??? "Open Answer" +
- This is very likely a web browser constraint that is applied because you are using HTTP for an address to the web interface that is not localhost. The clipboard only works when you use HTTPS (with a valid or self-signed certificate), or when accessing localhost (some browsers do not support this as well). You could use port forwarding to access through localhost or obtain an HTTPS certificate. +## The clipboard does not work. -## The web interface refuses to start up in the terminal after rebooting my computer or restarting my desktop in a standalone instance +
+ Open Answer -??? "Open Answer" +This is very likely a web browser constraint that is applied because you are using HTTP for an address to the web interface that is not localhost. The clipboard only works when you use HTTPS (with a valid or self-signed certificate), or when accessing localhost (some browsers do not support this as well). You could use port forwarding to access through localhost or obtain an HTTPS certificate. - This is because the desktop session starts as `root` when the user is not logged in. Next time, set up automatic login in the settings with the user you want to use. +
- In order to use the web interface when this is not possible (or when you are using SSH or other forms of remote access), check `sudo systemctl status sddm`, `sudo systemctl status lightdm`, or `sudo systemctl status gdm3` (use your display session manager) and find the path next to the `-auth` argument. Set the environment variable `XAUTHORITY` to the path you found while running Selkies-GStreamer as `root` or `sudo`. +## The web interface refuses to start up in the terminal after rebooting my computer or restarting my desktop in a standalone instance. -## My touchpad does not move while pressing a key with the keyboard +
+ Open Answer -??? "Open Answer" +This is because the desktop session starts as `root` when the user is not logged in. Next time, set up automatic login in the settings with the user you want to use. - This is a setting from the client operating system and will show the same behavior with any other application. In Windows, go to `Settings > Bluetooth & devices > Touchpad > Taps` to increase your touchpad sensitivity. In Linux or Mac, turn off the setting `Touchpad > Disable while typing`. +In order to use the web interface when this is not possible (or when you are using SSH or other forms of remote access), check `sudo systemctl status sddm`, `sudo systemctl status lightdm`, or `sudo systemctl status gdm3` (use your display session manager) and find the path next to the `-auth` argument. Set the environment variable `XAUTHORITY` to the path you found while running Selkies-GStreamer as `root` or `sudo`. -## I want to pass multiple screens within a server to another client using the WebRTC HTML5 web interface +
-??? "Open Answer" +## My touchpad does not move while pressing a key with the keyboard. - You can start a new instance of Selkies-GStreamer by changing the `DISPLAY` environment variable (or even use the same one for multiple instances) and setting a different web interface port in a different terminal to pass a different screen simultaneously to your current screen. Reverse proxy server/web servers supporting WebSocket such as `nginx` can be utilized to expose the interfaces to multiple users in different paths. +
+ Open Answer -## I want to test a shared secret TURN server by manually generating a TURN credential from a shared secret +This is a setting from the client operating system and will show the same behavior with any other application. In Windows, go to `Settings > Bluetooth & devices > Touchpad > Taps` to increase your touchpad sensitivity. In Linux or Mac, turn off the setting `Touchpad > Disable while typing`. -??? "Open Answer" +
- Try the [TURN-REST Container](component.md#turn-rest) or its underlying turn-rest `app.py` Flask web application. This will output TURN credentials automatically when the Docker®/Podman options `-e TURN_SHARED_SECRET=`, `-e TURN_HOST=`, `-e TURN_PORT=`, `-e TURN_PROTOCOL=`, `-e TURN_TLS=` or environment variables `export TURN_SHARED_SECRET=`, `export TURN_HOST=`, `export TURN_PORT=`, `export TURN_PROTOCOL=`, `export TURN_TLS=` are set. +## I want to pass multiple screens within a server to another client using the WebRTC HTML5 web interface. - The below steps can be used when you want to test your TURN server configured with a shared secret instead of the legacy username/password authentication: +
+ Open Answer - **1. Run the [Example Container](component.md#example-container) (fill in `DISTRIB_RELEASE` to Ubuntu versions such as `24.04`):** +You can start a new instance of Selkies-GStreamer by changing the `DISPLAY` environment variable (or even use the same one for multiple instances) and setting a different web interface port in a different terminal to pass a different screen simultaneously to your current screen. Reverse proxy server/web servers supporting WebSocket such as `nginx` can be utilized to expose the interfaces to multiple users in different paths. - ```bash - docker run --name selkies -it -d --rm -p 8080:8080 -p 3478:3478 ghcr.io/selkies-project/selkies-gstreamer/gst-py-example:main-ubuntu${DISTRIB_RELEASE} - docker exec -it selkies bash - ``` +
- **2. From inside the test container, call the `generate_rtc_config` method.** +## I want to test a shared secret TURN server by manually generating a TURN credential from a shared secret. - ```bash - export SELKIES_TURN_HOST="YOUR_TURN_HOST" - export SELKIES_TURN_PORT="YOUR_TURN_PORT" - export SELKIES_TURN_SECRET="YOUR_SHARED_SECRET" - export SELKIES_TURN_USER="user" +
+ Open Answer - python3 -c 'import os;from selkies_gstreamer.signalling_web import generate_rtc_config; print(generate_rtc_config(os.environ["SELKIES_TURN_HOST"], os.environ["SELKIES_TURN_PORT"], os.environ["SELKIES_TURN_SECRET"], os.environ["SELKIES_TURN_USER"]))' - ``` +Try the [TURN-REST Container](component.md#turn-rest) or its underlying turn-rest `app.py` Flask web application. This will output TURN credentials automatically when the Docker®/Podman options `-e TURN_SHARED_SECRET=`, `-e TURN_HOST=`, `-e TURN_PORT=`, `-e TURN_PROTOCOL=`, `-e TURN_TLS=` or environment variables `export TURN_SHARED_SECRET=`, `export TURN_HOST=`, `export TURN_PORT=`, `export TURN_PROTOCOL=`, `export TURN_TLS=` are set. - Using both methods, you can then test your TURN server configuration from the [Trickle ICE](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) website. +The below steps can be used when you want to test your TURN server configured with a shared secret instead of the legacy username/password authentication: + +**1. Run the [Example Container](component.md#example-container) (fill in `DISTRIB_RELEASE` to Ubuntu versions such as `24.04`):** + +```bash +docker run --name selkies -it -d --rm -p 8080:8080 -p 3478:3478 ghcr.io/selkies-project/selkies-gstreamer/gst-py-example:main-ubuntu${DISTRIB_RELEASE} +docker exec -it selkies bash +``` + +**2. From inside the test container, call the `generate_rtc_config` method.** + +```bash +export SELKIES_TURN_HOST="YOUR_TURN_HOST" +export SELKIES_TURN_PORT="YOUR_TURN_PORT" +export SELKIES_TURN_SECRET="YOUR_SHARED_SECRET" +export SELKIES_TURN_USER="user" + +python3 -c 'import os;from selkies_gstreamer.signalling_web import generate_rtc_config; print(generate_rtc_config(os.environ["SELKIES_TURN_HOST"], os.environ["SELKIES_TURN_PORT"], os.environ["SELKIES_TURN_SECRET"], os.environ["SELKIES_TURN_USER"]))' +``` + +Using both methods, you can then test your TURN server configuration from the [Trickle ICE](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) website. + +
\ No newline at end of file diff --git a/docs/index.md b/docs/index.md index e659c5d9..a0e1da53 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,12 +3,9 @@ hide: - navigation - toc --- - # Welcome to Selkies -
- ![Selkies WebRTC](assets/logo/horizontal-480.png) -
+![Selkies WebRTC](assets/logo/horizontal-480.png) [![Build](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml/badge.svg)](https://github.com/selkies-project/selkies-gstreamer/actions/workflows/build_and_publish_all_images.yaml) @@ -24,6 +21,20 @@ Selkies-GStreamer is designed for researchers, including people in the graphical While designed for clustered or unprivileged containerized environments, Selkies-GStreamer can also be deployed in desktop computers, and any performance issue that would be problematic in cloud gaming platforms is also considered a bug. +[**What is Selkies-GStreamer?**](design.md) + +[**Getting Started**](start.md) + +[**Troubleshooting and FAQs**](faq.md) + +[**WebRTC and Firewall Issues (cannot connect)**](firewall.md) + +[**Usage**](usage.md) + +[**Components including Encoders and Interfaces**](component.md) + +[**Development and Contributions**](development.md) + ## Citations in Academic Publications > **NOTE: This section is also applicable for developers applying, embedding, forking, deriving, or taking influence from this project.** @@ -42,14 +53,13 @@ Therefore, we kindly, but strongly ask all software projects which are applying `Kim, S., Isla, D., Hejtmánek, L., et al., Selkies-GStreamer, (2024), GitHub repository, https://github.com/selkies-project/selkies-gstreamer` -: !!! info "Maintainers of derivative open-source projects should also place this text in a clearly visible location of your project." +**Maintainers of derivative open-source projects should also place this text in a clearly visible location of your project.** - This project has been developed and is supported in part by the National Research Platform (NRP) and the Cognitive Hardware and Software Ecosystem Community Infrastructure (CHASE-CI) at the University of California, San Diego, by funding from the National Science Foundation (NSF), with awards #1730158, #1540112, #1541349, #1826967, #2138811, #2112167, #2100237, and #2120019, as well as additional funding from community partners, infrastructure utilization from the Open Science Grid Consortium, supported by the National Science Foundation (NSF) awards #1836650 and #2030508, and infrastructure utilization from the Chameleon testbed, supported by the National Science Foundation (NSF) awards #1419152, #1743354, and #2027170. This project has also been funded by the Seok-San Yonsei Medical Scientist Training Program (MSTP) Song Yong-Sang Scholarship, College of Medicine, Yonsei University, the MD-PhD/Medical Scientist Training Program (MSTP) through the Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health & Welfare, Republic of Korea, and the Student Research Bursary of Song-dang Institute for Cancer Research, College of Medicine, Yonsei University. +--- +This project has been developed and is supported in part by the National Research Platform (NRP) and the Cognitive Hardware and Software Ecosystem Community Infrastructure (CHASE-CI) at the University of California, San Diego, by funding from the National Science Foundation (NSF), with awards #1730158, #1540112, #1541349, #1826967, #2138811, #2112167, #2100237, and #2120019, as well as additional funding from community partners, infrastructure utilization from the Open Science Grid Consortium, supported by the National Science Foundation (NSF) awards #1836650 and #2030508, and infrastructure utilization from the Chameleon testbed, supported by the National Science Foundation (NSF) awards #1419152, #1743354, and #2027170. This project has also been funded by the Seok-San Yonsei Medical Scientist Training Program (MSTP) Song Yong-Sang Scholarship, College of Medicine, Yonsei University, the MD-PhD/Medical Scientist Training Program (MSTP) through the Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health & Welfare, Republic of Korea, and the Student Research Bursary of Song-dang Institute for Cancer Research, College of Medicine, Yonsei University. **Please read [Troubleshooting](faq.md) first, then use [Discord](https://discord.gg/wDNGDeSW5F) or [GitHub Discussions](https://github.com/selkies-project/selkies-gstreamer/discussions) for support questions. Please only use [Issues](https://github.com/selkies-project/selkies-gstreamer/issues) for technical inquiries or bug reports.** **NOTE: this project is licensed under the [Mozilla Public License, version 2.0](https://www.mozilla.org/en-US/MPL/2.0/FAQ/), which obliges to share modified code files licensed by MPL-2.0 when distributed externally, but does not apply for any larger work outside this project, which might be open-source or proprietary under any license of choice. Externally originated components outside this project may contain works licensed over more restrictive copyleft/proprietary licenses, as well as other terms of intellectual property, including but not limited to patents, which users or developers are obliged to adhere to.** -: !!! info "Selkies-GStreamer" - - Funding agencies including, but not limited to the National Science Foundation, remain neutral with regard to jurisdictional claims in published articles and software code of this Code Repository. The Selkies Project logo and name have been created and are utilized or distributed with authorization by Dan Isla. In the context including, but not limited to this Code Repository, as well as in the context including, but not limited to any and all derivative works based on this Code Repository, all trademarks, trade names, logos, patents, or any and all other forms of external intellectual property, that are mentioned or used, unless otherwise stated, are the property of their respective owners, including but not limited to, The Linux Foundation®, Linus Torvalds, The Apache Software Foundation, Canonical Ltd., Google LLC, Alphabet Inc., NumFOCUS Foundation, Anaconda Inc., conda-forge, Project Jupyter, Coder Technologies, Inc., Docker®, Inc., SchedMD LLC, NVIDIA Corporation, Intel Corporation, Advanced Micro Devices, Inc., Valve Corporation, Epic Games, Inc., Unity Software Inc., Cendio AB, RealVNC® Limited, Amazon.com, Inc., Amazon Web Services, Inc., or its affiliates including but not limited to NICE s.r.l. or NICE USA LLC, Microsoft Corporation, Oracle Corporation, StarNet Communications Corporation, TeamViewer SE, GStreamer Foundation, Fabrice Bellard, Moonlight Project, and LizardByte. Every best effort has been undertaken to properly identify and attribute trademarks, trade names, logos, patents, or any and all other forms of external intellectual property to their respective owners, unless otherwise stated, wherever possible and practical. The inclusion of such trademarks, trade names, logos, patents, or any and all other forms of external intellectual property in association with this project, unless otherwise stated, serves solely for the purpose of description and must never be construed as an indication of affiliation, competition, endorsement, or a challenge to any and all legal standings of the trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. All project contributors, maintainers, owners, or organizations agree to not willfully breach or infringe legal regulations, in any and all global law, regarding trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. Therefore, all project contributors, maintainers, owners, or organizations, are immune to, and are not to be in any and all cases held legally liable for, any and all jurisdictional claims on trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. No component of this Code Repository is an official product of Google LLC or Alphabet Inc. +\* Funding agencies including, but not limited to the National Science Foundation, remain neutral with regard to jurisdictional claims in published articles and software code of this Code Repository. The Selkies Project logo and name have been created and are utilized or distributed with authorization by Dan Isla. In the context including, but not limited to this Code Repository, as well as in the context including, but not limited to any and all derivative works based on this Code Repository, all trademarks, trade names, logos, patents, or any and all other forms of external intellectual property, that are mentioned or used, unless otherwise stated, are the property of their respective owners, including but not limited to, The Linux Foundation®, Linus Torvalds, The Apache Software Foundation, Canonical Ltd., Google LLC, Alphabet Inc., NumFOCUS Foundation, Anaconda Inc., conda-forge, Project Jupyter, Coder Technologies, Inc., Docker®, Inc., SchedMD LLC, NVIDIA Corporation, Intel Corporation, Advanced Micro Devices, Inc., Valve Corporation, Epic Games, Inc., Unity Software Inc., Cendio AB, RealVNC® Limited, Amazon.com, Inc., Amazon Web Services, Inc., or its affiliates including but not limited to NICE s.r.l. or NICE USA LLC, Microsoft Corporation, Oracle Corporation, StarNet Communications Corporation, TeamViewer SE, GStreamer Foundation, Fabrice Bellard, Moonlight Project, and LizardByte. Every best effort has been undertaken to properly identify and attribute trademarks, trade names, logos, patents, or any and all other forms of external intellectual property to their respective owners, unless otherwise stated, wherever possible and practical. The inclusion of such trademarks, trade names, logos, patents, or any and all other forms of external intellectual property in association with this project, unless otherwise stated, serves solely for the purpose of description and must never be construed as an indication of affiliation, competition, endorsement, or a challenge to any and all legal standings of the trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. All project contributors, maintainers, owners, or organizations agree to not willfully breach or infringe legal regulations, in any and all global law, regarding trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. Therefore, all project contributors, maintainers, owners, or organizations, are immune to, and are not to be in any and all cases held legally liable for, any and all jurisdictional claims on trademarks, trade names, logos, patents, or any and all other forms of external intellectual property. No component of this Code Repository is an official product of Google LLC or Alphabet Inc. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index f509c0e6..276d3fab 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: SELKIES -site_url: site_url: https://selkies-project.github.io +site_url: https://selkies-project.github.io site_description: >- Open-Source Low-Latency Accelerated Linux WebRTC HTML5 Remote Desktop Streaming Platform for Self-Hosting, Containers, Kubernetes, or Cloud/HPC theme: @@ -17,7 +17,7 @@ theme: name: material # custom_dir: overrides features: - - announce.dismiss + # - announce.dismiss - content.action.edit - content.action.view - content.code.annotate @@ -27,14 +27,14 @@ theme: # - content.tabs.link - content.tooltips # - header.autohide - # - navigation.expand + - navigation.expand - navigation.footer - navigation.indexes # - navigation.instant # - navigation.instant.prefetch # - navigation.instant.progress # - navigation.prune - - navigation.path + # - navigation.path - navigation.sections - navigation.tabs - navigation.tabs.sticky @@ -98,7 +98,7 @@ markdown_extensions: - tables - toc: permalink: true - - pymdownx.details + # - pymdownx.details - pymdownx.highlight: anchor_linenums: true line_spans: __span @@ -117,5 +117,4 @@ nav: - Firewall: firewall.md - Usage: usage.md - Components: component.md - - Development: development.md - + - Development: development.md \ No newline at end of file From c32779dc5396df483cfaa872cef457c1a27a1c89 Mon Sep 17 00:00:00 2001 From: vishalkadam47 Date: Thu, 26 Sep 2024 22:24:09 +0530 Subject: [PATCH 4/5] "Deleted index.md and updated mkdocs.yml to point to README.md instead" --- docs/{index.md => README.md} | 0 mkdocs.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/{index.md => README.md} (100%) diff --git a/docs/index.md b/docs/README.md similarity index 100% rename from docs/index.md rename to docs/README.md diff --git a/mkdocs.yml b/mkdocs.yml index 276d3fab..760de2a6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -110,7 +110,7 @@ markdown_extensions: # Page tree nav: - - Home: index.md + - Home: README.md - Design: design.md - Getting started: start.md - FAQs: faq.md From 0bfd52a1ab1ff2d7ded0e6d01cb28339795f500a Mon Sep 17 00:00:00 2001 From: Vishal kadam <107353260+vishalkadam47@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:13:49 +0530 Subject: [PATCH 5/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c4c791b7..8069cd69 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Selkies-GStreamer is designed for researchers, including people in the graphical While designed for clustered or unprivileged containerized environments, Selkies-GStreamer can also be deployed in desktop computers, and any performance issue that would be problematic in cloud gaming platforms is also considered a bug. -**[Read the Documentation](/docs/index.md) to get started.** +**[Read the Documentation](/docs/README.md) to get started.** ## Citations in Academic Publications