Skip to content

Maloja

Maloja is a scrobble database. Every track you play gets recorded, and Maloja turns the pile into charts: top artists this week, top albums this year, how many hours went where, and a pulse graph of how much you have been listening lately.

It has been around a long time, which shows in the useful way. It accepts scrobbles in four different dialects, so clients that were written for Last.fm in 2007 work as well as ones written for ListenBrainz last month, and it gives you rules for fixing the metadata mess that a decade of ripped tags leaves behind.

Get a 7-day trial of ElfHosted Maloja! 🪄

How do I access Maloja?

Maloja is available:

Signed-in users see their own URLs

The addresses above show the general pattern. Sign in and these become your personal, clickable links.

Why would I want this?

  • Charts that go back as far as your data does. Weekly, monthly and yearly, per artist, per album, per track.
  • It talks to almost anything. Four scrobble APIs between them cover Navidrome, phone players, browser extensions and desktop bridges.
  • Metadata rules. Artists that show up under three spellings, remixers buried in the title, featured artists jammed into one tag: Maloja has rules for all of it, and applies them retroactively.
  • Your history stays yours. One button gives you the whole database back as a file.

First login

Maloja's admin password starts as changemeelfie. Change it from Maloja's own settings, and it sticks.

That is worth spelling out, because it is not how Maloja behaves everywhere else. Upstream only offers a setting that overwrites the password on every single startup, which would mean a password you chose reverting days later when your pod moves between machines. The ElfHosted image turns that into a proper first-run default: the password is seeded once, on the very first start, and left alone afterwards.

Your ElfHosted login already stands in front of the whole Maloja interface, so this password is a second lock on a door that is already locked. Changing it is still worth doing, because it is what protects your API key.

Forgotten your Maloja password?

There is a way back in, and you do not need to raise a ticket for it. Set this with ElfBot:

Quick-paste into Maloja's environment variables using ElfBot
MALOJA_FORCE_PASSWORD=<a new password of your choosing>

Restart Maloja and sign in with it. Then unset that variable again and restart once more, or Maloja will keep resetting your password to it on every startup and you will be back where you started.

Getting your API key

Maloja generates an API key the first time it starts. Open the admin menu, then API keys, and copy the key from there. Every scrobble client authenticates with it, and it is the one credential worth guarding, because anyone holding it can write into your history.

Scrobbling from Navidrome

Navidrome speaks ListenBrainz. Point it at Maloja with ElfBot:

Quick-paste into Navidrome's environment variables using ElfBot
ND_LISTENBRAINZ_ENABLED=true
ND_LISTENBRAINZ_BASEURL=https://<your username>-maloja.elfhosted.com/apis/listenbrainz

Then in Navidrome, open Settings, then Personal, turn on Scrobble to ListenBrainz, and paste in your Maloja API key when it asks for a token.

Scrobbling from anything else

Maloja accepts four dialects. Pick whichever one your client already speaks, and use your Maloja API key wherever it asks for a password or a token. The username is ignored in every case.

Your client speaks Point it at
ListenBrainz https://<your username>-maloja.elfhosted.com/apis/listenbrainz
GNU FM / Gnukebox https://<your username>-maloja.elfhosted.com/apis/audioscrobbler
Audioscrobbler 1.2 https://<your username>-maloja.elfhosted.com/apis/audioscrobbler_legacy
Maloja's own API https://<your username>-maloja.elfhosted.com/apis/mlj_1

Some clients want the base address, others want the full endpoint. If one refuses the address above, check which it is asking for.

Those scrobble endpoints are reachable without an ElfHosted login, because a phone cannot complete a browser sign-in. They are protected by your API key instead. The web interface, the admin pages and the export button all stay behind your ElfHosted login.

Set your timezone

Maloja files each listen against a day server-side, so an unset timezone puts everything in UTC and your daily and weekly charts land on the wrong day. Set it with ElfBot:

Quick-paste into Maloja's environment variables using ElfBot
MALOJA_LOCATION_TIMEZONE=Pacific/Auckland
MALOJA_WEEK_OFFSET=0

Use any IANA timezone name. MALOJA_WEEK_OFFSET decides which day your week starts on, counting 0 as Sunday through to 6 as Saturday.

Album art from Last.fm or Spotify

Maloja can fetch artwork from third-party services if you give it your own API credentials. Set them with ElfBot:

Quick-paste into Maloja's environment variables using ElfBot
MALOJA_LASTFM_API_KEY=<your key>
MALOJA_SPOTIFY_API_ID=<your id>
MALOJA_SPOTIFY_API_SECRET=<your secret>

These are your credentials, not ours, and Maloja works perfectly well without any of them. It falls back to local images.

Importing your history

Maloja reads import files from import inside its data folder, and picks them up when it next starts.

  1. Get your export: Last.fm via ghan.nl, Spotify, ListenBrainz, or the export file from another Maloja instance.
  2. Copy the file into /storage/config/maloja/import/ using FileBrowser.
  3. Restart Maloja from ElfBot.

Getting your data back out

The admin overview page has an Export button under Download Data. It hands you the whole scrobble database as a single file, which imports cleanly into another Maloja instance or into Koito.

Maloja or Koito?

Both record the same thing. Maloja is the older and steadier of the two, accepts more scrobble dialects, and gives you far more control over metadata cleanup. Koito is the newer one, is faster once your history gets large, and has a much nicer interface.

If your music library has spent years accumulating inconsistent tags, Maloja's rules are the reason to pick it. If you mostly want to look at your listening, Koito is the better-looking answer. Both import from the other, so the choice is not permanent.

Maloja also works with

How do I get support for Maloja?

  1. For general use of Maloja, refer to the official site or to one of the links in the resources section below.

  2. For specific support re your ElfHosted configuration / account, see the ElfHosted support options!

You can contribute directly to the development of Maloja using the following:

Maloja resources

Your content, your responsibility

ElfHosted provides Maloja as a hosted application — we do not supply content, accounts, or third-party credentials. You are responsible for ensuring that your use of this app complies with applicable laws and our Acceptable Use Policy. If you have questions about what is or isn't permitted, please reach out — we're happy to help.

What users say..

We're rocking some excellent ⭐⭐⭐⭐⭐ TrustPilot Reviews, and here's what some of our usersfriends say..

I am new here, but today I learned realized that Elfhosted is one of the best free and open source software communities I've seen, and FOSS communities have been at the center of my life since the 90s (Perl, PHP, Symfony, Drupal, Ethereum, etc.). Great open software built by great people who care = great community, and that is something special.

You've done an amazing job @Funky Penguelf with the platform you provide and this place has an awesome mix of active community caretakers and software creators that I've seen here so far like BSM, Spoked, LayeZee and other elf vengers. Keep up the energy, productivity and community and take time to enjoy it and appreciate each other!

⭐⭐⭐⭐⭐ @skwah (Discord)

As a happy Elfhosted customer—who also self hosts MANY things across about 10 severs (dedicated, VPSes, and VMs running on Synology), I wouldn’t switch to self hosting the services I get from Elfhosted. They just work with very little effort configuring things, and the support the owner and his team provides is second to none. Plus I love being part of a fledgling—but quickly growing—enterprise.

⭐⭐⭐⭐⭐ /u/jatguy. (Reddit)

I’ve been using this service for a while now, and honestly, it’s a game-changer compared to anything else I’ve tried for managing my media library. The support is fantastic—super quick, and if the staff aren’t around (which rarely happens), the community steps up right away. I can’t imagine going back to any other platform.

Before this, I had my own setup with a NUC, NAS, and tools like Sonarr and Radarr. It worked pretty well for a while, and my internet speed was high enough to stream without any buffering. But in the end, it wasn’t worth the time or headache of managing all the storage and keeping everything running smoothly.

Now, with this service, everything runs smoothly in 1080p+ with no buffering issues. The interface is really easy to use, which makes managing everything a breeze. Plus, having a whole community of smart people available for guidance is a huge bonus.

I was sold from the start, which is why I quickly upgraded from a 1-month to a 3-month subscription, and I’m planning to switch to a 1-year plan soon. This service totally pays for itself, and I’m sure you won’t be disappointed. It’s been really impressive.

⭐⭐⭐⭐⭐ @seapound (Discord)

Best possible options for anyone looking for the do-it-all option along with the best customer service ive experienced in this space so far. Id rate it a 6 if I could but its limited to 5/5...

⭐⭐⭐⭐⭐ @hashmelters (Discord)

(responding to a discussion re the cost of ElfHosted vs mainstream streaming / self-hosting):

I didn't know that the goal of this project was to compete with large companies running/renting entire DCs. I was under the impression that the goal of this project was to manage the updating of almost selfhosted applications on a shared platform with other users. Basically, be my sysadmin for me.

That being said, paying for services is the 'easy button'. There is a real world cost incurred for the time saved. Time is money. Time is the most valuable currency that exists. Once time is spent, it's forever lost, one cannot retrieve it again (yet). In my mind, there are 3 options for use of time with respect to: mainstream, selfhosting, elfhosted.

  • mainstream - my time is valuable and I don't want curated content and I don't care what content that I have the ability to consume. I only like what's popular.

  • elfhosted - my time is valuable, I want my own curated content without being forced to browse past the same damn entry 500 times just to find out that I can't watch the movie I want because it's not available in my current location or was removed last week from mainstream providers.

  • selfhost - I care about costs and I have nothing but time to waste or I want to learn about the backend of the systems involved. I'll pay for my own VPS/homelab, electricity, manage the OS, manage app updates, figure out how to make the apps talk nice to each other, create my own beautiful frontend.

I know how much my time is worth, does that reddit poster know how much their time is worth? Without knowing what you are worth, you can't make effective capital expenditures with respect to the time it will take to recoup the capital.

I know I don't need elfhosted at all for my use case. I choose to stay with elfhosted because it's my 'easy button'. It's an efficient capital expense for the amount of time it saves me managing my own hardware, apps and saves me electricity costs. I'm also in a situation where I don't have upload bandwidth from my home to serve HD content to myself remotely. If I lived back in a city, I would still be here. My time is worth $$/hr.

⭐⭐⭐⭐⭐ @cobra2 (Discord)

"Just wanted to check in here and let @Darth-Penguini and anyone/everyone else know...WOW. I have been struggling with storage for years, maintenance of Docker containers, upkeep, all of it. Elfhosted is so freeing. It's an amazing service that I hope to be a member of for a long, long time!"

⭐⭐⭐⭐⭐ @Fingers91 (Discord)

"I would recommend ElfHosted to anyone. It has been great so far and made life a lot easier than running my own setups. If you’re in the fence give them a try and help support this great community."

⭐⭐⭐⭐⭐ Zestyclose_Teacher20 (Reddit)

"thanks for the help and must say this is the best host I every had for my server 🙂 10/10 🙂 All other places I have try have I got a lot buff etc. Your host can even give me full power on a 4K Remux on 200GB big movie file . That's damn awesome 😄"

⭐⭐⭐⭐⭐ @tjelite (Discord)

"What an amazing support system these guys have Chris and Layzee i think it was! Both are very patient with me even though I am a newbie at all this. Very thorough and explained everything step by step with me

I couldn’t ask for anything better than the service I have received by these guys! Happy happy client❤️"

⭐⭐⭐⭐⭐ @dead.potahto (Discord)

"Very happy customer. Great service"

⭐⭐⭐⭐⭐ @ronney67 (Discord)

"Very good customer service, frequent updates, and excelent uptime!!!!!"

⭐⭐⭐⭐⭐ @ed.guim (Discord)

"I had my own plex-arrs setup on hetzner for years. Yesterday I deleted everything as elfhosted has gone above and beyond it. And it has a fantastic, active community as well! Very friendly, helpful and like-minded folks always willing to help and improve the system. Top notch!"

⭐⭐⭐⭐⭐ @alon.hearter (Discord)

"Absolutely Amazed with the patience and professionalism of all Elf-Venger Staff including bossman penguin❤️"

⭐⭐⭐⭐⭐ @dead.potahto (Discord)

"@BSM went above and beyond to make sure I had all the one on one support needed with my sub. Thank you for your patience! Elfhosted continues to be Elftastic !!"

⭐⭐⭐⭐⭐ @bfmc1 (Discord)

"really enjoying the service from elfhosted. The setup is really easy from the guides on the website. And the help on the discord channel is really quick."

⭐⭐⭐⭐⭐ @jrhd13 (Discord)

"Support is amazing, and once you find a setup which works best for you it works perfectly, very happy 😊"

⭐⭐⭐⭐⭐ @fiendclub (Discord)

"great fast service, resolved my problem and really friendly"

⭐⭐⭐⭐⭐ @allan.st.minimum (Discord)

"Great service and sorted out a billing issue super quick and easy."

⭐⭐⭐⭐⭐ @scottcall707 (Discord)

"Very friendly support, resolved a problem with my account! I also appreciate the community that has been built around the service!"

⭐⭐⭐⭐⭐ @leo1305 (Discord)

"excellent customer service and very fast replies"

⭐⭐⭐⭐⭐ @yo.hohoho (Discord)

"Loved the simplicity, experience and support"

⭐⭐⭐⭐⭐ @y.adhish (Discord)

"Very friendly help as always, problem solved, one happy elf here!"

⭐⭐⭐⭐⭐ @badfurday0 (Discord)

"Great Helpful and Fast support. Thanks!"

⭐⭐⭐⭐⭐ @.mxrcy (Discord)