How to Self-Host Ohrbob

Ohrbob is open-source and designed to be easily self-hostable. Keep total control of your data and run your own private podcast sync server.

1. Architecture Overview

The Ohrbob ecosystem consists of several interconnected pieces:

  • Ohrbob.Api: The backend REST API built in .NET, managing users, stations, feeds, and the sync state.
  • Ohrbob.Web: The frontend web UI built with HTMX and Razor Pages.
  • Ohrbob.Player: The playback API handling media streams and playback configuration.
  • MongoDB: The primary data store for all user data, station configurations, and playhead states.

2. Deploying via Docker Compose (Recommended)

The easiest way to get started is by using Docker Compose. We provide an all-in-one docker-compose.yml file in our repository.

git clone https://github.com/ohrbob-org/ohrbob.server.git
cd ohrbob.server
cp .env-example .env
# Edit .env with your desired secrets and configuration
docker compose up -d

3. Configuration & Secrets

Ohrbob requires a few environment variables to operate securely. You should configure these in your .env file:

  • ApiKeys__0__Key & OhrbobApi__ApiKey: A matching secret string used to authenticate the Web UI with the REST API.
  • PodcastIndex__ApiKey & PodcastIndex__ApiSecret: Credentials for the PodcastIndex API (required for search and discovery). You can get these for free at PodcastIndex.org.
  • MongoDbData__ConnectionString: Automatically configured if using the provided Docker Compose stack, but can be pointed to an external instance.

4. Authentication Providers

You can enable OpenID Connect (OIDC) providers like Google, GitHub, or your own Keycloak instance by adding them to the configuration, allowing seamless single sign-on for your users.

5. Client Connections

Once your server is running, you can connect the Avalonia desktop/mobile app by navigating to the Settings screen in the app, entering your self-hosted server URL, and logging in using the API Key generated in your web profile.