Funkwhale is your own music and podcast server. Upload your collection once, then listen from any browser or from the Subsonic apps on your phone, and share it with the people you choose.
On this page
- At a glance
- What it's good for
- Before you install: decide on its address
- Signing in
- Adding people
- Getting your music in
- Listening on your phone
- Podcasts and the fediverse
- Good to know
- Addresses and ports
- Settings
- In its config file
- Tools
- Works with
- Privacy and security
- What leaves this server
- What LibrePortal turns off
- Sources
- Under the hood
Good to know before you install
Funkwhale's address is part of every account it creates, so set up your domain before installing if you ever want to federate.
At a glance#
- What it is
- Music & Podcast Server Media
- Where it opens
- Web Interface
On its own port at
http://your-server:port, oraudio.your-domainonce you have a domain - Updates
- When you choose New versions wait for you to press Update
- Backups
- Included Part of the daily backup when that's switched on
- Copies
- One per server
What it's good for#
If you've got a music collection that's been sitting on a hard drive since the days of buying CDs, Funkwhale gives it a proper home. You upload the files, it sorts them into artists and albums, and you can play them from anywhere. Each person gets their own account, their own playlists and favourites, and their own libraries they can keep private or share.
It can also host podcasts as channels, and because it speaks the same language as Mastodon and the rest of the fediverse, people on other servers can follow them.
Funkwhale or Navidrome?
LibrePortal also has Navidrome, a lighter music server that plays a folder of music as it is. Choose Navidrome if you just want to stream your own collection on your phone. Choose Funkwhale if you want uploads through the browser, several people with their own libraries, podcasts, or following and being followed from the fediverse.
Before you install: decide on its address#
This is the one decision you can't change later, so it's worth a minute.
Funkwhale builds every link, every account and every item in its library around the address it was installed with, and stores that address in its database. Its own developers are clear that it can't be changed afterwards without breaking the server.
- If you have a domain set up in LibrePortal, with Traefik running, Funkwhale takes
audio.<your domain>. LibrePortal writes that down for good the first time, so it stays put even if your domain settings change later. This is the only kind of address that can federate. - If you don't, Funkwhale uses your server's own address and port on your network, like
http://192.168.1.50:5123. That's perfect for a household. Other servers can never follow it, though, and if the server's network address changes, older items in the library keep links to the old one.
Want the fediverse? Add the domain first.
If there's any chance you'll want other servers to follow your Funkwhale, set up your domain and Traefik before you install it. Afterwards is too late.
Signing in#
Sign-ups are switched off in a new Funkwhale, so the way in is the admin account LibrePortal makes for you. It's called lpadmin (Funkwhale doesn't allow names like admin), and its password is in the Login Details shown when the install finishes. Press Welcome on the app's page to see it again.
The first start takes a while: Funkwhale sets up its database before it answers, and LibrePortal waits up to five minutes for it before making the account.
Adding people#
Use the Tools tab rather than opening sign-ups to the world.
- Open Funkwhale's page in LibrePortal and go to Tools.
- Run Create User Account with a username and an email address. Leave the password empty and one is made for you; tick Make admin only for people who should run the server with you.
- Send them the address and their password, and ask them to change it once they're in.
The other tools do what they say: Reset User Password (leave it empty to generate one), Set Admin Status, List Users and Delete User Account.
Deleting a user keeps their name taken
Funkwhale doesn't forget a deleted account. It keeps a marker so other servers know the account is gone, which means that username can never be used again on this server.
Getting your music in#
The simplest way is the web page. Sign in, open Upload, create a library (private, shared with people you approve, or public), and drop your files in. Funkwhale reads the tags and sorts everything into artists and albums.
Each file can be up to 100 MB. If you have long mixes or audiobooks that are bigger, raise Largest Upload, for example to 1G. It's in Funkwhale's config file rather than on the Config tab for now; see Settings below.
Music already on the server
Funkwhale also has a music folder that it can read files from in place, without copying them, which suits a big collection that's already on the server. LibrePortal doesn't have a button for that import yet; it's done with Funkwhale's own command-line tools.
To check: document importing from the music folder (funkwhale-manage import_files) once LibrePortal has a tool or a supported command for it
Listening on your phone#
Funkwhale speaks the Subsonic protocol, which dozens of music apps understand, on Android and iPhone alike. In the app, add a Subsonic server with:
- Server: your Funkwhale's address, exactly as you open it in the browser.
- Username: your Funkwhale username.
- Password: not your normal password. In Funkwhale, open your account settings and set a separate Subsonic API password, and use that. It means a phone app never holds your real password.
LibrePortal keeps Funkwhale's port open to anyone who can reach your server, without an extra login in front, precisely so phone apps (and other fediverse servers) can talk to it. If you only ever listen at home, you can make it private instead, and use the LibrePortal VPN when you're out.
Podcasts and the fediverse#
A channel in Funkwhale is a place to publish your own podcast or music. Other Funkwhale, Mastodon and Friendica users can follow it, and it has an RSS feed for ordinary podcast apps.
If you also run Mastodon or Friendica on this server, Funkwhale's Works with list shows whether they can follow each other. Apps that are only ever followed, like WriteFreely or Owncast, get a row saying what Funkwhale can follow there instead. Each row has a Check button that tests everything another server would need, and Follow links that open the follow page in the other app. LibrePortal never follows or posts anything for you; you press Follow yourself.
Following needs a domain on both sides. Without one, there's a fallback: Friendica can follow a channel's RSS feed on your own network, but only once API Requires authentication is switched off in Funkwhale's settings (it's on in a new Funkwhale).
Good to know#
- Updates wait for you. Every Funkwhale release changes its database the first time it starts, and there's no going back. So LibrePortal pins an exact version (2.0.11), and nothing changes until you press Update. That only brings rebuilds of the same version, with a backup taken first; if the Updates tab offers a newer release, Upgrade can't move Funkwhale to it yet.
- It's a bigger app. LibrePortal runs it with two web workers and two import workers, which keeps it to around a gigabyte of memory. If lots of people use it at once, Web Workers and Import Workers can go up, and memory use goes up with them.
- Email isn't sent. Funkwhale has no mail server to use here, so anything it would email, like a password reset link, is written to its log instead. Use the Reset User Password tool.
- Backups include everything: the database, your uploads and cover art, and the music folder.
- One per server. Funkwhale can't run as several copies side by side.
Addresses and ports#
Funkwhale has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.
| What it is | Who can reach it | With a domain |
|---|---|---|
| Web Interface | Anyone | audio.your-domain |
Settings#
In its config file#
Funkwhale's own settings aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_FUNKWHALE_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_FUNKWHALE_SHOW_ON_DASHBOARD |
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard Choices: true, false |
true |
FederationCFG_FUNKWHALE_FEDERATION |
Set to true if other fediverse servers should reach this Funkwhale. While true LibrePortal keeps the Authelia gate off it, because a server cannot answer a login page Choices: true, false |
false |
Public Address AdvancedCFG_FUNKWHALE_HOSTNAME |
The address Funkwhale is known by. Empty works it out at install; it cannot be changed afterwards. | Empty |
Largest UploadCFG_FUNKWHALE_MAX_UPLOAD_SIZE |
The biggest single file the web uploader accepts, e.g. 100M or 1G | 100M |
Web Workers AdvancedCFG_FUNKWHALE_WEB_WORKERS |
How many requests are handled at once. More uses more memory | 2 |
Import Workers AdvancedCFG_FUNKWHALE_CELERY_CONCURRENCY |
How many uploads and background jobs run at once. More uses more memory | 2 |
Tools#
Funkwhale's Tools tab has 7 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.
Set a new password for an existing user. Leave blank to generate one.
Add a new user. Tick "Make admin" for full rights.
List every active user.
Remove a user. Their name cannot be used again.
Promote or demote a user.
Import any new music from the shared Music folder. Nothing is copied, and music already imported is skipped. This also runs every hour by itself.
Play LibrePortal's SharedMusic folder, read-only, instead of Funkwhale's own folder. It is the same folder ownCloud and Nextcloud show, and it is turned on if it is off. Funkwhale restarts for a few seconds. Nothing is deleted either way.
Works with#
These are the other apps Funkwhale knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.
- Email: Sends sign-up confirmations and password resets through your mail server, from an account of its own. Needs the mail server to have a real certificate. LibrePortal sets this up by itself when both are installed.
- Fediverse: Can follow each other, and anyone else on the fediverse. There's nothing to switch on; LibrePortal shows whether it can work and lets you check. It needs a domain.
- Shared music folder: Plays the SharedMusic folder you fill from Nextcloud or ownCloud. Nothing is copied.
- Grafana: Shows dashboards for the apps that have one. works with every app
- Prometheus: Collects metrics from the apps that can export them. works with every app
- Uptime Kuma: Watches your apps and shows when one goes down. works with every app
Privacy and security#
All clear Funkwhale is your own music server. It does not report to anyone; it looks up song details on MusicBrainz only when you ask, and talks to other servers only if you turn federation on.
What leaves this server#
- Song details are looked up on MusicBrainz when you tag or import music
- Federation with other servers, only if you switch it on
What LibrePortal turns off#
- Federation (off until you switch it on)
Licence: AGPL-3.0 (per project; licence file not fetched, forge was unreachable) - treat as unverified. Audited: 21 October 2026. See the privacy of every app and the Promise.
Sources#
Under the hood#
- It runs these images:
funkwhale/front:2.0.11@sha256:126ddab45c71f760cafb5b48b57085f7875b8b0ce8fdc334ad68aa0d5b0049fa,funkwhale/api:2.0.11@sha256:bd85728850d3e20694fd438fb5a748d882ec25f48721a0882f8027d0113d0583,postgres:15.19-alpine@sha256:54e0dd8e8cddcdbb9156c2486eed5a43eccb7214d7c6828097d41ce049fb3984,redis:7.4.11-alpine@sha256:d9436322172a5b482c187bf1f363d3c4fea086fcca6b9c8a94de8f0f39ed3193. The version is pinned, and moves only when you update it. - It can sit behind Authelia's sign-in once Authelia is installed.
- Its own project and documentation: dev.funkwhale.audio/funkwhale/funkwhale
Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.