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
invidious
in 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