diff --git a/Writerside/cfg/buildprofiles.xml b/Writerside/cfg/buildprofiles.xml index 39f7ce5..46caee3 100644 --- a/Writerside/cfg/buildprofiles.xml +++ b/Writerside/cfg/buildprofiles.xml @@ -7,7 +7,6 @@ false - 2000 favicon.ico logo.svg diff --git a/Writerside/topics/Indexer-Settings.md b/Writerside/topics/Indexer-Settings.md index 6c0dcfa..212bfc7 100644 --- a/Writerside/topics/Indexer-Settings.md +++ b/Writerside/topics/Indexer-Settings.md @@ -2,20 +2,35 @@ ## Prowlarr -| Variable | Description | Default | Example | -|--------------------|-------------------------------------|-------------------------|------------------------| -| `PROWLARR_ENABLED` | Set to `True` to enable Prowlarr. | `False` | `true` | -| `PROWLARR_API_KEY` | Your Prowlarr API key. | - | `prowlarr_api_key` | -| `PROWLARR_URL` | Base URL of your Prowlarr instance. | `http://localhost:9696` | `http://prowlarr:9696` | +### `PROWLARR_ENABLED` + +Set to `True` to enable Prowlarr. Default is `False`. Example: `true`. + +### `PROWLARR_API_KEY` + +This is your Prowlarr API key. Example: `prowlarr_api_key`. + +### `PROWLARR_URL` + +Base URL of your Prowlarr instance. Default is `http://localhost:9696`. Example: `http://prowlarr:9696`. ## Jackett -| Variable | Description | Default | Example | -|--------------------|----------------------------------------------------|-------------------------|------------------------| -| `JACKETT_ENABLED` | Set to `True` to enable Jackett. | `False` | `true` | -| `JACKETT_API_KEY` | Your Prowlarr API key. | - | `jackett_api_key` | -| `JACKETT_URL` | Base URL of your Prowlarr instance. | `http://localhost:9117` | `http://prowlarr:9117` | -| `JACKETT_INDEXERS` | list of all indexers for Jackett to search through | `all` | `["1337x","0magnet"]` | +### `JACKETT_ENABLED` + +Set to `True` to enable Jackett. Default is `False`. Example: `true`. + +### `JACKETT_API_KEY` + +This is your Prowlarr API key. Example: `jackett_api_key`. + +### `JACKETT_URL` + +Base URL of your Prowlarr instance. Default is `http://localhost:9117`. Example: `http://prowlarr:9117`. + +### `JACKETT_INDEXERS` + +List of all indexers for Jackett to search through. Default is `all`. Example: `["1337x","0magnet"]`. diff --git a/Writerside/topics/authentication-setup.md b/Writerside/topics/authentication-setup.md index c7fd1e9..422d5de 100644 --- a/Writerside/topics/authentication-setup.md +++ b/Writerside/topics/authentication-setup.md @@ -3,17 +3,29 @@ 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. - Note the lack of a trailing slash in some env vars like FRONTEND_URL. This is important. -| Variable | Description | Default | Example | Required | -|-------------------------|--------------------------------------------------------------------------|-----------------|-------------------------------------------|----------| -| `AUTH_TOKEN_SECRET` | Strong secret key for signing JWTs (create with `openssl rand -hex 32`). | - | `AUTH_TOKEN_SECRET=your_super_secret_key` | Yes | -| `AUTH_SESSION_LIFETIME` | Lifetime of user sessions in seconds. | `86400` (1 day) | `AUTH_SESSION_LIFETIME=604800` (1 week) | No | -| `AUTH_ADMIN_EMAIL` | A list of email address of the administrator accounts. | - | `AUTH_ADMIN_EMAIL=admin@example.com` | Yes | -| `FRONTEND_URL` | The url the frontend will be accessed from. | - | `https://mediamanager.example` | Yes | +## General Authentication Settings + +### `AUTH_TOKEN_SECRET` + +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`. + +### `AUTH_SESSION_LIFETIME` + +Lifetime of user sessions in seconds. Default is `86400` (1 day). Example: `AUTH_SESSION_LIFETIME=604800` (1 week). + +### `AUTH_ADMIN_EMAIL` + +A list of email addresses for administrator accounts. This is a required field. Example: +`AUTH_ADMIN_EMAIL=admin@example.com`. + +### `FRONTEND_URL` + +The URL the frontend will be accessed from. This is a required field. Example: `https://mediamanager.example`. On login/registration, every user whose email is in AUTH_ADMIN_EMAIL will be granted admin privileges. @@ -26,13 +38,26 @@ this can be done in the settings page. ## OpenID Connect (OAuth 2.0) -| Variable | Description | Default | Example | -|---------------------------------|--------------------------------------------------------------------------------------------------|----------|---------------------------------------------------------------------------------------------| -| `OPENID_ENABLED` | Enables OpenID authentication | `FALSE` | `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`). | - | `https://authentik.example.com/application/o/mediamanager/.well-known/openid-configuration` | -| `OPENID_NAME` | Display name for this OpenID provider. | `OpenID` | `Authentik` | +### `OPENID_ENABLED` + +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 diff --git a/Writerside/topics/configuration-backend.md b/Writerside/topics/configuration-backend.md index a98e486..25c03b8 100644 --- a/Writerside/topics/configuration-backend.md +++ b/Writerside/topics/configuration-backend.md @@ -8,32 +8,56 @@ These variables configure the core backend application, database connections, au ## General Settings -| Variable | Description | Default | -|-----------------|----------------------------------------------------------------------------------------|-----------| -| `API_BASE_PATH` | The url base of the backend | `/api/v1` | -| `CORS_URLS` | Enter a list of origins you are going to access the api from (e.g. https://mm.example) | - | +### `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 -| Variable | Description | Default | Example | -|---------------|------------------------------------------|----------------|--------------| -| `DB_HOST` | Hostname or IP of the PostgreSQL server. | `localhost` | `postgres` | -| `DB_PORT` | Port number of the PostgreSQL server. | `5432` | `5432` | -| `DB_USER` | Username for PostgreSQL connection. | `MediaManager` | `myuser` | -| `DB_PASSWORD` | Password for the PostgreSQL user. | `MediaManager` | `mypassword` | -| `DB_DBNAME` | Name of the PostgreSQL database. | `MediaManager` | `mydatabase` | +### `DB_HOST` + +Hostname or IP of the PostgreSQL server. Default is `localhost`. Example: `postgres`. + +### `DB_PORT` + +Port number of the PostgreSQL server. Default is `5432`. Example: `5432`. + +### `DB_USER` + +Username for PostgreSQL connection. Default is `MediaManager`. Example: `myuser`. + +### `DB_PASSWORD` + +Password for the PostgreSQL user. Default is `MediaManager`. Example: `mypassword`. + +### `DB_DBNAME` + +Name of the PostgreSQL database. Default is `MediaManager`. Example: `mydatabase`. ## Download Client Settings Currently, only qBittorrent is supported as a download client. But support for other clients isn't unlikely in the future. -| Variable | Description | Default | Example | -|--------------------|-----------------------------|-------------|--------------------| -| `QBITTORRENT_HOST` | Host of the QBittorrent API | `localhost` | `qbit.example.com` | -| `QBITTORRENT_PORT` | Port of the QBittorrent API | `8080` | `443` | -| `QBITTORRENT_USER` | Username for QBittorrent | `admin` | - | -| `QBITTORRENT_PASS` | Password for QBittorrent | `admin` | - | +### `QBITTORRENT_HOST` + +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_PASS` + +Password for QBittorrent. Default is `admin`. ## Metadata Provider Settings @@ -49,22 +73,22 @@ an account and generate a free API key in your account settings. Other software like Jellyfin use TMDB as well, so there won't be any metadata discrepancies. -| Variable | Default | Example | -|----------------|---------|---------------------------------------| -| `TMDB_API_KEY` | None | `TMDB_API_KEY=your_tmdb_api_key_here` | +#### `TMDB_API_KEY` + +Your TMDB API key. Example: `your_tmdb_api_key_here`. ### TVDB (The TVDB) - 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. + 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. Get an API key from [The TVDB](https://thetvdb.com/auth/register) to use this provider. You can create an account and generate a free API key in your account settings. -| Variable | Default | Example | -|----------------|---------|---------------------------------------| -| `TVDB_API_KEY` | None | `TVDB_API_KEY=your_tvdb_api_key_here` | +#### `TVDB_API_KEY` + +Your TVDB API key. Example: `your_tvdb_api_key_here`. ## Directory Settings @@ -72,16 +96,25 @@ generate a free API key in your account settings. Normally you don't need to change these, as the default mountpoints are usually sufficient. In your docker-compose.yaml, you can just mount /any/directory to /data/torrents. -| Variable | Description | Default | -|---------------------|---------------------------------------------------|------------------| -| `IMAGE_DIRECTORY` | media images (posters, backdrops) will be stored. | `/data/images` | -| `TV_DIRECTORY` | location of TV show files | `/data/tv` | -| `MOVIE_DIRECTORY` | location of movie files | `/data/movies` | -| `TORRENT_DIRECTORY` | location of torrent files and downloads | `/data/torrents` | +### `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`. ## Build Arguments (Dockerfile) -| Argument | Description | Example (in build command) | -|-----------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------| -| `VERSION` | Labels the Docker image with a version. Passed during build (e.g., by GitHub Actions). Frontend uses this as `PUBLIC_VERSION`. | `docker build --build-arg VERSION=1.2.3 .` | +### `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 .` diff --git a/Writerside/topics/configuration-frontend.md b/Writerside/topics/configuration-frontend.md index 69cf205..27edabc 100644 --- a/Writerside/topics/configuration-frontend.md +++ b/Writerside/topics/configuration-frontend.md @@ -1,10 +1,20 @@ # Frontend -| Variable | Description | Default | Example | -|----------------------|----------------------------------------------------------------|--------------------------------|-------------------------------------------| -| `PUBLIC_WEB_SSR` | Enables/disables Server-Side Rendering. (this is experimental) | `false` | `true` | -| `PUBLIC_API_URL` | You (the browser) mut reach the backend from this url. | `http://localhost:8000/api/v1` | `https://mediamanager.example.com/api/v1` | -| `PUBLIC_SSR_API_URL` | The frontent container must reach the backend from this url. | `http://localhost:8000/api/v1` | `http://backend:8000/api/v1` | +## Environment Variables + +### `PUBLIC_WEB_SSR` + +Enables/disables Server-Side Rendering. (this is experimental). Default is `false`. Example: `true`. + +### `PUBLIC_API_URL` + +You (the browser) must reach the backend from this url. Default is `http://localhost:8000/api/v1`. Example: +`https://mediamanager.example.com/api/v1`. + +### `PUBLIC_SSR_API_URL` + +The frontend container must reach the backend from this url. Default is `http://localhost:8000/api/v1`. Example: +`http://backend:8000/api/v1`. ## Build Arguments (web/Dockerfile) @@ -13,8 +23,12 @@ 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. -| Argument | Description | Example (in build command) | -|------------|-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------| -| `VERSION` | Sets the `PUBLIC_VERSION` environment variable at runtime in the frontend container. Passed during build. | `docker build --build-arg VERSION=1.2.3 -f web/Dockerfile .` | -| `BASE_URL` | Sets the base url path, it must begin with a slash and not end | `docker build --build-arg BASE_URL=/media -f web/Dockerfile .` | +### `VERSION` +Sets the `PUBLIC_VERSION` environment variable at runtime in the frontend container. Passed during build. Example (in +build command): `docker build --build-arg VERSION=1.2.3 -f web/Dockerfile .` + +### `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 .` diff --git a/Writerside/topics/troubleshooting.md b/Writerside/topics/troubleshooting.md index 9193f17..e6df201 100644 --- a/Writerside/topics/troubleshooting.md +++ b/Writerside/topics/troubleshooting.md @@ -5,17 +5,15 @@ - Always check the container logs for more specific error messages + Always check the container and browser logs for more specific error messages -## Authentication Issues +## Authentication Issues (OIDC) -* Double-check `AUTH_TOKEN_SECRET`. If it changes, existing sessions/tokens will be invalidated. -* For OpenID: - * Verify `OPENID_CLIENT_ID`, `OPENID_CLIENT_SECRET`, and `OPENID_CONFIGURATION_ENDPOINT` are correct. - * Ensure the `FRONTEND_URL` is accurate and that your OpenID provider has the correct redirect URI whitelisted ( - e.g., `http://your-frontend-url/api/v1/auth/cookie/Authentik/callback`). - * Check backend logs for errors from `httpx_oauth` or `fastapi-users`. +* Verify `OPENID_CLIENT_ID`, `OPENID_CLIENT_SECRET`, and `OPENID_CONFIGURATION_ENDPOINT` are correct. +* Ensure the `FRONTEND_URL` is accurate and that your OpenID provider has the correct redirect URI whitelisted ( + e.g., `http://your-frontend-url/api/v1/auth/cookie/Authentik/callback`). +* Check backend logs for errors from `httpx_oauth` or `fastapi-users`. ## CORS Errors