Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenMedia

OpenMedia

Download videos from almost any website. Lightweight, self-hosted media downloader with a clean web UI.

CI Release Stars MIT license

English | Tiếng Việt

Features

  • Downloads from 1000+ sites through yt-dlp
  • MP4 and MKV video with a quality picker
  • MP3, M4A, Opus, FLAC and WAV audio
  • Trimming to a time range
  • Subtitles, embedded or as a separate SRT file
  • Cover art, metadata and chapters embedded in the file
  • A queue with live progress, cancel and a concurrency limit
  • Bulk links and playlists
  • Cookies for age-restricted or bot-checked videos
  • Optional password, rate limiting and private-network blocking
  • History, drag and drop, paste anywhere, keyboard shortcuts
  • Installable PWA with a share target
  • Light and dark themes with seven accent colors
  • English and Vietnamese
OpenMedia desktop, light theme OpenMedia on a phone, dark theme

Installation

Docker Compose

Download compose.yaml and example.env from the latest release, then copy the example settings:

cp example.env .env

Edit .env and set OPENMEDIA_PASSWORD to a password of your own. The API refuses to start while it is still changeme; leave it empty only for a private local instance. Then start the stack:

docker compose up -d

Open http://localhost:8080.

Installer script

curl -fsSL https://github.com/ttncode/openmedia/releases/latest/download/install.sh | bash

The installer generates a random password and prints it with the address when it finishes.

From source

git clone https://github.com/ttncode/openmedia.git
cd openmedia
mise install
mise run //apps/api:dev
mise run //apps/web:dev

Open http://localhost:3000.

Documentation

For Developers

Every config root (apps/api, apps/web, docs) answers the same task contract: install, format/format-fix, lint, check, test, build, ci-unit, checklist. Run one root's checks with mise run //apps/api:ci-unit, or mise run checklist from the project root to run every root, which is exactly what CI runs.

Path What lives there
apps/api Flask backend, yt-dlp integration
apps/web Next.js web UI
docs This documentation site

See CONTRIBUTING.md for the branch and commit conventions.

Get Help

Acknowledgments

Disclaimer

OpenMedia is for personal use. Respect copyright law and the terms of service of the sites you download from.

License

MIT, see LICENSE and NOTICE.

About

📥 Self-hosted downloader for video and audio from almost any site.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages