Funkwhale vs Airsonic-Advanced: Self-Hosted Music
Two Fundamentally Different Approaches
Funkwhale and Airsonic-Advanced both stream your music library, but they solve different problems. Funkwhale is a federated music platform with social features — think self-hosted Spotify meets Mastodon. Airsonic-Advanced is a traditional Subsonic server fork focused purely on streaming your files to compatible clients. Your choice depends on whether you want a social music experience or a straightforward file streamer.
| Funkwhale | Airsonic-Advanced | |
|---|---|---|
| Architecture | Python/Django + Vue.js | Java (Spring Boot) |
| License | AGPL-3.0 | GPL-3.0 |
| Federation | ActivityPub (Mastodon-compatible) | None |
| Subsonic API | Partial | Full |
| Web UI | Modern, Spotify-like | Functional, dated |
| Transcoding | Server-side | FFmpeg-based |
| Multi-user | Yes, with quotas | Yes, with roles |
| Podcast support | Yes (channels) | Yes |
| DLNA/UPnP | No | Built-in |
| Mobile apps | Limited (Subsonic clients partially work) | All Subsonic clients |
| Development status | Active (v1.4.0, 2024) | Stalled (last snapshot April 2024) |
| RAM usage | 512 MB–1 GB | 512 MB–1 GB |
Quick Verdict
If you want a traditional music server that works with every Subsonic client app, Airsonic-Advanced is the more compatible choice — but development has stalled. If you want a modern, social music platform with federation and a polished UI, Funkwhale is actively maintained and far more ambitious. For most new deployments, Funkwhale is the better pick because it’s the only one still receiving regular updates.
Installation Complexity
Funkwhale requires PostgreSQL, Redis, and a reverse proxy. The Docker Compose setup uses the funkwhale/all-in-one image, which bundles the API, frontend, and Celery workers. You need a dedicated domain (no subdirectory support) and must configure FUNKWHALE_HOSTNAME, DJANGO_SECRET_KEY, and database credentials. The stack is heavier but well-documented.
# Funkwhale core services (simplified)
services:
funkwhale:
image: funkwhale/all-in-one:1.4.0
restart: unless-stopped
env_file: .env
volumes:
- data:/data
- music:/music:ro
ports:
- "5000:80"
postgres:
image: postgres:16-alpine
# ...
redis:
image: redis:7-alpine
# ...
Airsonic-Advanced is simpler — a single Java container with no external database required (uses embedded HSQLDB by default). Point it at your music directory and go. The LinuxServer.io image (linuxserver/airsonic-advanced) is the most popular option.
# Airsonic-Advanced (simplified)
services:
airsonic:
image: linuxserver/airsonic-advanced:11.0.0-ls122
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
volumes:
- ./config:/config
- /path/to/music:/music:ro
ports:
- "4040:4040"
Airsonic-Advanced wins on setup simplicity. Funkwhale requires more infrastructure but offers more in return.
Full setup guides: Self-Host Funkwhale | Self-Host Airsonic-Advanced
Performance and Resource Usage
| Metric | Funkwhale | Airsonic-Advanced |
|---|---|---|
| Idle RAM | ~400–600 MB | ~300–500 MB |
| Under load | ~800 MB–1.2 GB | ~500–800 MB |
| CPU (streaming) | Low (direct play), Medium (transcode) | Low (direct play), Medium (transcode) |
| Disk (app data) | ~500 MB (+ PostgreSQL) | ~100–200 MB |
| Startup time | 15–30 seconds | 20–40 seconds (JVM warmup) |
Airsonic-Advanced has a slight edge on resource usage because it doesn’t run PostgreSQL and Redis alongside the main process. Funkwhale’s stack is heavier, but still reasonable for any modern server. Both handle transcoding via FFmpeg, so CPU load during streaming is comparable.
Feature Deep Dive
Federation (Funkwhale Only)
Funkwhale’s killer feature is ActivityPub federation. You can follow other Funkwhale instances, share music libraries across the Fediverse, and interact with Mastodon users. Channels let you publish content that federated followers can subscribe to. This is genuinely unique in the self-hosted music space — no other music server offers anything like it.
Client Compatibility (Airsonic Advantage)
Airsonic-Advanced implements the full Subsonic API, which means it works with every Subsonic-compatible client: DSub, Ultrasonic, play:Sub, Sublime Music, Symfonium, and dozens more. Funkwhale has partial Subsonic API support, but some advanced features (lyrics, starring, bookmarks) may not work with all clients. If mobile app compatibility is critical, Airsonic-Advanced has the edge.
DLNA/UPnP (Airsonic Only)
Airsonic-Advanced includes a built-in DLNA/UPnP server for streaming to network speakers, smart TVs, and other DLNA-capable devices. Funkwhale doesn’t support DLNA at all. If you have DLNA hardware on your network, this matters.
Community and Development
| Metric | Funkwhale | Airsonic-Advanced |
|---|---|---|
| GitHub stars | ~1.8K (on GitLab) | ~1.2K |
| Last stable release | v1.4.0 (2024) | v10.6.0 (2020) |
| Last snapshot/dev release | Monthly activity | April 2024 |
| Active contributors | 5–10 regular | Minimal |
| Documentation | Comprehensive (docs.funkwhale.audio) | Basic (GitHub wiki) |
| Forum/community | Active (forum.funkwhale.audio) | Sparse |
Funkwhale has an active community, regular releases, and a clear development roadmap. Airsonic-Advanced’s development has effectively stalled — the last snapshot was April 2024, and the last stable release was 2020. The project isn’t archived, but new features are unlikely.
Use Cases
Choose Funkwhale If…
- You want federation and social music sharing across the Fediverse
- A modern, polished web UI matters to you
- You plan to share music with friends on other instances
- You want podcast channel support with ActivityPub integration
- Active development and security updates are important
Choose Airsonic-Advanced If…
- You need full Subsonic API compatibility with every mobile client
- DLNA/UPnP streaming to network devices is required
- You want the simplest possible Docker setup (single container, no database)
- You have an existing Airsonic/Subsonic setup and don’t want to migrate
- You prefer a battle-tested, stable codebase over new features
Final Verdict
The practical choice is Funkwhale because it’s the only one that’s still actively developed. Airsonic-Advanced works fine for existing installations, but starting a new deployment on a stalled project is risky — security patches, bug fixes, and new features are unlikely to arrive. Funkwhale’s federation support, modern UI, and active community make it the stronger foundation for a long-term music server.
That said, if DLNA support or full Subsonic client compatibility is non-negotiable, Airsonic-Advanced still does those things better. Consider Navidrome as a third option — it’s lightweight, actively maintained, and has excellent Subsonic API support without the overhead of Funkwhale’s stack.
FAQ
Can I migrate from Airsonic to Funkwhale?
Not directly. Funkwhale uses PostgreSQL while Airsonic uses HSQLDB/MySQL. You’d need to re-import your music library. Playlists and play history won’t transfer. Both scan the same music file formats, so pointing Funkwhale at your existing music directory works — you just lose metadata like play counts.
Does Funkwhale work with DSub and Ultrasonic?
Partially. Funkwhale implements the Subsonic API, so basic playback, browsing, and search work. Some advanced features like lyrics display, bookmarks, and internet radio may not function. Test your preferred client before fully committing.
Which uses less storage?
Airsonic-Advanced, significantly. It stores config and a small database (~100 MB). Funkwhale requires PostgreSQL data (~500 MB+) and Redis. Your actual music files are the same either way.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments