This guide covers all installation methods for HomeTube.
Docker provides the easiest and most reliable installation method.
- Docker 20.10+
- Docker Compose (optional)
- 2GB free disk space
- Internet connection
# Basic run with ephemeral storage
docker run -p 8501:8501 ghcr.io/EgalitarianMonkey/hometube:latest
# Persistent storage (recommended)
docker run -p 8501:8501 \
-v ./downloads:/data/videos \
-v ./cookies:/config \
--name hometube \
ghcr.io/EgalitarianMonkey/hometube:latest-
Clone or download the repository:
git clone https://github.com/EgalitarianMonkey/hometube.git cd hometube -
Set up configuration:
# Copy sample files cp docker-compose.yml.sample docker-compose.yml cp .env.sample .env # Edit configurations as needed nano docker-compose.yml # Optional: customize ports, volumes nano .env # Optional: customize paths, settings
-
Start the application:
docker-compose up -d
-
Access the interface: Open http://localhost:8501 in your browser
Create a .env file for custom settings:
# Network configuration
PORT=8501
TZ=Europe/Paris
# Storage paths
VIDEOS_FOLDER_DOCKER_HOST=./downloads
TMP_DOWNLOAD_FOLDER_DOCKER_HOST=./tmp
YOUTUBE_COOKIES_FILE_PATH_DOCKER_HOST=./cookies/youtube_cookies.txtFor development or systems without Docker.
- Python 3.10+: Download from python.org
- FFmpeg: Required for video processing
- Package manager: pip, conda, uv, or poetry
sudo apt update
sudo apt install python3 python3-pip ffmpegbrew install python ffmpeg- Install Python 3.10+
- Download FFmpeg and add to PATH
Choose your preferred method:
# Clone repository
git clone https://github.com/EgalitarianMonkey/hometube.git
cd hometube
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .
pip install -e ".[test]"
# Run tests
make test
# Start application
streamlit run app/main.py# Clone repository
git clone https://github.com/EgalitarianMonkey/hometube.git
cd hometube
# ⚠️ ESSENTIAL: Configure environment
cp .env.sample .env
# Edit .env file to customize settings (see Configuration section below)
# Create conda environment
conda create -n hometube python=3.11
conda activate hometube
# Install dependencies
pip install -e .
pip install -e ".[test]"
# Run tests
make test
# Start application
streamlit run app/main.py# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone repository
git clone https://github.com/EgalitarianMonkey/hometube.git
cd hometube
# ⚠️ ESSENTIAL: Configure environment
cp .env.sample .env
# Edit .env file to customize settings (see Configuration section below)
# Setup environment
uv sync
# Run tests
uv run pytest tests/
# Start application
uv run streamlit run app/main.py# Clone repository
git clone https://github.com/EgalitarianMonkey/hometube.git
cd hometube
# ⚠️ ESSENTIAL: Configure environment
cp .env.sample .env
# Edit .env file to customize settings (see Configuration section below)
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# or
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements/requirements-dev.txt
# Start application
streamlit run app/main.py# Clone repository
git clone https://github.com/EgalitarianMonkey/hometube.git
cd hometube
# Build custom Docker image
docker build -t my-hometube .
# Run custom image
docker run -p 8501:8501 my-hometubeFor production environments, see the Deployment Guide.
For contributing to the project, see the Contributing Guide.
The .env file is required for the application to work properly:
# Copy the sample configuration
cp .env.sample .env
# Edit with your preferred settings
nano .env # or code .env, vim .env, etc.# Network & Port
PORT=8501 # Application port (default: 8501)
TZ=Europe/Paris # Your timezone
# Storage Paths (Local Installation)
VIDEOS_FOLDER=./downloads # Where videos are saved
TMP_DOWNLOAD_FOLDER=./tmp # Temporary processing folder
UI_LANGUAGE=en # Interface language (en/fr)
# Audio & Subtitle Language Preferences
LANGUAGE_PRIMARY=en # Primary audio language
LANGUAGE_PRIMARY_INCLUDE_SUBTITLES=true # Include subtitles for primary
LANGUAGES_SECONDARIES= # Secondary languages (comma-separated, e.g., fr,es)
# Authentication
YOUTUBE_COOKIES_FILE_PATH=./cookies/youtube_cookies.txt
# COOKIES_FROM_BROWSER=brave # Auto-extract from browser (optional)
# Media server: Jellyfin
JELLYFIN_BASE_URL=https://jellyfin.local:8096
JELLYFIN_API_KEY=<api key allowed to refresh libraries>
# Docker Paths (Docker Installation)
VIDEOS_FOLDER_DOCKER_HOST=./downloads
TMP_DOWNLOAD_FOLDER_DOCKER_HOST=./tmp
YOUTUBE_COOKIES_FILE_PATH_DOCKER_HOST=./cookies/youtube_cookies.txtChange download location:
# Edit .env file
VIDEOS_FOLDER=/path/to/your/media/libraryConfigure audio and subtitle languages:
# Edit .env file
LANGUAGE_PRIMARY=en # Primary audio language
LANGUAGE_PRIMARY_INCLUDE_SUBTITLES=true # Include subtitles for primary
LANGUAGES_SECONDARIES=fr,es,de,it # Additional languages (always get subtitles)Change interface language:
# Edit .env file
UI_LANGUAGE=fr # French interfaceApplication won't start - Missing .env file:
# Solution: Copy and configure environment
cp .env.sample .envFFmpeg not found:
# Verify FFmpeg installation
ffmpeg -version
# Ubuntu/Debian: Install via apt
sudo apt install ffmpeg
# macOS: Install via Homebrew
brew install ffmpegPermission denied (Docker):
# Linux: Add user to docker group
sudo usermod -aG docker $USER
# Then logout and login againPort already in use:
# Check what's using port 8501
lsof -i :8501
# Use different port
docker run -p 8502:8501 ghcr.io/EgalitarianMonkey/hometube:latestDownloads not persistent:
- Ensure you're using volume mounts:
-v ./downloads:/data/videos - Check directory permissions:
chmod 755 ./downloads
For faster downloads:
# Increase concurrent fragments
export YTDL_CONCURRENT_FRAGMENTS=4
# Use temporary directory on SSD
docker run -v /tmp/downloads:/data/tmp ...For lower resource usage:
# Limit Docker resources
docker run --memory=1g --cpus=1.0 ...After installation, verify everything works:
- Access web interface: http://localhost:8501
- Test download: Try downloading a public YouTube video
- Check logs:
docker logs hometube(Docker) or console output (local) - Test features: Try different quality settings, subtitle options
# Pull latest image
docker pull ghcr.io/EgalitarianMonkey/hometube:latest
# Recreate container
docker-compose up -d --force-recreate# Update repository
git pull origin main
# Update dependencies
make dev-setup # or pip install -r requirements/requirements-dev.txt
# Restart applicationIf you encounter issues:
- Check the troubleshooting section above
- Review the Usage Guide for feature-specific help
- Check GitHub Issues
- Create a new issue with:
- Installation method used
- Error messages
- System information (OS, Python version, etc.)
Next: Usage Guide - Learn how to use all the features