Initial commit.

This commit is contained in:
FireMasterK 2021-02-06 21:29:00 +05:30
parent 2538024750
commit 5e6ab2a13b
No known key found for this signature in database
GPG key ID: 8DFF5DD33E93DB58
14 changed files with 182 additions and 1 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
# Hugo default output directory
/public
/resources

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "themes/hugo-whisper-theme"]
path = themes/hugo-whisper-theme
url = https://github.com/zerostaticthemes/hugo-whisper-theme.git

View file

@ -1 +1,3 @@
# Documentation
# Documentation
Documentation on the core architecture of Piped and it's backend.

6
archetypes/default.md Normal file
View file

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

10
archetypes/docs.md Normal file
View file

@ -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.

48
config.toml Normal file
View file

@ -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"

5
content/_index.md Normal file
View file

@ -0,0 +1,5 @@
---
title: 'Piped'
---
Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.

8
content/docs/_index.md Normal file
View file

@ -0,0 +1,8 @@
---
title: 'Overview'
weight: 1
---
## Piped
Welcome to the Documentation of Piped.

View file

@ -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.

52
content/docs/why/index.md Normal file
View file

@ -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

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/images/banner.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

1
static/images/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

@ -0,0 +1 @@
Subproject commit 6638af48a3f11caf020cd8733ce4c94e1d558939