LastFM.blue that automates weekly posting of your Last.fm Weekly Artist Chart to Bluesky (AT Protocol) and Mastodon.
🌐 Public Instance: https://lastfm.blue
- Create a
compose.yml:
services:
lastfm:
image: ghcr.io/butialabs/lastfm:latest
container_name: lastfm
environment:
TZ: UTC
APP_URL: https://your-domain.com
LASTFM_API: your_lastfm_api_key
ENCRYPTION_KEY: your_32_character_encryption_key
ADMIN_USER: admin
ADMIN_PASSWORD: your_secure_password
ports:
- 80:80
volumes:
- ./lastfm/data:/app/data
restart: unless-stopped- Start the container:
docker compose up -d- Access the application at
http://localhost(or your configured domain)
| Variable | Description | Required |
|---|---|---|
APP_URL |
Public URL of your instance | Yes |
LASTFM_API |
Your Last.fm API key (Get one here) | Yes |
ENCRYPTION_KEY |
32-character key for encrypting credentials | Yes |
ADMIN_USER |
Admin panel username | Yes |
ADMIN_PASSWORD |
Admin panel password | Yes |
TZ |
Timezone (e.g., America/Sao_Paulo) |
No |
Mount the /app/data volume to persist:
- SQLite database
- Artist image cache
- Generated montages
- Application logs
For local development or contributing to the project.
- PHP >= 8.3
- PHP Extensions:
pdo_sqlite,sqlite3,gd - Composer
- Node.js & npm (for asset compilation)
- Clone the repository:
git clone https://github.com/butialabs/lastfm.git
cd lastfm/app- Install PHP/Node:
composer install
npm install- Environment:
cp .env.example .envEdit .env with your settings:
APP_URL=http://localhost:8080
DB_CONNECTION=sqlite
SQLITE_PATH=data/db/lastfm.sqlite
LASTFM_API=your_lastfm_api_key
ENCRYPTION_KEY=your_32_character_encryption_key
ADMIN_USER=admin
ADMIN_PASSWORD=your_password- Run database migrations:
vendor/bin/phinx migrate -c phinx.php- Compile assets (optional):
npx gulp- Start the development server:
php -S localhost:8080 -t public- Open
http://localhost:8080in your browser
# Process scheduled users (generate montages and mark as QUEUED)
php bin/lastfm users --schedule
# Process queue (send posts to Bluesky/Mastodon)
php bin/lastfm users --sendMade with ❤️ by Butiá Labs