A Youtube frontend for private video streaming. Uses yt-dlp as a backend for downloading videos.
Installation (Manual)
https://docs.invidious.io/companion-installation/
- Install Crystal 1.12 (https://software.opensuse.org//download.html?project=devel%3Alanguages%3Acrystal&package=crystal1.10)
- sudo apt install make libssl-dev libxml2-dev libyaml-dev libgmp-dev libreadline-dev postgresql librsvg2-bin libsqlite3-dev zlib1g-dev libpcre3-dev libevent-dev fonts-open-sans npm
- npm install -g deno
Creating Invidious User
- useradd -m invidious
- su - invidious
- git clone https://github.com/iv-org/invidious
Setting up PostgreSQL
- systemctl enable --now postgresql
- sudo -i -u postgres
- `psql -c “CREATE USER kemal WITH PASSWORD ‘yourpasswordhere’;”
- createdb -O kemal invidious
- exit
Creating Keys
- Generate two secret keys (HMAC_KEY and invidious_companion_key)
- pwgen 16 1
- pwgen 16 1
 
Setting up invidious
- su - invidious
- cd invidious
- make
- Now, you should have a binary called invidiousin the same folder
- vim config/config.yml
db:
	user: kemal
	password : yourpassword
	...
	
invidious_companion:
  - private_url: "http://companion:8282"
    public_url: "http://invidious.mydomain.com"
invidious_companion_key: "CHANGE_ME!!"
...
hmac_key: "CHANGE_ME!!"
...
https_only: true
domain: "yoshixi.net"
external_port: 443
- ./invidious --migrate
- exit
Setup systemD service
- cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service
- systemctl enable --now invidious.service
Setup Invidious Companion
- git clone https://github.com/iv-org/invidious-companion.git
- cd invidious-companion
- deno task compile
- cp config/config.example.tml config/config.toml
- Edit the config file to be:
[server]
port = 8282
host = "0.0.0.0"
secret_key = "SAMEASINVIDIOUSCOMPANIONKEY"
- ./invidious_companion
Setup NGINX
Copy the nginx.conf found on this site: https://docs.invidious.io/companion-nginx/
After the server is running, you can access the frontend at localhost:3000