ViewTube
ViewTube is an alternative YouTube frontend.
It can recommend, play and search for videos. It saves your watch progress and you can subscribe to channels for them to appear in your subscription feed.
It's built using Nuxt.js and Nest.
Features
- Watch videos without ads or tracking
- Built from the ground up to be mobile and desktop friendly
- Dark and light themes
- Touch friendly video player with gestures
- Supports loop, speed, autoplay and volume
- Create an account separately from Youtube
- Read comments
- Search for videos
- Watch playlists
- Subscribe to channels and see their latest uploads
- Receive push notifications for subscribed channels
- Integrated SponsorBlock support
Where does ViewTube get the data from?
ViewTube does not use the official Youtube API. It instead scrapes the data from the website using a combination of custom built tools and the following open source libraries.
The Invidious API is still used in a few places.
You can check the progress on replacing the invidious api here.
Screenshots
Homepage
Video
Channel
Host it yourself
A more comprehensive installation guide is available in the wiki
Docker
Example docker command
$ docker create \
--name=viewtube
-p 8066:8066
-v /path/to/data:/data \
-e VIEWTUBE_API_URL=http://your-ip-or-domain.com/api/
--restart unless-stopped \
mauriceo/viewtube:latest
Docker-compose
version: '3'
services:
viewtube:
container_name: viewtube
restart: unless-stopped
image: mauriceo/viewtube:latest
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data:/data
environment:
- VIEWTUBE_API_URL=http://your-ip-or-domain.com/api/
ports:
- 8066:8066
Development setup
Prerequisites
- Nodejs v16.x
- Yarn 1.22.x
- MongoDB 4.4.x
- Redis 6.x
Instructions
-
Clone this repo
git clone https://github.com/ViewTube/viewtube-vue
-
Install dependencies
yarn install
-
Start the dev server
yarn serve
If you want to start the api and frontend separately, you can use the following commands.
yarn serve:api
yarn serve:web
-
Visit localhost:8066 with a browser
Pull requests welcome!