Dim: A Self-Hosted Media Manager Fueled by Rust and React

Summary
Dim is a powerful, self-hosted media manager designed to organize and beautify your media collections. Built with Rust and React, it allows users to access and play their media anytime from anywhere with minimal setup. This project offers flexible deployment options, including binaries, Docker, and building from source.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
Dim is an open-source, self-hosted media manager developed by Dusk-Labs. It provides a robust solution for organizing, managing, and accessing your personal media collections. With its intuitive web UI, built using React, and a high-performance backend powered by Rust, Dim aims to offer a seamless experience for streaming and managing your media from any location.
Installation
Dim offers several methods for installation, catering to different user preferences and environments.
Running from Binaries
To run Dim from pre-compiled binaries, follow these steps:
-
Dependencies: Ensure you have
libva2,libva-drm2,libharfbuzz,libfontconfig,libfribidi,libtheora,libvorbis,libvorbisenc, andlibtheora0installed on your system. -
Download & Unpack: Obtain the binaries from the GitHub release tab.
unzip ./release-linux.zip && tar -xvzf ./release.tar.gz -
Run: Navigate to the release directory and execute Dim.
cd release && ./dim
Running with Docker
Dim can be easily deployed using Docker. The following command runs Dim on port 8000, storing configuration in $HOME/.config/dim and mounting /media from the host as read-only.
docker run -d -p 8000:8000/tcp -v $HOME/.config/dim:/opt/dim/config -v /media:/media:ro ghcr.io/dusk-labs/dim:dev
For hardware acceleration, mount the relevant device:
docker run -d -p 8000:8000/tcp -v $HOME/.config/dim:/opt/dim/config -v /media:/media:ro --device=/dev/dri/renderD128 ghcr.io/dusk-labs/dim:dev
You can also use Docker Compose with the provided template.
Running from Source
If you prefer to build Dim from source, ensure you have the following dependencies: sqlite, cargo, rustc (nightly), yarn, npm, libssl-dev, libva2 (Linux only), libva-dev (Linux only), libva-drm2 (Linux only), and ffmpeg.
-
Clone & Build:
git clone https://github.com/Dusk-Labs/dim yarn --cwd ui/ && yarn --cwd ui/ build mkdir utils && ln -nfs $(which ffmpeg) utils/ffmpeg && ln -nfs $(which ffprobe) utils/ffprobe -
Run (Linux with VAAPI):
cargo run --features vaapi --release -
Run (Other Platforms):
cargo run --release
Examples
After successful installation, you can access the Dim web UI through your browser. If running locally, navigate to http://0.0.0.0:8000 to start managing your media.
Why Use Dim?
Dim stands out as an excellent choice for a self-hosted media manager due to several key advantages:
-
Self-Hosted Control: Maintain full control over your media and data without relying on third-party services.
-
Efficient Organization: Dim helps organize and beautify your media collections, making them easy to browse and enjoy.
-
Anytime, Anywhere Access: Stream and access your media from any device, anywhere, once properly configured.
-
Modern Tech Stack: Built with Rust for performance and safety, and React for a responsive and modern user interface.
-
Community Support: Engage with the community for support and development via their Discord channel.
Links
Find more information and contribute to Dim through these official links:
-
GitHub Repository: Dusk-Labs/dim
-
Discord: Join the Dim Discord
-
Docker Compose Template: docker-compose-template.yaml