From 5e6ab2a13bcf6fd9023bcbcd9260c8f46f39901c Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Sat, 6 Feb 2021 21:29:00 +0530 Subject: [PATCH] Initial commit. --- .gitignore | 4 +++ .gitmodules | 3 ++ README.md | 4 ++- archetypes/default.md | 6 ++++ archetypes/docs.md | 10 ++++++ config.toml | 48 ++++++++++++++++++++++++++ content/_index.md | 5 +++ content/docs/_index.md | 8 +++++ content/docs/architecture/index.md | 41 +++++++++++++++++++++++ content/docs/why/index.md | 52 +++++++++++++++++++++++++++++ static/favicon.png | Bin 0 -> 1460 bytes static/images/banner.webp | Bin 0 -> 45880 bytes static/images/logo.svg | 1 + themes/hugo-whisper-theme | 1 + 14 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 archetypes/default.md create mode 100644 archetypes/docs.md create mode 100644 config.toml create mode 100644 content/_index.md create mode 100644 content/docs/_index.md create mode 100644 content/docs/architecture/index.md create mode 100644 content/docs/why/index.md create mode 100644 static/favicon.png create mode 100644 static/images/banner.webp create mode 100644 static/images/logo.svg create mode 160000 themes/hugo-whisper-theme diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba7c3f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Hugo default output directory +/public + +/resources \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..affee54 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/hugo-whisper-theme"] + path = themes/hugo-whisper-theme + url = https://github.com/zerostaticthemes/hugo-whisper-theme.git diff --git a/README.md b/README.md index 7d8b3af..d10cbaa 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ -# Documentation \ No newline at end of file +# Documentation + +Documentation on the core architecture of Piped and it's backend. diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/archetypes/docs.md b/archetypes/docs.md new file mode 100644 index 0000000..68a01b5 --- /dev/null +++ b/archetypes/docs.md @@ -0,0 +1,10 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +date: {{ .Date }} +draft: false +weight: 100 +--- + +Lorem markdownum aequalis strigis. Saetigeri iubeas, vultu huic alvum nondum +de obside ut laniavit arbor palmis, cum quin. Rupes vetat videndo, armigerae +crimen habet Priamum nec. diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..1171acf --- /dev/null +++ b/config.toml @@ -0,0 +1,48 @@ +baseURL = "piped-docs.kavin.rocks" +languageCode = "en-us" +title = "Piped" +themesDir = "themes" +theme = "hugo-whisper-theme" + +pygmentsCodeFences = true +pygmentsCodefencesGuessSyntax = true +pygmentsUseClasses = true + +# Controls how many words are printed in the content summary on the docs homepage. +# See https://gohugo.io/content-management/summaries/ +summaryLength = 30 + +[[menu.main]] + name = "Home" + url = "/" + weight = 1 + +[[menu.main]] + name = "Docs" + url = "/docs/" + weight = 2 + +[params] + google_analytics_id="" + homepage_button_link = '/docs' + homepage_button_text = 'Read The Docs' + homepage_intro = 'Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.' + homepage_image = '/images/banner.webp' + + ## You can enable to add anchor links to header elements + # enable_anchor_link = true + + [params.homepage_meta_tags] + meta_description = "Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design." + meta_og_title = "Piped" + meta_og_type = "website" + meta_og_url = "https://piped-docs.kavin.rocks" + meta_og_image = "https://avatars.githubusercontent.com/u/74294114?s=250" + meta_og_description = "Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design." + meta_twitter_card = "summary" + meta_twitter_site = "" + meta_twitter_creator = "" + + [params.logo] + mobile = "/images/logo.svg" + standard = "/images/logo.svg" diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..27b77ea --- /dev/null +++ b/content/_index.md @@ -0,0 +1,5 @@ +--- +title: 'Piped' +--- + +Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design. diff --git a/content/docs/_index.md b/content/docs/_index.md new file mode 100644 index 0000000..f61c9ad --- /dev/null +++ b/content/docs/_index.md @@ -0,0 +1,8 @@ +--- +title: 'Overview' +weight: 1 +--- + +## Piped + +Welcome to the Documentation of Piped. diff --git a/content/docs/architecture/index.md b/content/docs/architecture/index.md new file mode 100644 index 0000000..7f7acc2 --- /dev/null +++ b/content/docs/architecture/index.md @@ -0,0 +1,41 @@ +--- +title: 'Architecture' +weight: 4 +summary: What is Piped architectured? +--- + +## What is Piped's architecture? + +Piped has 3 components: + +- A frontend in VueJS +- A backed in Java which uses NewPipeExtractor +- A proxy in Golang + +links: https://github.com/TeamPiped/Piped\, https://github.com/TeamPiped/Piped-Backend and, https://github.com/FireMasterK/http3-ytproxy + +## Frontend +- Uses videojs +- Uses a router for a single page application. + +## Backend +- Uses Java 11 +- Uses the native HTTP client introduced in Java 9 +- Uses netty-reactor to acheive maximum performance and a low footprint. +- Supports OpenJ9 +- Each running instance should configure their own proxy, thus allowing multi-gigabit content delivery. +- Uses ~70-130 MB of ram. (on OpenJ9) + +# Proxy +- Uses Golang +- Has HTTP/2 support. (HTTP/3 is unstable in the current library) +- Low memory footprint and high throughput. +- Can be used to replace the proxy in various other frontends. + +# Server-Side Caching + +Caching is done at a Reverse-Proxy/CDN level to reduce the load to the backend. This also makes it more scalable. + +# LBRY + +LBRY streams are automatically added to stream content via LBRY if the same video is available there. \ No newline at end of file diff --git a/content/docs/why/index.md b/content/docs/why/index.md new file mode 100644 index 0000000..e431ca6 --- /dev/null +++ b/content/docs/why/index.md @@ -0,0 +1,52 @@ +--- +title: 'Why' +weight: 4 +summary: Why did I create Piped? +--- + +## Why did I create Piped? + +YouTube has an extremely invasive privacy policy which relies on using user data in unethical ways. + +Here are some things about YouTube: + +- Tracking via third-party cookies for other purposes without your consent. +- YouTube can delete your content if you violate the terms +- Reduction of legal period for cause of action +- YouTube may use your personal information for marketing purposes +- YouTube can view your browser history +- YouTube can use your content for all their existing and future services +- YouTube gathers information about you through third parties +- YouTube can license user content to third parties +- YouTube provider makes no warranty regarding uninterrupted, timely, secure or error-free service +- Deleted videos are not really deleted +- Your data may be processed and stored anywhere in the world +- YouTube is only available to users over a certain age +- YouTube can suspend your account for several reasons +- YouTube has non-exclusive use of your content +- The court of law governing the terms is in the US +- YouTube collects your IP address for location use + +Source: https://tosdr.org/en/service/274 + +A lot of inspiration came from NewPipe and Invidious. + +I created Piped to fix issues in NewPipe and Invidious which are architectural issues and cannot be fixed easily. + +### NewPipe +- Your IP is exposed to YouTube. +- Feeds are slow to load. + +### Invidious +- Uses way too much resources. +- Total bandwidth limited by the peak capacity of the load balancer. +- Coded in Crystal, a language that is relatively hard for beginners. +- Caching is done at a backend level. +- Invidious was a learning project. +- Invidious crashes all the time. +- Various hacks are required to keep an instance running at a reasonable stablity. + +However, there are some drawbacks of Piped: + +- JavaScript is required +- Browsers without Service-Workers support will feel significantly slower. Eg: Tor Browser diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b9443daa7c977cfb9978ff618f622047ddf6ed8a GIT binary patch literal 1460 zcmV;l1xxygP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1xZOnK~z{r)mBSr zTvZtU?wwa=CexTq9yO*3*d|RIO3)^;A*7KAnz#@}!Cj#UX5muOg;1o3h}5D;w=T3I zif*)0Eff)<=^|Cs5NKl|m^38KV-l0hB$Ijh{pZ}d^T?ef#)bF|XU_AU|2yCRp9lVH z7*@V#csw4{>-E-|rrDgyWWv&B7)B(WPTxx;5_4NyTPZbgkJu9d8Z~@A-zge8!!*dI zLrkXX%puJ*LsH)}|Aa(t#^dpf>e&Ii5-2Y(@8oLVqqW{zkIUH1WU!JHTRTDwkC4pp z+S=MJ-Q#$RRCI9FSNdK!0`CR~Pr zYL5#mG*Z^lh3+RhP~&!?b7cvA2g>kLRXL`%l9-GqWhzc#^iaW*obPMKNJ1L(QS8U; z%0FZAdEG+iQuZ`OXJ2Tt3KqgistgD1 zEQpO4D*UMNhzktu2IjxU;`nH60*!UG*tq%)Did+I=^k;BBtMnlF#NQ(Y0aYi(akM< zgF9r}YRV}fTTP;!#cisH{Gxzfz2sVg2lESf{lYsqJ9ZC4_am5PaAsAIG0#;7)wn!J zOkCoYwijp{lYP#tSJw(5lNFGVHr-`od^3Uf7glw@jAL6JT~Jf#20<59=(EZ>0$lwW zW{%r3Yh2}=TFToP5VHNGUz5;Dc1RIK1+k@|2*~luOinmQXydXfO+rm>^<@#J&xgY0 zs!s=`Rw0^pJhTR=xLXQ}fSm2j(B|{#ewBcA zDl*M8!2t)k=mse$0+hcwTXupN%c`J>2ovDc$#$IX?Ll?>33wU#npiG&lQuS-JNRNIc1&m%l0r&x4Uq2yCcIJ^6>il`lK?*qj8SejFg>FtU%V!f{8z;a5tX7EM?!L zalt$<#`{uG1X!Vs%y&|DLW&kO2`k8~82A^s&exK>s20+JR$u|-Ax^j8&3~DgVxqoJlcE&=7EQB^|x^>MwYEFN<(C)@v~0G z1&$Ape1t-w9+J4k)Kw7*8Hr>P(U{|0#keg2SM2j*>`Fi&Z#a2Ik%YWt2AB>q6@M#1 zG0$|JhOfw0%a8U_*b{+#$V)~Z6C@+|xm>9-#}bYHLC;NRPq_aHfWHBHr^ka|Y?dzo O0000RB+-0XvXZv`Vx&o#I}~UO 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 literal 0 HcmV?d00001 diff --git a/static/images/logo.svg b/static/images/logo.svg new file mode 100644 index 0000000..f0356a6 --- /dev/null +++ b/static/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/themes/hugo-whisper-theme b/themes/hugo-whisper-theme new file mode 160000 index 0000000..6638af4 --- /dev/null +++ b/themes/hugo-whisper-theme @@ -0,0 +1 @@ +Subproject commit 6638af48a3f11caf020cd8733ce4c94e1d558939