Go to file
2019-01-21 11:35:10 -06:00
assets Format default.css 2018-11-25 19:01:19 -06:00
config Move 'domain' into config.yml 2019-01-20 22:19:14 -06:00
docker basic docker-compose cluster 2018-09-29 13:30:56 +02:00
locales added support for vid types in "trending" page (#289) 2019-01-17 10:17:16 -06:00
src Move 'domain' into config.yml 2019-01-20 22:19:14 -06:00
.editorconfig Initial commit 2017-11-23 01:48:55 -06:00
.gitignore Update .gitignore 2018-07-14 08:35:25 -05:00
CHANGELOG.md Bump version and update CHANGELOG 2019-01-05 21:54:23 -06:00
docker-compose.yml basic docker-compose cluster 2018-09-29 13:30:56 +02:00
invidious.service Add invidious.service 2019-01-19 15:04:28 +01:00
LICENSE Change license 2018-01-28 11:32:40 -06:00
README.md Add Contact and License sections to README 2019-01-21 11:35:10 -06:00
setup.sh Remember nonce to prevent replay attacks 2018-11-17 13:18:12 -06:00
shard.yml Bump version 2019-01-19 10:03:23 -06:00

Invidious

Invidious is an alternative front-end to YouTube

  • Audio-only mode (and no need to keep window open on mobile)
  • Open-source (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
  • Developer API

Liberapay: https://liberapay.com/omarroth
Patreon: https://patreon.com/omarroth
BTC: 356DpZyMXu6rYd55Yqzjs29n79kGKWcYrY
BCH: qq4ptclkzej5eza6a50et5ggc58hxsq5aylqut2npk

Onion links:

  • kgg2m7yk5aybusll.onion
  • axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid.onion

Installation

Docker:

Build and start cluster:

$ docker-compose up

And visit localhost:3000 in your browser.

Rebuild cluster:

$ docker-compose build

Delete data and rebuild:

$ docker volume rm invidious_postgresdata
$ docker-compose build

Arch Linux:

# Install dependencies
$ sudo pacman -S shards crystal imagemagick librsvg

# Setup PostgresSQL
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
$ sudo -i -u postgres
$ createuser -s YOUR_USER_NAME
$ createdb      YOUR_USER_NAME
$ exit

# Setup Invidious
$ git clone https://github.com/omarroth/invidious
$ cd invidious
$ ./setup.sh
$ shards
$ crystal build src/invidious.cr --release

On Ubuntu:

# Install dependencies
$ curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash
$ sudo apt update
$ sudo apt install crystal libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev librsvg2-dev postgresql imagemagick libsqlite3-dev

# Setup PostgreSQL
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
$ sudo -i -u postgres
$ createuser -s YOUR_USER_NAME_HERE
$ createdb      YOUR_USER_NAME_HERE
$ exit

# Setup Invidious
$ git clone https://github.com/omarroth/invidious
$ cd invidious
$ ./setup.sh
$ shards
$ crystal build src/invidious.cr --release

On OSX:

# Install dependencies
$ brew update
$ brew install shards crystal-lang postgres imagemagick librsvg

# Setup Invidious
$ git clone https://github.com/omarroth/invidious
$ cd invidious
$ ./setup.sh
$ shards
$ crystal build src/invidious.cr --release

Usage:

$ crystal build src/invidious.cr --release
$ ./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
    -t THREADS, --crawl-threads=THREADS
                                     Number of threads for crawling (default: 1)
    -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)
    -v THREADS, --video-threads=THREADS
                                     Number of threads for refreshing videos (default: 1)

Or for development:

$ curl -fsSLo- https://raw.githubusercontent.com/samueleaton/sentry/master/install.cr | crystal eval
$ ./sentry

Optional

Create a systemd service to run Invidious in background. Edit invidious.service to change your installation path and log location. Than copy and enable the systemd service.

$ sudo cp invidious.service /etc/systemd/system/invidious.service
$ sudo systemctl enable invidious.service
$ sudo systemctl start invidious.service

Extensions

Made with Invidious

  • FreeTube: An Open Source YouTube app for privacy.
  • CloudTube: Website featuring pastebin, image host, and YouTube player
  • PeerTubeify: On YouTube, displays a link to the same video on PeerTube, if it exists.

Contributing

  1. Fork it ( https://github.com/omarroth/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

Contact

Feel free to send an email to omarroth@protonmail.com or join our Matrix Server.

You can also view release notes on the releases page or in the CHANGELOG.md included in the repository.

License

GNU AGPLv3 Image

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 the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.