Automatically rips DVDs & Blu-rays using MakeMKV, then saves them to unique folders.
2.1K
Automatically rips DVDs and Blu-ray discs using the MakeMKV console and saves them to unique folders.
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:
config.yaml locally; itβs bind-mounted into the container and can be edited from the Web UI.devices: (e.g., /dev/sr0:/dev/sr0:ro).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 to docker-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
config.yaml if needednpm install)npm install
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.
config.yaml)# 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)
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 or false)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 or false)drives.auto_eject - Auto-eject drives after ripping completion (true or false)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 or false, default: true)makemkv.fake_date - Temporarily change system date for MakeMKV operations
"2024-01-15" (date only) or "2024-01-15 14:30:00" (date with time)"") to use real system dateImportant Notes:
"sync" ripping mode for HDD destinations where concurrent writes impact performance. For SSDs, "async" will yield much better overall performance.wait_timeout: 0 to disable this feature.Before using MakeMKV Auto Rip, configure the MakeMKV GUI:
View β Preferences β Video
View β Preferences β IO
View β Preferences β Language
Troubleshooting Blu-ray discs:
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
config.yaml exist and ALWAYS use forward slashes (/)"(Windows) Native optical drive addon failed to load" error
npm install - or building native addon from scratch npm run windows-addons:buildDrive eject/load operations fail
No discs detected
Drive loading issues
Ripping failures
Web UI connection issues
http://localhost:3000 in your browsernpm run webWeb UI operations not responding
npm run webnpm startThis 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.
Content type
Image
Digest
sha256:78012c39fβ¦
Size
615.8 MB
Last updated
about 1 year ago
docker pull poisonite/makemkv-auto-rip