Mnema is a containerized service that exposes a web interface on port 8080.
Configuration follows the standard .NET pattern and can be done as follows
Configuration File: Mount a custom appsettings.json to /Mnema/config/appsettings.json.
Environment Variables: Provide settings directly via the container environment.
You can use both at the same time
Configuration Reference
Variable (JSON Path)
Description
Connections
ConnectionStrings:Redis
Connection string for the Redis cache.
ConnectionStrings:Postgres
Connection string for the PostgreSQL database.
ConnectionStrings:Sqlite
Connection string for the Sqlite database, ensure this maps to a persistent location. Postgres takes priority. Example: Data Source=/persistent/Mnema.db; The ; is required
Authentication
NoAuthentication
Set the true if you wish to disable Authentication
Authentication:Hardcover
Your hardcover ApiKey, required if you wish to use hardcover as a metadata provider
Storage
Application:BaseDir
Required. The root directory for media storage.
Application:DownloadDir
Required. The directory used for processing downloads.
Application:PersistentStorage
Required. The directory where Mnema will store data that must be persistet (Mangabaka index)
Application:Host
Host used to construct the calendar url. Not required unless you want the copy button to work
System & Libs
TZ
Sets the system timezone for the runtime (e.g., Europe/Brussels).
AutoMapperLicense
Optional license key. Displays a warning on start if missing and not suppressed.
Kerstel:Port
Optionally set a custom port (default sot 8080)
Key Mapping Rules
Nesting: Use __ (double underscore) to represent nested JSON objects in environment variables (e.g., Authentication__Hardcover).
Secrets: Sensitive values like PostgreSQL strings and OIDC secrets should be injected via a secret management system.
Docker compose example
services:
mnema:
image: ghcr.io/fesaa/mnema:latest
container_name: mnema
ports:
- "8080:8080"
environment:
- TZ=Europe/Brussels
# - AutoMapperLicense=your_license_here
volumes:
- ./data/mnema:/persistent
- /path/to/your/media:/media
#If you are planning to use qBit this must point to its download location
- /path/to/your/downloads:/downloads
- ./appsettings.json:/Mnema/config/appsettings.json # Optional
restart: unless-stopped
Kubernetes example
I run my software in a kubernetes cluster, so this is how I run mine. This is with Postgres & Redis