update README.md, template docker-compose.yaml and the documentation

This commit is contained in:
maxDorninger
2025-07-11 12:22:38 +02:00
parent 517042973b
commit 9aea4a9601
13 changed files with 558 additions and 354 deletions

View File

@@ -31,7 +31,8 @@ other services.
```
wget -O docker-compose.yaml https://raw.githubusercontent.com/maxdorninger/MediaManager/refs/heads/master/docker-compose.yaml
# Edit docker-compose.yaml to set the environment variables!
wget -O docker-compose.yaml https://raw.githubusercontent.com/maxdorninger/MediaManager/refs/heads/master/config.toml
# you probably need to edit the config.toml file, for more help see the documentation
docker compose up -d
```

View File

@@ -10,11 +10,14 @@
<toc-element topic="configuration-overview.md"/>
<toc-element topic="User-Guide.md"/>
<toc-element topic="Configuration.md">
<toc-element topic="authentication-setup.md"/>
<toc-element topic="configuration-backend.md">
</toc-element>
<toc-element topic="Indexer-Settings.md"/>
<toc-element topic="configuration-backend.md"/>
<toc-element topic="configuration-frontend.md"/>
<toc-element topic="authentication-setup.md"/>
<toc-element topic="database-configuration.md"/>
<toc-element topic="download-client-configuration.md"/>
<toc-element topic="Indexer-Settings.md"/>
<toc-element topic="Notifications.md"/>
<toc-element topic="metadata-provider-configuration.md"/>
</toc-element>
<toc-element topic="troubleshooting.md"/>
<toc-element topic="developer-guide.md"/>

View File

@@ -26,4 +26,8 @@
<description>Created after removal of "user-guide" from MediaManager</description>
<accepts>user-guide.html</accepts>
</rule>
<rule id="7cb7d801">
<description>Created after removal of "MetadataRelay" from MediaManager</description>
<accepts>MetadataRelay.html</accepts>
</rule>
</rules>

View File

@@ -1,6 +1,67 @@
# Configuration
The configuration of MediaManager is divided into backend and frontend settings, which can be set in your
`docker-compose.yaml` file or in separate `.env` files.
All settings are set as environment variables, because this makes backing up the configuration easier and allows for
easier sharing/transferring of the configuration.
MediaManager uses a TOML configuration file (`config.toml`) for all backend settings.
This centralized configuration approach makes it easier to manage, backup, and share your MediaManager setup.
Frontend settings are configured through environment variables in your `docker-compose.yaml` file.
## Configuration File Location
Your `config.toml` file should be mounted to `/data/config.toml` inside the container:
```yaml
volumes:
- ./config.toml:/data/config.toml
```
Though you can change the location of the configuration file by setting the `CONFIG_FILE` env variable to another path,
e.g. `/etc/mm/config.toml`.
## Configuration Sections
The configuration is organized into the following sections:
- `[misc]` - General settings
- `[database]` - Database settings
- `[auth]` - Authentication settings
- `[notifications]` - Notification settings (Email, Gotify, Ntfy, Pushover)
- `[torrents]` - Download client settings (qBittorrent, SABnzbd)
- `[indexers]` - Indexer settings (Prowlarr and Jackett )
- `[metadata]` - TMDB and TVDB settings
## Configuring Secrets
For sensitive information like API keys, passwords, and secrets, you _should_ use environment variables.
You can actually set every configuration value through environment variables.
For example, to set the `token_secret` value for authentication, with a .toml file you would use:
```toml
[auth]
token_secret = "your_super_secret_key_here"
```
But you can also set it through an environment variable:
```
AUTH_TOKEN_SECRET = "your_super_secret_key_here"
```
or another example with the OIDC client secret:
```toml
[auth]
...
[auth.openid_connect]
client_secret = "your_client_secret_from_provider"
```
env variable:
```
AUTH_OPENID_CONNECT_CLIENT_SECRET = "your_client_secret_from_provider"
```
So for every config "level", you basically have to take the name of the value and prepend it with the section names in
uppercase with underscores as delimiters.

View File

@@ -1,37 +1,53 @@
# Indexer Settings
# Indexers
## Prowlarr
Indexer settings are configured in the `[indexers]` section of your `config.toml` file. MediaManager supports both Prowlarr and Jackett as indexer providers.
### `PROWLARR_ENABLED`
## Prowlarr (`[indexers.prowlarr]`)
Set to `True` to enable Prowlarr. Default is `False`. Example: `true`.
- `enabled`
### `PROWLARR_API_KEY`
Set to `true` to enable Prowlarr. Default is `false`.
This is your Prowlarr API key. Example: `prowlarr_api_key`.
- `url`
### `PROWLARR_URL`
Base URL of your Prowlarr instance.
Base URL of your Prowlarr instance. Default is `http://localhost:9696`. Example: `http://prowlarr:9696`.
- `api_key`
## Jackett
API key for Prowlarr. You can find this in Prowlarr's settings under General.
### `JACKETT_ENABLED`
## Jackett (`[indexers.jackett]`)
Set to `True` to enable Jackett. Default is `False`. Example: `true`.
- `enabled`
### `JACKETT_API_KEY`
Set to `true` to enable Jackett. Default is `false`.
This is your Prowlarr API key. Example: `jackett_api_key`.
- `url`
### `JACKETT_URL`
Base URL of your Jackett instance.
Base URL of your Prowlarr instance. Default is `http://localhost:9117`. Example: `http://prowlarr:9117`.
- `api_key`
### `JACKETT_INDEXERS`
API key for Jackett. You can find this in Jackett's dashboard.
List of all indexers for Jackett to search through. Default is `all`. Example: `["1337x","0magnet"]`.
- `indexers`
<note>
<include from="notes.topic" element-id="list-format"/>
</note>
List of indexer names to use with Jackett. You can specify which indexers Jackett should search through.
## Example Configuration
Here's a complete example of the indexers section in your `config.toml`:
```toml
[indexers]
[indexers.prowlarr]
enabled = true
url = "http://prowlarr:9696"
api_key = "your_prowlarr_api_key"
[indexers.jackett]
enabled = false
url = "http://jackett:9117"
api_key = "your_jackett_api_key"
indexers = ["1337x", "rarbg"]
```

View File

@@ -0,0 +1,121 @@
# Notifications
These settings are configured in the `[notifications]` section of your `config.toml` file.
### SMTP Configuration (`[notifications.smtp_config]`)
For sending emails, MediaManager uses the SMTP protocol. You can use any SMTP server, like Gmail or SMTP2GO.
- `smtp_host`
Hostname of the SMTP server.
- `smtp_port`
Port of the SMTP server.
- `smtp_user`
Username for the SMTP server.
- `smtp_password`
Password or app password for the SMTP server.
- `from_email`
Email address from which emails will be sent.
- `use_tls`
Set to `true` to use TLS for the SMTP connection. Default is `true`.
### Email Notifications (`[notifications.email_notifications]`)
- `enabled`
Set to `true` to enable email notifications. Default is `false`.
- `emails`
List of email addresses to send notifications to.
### Gotify Notifications (`[notifications.gotify]`)
- `enabled`
Set to `true` to enable Gotify notifications. Default is `false`.
- `api_key`
API key for Gotify.
- `url`
Base URL of your Gotify instance. Note the lack of a trailing slash.
### Ntfy Notifications (`[notifications.ntfy]`)
- `enabled`
Set to `true` to enable Ntfy notifications. Default is `false`.
- `url`
URL of your ntfy instance plus the topic.
### Pushover Notifications (`[notifications.pushover]`)
- `enabled`
Set to `true` to enable Pushover notifications. Default is `false`.
- `api_key`
API key for Pushover.
- `user`
User key for Pushover.
## Example Configuration
Here's a complete example of the notifications section in your `config.toml`:
```toml
[notifications]
# SMTP settings for email notifications and password resets
[notifications.smtp_config]
smtp_host = "smtp.gmail.com"
smtp_port = 587
smtp_user = "your-email@gmail.com"
smtp_password = "your-app-password"
from_email = "mediamanager@example.com"
use_tls = true
# Email notification settings
[notifications.email_notifications]
enabled = true
emails = ["admin@example.com", "notifications@example.com"]
# Gotify notification settings
[notifications.gotify]
enabled = true
api_key = "your_gotify_api_key"
url = "https://gotify.example.com"
# Ntfy notification settings
[notifications.ntfy]
enabled = false
url = "https://ntfy.sh/your-private-topic"
# Pushover notification settings
[notifications.pushover]
enabled = false
api_key = "your_pushover_api_key"
user = "your_pushover_user_key"
```
<note>
You can enable multiple notification methods simultaneously. For example, you could have both email and Gotify notifications enabled at the same time.
</note>

View File

@@ -1,80 +1,70 @@
# Authentication
MediaManager supports multiple authentication methods. Email/password authentication is the default, but you can also
enable OpenID Connect (OAuth 2.0) for integration with external identity providers.
MediaManager supports multiple authentication methods. Email/password authentication is the default, but you can also enable OpenID Connect (OAuth 2.0) for integration with external identity providers.
All authentication settings are configured in the `[auth]` section of your `config.toml` file.
## General Authentication Settings (`[auth]`)
- `token_secret`
Strong secret key for signing JWTs (create with `openssl rand -hex 32`). This is a required field.
- `session_lifetime`
Lifetime of user sessions in seconds. Default is `86400` (1 day).
- `admin_emails`
A list of email addresses for administrator accounts. This is a required field.
- `email_password_resets`
Toggle for enabling password resets via email. If users request a password reset because they forgot their password, they will be sent an email with a link to reset it. Default is `false`.
<note>
Note the lack of a trailing slash in some env vars like OPENID_CONFIGURATION_ENDPOINT. This is important.
To use email password resets, you must also configure SMTP settings in the <code>[notifications.smtp_config]</code> section.
</note>
## General Authentication Settings
## OpenID Connect Settings (`[auth.openid_connect]`)
### `AUTH_TOKEN_SECRET`
OpenID Connect allows you to integrate with external identity providers like Google, Microsoft Azure AD, Keycloak, or any other OIDC-compliant provider.
Strong secret key for signing JWTs (create with `openssl rand -hex 32`). This is a required field. Example:
`AUTH_TOKEN_SECRET=your_super_secret_key`.
- `enabled`
### `AUTH_SESSION_LIFETIME`
Set to `true` to enable OpenID Connect authentication. Default is `false`.
Lifetime of user sessions in seconds. Default is `86400` (1 day). Example: `AUTH_SESSION_LIFETIME=604800` (1 week).
- `client_id`
### `AUTH_ADMIN_EMAIL`
Client ID provided by your OpenID Connect provider.
A list of email addresses for administrator accounts. This is a required field. Example:
`AUTH_ADMIN_EMAIL=admin@example.com`.
- `client_secret`
### `FRONTEND_URL`
Client secret provided by your OpenID Connect provider.
The URL the frontend will be accessed from. This is a required field. Example: `https://mediamanager.example/`.
- `configuration_endpoint`
### `AUTH_EMAIL_PASSWORD_RESETS`
OpenID Connect configuration endpoint URL. Note the lack of a trailing slash - this is important.
Toggle for enabling password resets via email. If users request a password reset in case they forgot their password,
they will be sent an email with a link to reset it. Default is `FALSE`.
- `name`
<note>
On login/registration, every user whose email is in <code>AUTH_ADMIN_EMAIL</code> will be granted admin privileges.
Users whose email is not in <code>AUTH_ADMIN_EMAIL</code> will be regular users and will need to be verified by an administrator,
this can be done in the settings page.
</note>
<tip>
<include from="notes.topic" element-id="list-format"/>
</tip>
Display name for the OpenID Connect provider that will be shown on the login page.
## OpenID Connect (OAuth 2.0)
## Example Configuration
### `OPENID_ENABLED`
Here's a complete example of the authentication section in your `config.toml`:
Enables OpenID authentication. Default is `FALSE`. Example: `TRUE`.
### `OPENID_CLIENT_ID`
Client ID from your OpenID provider.
### `OPENID_CLIENT_SECRET`
Client Secret from your OpenID provider.
### `OPENID_CONFIGURATION_ENDPOINT`
URL of your OpenID provider's discovery document (e.g., `.../.well-known/openid-configuration`). Example:
`https://authentik.example.com/application/o/mediamanager/.well-known/openid-configuration`.
### `OPENID_NAME`
Display name for this OpenID provider. Default is `OpenID`. Example: `Authentik`.
### Configuring OpenID Connect
1. Set `OPENID_ENABLED=TRUE`
2. Configure the following environment variables:
* `OPENID_CLIENT_ID`
* `OPENID_CLIENT_SECRET`
* `OPENID_CONFIGURATION_ENDPOINT`
* `OPENID_NAME` (optional)
* `FRONTEND_URL` (it is important that this is set correctly, as it is used for the redirect URIs)
3. Your OpenID server will likely want a redirect URI. This URL will be like:
`{FRONTEND_URL}/api/v1/auth/cookie/{OPENID_NAME}/callback`. The exact path depends on the `OPENID_NAME`.
4. Example URL: `https://mediamanager.example/api/v1/auth/cookie/Authentik/callback`
```toml
[auth]
token_secret = "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"
session_lifetime = 604800 # 1 week
admin_emails = ["admin@example.com", "manager@example.com"]
email_password_resets = true
[auth.openid_connect]
enabled = true
client_id = "mediamanager-client"
client_secret = "your-secret-key-here"
configuration_endpoint = "https://auth.example.com/.well-known/openid-configuration"
name = "Authentik"
```

View File

@@ -1,220 +1,67 @@
# Backend
These settings configure the core backend application through the `config.toml` file. All backend configuration is now centralized in this TOML file instead of environment variables.
These variables configure the core backend application, database connections, authentication, and integrations.
## General Settings (`[misc]`)
- `frontend_url`
The URL the frontend will be accessed from. This is a required field and must include the trailing slash.
- `cors_urls`
A list of origins you are going to access the API from. Note the lack of trailing slashes.
- `api_base_path`
The URL base path of the backend API. Default is `/api/v1`. Note the lack of a trailing slash.
- `development`
Set to `true` to enable development mode. Default is `false`.
## Example Configuration
Here's a complete example of the general settings section in your `config.toml`:
```toml
[misc]
# REQUIRED: Change this to match your actual frontend URL
frontend_url = "http://localhost:3000/"
# REQUIRED: List all origins that will access the API
cors_urls = ["http://localhost:3000", "http://localhost:8000"]
# Optional: API base path (rarely needs to be changed)
api_base_path = "/api/v1"
# Optional: Development mode (set to true for debugging)
development = false
```
<note>
<include from="notes.topic" element-id="list-format"/>
The <code>frontend_url</code> and <code>cors_urls</code> are the most important settings to configure correctly. Make sure they match your actual deployment URLs.
</note>
## General Settings
### `API_BASE_PATH`
The url base of the backend. Default is `/api/v1`.
### `CORS_URLS`
Enter a list of origins you are going to access the api from. Example: `["https://mm.example"]`.
## Database Settings
### `DB_HOST`
Database configuration is covered in detail on the [Database Configuration](database-configuration.md) page.
Hostname or IP of the PostgreSQL server. Default is `localhost`.
## Authentication Settings
### `DB_PORT`
Port number of the PostgreSQL server. Default is `5432`.
### `DB_USER`
Username for PostgreSQL connection. Default is `MediaManager`.
### `DB_PASSWORD`
Password for the PostgreSQL user. Default is `MediaManager`.
### `DB_DBNAME`
Name of the PostgreSQL database. Default is `MediaManager`.
Authentication configuration is covered in detail on the [Authentication](authentication-setup.md) page.
## Download Client Settings
Currently, only qBittorrent is supported as a download client. But support for other clients isn't unlikely in the
future.
Download client configuration for qBittorrent and SABnzbd is covered in detail on the [Download Client Configuration](download-client-configuration.md) page.
### `QBITTORRENT_HOST`
## Indexer Settings
Host of the QBittorrent API. Default is `localhost`. Example: `qbit.example.com`.
### `QBITTORRENT_PORT`
Port of the QBittorrent API. Default is `8080`. Example: `443`.
### `QBITTORRENT_USER`
Username for QBittorrent. Default is `admin`.
### `QBITTORRENT_PASSWORD`
Password for QBittorrent. Default is `admin`.
## Metadata Provider Settings
<note>
Note the lack of a trailing slash in some env vars like <code>TMDB_RELAY_URL</code>. This is important.
</note>
These settings configure the integrations with external metadata providers like The Movie Database (TMDB) and The TVDB.
### TMDB (The Movie Database)
TMDB is the primary metadata provider for MediaManager. It provides detailed information about movies and TV shows.
<tip>
Other software like Jellyfin use TMDB as well, so there won't be any metadata discrepancies.
</tip>
#### `TMDB_RELAY_URL`
If you want use your own TMDB relay service, set this to the URL of your own MetadataRelay. Otherwise, don't set it to
use the default relay.
Default: `https://metadata-relay.maxid.me/tmdb`.
### TVDB (The TVDB)
<warning>
The TVDB might provide false metadata, also it doesn't support some features of MediaManager like to show overviews, therfore TMDB is the preferred metadata provider.
</warning>
#### `TVDB_RELAY_URL`
If you want use your own TVDB relay service, set this to the URL of your own MetadataRelay. Otherwise, don't set it to
use the default relay.
Default: `https://metadata-relay.maxid.me/tvdb`.
### MetadataRelay
<note>
To use MediaManager <strong>you don't need to set up your own MetadataRelay</strong>, as the default relay which is hosted by me, the dev of MediaManager, should be sufficient for most purposes.
</note>
The MetadataRelay is a service that provides metadata for MediaManager. It acts as a proxy for TMDB and TVDB, allowing
you to use your own API keys, but not strictly needing your own because only me, the developer, needs to create accounts
for API keys.
You might want to use it if you want to avoid rate limits, to protect your privacy, or other reasons.
If you know Sonarr's Skyhook, this is similar to that.
#### Where to get API keys
Get an API key from [The Movie Database](https://www.themoviedb.org/settings/api). You can create
an account and generate a free API key in your account settings.
Get an API key from [The TVDB](https://thetvdb.com/auth/register). You can create an account and
generate a free API key in your account settings.
<tip>
If you want to use your own MetadataRelay, you can set the <code>TMDB_RELAY_URL</code> and/or <code>TVDB_RELAY_URL</code> to your own relay service.
</tip>
## Directory Settings
<note>
Normally you don't need to change these, as the default mountpoints are usually sufficient. In your <code>docker-compose.yaml</code>, you can just mount <code>/any/directory</code> to <code>/data/torrents</code>.
</note>
### `IMAGE_DIRECTORY`
Media images (posters, backdrops) will be stored here. Default is `/data/images`.
### `TV_DIRECTORY`
Location of TV show files. Default is `/data/tv`.
### `MOVIE_DIRECTORY`
Location of movie files. Default is `/data/movies`.
### `TORRENT_DIRECTORY`
Location of torrent files and downloads. Default is `/data/torrents`.
## Email Settings
For sending emails, MediaManager uses the SMTP protocol. You can use any SMTP server, like Gmail or SMTP2GO.
### `EMAIL_SMTP_HOST`
Hostname of the SMTP server.
### `EMAIL_SMTP_PORT`
Port of the SMTP server.
### `EMAIL_SMTP_USER`
Username for the SMTP server.
### `EMAIL_SMTP_PASSWORD`
Password for the SMTP server.
### `EMAIL_FROM_EMAIL`
Email address from which emails will be sent.
### `EMAIL_USE_TLS`
Set to `True` to use TLS for the SMTP connection. Default is `False`.
For secure connections, use TLS.
Indexer configuration for Prowlarr and Jackett is covered in detail on the [Indexer Settings](Indexer-Settings.md) page.
## Notification Settings
MediaManager can send Notifications via email, ntfy.sh, Pushover and Gotify. You can enable any of these.
To enable a notification method, set the corresponding environment variables.
Notification configuration for email, Gotify, Ntfy, and Pushover is covered in detail on the [Notification Settings](Notifications.md) page.
### Email
## Metadata Provider Settings
#### `NOTIFICATION_EMAIL`
If set notifications will be sent via email to this email address.
Example: `notifications@example.com`.
### Gotify
#### `NOTIFICATION_GOTIFY_API_KEY`
API key for Gotify.
#### `NOTIFICATION_GOTIFY_URL`
Base URL of your Gotify instance. Example: `https://gotify.example.com`.
Note the lack of a trailing slash.
### Ntfy
#### `NOTIFICATION_NTFY_URL`
URL of your ntfy instance + the topic. Example `https://ntfy.sh/your-topic`.
### Pushover
#### `NOTIFICATION_PUSHOVER_API_KEY`
API key for Pushover.
#### `NOTIFICATION_PUSHOVER_USER`
Username for Pushover.
## Build Arguments (Dockerfile)
### `VERSION`
Labels the Docker image with a version. Passed during build (e.g., by GitHub Actions). Frontend uses this as
`PUBLIC_VERSION`. Example (in build command): `docker build --build-arg VERSION=1.2.3 .`
Metadata provider configuration for TMDB and TVDB is covered in detail on the [Metadata Provider Configuration](metadata-provider-configuration.md) page.

View File

@@ -11,13 +11,15 @@ You (the browser) must reach the backend from this url. Default is `http://local
**TODO: expand on this section**
To configure a url base path for the frontend, you need to build the frontend docker container, this is because
unfortunately SvelteKit needs to know the base path at build time.
Unfortunately you need to build the frontend docker container, to configure a url base path for the frontend. This is because
SvelteKit needs to know the base path at build time.
### `BASE_URL`
Sets the base url path, it must begin with a slash and not end with one. Example (in build command):
`docker build --build-arg BASE_URL=/media -f web/Dockerfile .`
- clone the repo
- cd into the repo's root directory
- `docker build --build-arg BASE_URL=/media -f web/Dockerfile .`
### `VERSION`

View File

@@ -0,0 +1,42 @@
# Database
Database settings are configured in the `[database]` section of your `config.toml` file. MediaManager uses PostgreSQL as its database backend.
## Database Settings (`[database]`)
- `host`
Hostname or IP of the PostgreSQL server. Default is `localhost`.
- `port`
Port number of the PostgreSQL server. Default is `5432`.
- `user`
Username for PostgreSQL connection. Default is `MediaManager`.
- `password`
Password for the PostgreSQL user. Default is `MediaManager`.
- `dbname`
Name of the PostgreSQL database. Default is `MediaManager`.
## Example Configuration
Here's a complete example of the database section in your `config.toml`:
```toml
[database]
host = "db"
port = 5432
user = "MediaManager"
password = "your_secure_password"
dbname = "MediaManager"
```
<tip>
In docker-compose deployments the containers name is simultaneously its hostname, so you can use "db" or "postgres" as host.
</tip>

View File

@@ -0,0 +1,109 @@
# Download Clients
Download client settings are configured in the `[torrents]` section of your `config.toml` file. MediaManager supports both qBittorrent and SABnzbd as download clients.
## qBittorrent Settings (`[torrents.qbittorrent]`)
qBittorrent is a popular BitTorrent client that MediaManager can integrate with for downloading torrents.
- `enabled`
Set to `true` to enable qBittorrent integration. Default is `false`.
- `host`
Hostname or IP of the qBittorrent server. Include the protocol (http/https).
- `port`
Port of the qBittorrent Web UI/API. Default is `8080`.
- `username`
Username for qBittorrent Web UI authentication. Default is `admin`.
- `password`
Password for qBittorrent Web UI authentication. Default is `admin`.
## SABnzbd Settings (`[torrents.sabnzbd]`)
SABnzbd is a Usenet newsreader that MediaManager can integrate with for downloading NZB files.
- `enabled`
Set to `true` to enable SABnzbd integration. Default is `false`.
- `host`
Hostname or IP of the SABnzbd server.
- `port`
Port of the SABnzbd API. Default is `8080`.
- `api_key`
API key for SABnzbd. You can find this in SABnzbd's configuration under "General" → "API Key".
## Example Configuration
Here's a complete example of the download clients section in your `config.toml`:
```toml
[torrents]
# qBittorrent configuration
[torrents.qbittorrent]
enabled = true
host = "http://qbittorrent"
port = 8080
username = "admin"
password = "your_secure_password"
# SABnzbd configuration
[torrents.sabnzbd]
enabled = false
host = "sabnzbd"
port = 8080
api_key = "your_sabnzbd_api_key"
```
## Docker Compose Integration
When using Docker Compose, make sure your download clients are accessible from the MediaManager backend:
```yaml
services:
# MediaManager backend
backend:
image: ghcr.io/maxdorninger/mediamanager/backend:latest
# ... other configuration ...
# qBittorrent service
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
ports:
- "8080:8080"
environment:
- WEBUI_PORT=8080
volumes:
- ./data/torrents:/downloads
# ... other configuration ...
# SABnzbd service (optional)
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
ports:
- "8081:8080"
volumes:
- ./data/usenet:/downloads
# ... other configuration ...
```
<note>
You can enable both qBittorrent and SABnzbd simultaneously if you want to support both BitTorrent and Usenet downloads.
</note>
<tip>
Make sure the download directories in your download clients are accessible to MediaManager for proper file management and organization.
</tip>

View File

@@ -0,0 +1,69 @@
# Metadata Provider Configuration
Metadata provider settings are configured in the `[metadata]` section of your `config.toml` file. These settings control how MediaManager retrieves information about movies and TV shows.
## TMDB Settings (`[metadata.tmdb]`)
TMDB (The Movie Database) is the primary metadata provider for MediaManager. It provides detailed information about movies and TV shows.
<tip>
Other software like Jellyfin use TMDB as well, so there won't be any metadata discrepancies.
</tip>
### `tmdb_relay_url`
If you want to use your own TMDB relay service, set this to the URL of your own MetadataRelay. Otherwise, use the default relay.
- **Default:** `https://metadata-relay.maxid.me/tmdb`
- **Example:** `https://your-own-relay.example.com/tmdb`
## TVDB Settings (`[metadata.tvdb]`)
<warning>
The TVDB might provide false metadata and doesn't support some features of MediaManager like showing overviews. Therefore, TMDB is the preferred metadata provider.
</warning>
### `tvdb_relay_url`
If you want to use your own TVDB relay service, set this to the URL of your own MetadataRelay. Otherwise, use the default relay.
- **Default:** `https://metadata-relay.maxid.me/tvdb`
- **Example:** `https://your-own-relay.example.com/tvdb`
## MetadataRelay
<note>
To use MediaManager <strong>you don't need to set up your own MetadataRelay</strong>, as the default relay hosted by the developer should be sufficient for most purposes.
</note>
The MetadataRelay is a service that provides metadata for MediaManager. It acts as a proxy for TMDB and TVDB, allowing you to use your own API keys if needed, but the default relay means you don't need to create accounts for API keys yourself.
You might want to use your own relay if you want to avoid rate limits, protect your privacy, or for other reasons. If you know Sonarr's Skyhook, this is similar to that.
### Where to get API keys
- Get a TMDB API key from [The Movie Database](https://www.themoviedb.org/settings/api)
- Get a TVDB API key from [The TVDB](https://thetvdb.com/auth/register)
<tip>
If you want to use your own MetadataRelay, you can set the <code>tmdb_relay_url</code> and/or <code>tvdb_relay_url</code> to your own relay service.
</tip>
## Example Configuration
Here's a complete example of the metadata section in your `config.toml`:
```toml
[metadata]
# TMDB configuration
[metadata.tmdb]
tmdb_relay_url = "https://metadata-relay.maxid.me/tmdb"
# TVDB configuration
[metadata.tvdb]
tvdb_relay_url = "https://metadata-relay.maxid.me/tvdb"
```
<note>
In most cases, you can simply use the default values and don't need to specify these settings in your config file at all.
</note>

View File

@@ -4,71 +4,10 @@ services:
ports:
- "8000:8000"
environment:
- QBITTORRENT_PASSWORD=
- QBITTORRENT_HOST=
- QBITTORRENT_USERNAME=
- QBITTORRENT_PORT=
- CORS_URLS=["http://localhost:3000","https://mm.example.com"]
- DB_HOST=db
#- DB_NAME=
#- DB_PORT=
#- DB_PASSWORD=
#- DB_DBNAME=
#- PROWLARR_ENABLED=
#- PROWLARR_URL=http://prowlarr:9696
#- PROWLARR_API_KEY=
#- JACKETT_ENABLED=
#- JACKETT_URL=http://jackett:9117
#- JACKETT_API_KEY=
# example indexers, you can also just use ["all"] to use all indexers configured in Jackett
#- JACKETT_INDEXERS=["1337x","Rarbg"]
# generate a random string with "openssl rand -hex 32"
- AUTH_TOKEN_SECRET=
# this should be you email address
- AUTH_ADMIN_EMAIL=["admin1@example.com","admin2@example.com"]
# if you forget your password you can request a link and get it via email, you must have the email settings configured for this to work obviously
#- AUTH_EMAIL_PASSWORD_RESETS=TRUE
# this is the URL of your frontend, e.g. https://mediamanager.example.com
- FRONTEND_URL=
#- EMAIL_SMTP_HOST=
#- EMAIL_SMTP_PORT=
#- EMAIL_SMTP_USER=
#- EMAIL_SMTP_PASSWORD=
#- EMAIL_FROM_EMAIL=
#- EMAIL_USE_TLS=TRUE
#- NOTIFICATION_EMAIL=notify@example.com
#- NOTIFICATION_GOTIFY_API_KEY=
#- NOTIFICATION_GOTIFY_URL=https://gotify.example.com
#- NOTIFICATION_PUSHOVER_API_KEY=
#- NOTIFICATION_PUSHOVER_USER=
#- NOTIFICATION_NTFY_URL=https://ntfy.sh/your-topic
#- OPENID_ENABLED=FALSE
#- OPENID_CLIENT_ID=
#- OPENID_CLIENT_SECRET=
#- OPENID_CONFIGURATION_ENDPOINT=
#- OPENID_NAME=
#- AUTH_SESSION_LIFETIME=
#- API_BASE_PATH=/api/v1
#- DEVELOPMENT=
- CONFIG_FILE=/data/config.toml
volumes:
- ./data/:/data/
- ./config.toml:/data/config.toml
frontend:
image: ghcr.io/maxdorninger/mediamanager/frontend:latest
ports: