Set up
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.jsonto/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 | ||
| Connection string for the Redis cache. | |
| Connection string for the PostgreSQL database. | |
| Connection string for the Sqlite database, ensure this maps to a persistent location. Postgres takes priority. Example: | |
Authentication | ||
| The OIDC Identity Provider URL. | |
| The registered Client ID for the application. | |
| The secret key for OIDC handshake. | |
| Set the | |
| Your hardcover ApiKey, required if you wish to use hardcover as a metadata provider | |
| Base64 of a WVD file. Only required if you wish to download from them | |
Storage | ||
| Required. The root directory for media storage. | |
| Required. The directory used for processing downloads. | |
| Required. The directory where Mnema will store data that must be persistet (Mangabaka index) | |
| Host used to construct the calendar url. Not required unless you want the copy button to work | |
System & Libs | ||
| Sets the system timezone for the runtime (e.g., | |
| Optional license key. Displays a warning on start if missing and not suppressed. |
Key Mapping Rules
Nesting: Use
__(double underscore) to represent nested JSON objects in environment variables (e.g.,OpenIdConnect__Secret).Secrets: Sensitive values like PostgreSQL strings and OIDC secrets should be injected via a secret management system.
Docker compose example
Kubernetes example
I run my software in a kubernetes cluster, so this is how I run mine