Automatically rips DVDs and Blu-ray discs using the MakeMKV console and saves them to unique folders.
- 🖥️ Interactive CLI - Simple menu-driven interface
- 🌐 Modern Web UI - Beautiful graphical interface with real-time updates
- 💿 Multi-format support - DVDs and Blu-ray discs
- 🔍 Smart title detection - Automatically finds the main movie
- 📁 Unique folders - No file conflicts with automatic folder naming
- 📊 Flexible processing - Choose between parallel (async) or sequential (sync) ripping
- 📝 Comprehensive logging - Optional detailed operation logs with configurable 12hr/24hr console timestamps
- ⚡ Advanced drive management - Separate control for loading and ejecting drive preferences
- 🎛️ Flexible options - Rip longest title or all titles (that are above MakeMKV min title length)
Run with Docker for the simplest, fully self-contained setup.
-
Install Docker & Docker Compose
-
Create output directories:
mkdir -p media logs
-
Start the container (using docker-compose.yaml in this repo):
docker compose up -d
For local development/building from source:
npm run docker:build && npm run docker:run
-
Open the Web UI:
Notes:
- Edit
config.yaml
locally; it’s bind-mounted into the container and can be edited from the Web UI. - Map your optical drives under
devices:
(e.g.,/dev/sr0:/dev/sr0:ro
). - See the full Docker guide: README-DOCKER.md
You can run in trial mode (no key) or provide your key via environment variables. The container entrypoint writes values to ~/.MakeMKV/settings.conf
.
-
Put values in a
.env
next todocker-compose.yaml
:MAKEMKV_APP_KEY=AAAA-BBBB-CCCC-DDDD-EEEE-FFFF # Optional tunables (defaults shown) MAKEMKV_MIN_TITLE_LENGTH=1000 MAKEMKV_IO_ERROR_RETRY_COUNT=10
-
Or use a key file:
environment: MAKEMKV_APP_KEY_FILE: /run/secrets/makemkv_key volumes: - ./makemkv_key.txt:/run/secrets/makemkv_key:ro
If you omit both, trial mode is used automatically.
-
Install dependencies:
npm install
-
Configure the application: Edit
config.yaml
with your paths -
Start the web UI:
npm run web
-
Open your browser and go to:
http://localhost:3000
-
Install dependencies:
npm install
-
Configure the application: Edit
config.yaml
with your paths -
Start the CLI interface:
npm start
- MakeMKV - Required for all ripping operations
- Each new version of Auto Rip is only tested with the most recent MakeMKV version
- MakeMKV is bundled in our docker image, but it must be downloaded and installed separately for all other systems and install methods
- Node.js - Runtime environment
- Latest LTS recommended
- Only >= v20 officially tested
- Latest LTS recommended
- Cross-platform OS support - Works on Windows, macOS, and Linux
- Only (officially) tested on Windows 10/11 & Debian/Ubuntu Linux
- Automatic MakeMKV Detection - Finds MakeMKV installation automatically on Windows, Linux, and macOS
- Manual makemkvcon Override - Configure custom MakeMKV path in
config.yaml
if needed - Optical Drive Management - Drive load/eject operations work on Windows, macOS, and Linux
- Windows implementation - Uses native C++ addon for reliable Windows DeviceIoControl API access
- No compilation required, native addon included in repository
- Run terminal as administrator for drive operations (Windows only)
- No Python or other build tools required - Ready to use out of the box (just
npm install
)
- Download this repository
- Install Node.js from nodejs.org
- Install dependencies:
npm install
- Configure the application (see Configuration section below)
- Configure MakeMKV GUI (see MakeMKV Configuration section below)
Note: Only required for Linux users who want to use automatic drive ejecting
If you encounter errors related to ejecting drives or receive sudo/admin prompts when inserting/ejecting discs, follow these steps:
-
Add your user to the cdrom group:
sudo usermod -aG cdrom $USER
-
Create a polkit rule for passwordless optical drive operations:
sudo nano /etc/polkit-1/rules.d/70-udisks2-no-password.rules
-
Add the following content to the file:
polkit.addRule(function (action, subject) { if ( subject.isInGroup("cdrom") && action.id.startsWith("org.freedesktop.udisks2.") ) { return polkit.Result.YES; } });
-
Reboot your system:
sudo reboot
This configuration allows users in the cdrom group to perform optical drive operations without requiring sudo passwords.
# MakeMKV Auto Rip Configuration
# This file contains all configuration settings for the application
# Paths are automatically normalized for the current operating system
# Application paths and directories
paths:
# MakeMKV installation directory (OPTIONAL - auto-detected if not specified)
# Uncomment and set only if you need to override the automatic detection
# makemkv_dir: "C:/Program Files (x86)/MakeMKV"
# Directory where ripped movies will be saved
movie_rips_dir: "C:/Your/Movie/Rips"
# Logging configuration
logging:
# Whether to save logs to files (true/false)
enabled: true
# Directory where log files will be saved
dir: "C:/Your/Log/Directory"
# Time format for log timestamps (12hr/24hr)
time_format: "12hr"
# Drive operation settings
drives:
# Automatically load/mount optical drives (true/false)
auto_load: true
# Automatically eject drives after ripping (true/false)
auto_eject: true
# Delay time when loading drives (in seconds) - allows time for manual drive closing if needed - 0 to disable
load_delay: 0
# Ripping behavior settings
ripping:
# Rip all titles from disc instead of just the main title (true/false)
rip_all_titles: false
# Ripping mode - async for parallel processing, sync for sequential (async/sync)
mode: "async"
# Mount detection settings
mount_detection:
# Maximum time to wait for drives to mount media before starting rip (in seconds) - 0 to disable
wait_timeout: 10
# Polling interval to check for newly mounted drives (in seconds)
poll_interval: 1
# Interface behavior settings
interface:
# Enable repeat mode - after ripping, prompt again for another round (true/false)
repeat_mode: true
# MakeMKV behavior settings
makemkv:
# Temporarily change system date for MakeMKV operations (leave blank to use real system date)
# Supports date only: "2024-01-15" or date with time: "2024-01-15 14:30:00"
# System date is automatically restored after ripping operations complete
# NOTE: Requires administrative privileges (Run as Administrator on Windows, sudo on Linux/macOS)
# WARNING: Not supported in Docker containers - change host system date manually if needed
fake_date: ""
paths.makemkv_dir
- MakeMKV installation directory (OPTIONAL - auto-detected if not specified)- Supports forward slashes on all platforms
- For Advanced Users: Only needed if MakeMKV is installed in a non-standard location
paths.movie_rips_dir
- Root directory for ripped movies (create a dedicated folder)paths.logging.enabled
- Enable/disable writing MakeMKV output to log files (true
orfalse
)paths.logging.dir
- Directory for log filespaths.logging.time_format
- Time format for console/terminal timestamps ("12hr"
or"24hr"
)drives.auto_load
- Auto-load/close drives before ripping (true
orfalse
)drives.auto_eject
- Auto-eject drives after ripping completion (true
orfalse
)drives.load_delay
- Delay time (in seconds) when loading drives, allows time for manual drive closing (0
to disable, default:0
)ripping.rip_all_titles
- Rip all titles that are above MakeMKV min length (true
) or longest title only (false
)ripping.mode
- Ripping mode ("async"
for parallel processing or"sync"
for sequential processing)mount_detection.wait_timeout
- Maximum time (in seconds) to wait for drives to mount media before starting rip (0
to disable, default:10
)mount_detection.poll_interval
- Polling interval (in seconds) to check for newly mounted drives (default:1
)interface.repeat_mode
- Enable repeat mode to prompt again after ripping (true
orfalse
, default:true
)makemkv.fake_date
- Temporarily change system date for MakeMKV operations- Format:
"2024-01-15"
(date only) or"2024-01-15 14:30:00"
(date with time) - Leave blank (
""
) to use real system date ⚠️ Requirements: Requires administrative privileges:- Windows: Run as Administrator
- Linux/macOS: Run with sudo or as root
- Cross-Platform Support: Works on Windows, macOS, and Linux
- Automatic Restoration: System date automatically restored after ripping operations
⚠️ Docker Limitation: Not supported in Docker containers - change host system date manually if needed
- Format:
Important Notes:
- Recommended: Create dedicated folders for movie rips and logs
- Performance tip: Use
"sync"
ripping mode for HDD destinations where concurrent writes impact performance. For SSDs,"async"
will yield much better overall performance. - Mount detection: The mount detection feature prevents drives from being skipped due to slow OS media detection, especially beneficial on older hardware. Set
wait_timeout: 0
to disable this feature.
Before using MakeMKV Auto Rip, configure the MakeMKV GUI:
-
View → Preferences → Video
- Set "Minimum title length (seconds)" to a value below 1000
- Other settings work, but this will yield the best results (i.e. not skipping real titles, but improving speed by skipping empty or useless clips)
- Set "Minimum title length (seconds)" to a value below 1000
-
View → Preferences → IO
- Set "Read retry count" to 10 (helps with damaged/scratched discs)
-
View → Preferences → Language
- Set interface and preferred languages for subtitles/audio
- Select "auto" and "none" to include all audio and subtitle tracks
-
Troubleshooting Blu-ray discs:
- Run at least one Blu-ray through the MakeMKV GUI first
- Enter a valid key (beta key works - but please support the MakeMKV team if you find their software useful or time-saving!) before using Auto Rip
npm run web # Start web UI at http://localhost:3000
npm start # Interactive ripping interface
npm run load # ONLY load/close all drives
npm run eject # ONLY eject/open all drives
npm start -- --no-confirm --quiet # Skip prompts, reduce logging output
npm run load -- --quiet # ONLY Load drives, and with minimal output
npm run eject -- --quiet # ONLY Eject drives, and with minimal output
-
"Failed to start application" error
- Check that all paths in
config.yaml
exist and ALWAYS use forward slashes (/) - Ensure MakeMKV is properly installed (try running a disc with the GUI to confirm)
- Check that all paths in
-
"(Windows) Native optical drive addon failed to load" error
- This indicates a corrupted installation or missing native components
- Try reinstalling the application:
npm install
- or building native addon from scratchnpm run windows-addons:build
- Ensure you're running on a supported Windows version (Windows 10/11 officially tested - theoretically compatible back to ~Windows 2000)
-
Drive eject/load operations fail
- Windows: Run as administrator - Right-click terminal and "Run as administrator"
- Windows drive operations require elevated privileges for DeviceIoControl API access
- macOS/Linux: Standard user privileges should work for most drives (See Linux troubleshooting section above)
- Manual drive operation may be needed if software control isn't supported by hardware (or hardware lacks the proper physical mechanism)
- Windows: Run as administrator - Right-click terminal and "Run as administrator"
-
No discs detected
- Make sure discs are inserted and readable
- Try running MakeMKV GUI to test disc compatibility
-
Drive loading issues
- Some USB and laptop drives may not support automatic loading
- Manually close drives that don't auto-close within the 5-second waiting period
-
Ripping failures
- Check disc condition (scratches, damage)
- Try ripping manually with MakeMKV GUI
- Increase retry count in MakeMKV settings
-
Web UI connection issues
- Ensure port 3000 is not blocked by firewall
- Try accessing
http://localhost:3000
in your browser - Check browser console for WebSocket connection errors
- Restart web server:
npm run web
-
Web UI operations not responding
- Check that the web server is running:
npm run web
- Verify MakeMKV is properly installed and configured
- Try using the CLI interface as a fallback:
npm start
- Check that the web server is running:
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Please read the LICENSE.md file for more info.
MakeMKV Auto Rip is not linked in any way to MakeMKV. As such, it isn't "official" and the two are not developed by the same people.
See CONTRIBUTING.md for guidelines on contributing to this project.
GPL-3.0-or-later - See LICENSE.md for details.
- Project Information - Architecture and technical details
- Changelog - Complete version history
- Contributing Guide - How to contribute
- Docker Setup Guide - Run via Docker & the Web UI