Skip to content

A modern Dockerized web manager for splitting Movie files into FAT32-compatible 4GB RAR parts with real-time status tracking and robust process management.

Notifications You must be signed in to change notification settings

raidolo/kodi_fat32_splitter

Repository files navigation

🎬 Kodi Fat32 Splitter

A modern, secure, and high-performance web dashboard designed to bridge the gap between large 4K/MKV media collections and FAT32-formatted drives. Now rewritten with a React frontend and secured with OIDC Authentication.

Main Interface


🚀 Key Features

  • 🛡️ Secure Access: Integrated OIDC Authentication (via Pocket-ID, Keycloak, etc.) to keep your dashboard private.
  • 📂 Smart Navigation: Clean, reactive file browser with breadcrumbs, multi-select, and bulk actions.
  • Format Support: Handles .mkv and .mp4 files (Large MKV/MP4 -> 4GB FAT32 chunks).
  • ⚡ Bit-Perfect Splitting: Splits files into 4GB segments (Store mode -m0) with zero re-compression.
  • 🔄 Fault-Tolerant: Self-cleaning workflow that handles interruptions and locks robustly.
  • 🎨 Modern UI: Built with React (Vite) and Tailwind-like CSS, featuring dark mode, animations, and real-time status updates.

🚀 Quick Start (Docker Image)

The easiest way to run the application is using the pre-built Docker images.

  1. Download Files:

    • Download docker-compose.release.yml and rename it to docker-compose.yml.
    • Download .env.example and rename it to .env.
  2. Configure Volumes: Open docker-compose.yml and update the volume mapping to point to your media folder:

    volumes:
      - "/path/to/your/movies:/data" # <--- IMPORTANT: Change this to your actual media folder!
  3. Configure .env: By default, OIDC_AUTH=false (Mock Mode) is set for easy testing. If you want to enable authentication, open .env, set OIDC_AUTH=true, and fill in your provider details (see Authentication & Configuration for details).

  4. Run:

    docker-compose up -d

🛠️ Architecture

Frontend

  • Framework: React 18 + Vite
  • Styling: Custom CSS3 (Glassmorphism & Cyberpunk aesthetic)
  • Auth: react-oidc-context for PKCE flow
  • State: Real-time polling via Axios

Backend

  • Core: FastAPI (Python 3.11)
  • Engine: Official rar CLI (Linux x64)
  • Server: Nginx (serving frontend & proxying API)

🔐 Authentication & Configuration

This project supports OpenID Connect (OIDC) for authentication. It can also run in a Mock Mode for local testing or secured networks.

Configuration via Environment File

Configuration is handled via a .env file in the root directory.

  1. Edit .env with your provider details:
    OIDC_AUTH=true
    OIDC_AUTHORITY=https://auth.yourdomain.com
    OIDC_CLIENT_ID=your-client-id
    OIDC_CLIENT_SECRET=your-client-secret
  2. Start the stack (Docker Compose automatically reads the .env file):
    docker-compose up -d

Disable OIDC (Mock Mode)

To disable authentication for local testing, set OIDC_AUTH=false in your .env file.


🚦 Getting Started (Development)

1. Requirements

2. Deployment

Clone the repo and configure your media directory:

git clone https://github.com/raidolo/kodi_fat32_splitter.git
cd kodi_fat32_splitter

Edit docker-compose.yml to point to your movies and set up auth:

# docker-compose.yml
services:
  backend:
    volumes:
      - "/path/to/your/movies:/data"  # <--- Update this path

Launch the stack:

docker-compose up -d --build

3. Usage

  1. Open http://localhost (or your server IP).
  2. Login via your OIDC provider (if enabled).
  3. Browse your folders using the file navigator.
  4. Select one or multiple MKV files.
  5. Click "Start Split".
  6. Monitor progress in real-time. The app will generate .partX.rar files next to your media.

👨‍💻 Developer Notes

This repository was refactored from a vanilla JS prototype to a robust React application.

  • Runtime Config: The frontend container uses an entrypoint.sh script to inject environment variables into window._env_ at startup, allowing you to change auth settings without rebuilding the image.
  • Multi-Select: The UI supports batch processing — select multiple files, and the backend handles the queue.

Tip

Performance: The app uses rar with -m0 (Store), meaning it's limited only by your drive's I/O speed.


📜 License

Note: This project provides a wrapper for the rar utility. Please ensure you comply with the RAR License.


Note

This entire repository was designed and implemented using Vibe Coding by Antigravity.

About

A modern Dockerized web manager for splitting Movie files into FAT32-compatible 4GB RAR parts with real-time status tracking and robust process management.

Resources

Stars

Watchers

Forks

Packages