"0ads 0trackers 0tube" the opensource youtube frontend
Go to file
2020-08-10 10:32:07 +00:00
assets Delete 'assets/branding/placeholder.md' 2020-08-10 00:23:51 +00:00
config Add migration script for polymer redesign 2020-06-15 18:20:31 -05:00
docker Create postgres user to avoid fatal warning 2020-07-25 21:51:58 +02:00
kubernetes Move privacy type into playlists.sql 2020-04-14 18:09:48 -05:00
locales Merge weblate 2020-04-20 16:46:00 -05:00
screenshots Update CHANGELOG and bump version 2019-06-05 23:08:16 -05:00
spec Fix spec 2020-07-26 15:29:03 -04:00
src Fix playlist export for playlists with more than 100 videos 2020-07-28 17:21:39 -04:00
.editorconfig Initial commit 2017-11-23 01:48:55 -06:00
.gitignore Update .gitignore 2018-07-14 08:35:25 -05:00
.travis.yml Verify download, fix invidious file permission (#949) 2020-04-30 20:35:34 -05:00
CHANGELOG.md Update CHANGELOG and bump version 2019-11-05 23:38:49 -05:00
docker-compose.yml Merge pull request #1254 from SuperSandro2000/patch-2 2020-08-03 17:11:50 +02:00
invidious.service Add logfile to systemd service and fix path 2019-01-23 21:31:52 +01:00
LICENSE Updated license 2020-08-10 10:32:07 +00:00
README.md add stupid slogan 2020-08-10 09:46:14 +00:00
shard.yml Bump docker dependencies 2020-07-19 22:26:41 -04:00

"0ads 0trackers 0tube" the opensource youtube frontend

Roadmap

  • get time between schoolwork
  • working install script (0tube-Updater)
  • branding changes
  • ui changes
  • ux changes

0tube Instances

:?UPDATE WIP

Official Instances

:?UPDATE WIP

Screenshots

:?UPDATE WIP

Installation

0tube-Updater is a self-contained script that can automatically install and update 0tube.

Docker:

Build and start cluster:

$ docker-compose up

Then visit localhost:3000 in your browser.

Rebuild cluster:

$ docker-compose build

Delete data and rebuild:

$ docker volume rm invidious_postgresdata
$ docker-compose build

Linux

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.

Install the dependencies

# 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

Add an Invidious user and clone the repository

$ useradd -m invidious
$ sudo -i -u invidious
$ git clone https://github.com/iv-org/invidious
$ exit

Set up 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
$ 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

$ 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

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

Logrotate

$ sudo echo "/home/invidious/invidious/invidious.log {
rotate 4
weekly
notifempty
missingok
compress
minsize 1048576
}" | tee /etc/logrotate.d/invidious.logrotate
$ sudo chmod 0644 /etc/logrotate.d/invidious.logrotate

macOS:

# 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

Update Invidious

Instructions are available in the updating guide.

Usage:

$ ./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:

$ curl -fsSLo- https://raw.githubusercontent.com/samueleaton/sentry/master/install.cr | crystal eval
$ ./sentry
🤖  Your SentryBot is vigilant. beep-boop...

Documentation

Documentation can be found in the wiki.

Extensions

Extensions can be found in the wiki, as well as documentation for integrating it into other projects.

Made with Invidious

  • FreeTube: A libre software YouTube app for privacy.
  • CloudTube: A JavaScript-rich alternate YouTube player
  • PeerTubeify: On YouTube, displays a link to the same video on PeerTube, if it exists.
  • MusicPiped: A material design music player that streams music from YouTube.
  • LapisTube: A fancy and advanced (experimental) YouTube front-end. Combined streams & custom YT features.

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

Translation

  • Log in with an account you have elsewhere, or register an account and start translating at Hosted Weblate.

Contact

Feel free to send an e-mail to omarroth@protonmail.com or join our Matrix server, or #invidious on freenode.

You can also read the release notes on the page of releases CHANGELOG.md included in the repository.