Make-A-Wrapped

Make-A-Wrapped

Docker app from grtgbln's Repository

Overview

Spotify Wrapped style recap generator for ListenBrainz, Last.fm, and Navidrome.

Install Make-A-Wrapped on Unraid in a few clicks.

Find Make-A-Wrapped in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Make-A-Wrapped Review the template variables and paths Click Install

Requirements


        Requires an optional Last.fm API key.
    

Details

Repository
ghcr.io/devmatei/make-a-wrapped:latest
Last Updated2026-07-10
First Seen2026-04-29

Runtime arguments

Web UI
http://[IP]:[PORT:8000]/
Network
bridge
Privileged
false

Template configuration

Web UI PortPorttcp

Container Port: 8000

Target
8000
Default
8000
Value
8000
Secret KeyVariable

Secret key. Generate a random string.

Target
SECRET_KEY
App Limit SaltVariable

Salt for app rate limiting. Generate a random string.

Target
APP_RATE_LIMIT_SALT
Last.fm - API KeyVariable

Last.fm API key. Required for higher quality artist artwork

Target
LASTFM_API_KEY
Count SinceVariable

Start date for counting listens (YYYY-MM-DD)

Target
WRAPPED_COUNT_SINCE
Default
2024-12-01
Value
2024-12-01
Trust Proxy HeadersVariable

Whether to trust proxy headers (0 = False, 1 = True)

Target
APP_TRUST_PROXY_HEADERS
Default
0|1
Cloudflare Turnstile - Site KeyVariable

Cloudflare Turnstile site key for CAPTCHA protection

Target
TURNSTILE_SITE_KEY
Cloudflare Turnstile - Secret KeyVariable

Cloudflare Turnstile secret key for CAPTCHA protection

Target
TURNSTILE_SECRET_KEY
App DataPath

Path to application data

Target
/app/data
Default
/mnt/user/appdata/make_a_wrapped/data
Value
/mnt/user/appdata/make_a_wrapped/data
Internal Metrics FileVariable

Path to internal metrics file. Not recommended to change.

Target
WRAPPED_COUNT_FILE
Default
data/wrapped-count.txt
Value
data/wrapped-count.txt
ListenBrainz - APIVariable

ListenBrainz API URL

Target
LISTENBRAINZ_API
Default
https://api.listenbrainz.org/1
Value
https://api.listenbrainz.org/1
ListenBrainz - User AgentVariable

User agent for ListenBrainz API requests

Target
LISTENBRAINZ_USER_AGENT
Default
wrapped-listenbrainz/1.0
Value
wrapped-listenbrainz/1.0
ListenBrainz - RangeVariable

ListenBrainz listening range

Target
LISTENBRAINZ_RANGE
Default
this_year
Value
this_year
MusicBrainz - APIVariable

MusicBrainz API URL

Target
MUSICBRAINZ_API
Default
https://musicbrainz.org/ws/2
Value
https://musicbrainz.org/ws/2
MusicBrainz - User AgentVariable

User agent for MusicBrainz API requests

Target
MUSICBRAINZ_USER_AGENT
Default
wrapped-listenbrainz/1.0
Value
wrapped-listenbrainz/1.0
Cover Art Archive - APIVariable

Cover Art Archive API URL

Target
COVER_ART_API
Default
https://coverartarchive.org/release
Value
https://coverartarchive.org/release
Last.fm - APIVariable

Last.fm API URL

Target
LASTFM_API
Default
https://ws.audioscrobbler.com/2.0/
Value
https://ws.audioscrobbler.com/2.0/
Last.fm - User AgentVariable

User agent for Last.fm API requests

Target
LASTFM_USER_AGENT
Default
wrapped-listenbrainz/1.0
Value
wrapped-listenbrainz/1.0
Flask EnvironmentVariable

Flask environment. Not recommended to change.

Target
FLASK_ENV
Default
production
Value
production
HTTP TimeoutVariable

Timeout for HTTP requests

Target
HTTP_TIMEOUT
Default
10
Value
10
HTTP Pool SizeVariable

Maximum number of connections in the HTTP connection pool

Target
HTTP_POOL_MAXSIZE
Default
40
Value
40
ListenBrainz - Cache TTLVariable

Time-to-live for ListenBrainz API cache

Target
LISTENBRAINZ_CACHE_TTL
Default
60
Value
60
ListenBrainz - Cache SizeVariable

Maximum size of the ListenBrainz API cache

Target
LISTENBRAINZ_CACHE_SIZE
Default
256
Value
256
App - Rate LimitVariable

Rate limit for the application

Target
APP_RATE_LIMIT
Default
90 per minute
Value
90 per minute
App - Stats Rate LimitVariable

Rate limit for application statistics

Target
APP_STATS_RATE_LIMIT
Default
45 per minute
Value
45 per minute
App - Image Rate LimitVariable

Rate limit for image requests

Target
APP_IMAGE_RATE_LIMIT
Default
15 per minute
Value
15 per minute
App - Max Top ResultsVariable

Maximum number of top results to return

Target
APP_MAX_TOP_RESULTS
Default
15
Value
15
App - Image ConcurrencyVariable

Number of concurrent image requests

Target
APP_IMAGE_CONCURRENCY
Default
2
Value
2
App - Image Queue LimitVariable

Maximum number of images in the queue

Target
APP_IMAGE_QUEUE_LIMIT
Default
10
Value
10
App - Image Queue TimeoutVariable

Timeout for image queue

Target
APP_IMAGE_QUEUE_TIMEOUT
Default
15
Value
15
Temp Artwork TTLVariable

Time-to-live for temporary artwork files

Target
TEMP_ARTWORK_TTL_SECONDS
Default
3600
Value
3600
Temp Artwork Max BytesVariable

Maximum size of temporary artwork files, in bytes

Target
TEMP_ARTWORK_MAX_BYTES
Default
6291456
Value
6291456
Cloudflare Turnstile - Cache TTLVariable

Time-to-live for Cloudflare Turnstile cache

Target
TURNSTILE_CACHE_TTL
Default
120
Value
120
Cloudflare Turnstile - TimeoutVariable

Timeout for Cloudflare Turnstile requests

Target
TURNSTILE_TIMEOUT
Default
5
Value
5