Make-A-Wrapped

Make-A-Wrapped

Docker app from grtgbln's Repository

Overview

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

Requirements


        Requires an optional Last.fm API key.
    

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

Details

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

Run Make-A-Wrapped on Unraid.

Make-A-Wrapped is listed in Community Apps for Unraid OS. Explore Unraid to build a flexible home server, NAS, or homelab.