diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 344 |
1 files changed, 115 insertions, 229 deletions
@@ -1,273 +1,159 @@ -# Invidious - -[](https://github.com/iv-org/invidious/actions) [](https://hosted.weblate.org/engage/invidious/) - -## Invidious is an alternative front-end to YouTube - -## Invidious instances: - -[Public Invidious instances are listed here.](https://github.com/iv-org/documentation/blob/master/Invidious-Instances.md) - -## Invidious features: - -- [Copylefted libre software](https://github.com/iv-org/invidious) (AGPLv3+ licensed) -- Audio-only mode (and no need to keep window open on mobile) -- Lightweight (the homepage is ~4 KB compressed) -- Tools for managing subscriptions: - - Only show unseen videos - - Only show latest (or latest unseen) video from each channel - - Delivers notifications from all subscribed channels - - Automatically redirect homepage to feed - - Import subscriptions from YouTube -- Dark mode -- Embed support -- Set default player options (speed, quality, autoplay, loop) -- Support for Reddit comments in place of YouTube comments -- Import/Export subscriptions, watch history, preferences -- [Developer API](https://github.com/iv-org/documentation/blob/master/API.md) -- Does not use any of the official YouTube APIs -- Does not require JavaScript to play videos -- No need to create a Google account to save subscriptions +<div align="center"> + <img src="assets/invidious-colored-vector.svg" width="192" height="192" alt="Invidious logo"> + <h1>Invidious</h1> + + <a href="https://www.gnu.org/licenses/agpl-3.0.en.html"> + <img alt="License: AGPLv3+" src="https://shields.io/badge/License-AGPL%20v3+-blue.svg"> + </a> + <a href="https://github.com/iv-org/invidious/actions"> + <img alt="Build Status" src="https://github.com/iv-org/invidious/workflows/Invidious%20CI/badge.svg"> + </a> + <a href="https://github.com/iv-org/invidious/issues"> + <img alt="GitHub issues" src="https://img.shields.io/github/issues/iv-org/invidious?color=important"> + </a> + <a href="https://github.com/iv-org/invidious/pulls"> + <img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/iv-org/invidious?color=blueviolet"> + </a> + <a href="https://hosted.weblate.org/engage/invidious/"> + <img alt="Translation Status" src="https://hosted.weblate.org/widgets/invidious/-/translations/svg-badge.svg"> + </a> + <a href="https://github.com/humanetech-community/awesome-humane-tech"> + <img alt="Awesome Humane Tech" src="https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true"> + </a> + + <h3>An open source alternative front-end to YouTube</h3> + + <a href="https://instances.invidious.io/">Instances list</a> + • + <a href="#documentation">Documentation</a> + • + <a href="#contribute">Contribute</a> + • + <a href="#donate">Donate</a> + + <h5>Chat with us:</h5> + <a href="https://matrix.to/#/#invidious:matrix.org"> + <img alt="Matrix" src="https://img.shields.io/matrix/invidious:matrix.org?label=Matrix&color=darkgreen"> + </a> + <a href="https://web.libera.chat/?channel=#invidious"> + <img alt="Libera.chat (IRC)" src="https://img.shields.io/badge/IRC%20%28Libera.chat%29-%23invidious-darkgreen"> + </a> +</div> + + +## Screenshots + +| Player | Preferences | Subscriptions | +|-------------------------------------|-------------------------------------|---------------------------------------| +|  |  |  | +|  |  |  | + + +## Features + +**User features** +- Lightweight - No ads -- No CoC -- No CLA -- [Multilingual](https://hosted.weblate.org/projects/invidious/#languages) (translated into many languages) +- No tracking +- No JavaScript required +- Light/Dark themes +- Customizable homepage +- Subscriptions independant from Google +- Notifications for all subscribed channels +- Audio-only mode (with background play on mobile) +- Support for Reddit comments +- [Available in many languages](locales/), thanks to [our translators](#contribute) -## Donate: +**Data import/export** +- Import subscriptions from YouTube, NewPipe and Freetube +- Import watch history from NewPipe +- Export subscriptions to NewPipe and Freetube +- Import/Export Invidious user data -Bitcoin (BTC): [bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr](bitcoin:bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr) +**Technical features** +- Embedded video support +- [Developer API](https://docs.invidious.io/API.md) +- Does not use official YouTube APIs +- No Contributor License Agreement (CLA) -Monero (XMR): [41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR](monero:41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR) -## Screenshots: +## Quick start -| Player | Preferences | Subscriptions | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| [<img src="screenshots/01_player.png?raw=true" height="140" width="280">](screenshots/01_player.png?raw=true) | [<img src="screenshots/02_preferences.png?raw=true" height="140" width="280">](screenshots/02_preferences.png?raw=true) | [<img src="screenshots/03_subscriptions.png?raw=true" height="140" width="280">](screenshots/03_subscriptions.png?raw=true) | -| [<img src="screenshots/04_description.png?raw=true" height="140" width="280">](screenshots/04_description.png?raw=true) | [<img src="screenshots/05_preferences.png?raw=true" height="140" width="280">](screenshots/05_preferences.png?raw=true) | [<img src="screenshots/06_subscriptions.png?raw=true" height="140" width="280">](screenshots/06_subscriptions.png?raw=true) | +**Using invidious:** -## Installation: +- [Select a public instance from the list](https://instances.invidious.io) and start watching videos right now! -To manually compile invidious you need at least 2GB of RAM. If you have less you can setup SWAP to have a combined amount of 2 GB or use Docker instead. +**Hosting invidious:** -After installation take a look at the [Post-install steps](#post-install-configuration). +- [Follow the installation instructions](https://docs.invidious.io/Installation.md) -### Automated installation: -[Invidious-Updater](https://github.com/tmiland/Invidious-Updater) is a self-contained script that can automatically install and update Invidious. +## Documentation -### Docker: +The full documentation can be accessed online at https://docs.invidious.io/ -#### Build and start cluster: +The documentation's source code is available in this repository: +https://github.com/iv-org/documentation -```bash -$ docker-compose up -``` +### Extensions -Then visit `localhost:3000` in your browser. +We highly recommend the use of [Privacy Redirect](https://github.com/SimonBrazell/privacy-redirect#get), +a browser extension that automatically redirects Youtube URLs to any Invidious instance and replaces +embedded youtube videos on other websites with invidious. -#### Rebuild cluster: +The documentation contains a list of browser extensions that we recommended to use along with Invidious. -```bash -$ docker-compose build -``` +You can read more here: https://docs.invidious.io/Extensions.md -#### Delete data and rebuild: - -```bash -$ docker volume rm invidious_postgresdata -$ docker-compose build -``` - -### Manual installation: - -### Linux: - -#### Install the dependencies - -```bash -# Arch Linux -$ sudo pacman -S base-devel shards crystal librsvg postgresql - -# Ubuntu or Debian -# First you have to add the repository to your APT configuration. For easy setup just run in your command line: -$ curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash -# That will add the signing key and the repository configuration. If you prefer to do it manually, execute the following commands: -$ curl -sL "https://keybase.io/crystal/pgp_keys.asc" | sudo apt-key add - -$ echo "deb https://dist.crystal-lang.org/apt crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list -$ sudo apt-get update -$ sudo apt install crystal libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev postgresql librsvg2-bin libsqlite3-dev zlib1g-dev -``` -#### Add an Invidious user and clone the repository +## Contribute -```bash -$ useradd -m invidious -$ sudo -i -u invidious -$ git clone https://github.com/iv-org/invidious -$ exit -``` +### Code -#### Set up PostgresSQL +1. Fork it ( https://github.com/iv-org/invidious/fork ). +1. Create your feature branch (`git checkout -b my-new-feature`). +1. Stage your files (`git add .`). +1. Commit your changes (`git commit -am 'Add some feature'`). +1. Push to the branch (`git push origin my-new-feature`). +1. Create a new pull request ( https://github.com/iv-org/invidious/compare ). -```bash -$ sudo systemctl enable --now postgresql -$ sudo -i -u postgres -$ psql -c "CREATE USER kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml -$ createdb -O kemal invidious -$ psql invidious kemal < /home/invidious/invidious/config/sql/channels.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/videos.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/channel_videos.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/users.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/session_ids.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/nonces.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/annotations.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/playlists.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/playlist_videos.sql -$ exit -``` - -#### Set up Invidious - -```bash -$ sudo -i -u invidious -$ cd invidious -$ shards update && shards install -$ crystal build src/invidious.cr --release -# test compiled binary -$ ./invidious # stop with ctrl c -$ exit -``` - -#### Systemd service: - -```bash -$ sudo cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service -$ sudo systemctl enable --now invidious.service -``` - -#### Logrotate: - -```bash -$ echo "/home/invidious/invidious/invidious.log { -rotate 4 -weekly -notifempty -missingok -compress -minsize 1048576 -}" | sudo tee /etc/logrotate.d/invidious.logrotate -$ sudo chmod 0644 /etc/logrotate.d/invidious.logrotate -``` - -### MacOS: - -```bash -# Install dependencies -$ brew update -$ brew install shards crystal postgres imagemagick librsvg - -# Clone the repository and set up a PostgreSQL database -$ git clone https://github.com/iv-org/invidious -$ cd invidious -$ brew services start postgresql -$ psql -c "CREATE ROLE kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml -$ createdb -O kemal invidious -$ psql invidious kemal < config/sql/channels.sql -$ psql invidious kemal < config/sql/videos.sql -$ psql invidious kemal < config/sql/channel_videos.sql -$ psql invidious kemal < config/sql/users.sql -$ psql invidious kemal < config/sql/session_ids.sql -$ psql invidious kemal < config/sql/nonces.sql -$ psql invidious kemal < config/sql/annotations.sql -$ psql invidious kemal < config/sql/privacy.sql -$ psql invidious kemal < config/sql/playlists.sql -$ psql invidious kemal < config/sql/playlist_videos.sql - -# Set up Invidious -$ shards update && shards install -$ crystal build src/invidious.cr --release -``` - -## Post-install configuration: - -Detailed configuration available in the [configuration guide](https://github.com/iv-org/documentation/blob/master/Configuration.md). - -If you use a reverse proxy, you **must** configure invidious to properly serve request through it: - -`https_only: true` : if your are serving your instance via https, set it to true - -`domain: domain.ext`: if you are serving your instance via a domain name, set it here - -`external_port: 443`: if your are serving your instance via https, set it to 443 - -## Update Invidious - -Instructions are available in the [updating guide](https://github.com/iv-org/documentation/blob/master/Updating.md). - -## Usage: - -```bash -$ ./invidious -h -Usage: invidious [arguments] - -b HOST, --bind HOST Host to bind (defaults to 0.0.0.0) - -p PORT, --port PORT Port to listen for connections (defaults to 3000) - -s, --ssl Enables SSL - --ssl-key-file FILE SSL key file - --ssl-cert-file FILE SSL certificate file - -h, --help Shows this help - -c THREADS, --channel-threads=THREADS - Number of threads for refreshing channels (default: 1) - -f THREADS, --feed-threads=THREADS - Number of threads for refreshing feeds (default: 1) - -o OUTPUT, --output=OUTPUT Redirect output (default: STDOUT) - -v, --version Print version -``` - -Or for development: - -```bash -$ curl -fsSLo- https://raw.githubusercontent.com/samueleaton/sentry/master/install.cr | crystal eval -$ ./sentry -🤖 Your SentryBot is vigilant. beep-boop... -``` +### Translations -## Documentation +We use [Weblate](https://weblate.org) to manage Invidious translations. -The [documentation](https://github.com/iv-org/documentation) can be found in its own repository. +You can suggest new translations and/or correction here: https://hosted.weblate.org/engage/invidious/. -## Extensions +Creating an account is not required, but recommended, especially if you want to contribute regularly. +Weblate also allows you to log-in with major SSO providers like Github, Gitlab, BitBucket, Google, ... -[Extensions](https://github.com/iv-org/documentation/blob/master/Extensions.md) can be found in the wiki, as well as documentation for integrating it into other projects. -## Made with Invidious +## Projects using Invidious - [FreeTube](https://github.com/FreeTubeApp/FreeTube): A libre software YouTube app for privacy. -- [CloudTube](https://cadence.moe/cloudtube/subscriptions): A JavaScript-rich alternate YouTube player +- [CloudTube](https://sr.ht/~cadence/tube/): A JavaScript-rich alternate YouTube player. - [PeerTubeify](https://gitlab.com/Cha_deL/peertubeify): On YouTube, displays a link to the same video on PeerTube, if it exists. - [MusicPiped](https://github.com/deep-gaurav/MusicPiped): A material design music player that streams music from YouTube. -- [LapisTube](https://github.com/blubbll/lapis-tube): A fancy and advanced (experimental) YouTube front-end. Combined streams & custom YT features. - [HoloPlay](https://github.com/stephane-r/HoloPlay): Funny Android application connecting on Invidious API's with search, playlists and favoris. -## Contributing -1. Fork it ( https://github.com/iv-org/invidious/fork ) -2. Create your feature branch (git checkout -b my-new-feature) -3. Commit your changes (git commit -am 'Add some feature') -4. Push to the branch (git push origin my-new-feature) -5. Create a new pull request +## Donate -#### Translation +Bitcoin (BTC): [bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr](bitcoin:bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr) + +Monero (XMR): [41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR](monero:41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR) -- Log in with an account you have elsewhere, or register an account and start translating at [Hosted Weblate](https://hosted.weblate.org/engage/invidious/). +Ethereum (ETH): [0xD1F7E3Bfb19Ee5a52baED396Ad34717aF18d995B](ethereum:0xD1F7E3Bfb19Ee5a52baED396Ad34717aF18d995B) -## Contact +Litecoin (LTC): [ltc1q8787aq2xrseq5yx52axx8c4fqks88zj5vr0zx9](litecoin:ltc1q8787aq2xrseq5yx52axx8c4fqks88zj5vr0zx9) -Feel free to join our [Matrix room](https://matrix.to/#/#invidious:matrix.org), or #invidious on freenode. Both platforms are bridged together. ## Liability -We take no responsibility for the use of our tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate use of Invidious, such as illegal downloading. This tool is provided to you in the spirit of free, open software. +We take no responsibility for the use of our tool, or external instances +provided by third parties. We strongly recommend you abide by the valid +official regulations in your country. Furthermore, we refuse liability +for any inappropriate use of Invidious, such as illegal downloading. +This tool is provided to you in the spirit of free, open software. You may view the LICENSE in which this software is provided to you [here](./LICENSE). |
