A private YouTube web client extracted from FreeTube.
- Video search and browsing
- Video playback with shaka-player (DASH support)
- Channel browsing
- Playlists management
- Favorites system
- Course tracking
- Music mode
- Subscriptions
- Watch history
- User authentication
# Install dependencies
npm install
cd client && npm install && cd ..
# Start development servers
npm run dev
# Or start separately:
npm run dev:server # API server on :3001
npm run dev:client # Vue client on :5173# Build client
npm run build
# Start production server
npm start# Build and run
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose downCopy .env.example to .env and configure:
PORT=3001
SESSION_SECRET=your-secret-key
YOUTUBE_COOKIE= # Optional: For personalized contentmeetube/
├── client/ # Vue.js SPA
│ ├── src/
│ │ ├── components/
│ │ ├── views/
│ │ ├── store/
│ │ └── router/
│ └── vite.config.js
├── server/ # Express.js API
│ ├── routes/
│ │ ├── api.js # YouTube API
│ │ ├── proxy.js # Media proxy
│ │ └── auth.js # Authentication
│ └── services/
│ ├── youtube.js
│ └── database.js
└── docker-compose.yml
GET /api/v1/search?q=...- Search videosGET /api/v1/videos/:id- Get video infoGET /api/v1/channels/:id- Get channel infoGET /api/v1/trending- Trending videos
/vi/:videoId/:filename- Video thumbnails/ggpht/*- Channel avatars/videoplayback?url=...- Video stream proxy
POST /auth/register- Create accountPOST /auth/login- LoginPOST /auth/logout- LogoutGET /auth/me- Current user
- Based on FreeTube
- Uses youtubei.js for YouTube API
- Uses shaka-player for video playback
AGPL-3.0-or-later