Getting Started
This guide helps you choose between installing a ready-made release and building OperaLibre from source. Once it is running, everyday use happens in the app.
Choose the right starting point
- You have audiobook files on this computer: download the combined release package below.
- Your books are already in Jellyfin: you do not need to install this server. Open the OperaLibre web, macOS, or iPhone app, choose Jellyfin, enter your Jellyfin address, and sign in with your usual Jellyfin account. See Using OperaLibre.
- You want to listen from a phone: finish the local setup first, then see Use it on a phone or tablet.
Install a release (recommended)
Download the combined package for your computer. It includes a background launcher and a ready-to-use configuration; no developer tools are required and no Terminal window stays open.
Follow Install a Release for exact Windows, macOS, and Linux instructions, adding books, phone access, backups, and updates.
Build from source
Use the following steps if you want to develop OperaLibre or build it yourself instead of downloading a release.
Prerequisites
| Tool | Version | Used for |
|---|---|---|
| Rust | stable (1.85+, edition 2024) | Building and running the server |
| Node.js | 22.12 or newer | Building and serving apps/web |
| npm | bundled with Node | Workspace + dev scripts |
| A folder of audiobooks | — | The library the server will scan |
Tip: If
cargo --versionandnode --versionboth work, you have everything you need. On a Mac, install Apple’s Command Line Tools too by runningxcode-select --installonce.
1. Clone and install
git clone https://github.com/DonovanMontoya/OperaLibre.git
cd OperaLibre
npm install
npm install installs the web workspace under apps/web. The Rust server compiles on first run.
2. Create your config
cp server.config.example server.config
On Windows PowerShell, use this instead:
Copy-Item server.config.example server.config
Open server.config in a text editor and replace /Users/you/Audiobooks with the full path to the folder that contains your books. Keep the rest as-is for now. On Windows, use a full path such as C:\Users\you\Audiobooks.
deployment_mode = local
host =
port = 4920
max_upload_gib = 20
max_book_download_gib = 25
max_concurrent_book_downloads = 1
download_temp_dir = data/download-temp
min_download_free_gib = 2
library_root = /Users/you/Audiobooks
3. Start OperaLibre
npm run dev
This starts the server and the web app together. Leave this Terminal window open while you listen. You should see two color-coded prefixes (server cyan, web magenta).
- Web UI: http://localhost:5173
- API: http://localhost:4920
The Vite web app forwards its requests to the server automatically, so use the Web UI address above—not the API address—in your browser.
4. Create the admin account
Open the app for the one-time setup form. local and lan setup need no extra credential. Every setup in proxy mode asks for the 30-minute, single-use token printed in the server console. Create the initial owner account; subsequent visits show the normal sign-in form. See Users & Accounts for details.
5. Start listening
Pick a book and press play. Progress saves automatically and follows the signed-in reader across devices. See Using OperaLibre for uploading a book, adding family members, installing the web app, readalong, and the optional integrations.
Running on the LAN
To stream to a phone or tablet:
- Set
deployment_mode = lanand leavehostblank inserver.configso the server selects0.0.0.0automatically. - Find your machine’s LAN IP (
ipconfig getifaddr en0on macOS,ip addron Linux,ipconfigon Windows). - Allow port
4920(or whatever you set) through your firewall. - On the other device, open
http://<your-lan-ip>:5173in dev, sign in, and start listening. For a setup that keeps working after you close the development Terminal, use the production setup below.
Safety: LAN mode uses plain HTTP and deliberately allows a non-Secure session cookie. It is suitable only for a trusted home network or private VPN. Do not port-forward it to the public internet; use
proxymode and the HTTPS guidance in Deployment for access away from home.
Keep it running (recommended after you have tried it)
npm run build
This produces:
- A release Rust binary at
apps/server/target/release/operalibre-server - A static web bundle at
apps/web/dist/
Then add this line to server.config:
web_dist_dir = apps/web/dist
Start the server with:
./apps/server/target/release/operalibre-server
Now open http://localhost:4920. The server and web app share one address, which is simpler to bookmark and use on another device. To make it start automatically when the computer restarts, follow the macOS or Linux instructions in Deployment.
Type-checking everything
npm run typecheck
Runs cargo check and the web app’s TypeScript compiler. Useful before committing.