selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
your_lastfm logo

Self-host your_lastfm

v1.3.0

Self-hosted Last.fm scrobble dashboard with stats

ReleaseOpen SourceMIT
Updated13 hours ago
LanguageJavaScript
Setup difficultyModerate
Stars
149
Port
1533 (HTTP web interface)
Docker
gomaink/your-lastfm
Install with Docker Compose

What is your_lastfm?

YourLastFM is a self-hosted dashboard for Last.fm users who want a private, local view of their listening history. It pulls scrobbles from the Last.fm API into a SQLite database and presents them through a web interface showing your most-played artists, albums, and tracks, daily activity charts, a listening clock, and recent scrobbles. You can compare your taste with Last.fm friends, create custom leaderboards with public Last.fm users over specific date ranges, and generate shareable recap images in standard and Instagram Story formats. The app runs via Docker Compose or directly with Node.js 22, stores all data in a local ./data volume, and requires only a Last.fm API key to get started.

Should you self-host your_lastfm?

your_lastfm scores 45/100 on selfhost.directory (how scoring works) and ranks #29 of 44 in Dashboard. It has 149 GitHub stars.

It shipped 11 stable releases in the past year. The latest, v1.3.0, came out on 3 August 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in JavaScript.

Its closest alternative on selfhost.directory is Homepage by gethomepage (84/100, 33 419 stars). It scores higher overall, so compare the two before you pick. See your_lastfm vs Homepage by gethomepage side by side.

Features

  • Album/artist image lookup and caching
  • CSV import and export
  • Custom group leaderboards
  • Daily integrity check
  • Dashboard caching
  • Last.fm friends comparison
  • Last.fm scrobble synchronization
  • Listening statistics dashboard
  • Persistent SQLite storage
  • Shareable recap images

your_lastfm README

How to install your_lastfm

Install your_lastfm with Docker Compose

Docker and Docker Compose
Environment variables
Configured via .env file (copy from .env.example). Required: LASTFM_API_KEY, LASTFM_USERNAME

docker compose pull docker compose up -d

Or build the current source locally:

docker compose up -d --build

Uses published image gomaink/your-lastfm. Data persisted in ./data volume.

How to configure your_lastfm

  • API_MAX_MEMORY512MPM2 process memory limit for the API process

    PM2 process memory limit for the API process

  • CORS_ORIGINOptional comma-separated external origins allowed to call the API

    Optional comma-separated external origins allowed to call the API

  • CRON_MAX_MEMORY256MPM2 process memory limit for the cron/sync process

    PM2 process memory limit for the cron/sync process

  • DASHBOARD_CACHE_TTL_MS300000Persistent dashboard cache lifetime in milliseconds; 0 disables time-based expiry

    Persistent dashboard cache lifetime in milliseconds; 0 disables time-based expiry

  • EXTERNAL_REQUEST_CONCURRENCY4Concurrent metadata/image lookups

    Concurrent metadata/image lookups

  • FRIENDS_CACHE_TTL_MS300000In-memory cache lifetime for the Last.fm friends list

    In-memory cache lifetime for the Last.fm friends list

  • IMAGE_FAILURE_CACHE_MS600000Time before retrying an image lookup that returned nothing

    Time before retrying an image lookup that returned nothing

  • INTEGRITY_CRON0 3 * * *Last.fm/local count check schedule (cron expression)

    Last.fm/local count check schedule (cron expression)

  • INTEGRITY_MISSING_THRESHOLD1Missing scrobbles required before integrity check starts a full repair sync

    Missing scrobbles required before integrity check starts a full repair sync

  • LASTFM_API_KEYLast.fm API key for accessing the Last.fm API

    Last.fm API key for accessing the Last.fm API

  • LASTFM_REQUEST_DELAY_MS250Delay between Last.fm history pages

    Delay between Last.fm history pages

  • LASTFM_REQUEST_TIMEOUT_MS15000Last.fm request timeout in milliseconds

    Last.fm request timeout in milliseconds

  • LASTFM_USERNAMEYour Last.fm username to synchronize scrobbles for

    Your Last.fm username to synchronize scrobbles for

  • LEADERBOARD_ALBUM_TTL_MS2592000000Lifetime of cached album track lists

    Lifetime of cached album track lists

  • LEADERBOARD_CACHE_TTL_MS900000Persistent lifetime for generated leaderboard results; 0 disables time-based expiry

    Persistent lifetime for generated leaderboard results; 0 disables time-based expiry

  • LEADERBOARD_MAX_GROUPS50Maximum local leaderboard groups

    Maximum local leaderboard groups

  • LEADERBOARD_MAX_MEMBERS20Maximum Last.fm users in one group

    Maximum Last.fm users in one group

  • LEADERBOARD_MAX_RANGE_DAYS366Maximum inclusive leaderboard date range

    Maximum inclusive leaderboard date range

  • LEADERBOARD_PROFILE_TTL_MS86400000Lifetime of cached Last.fm user profiles

    Lifetime of cached Last.fm user profiles

  • LEADERBOARD_REQUEST_CONCURRENCY4Concurrent Last.fm requests while building group charts

    Concurrent Last.fm requests while building group charts

  • METADATA_FAILURE_CACHE_MS600000Time before retrying missing track metadata

    Time before retrying missing track metadata

  • PORT1533HTTP port for the web interface

    HTTP port for the web interface

  • SHARE_IMAGE_CONCURRENCY4Concurrent recap image loads

    Concurrent recap image loads

  • SHARE_IMAGE_MAX_BYTES10485760Maximum downloaded image size in bytes

    Maximum downloaded image size in bytes

  • SHARE_MAX_CONCURRENT2Maximum simultaneous recap renders

    Maximum simultaneous recap renders

  • STATIC_ASSET_CACHE_SECONDS300Browser cache lifetime for local JavaScript, CSS, and images

    Browser cache lifetime for local JavaScript, CSS, and images

  • SYNC_CRON*/5 * * * *Incremental sync schedule (cron expression)

    Incremental sync schedule (cron expression)

  • SYNC_OVERLAP_SECONDS86400Re-fetch window used to safely catch late scrobbles

    Re-fetch window used to safely catch late scrobbles

your_lastfm releases & version history

More in Dashboard

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…