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