System requirements
Before installing OfflineTube, ensure your system meets these requirements:Required software
Node.js and npm
Node.js and npm
- Node.js: Version 20 or higher
- npm: Version 10 or higher
Python
Python
- Python: Version 3.10 or higher
- pip: Latest version recommended
FFmpeg
FFmpeg
FFmpeg and ffprobe must be installed and available in your system PATH.Verify installation:Installation by platform:
- macOS
- Ubuntu/Debian
- Windows
Hardware recommendations
- CPU: Multi-core processor recommended for faster video processing
- RAM: Minimum 4GB, 8GB or more recommended for handling large video downloads
- Storage: Sufficient disk space for your video library (videos can be several GB each)
- Network: Stable internet connection for downloading YouTube content
Frontend setup
The frontend is a Next.js application located in the project root.Install dependencies
Install all Node.js dependencies using npm:This installs:
- Next.js 16 with App Router
- React 19 and React DOM
- Tailwind CSS and styling libraries
- shadcn/ui components
- All other dependencies from
package.json
The installation may take several minutes depending on your internet connection.
Backend setup
The backend is a FastAPI application using yt-dlp for YouTube integration.Create Python virtual environment
Create an isolated Python environment:Your prompt should now show
- macOS/Linux
- Windows
(.venv) indicating the virtual environment is active.Install Python dependencies
With the virtual environment activated, install all backend dependencies:This installs:
- FastAPI (0.109.0): Web framework
- uvicorn (0.27.0): ASGI server
- yt-dlp (2024.1.1): YouTube downloader
- python-multipart (0.0.6): File upload support
- aiofiles (23.2.1): Async file operations
- Additional libraries for async operations and data handling
Environment configuration
OfflineTube works out of the box with default settings, but you can customize the backend API URL if needed.Frontend environment variables (optional)
The frontend automatically detects the backend URL based on the current host. To override this:Backend configuration
The backend runs on0.0.0.0:8001 by default, configured in mini-services/offlinetube-api/main.py:
main.py
Running on 0.0.0.0: This allows the backend to accept connections from any network interface, enabling LAN access from other devices.
Running in development
Once installed, you’ll need two terminal windows to run OfflineTube:Terminal A: Backend server
Terminal B: Frontend server
Verification steps
Verify your installation is working correctly:Check backend health
With the backend running, visit the API documentation:You should see the FastAPI interactive documentation with all available endpoints.
Test frontend connectivity
Open the frontend in your browser:The OfflineTube interface should load without errors.
Verify FFmpeg integration
Try searching for and downloading a short video. If the download completes successfully and you can play it back, FFmpeg is working correctly.
Production build
For production deployment, build the frontend:- Standalone server files in
.next/standalone/ - Static assets in
.next/static/ - Public files copied to the standalone directory
Network access (LAN)
To access OfflineTube from other devices on your local network:Find your IP address
- macOS/Linux
- Windows
192.168.x.x or 10.0.x.x).Ensure backend is accessible
The backend is already configured to run on
0.0.0.0:8001, which accepts connections from all network interfaces.Access from other devices
On another device on the same network, navigate to:The frontend will automatically detect and connect to
http://YOUR_IP:8001.Available scripts
OfflineTube provides several npm scripts for development and production:| Script | Command | Description |
|---|---|---|
| dev | npm run dev | Start Next.js development server on port 3000 with logging |
| build | npm run build | Create production build with standalone output |
| start | npm run start | Run production server using Bun |
| lint | npm run lint | Run ESLint to check code quality |
Next steps
Your OfflineTube installation is complete! Here are some next steps:API reference
Learn about the backend API endpoints for advanced usage
Environment configuration
Customize OfflineTube with environment variables and settings
Development mode
Run OfflineTube in development mode with hot reload
Network access
Configure OfflineTube for local network access