Invidious is an alternative front-end to YouTube
- Audio-only mode (and no need to keep window open on mobile)
- Free software(AGPLv3 licensed)
- No ads
- No need to create a Google account to save subscriptions
- Lightweight (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)
- Does not require JS to play videos
- Support for Reddit comments in place of YT comments
- Import / Export subscriptions, watch history, preferences
- Does not use any of the official YouTube APIs
- DeveloperAPI
Liberapay:https://liberapay.com/omarroth
BTC: 356 DpZyMXu6rYd 55 Yqzjs (n) kGKWcYrY
BCH: qq4ptclkzej5eza6a (et5ggc) hxsq5aylqut2npk
Invidious Instances
SeeInvidious Instancesfor a full list of publicly available instances.
Official Instances
- invidio.us
🇺🇸
Issuer: Let’s Encrypt,SSLLabs Verification - kgg2m7yk5aybusll.onion
- axqzx4s6s (s) yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid.onion
Screenshots
Installation
SeeInvidious-Updaterfor a self-contained script that can automatically install and update Invidious.
Docker:
Build and start cluster:
And visitlocalhost: 3000
in your browser.
Rebuild cluster:
Delete data and rebuild:
$ docker volume rm invidious_postgresdata $ docker-compose build
Linux:
Install dependencies
# (Arch Linux) $ sudo pacman -S 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
Add invidious user and clone repository
# (Arch Linux) $ sudo pacman -S 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
$ useradd -m invidious $ sudo -i -u invidious $ git clone https://github.com/omarroth/invidious $exit
Setup PostgresSQL
$ sudo systemctl (enable) postgresql $ sudo systemctl start 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 $exit
Setup Invidious
$ sudo -i -u invidious $CDinvidious $ shards update&&shards install $ crystal build src / invidious.cr --release#test compiled binary$ ./invidious#stop with ctrl c$exit
systemd service
$ sudo cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service $ sudo systemctlenableinvidious.service $ sudo systemctl start invidious.service
OSX:
#Install dependencies$ brew update $ brew install shards crystal postgres imagemagick librsvg#Clone repository and setup postgres database$ git clone https://github.com/omarroth/invidious $CDinvidious $ 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 kemalconfig / sql / channels.sql $ psql invidious kemalconfig / sql / videos.sql $ psql invidious kemalconfig / sql / channel_videos.sql $ psql invidious kemalconfig / sql / users.sql $ psql invidious kemalconfig / sql / session_ids.sql $ psql invidious kemalconfig / sql / nonces.sql $ psql invidious kemalconfig / sql / annotations.sql#Setup Invidious$ shards update&&shards install $ crystal build src / invidious.cr --release
Update Invidious
You can see how to update Invidioushere.
Usage:
$ ./invidious -h Usage: invidious [arguments] -b HOST, --bind HOST Host tobind(defaults to 0.0.0.0) -p PORT, --port PORT Port to listenforconnections (defaults to 3000) -s, --ssl Enables SSL --ssl-key-file FILE SSL key file --ssl-cert-file FILE SSL certificate file -h, --help Shows thishelp -c THREADS, --channel-threads=THREADS Number of threadsforrefreshing channels (default: 1) -f THREADS, --feed-threads=THREADS Number of threadsforrefreshing feeds (default: 1) -o OUTPUT, --output=OUTPUT Redirect output (default: STDOUT) -v, --version Print version
Or for development:
$ curl -fsSLo- https://raw.githubusercontent.com/samueleaton/sentry/master/install.cr|crystal (eval) $ ./sentry 🤖 Your SentryBot is vigilant. beep-boop ...
Documentation
Documentationcan be found in the wiki.
Extensions
Extensionscan be found in the wiki, as well as documentation for integrating it into other projects.
Made with Invidious
- FreeTube: An Open Source YouTube app for privacy.
- (CloudTube) : A JS-rich alternate YouTube player
- PeerTubeify: On YouTube, displays a link to the same video on PeerTube, if it exists.
- (MusicPiped) : A materialistic music player that streams music from YouTube.
- Fork it (https://github.com/omarroth/invidious/fork)
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am ‘Add some feature’)
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contact
Contributing
Feel free to send an email to ([email protected]) or join our (Matrix Server) , or #invidious on Freenode.
You can also view release notes on the (releases) page or in the CHANGELOG.md included in the repository.
License
Invidious is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and / or modify it under the terms of theGNU Affero General Public Licenseas published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
GIPHY App Key not set. Please check settings