Docker is the recommended way to run Riven TS for most users. Running from source makes sense when FUSE-in-Docker is awkward on your host, when you want to track theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/rivenmedia/riven-ts/llms.txt
Use this file to discover all available pages before exploring further.
main branch very closely, or when you simply prefer a direct process rather than a container. Everything here assumes a Linux host — macOS and Windows are not supported.
If you want to contribute code rather than deploy, see CONTRIBUTING.md instead. It covers codegen, running tests, and the local development service stack.
Prerequisites
- Node.js 24.15+ — check with
node --version - pnpm 11.5+ — check with
pnpm --version - PostgreSQL 17 reachable from the host
- Redis 8 reachable from the host
- FUSE userspace libraries (
libfuse.so.2must be present on the host)
Setup
Install FUSE and allow non-root mounts
Install the FUSE userspace libraries for your distribution:Then enable Verify the line is uncommented:
- Debian / Ubuntu
- Arch Linux
user_allow_other in /etc/fuse.conf. Without it, the VFS mounts successfully but no other process on the system — including your media server — can read it:Create the mount point
Create
/mnt/riven and give your user ownership so Riven can mount the VFS without sudo:Clone and build
Clone the repository, install all workspace dependencies, then build the The build compiles TypeScript to
@repo/riven package (Turborepo resolves internal package dependencies automatically):apps/riven/dist/ and bundles the sandboxed worker scripts.Configure
Riven reads its configuration from Open the file and set at minimum your database URL, Redis URL, mount path, and TMDB API key:See Configuration for every available core setting, and Plugins for per-plugin options.
apps/riven/.env.riven. Copy the bundled example as a starting point:apps/riven/.env.riven
Unlike the Docker setup you do not need to set
RIVEN_SETTING__gqlHost. The default of localhost is correct for a direct host process. Set it to 0.0.0.0 only if other machines need to reach the GraphQL API.Running as a systemd service
To keep Riven running across reboots, create a systemd unit. TheExecStartPre line re-applies shared propagation to the mount point so the VFS remains visible to other processes after a reboot:
/etc/systemd/system/riven.service
Updating
Pull the latest commits, reinstall any changed dependencies, and rebuild:What’s next?
Configure plugins
Set up content sources, your debrid provider, and media server integrations.
Production deployment
Reverse proxy, TLS termination, and monitoring recommendations.
Troubleshooting
Solutions for common FUSE, permission, and connectivity issues.
Docker Compose quickstart
Prefer containers? Follow the Docker Compose guide instead.