Skip to main content

Fully Managed Koel
as a Service

Deploy Koel as a fully managed service starting at €9/mo. Get automated backups, SSL, updates, support and monitoring included.

Koel is an open-source personal music streaming server written in Laravel and Vue, first released by Phan An in December 2015. It plays MP3, FLAC, AAC, OGG, Opus, ALAC, AIFF, and WAV out of the box, with FFmpeg-driven transcoding for the awkward formats. It is the closest open-source equivalent to a private Spotify, and the obvious target for anyone who owns their music and wants the cloud-streaming experience without renting their catalogue.

Free 7-day trial  99.9% Uptime SLA  No credit card  Cancel anytime

Free 7-day trial  99.9% Uptime SLA
No credit card  Cancel anytime

Koel

Koel

STARTING AT

€9/month
Automated Backups
Monitoring
Automated Updates
Auto SSL

USAGE

Unlimited
Human Support
Custom Domains
Terminal Access
File Manager Access
Deploy in your region 21 locations worldwide
GermanyFinlandNetherlandsUKSwedenUnited StatesCanadaSingaporeJapanAustraliaBrazilSouth Africa+9 more →
Koel Preview Image

ABOUT THE SOFTWARE

What is Koel

Koel is licensed under the MIT License and developed primarily by Phan An, who started the project in December 2015 after running out of disk space for his MP3 collection. The codebase is a Laravel backend serving a Vue.js client, with FFmpeg invoked for transcoding lossless and exotic formats. The repository at github.com/koel/koel carries 17.1k GitHub stars, 2.1k forks, and 97 contributors as visible on the repo page in 2026 — making it the most-starred open-source personal music server on GitHub by a clear margin.

The official Docker image at phanan/koel shows 100K+ pulls on Docker Hub (the platform's own counter; Docker Hub does not publish a more precise integer). The official documentation states Koel "has been tested with MySQL, MariaDB, PostgreSQL, and SQLite" as Laravel-supported backends. v9 introduced an AI playback assistant, offline caching, crossfade, and a revamped equalizer with an SVG frequency response curve. The Community edition is permanently free and open-source; a paid Koel Plus tier — described by the official docs as "starting at €19.99, one time" with no subscription or per-seat costs — unlocks per-user libraries, S3/Dropbox/SFTP storage drivers, SSO via Google, proxy-auth headers, white labeling, and the experimental media browser.

FEATURES

What Koel does

A focused list of what Koel actually ships, not the marketing version.

Web-based player

Vue 3 single-page app with keyboard shortcuts, drag-and-drop queue, themes, and the v9 equalizer that draws an SVG frequency response curve across the band sliders. Works in Chrome 47+, Firefox 42+, Safari 8+, and Edge.

Smart playlists

Rule-based playlists keyed on artist, album, year, genre, play count, last played, length, or favorite status. Rules re-evaluate on every load, so a "last 30 days · >3 plays" list is always current.

Podcasts via RSS

Subscribe to feeds, queue episodes, persist playback position across devices (requires Koel v6.12.0+ on the server side). v9.3.5 hardened redirect validation when downloading episodes (PR #2486).

FFmpeg transcoding

On-the-fly transcoding for FLAC, ALAC, AIFF, APE, WAV, WMA, Opus, AC-3, DTS, and others listed in config/koel.php's transcode_required_mime_types array. Default transcode timeout 300s, configurable via TRANSCODE_TIMEOUT.

Lossless FLAC streaming

Native FLAC playback in Chrome and Firefox; transcoded via FFmpeg for Safari and most mobile clients. Toggle with TRANSCODE_FLAC. Bitrate of the transcoded stream is set by TRANSCODE_BIT_RATE or the legacy OUTPUT_BIT_RATE (default 128 kbps).

Multi-user accounts

Built-in role-based access with admin, user, and (since v9.3.0) Guest roles. Koel Plus extends this with per-user libraries, collaborative playlists, and shared favorites — the "different musical tastes per household member" case.

Last.fm, MusicBrainz, Spotify metadata

LASTFM_API_KEY and LASTFM_API_SECRET enable per-user scrobbling. MUSICBRAINZ_USER_AGENT is required for the MusicBrainz lookup. SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET enrich album art and release metadata via client-credentials auth.

Internet radio + AI assistant

Add radio station URLs as first-class entries with their own metadata. v9 ships a natural-language assistant ("play something jazzy from the 70s") gated behind AI_ENABLED=true; off by default.

WHAT'S ALWAYS INCLUDED

Every app. Fully managed.
Nothing extra to pay for.

Every app you deploy includes the full managed service — security, backups, updates, and support from day one.

Automatic updates and patches

Apps run the latest stable version. Security patches applied silently, with rollback if needed.

Daily off-site backups

Multiple daily backups in redundant off-site locations. One-click restore if anything goes wrong.

24/7 uptime monitoring

Continuous monitoring with instant alerting. We respond before you notice.

SSL, firewall, DDoS protection

Auto-renewing SSL, hardened firewall rules, DDoS mitigation on every deployment.

Performance and scaling

We monitor resource usage continuously. When your app needs more headroom, we flag it and upgrade with your explicit approval.

Dedicated engineering support

Real engineers on chat. DNS, SMTP & migration help. All included in €9.

WHY MANAGED

Why teams pick managed Koel

On 19 May 2026, Plex announced that the Lifetime Plex Pass jumps from $249.99 to $749.99 on 1 July 2026 — a 200% increase that follows the previous bump from $119.99 to $249.99 in April 2025. In parallel, Spotify raised the Premium Family plan in Germany from €17.99 to €21.99 (a 22.2% hike) on 14 August 2025, US Premium Individual goes from $11.99 to $12.99 in February 2026, and Spotify co-president Alex Norström told the company's November 4, 2025 earnings call that price increases are part of Spotify's strategy and will continue in a "thoughtful" way. Self-hosting Koel is the only path that resets that escalator to zero. Managed Koel is the path that does it without you owning the on-call rota.

Operational gotchas of self-hosting Koel:
  • APP_MAX_SCAN_TIME="600" — The default ten-minute browser-scan timeout fails on libraries past about 9,000 tracks (upstream issue #186). The CLI path php artisan koel:sync has no timeout and is the canonical workaround. We bump the env var to 18000 and run nightly cron-driven koel:sync so the browser scan never hits the wall.
  • FFmpeg dependency — Koel needs a real FFmpeg binary at the path set by FFMPEG_PATH=/usr/local/bin/ffmpeg to transcode FLAC, ALAC, AIFF, APE, and WMA on the fly. Issues #223, #396, #595, and #664 all trace back to FFmpeg path or codec gaps. We ship a recent FFmpeg build, validate it at deploy, and alert if the worker can't fork ffmpeg.
  • Streaming method — STREAMING_METHOD="php" is the lowest-friction default but it doesn't survive long-running connections behind nginx. We set x-accel-redirect on nginx-fronted instances and x-sendfile on Apache, both of which hand the byte stream to the web server instead of keeping PHP open for a 90-minute album.
  • Cache and queue backend — REDIS_HOST and QUEUE_CONNECTION="redis" are not set by default. Without them, the queue worker falls back to sync and the UI feels sluggish past a few thousand tracks. We attach managed Redis to every instance and supervise php artisan queue:work under supervisord with --max-time=3600 and --max-jobs=500 to dodge the well-known PHP-worker memory creep.
  • Database choice — Koel's official docs state it has been "tested with MySQL, MariaDB, PostgreSQL, and SQLite." SQLite is fine up to about 5,000 tracks and one user; past that, MySQL 8 or PostgreSQL 16 is the sane choice. We default new instances to MariaDB 10.11 with utf8mb4_unicode_ci collation to avoid the documented Integrity constraint violation: 1062 Duplicate entry for key 'artists_name_unique' error.
  • Composer + Node + pnpm build — Self-hosters have to install PHP ≥ 8.3, Composer, Node ≥ 20, and pnpm; run composer install, composer koel:init, and a Vite+ asset build; then keep that toolchain consistent across upgrades. We do all of this against the v9.3.5 tag in CI and ship a pre-built artifact.
  • Podcast sync queue — Koel's podcast feature pulls RSS on a background queue. Without a queue worker and a valid URL allowlist (see GHSA-7j2f-6h2r-6cqc and PR #2485 from May 2026), podcast subscriptions stall or, worse, follow malicious redirects. We run the validated build with the worker supervised.
  • TRANSCODE_FLAC — Default true means FLAC is transcoded to a 128 kbps MP3 on the fly. Audiophiles set TRANSCODE_FLAC="false" to serve the original; mobile users on cellular leave it on and raise OUTPUT_BIT_RATE to 192 or 256.

REVIEWS

Hear from customers ​like you​​​​​​​

Successful businesses and professionals around the world rely on DANIAN every day

USE CASES

Three teams who run Koel on DANIAN

These are representative team types we set up most often. Each starts with the same flat €9 plan.

COUPLE · EX-SPOTIFY FAMILY

Frankfurt, replacing €21.99/mo Family after the August 2025 hike

After Spotify took the Family plan from €17.99 to €21.99 on 14 August 2025, the Müllers ran the maths: €263.88/year for music they already owned half of on CD. They migrated a ~30,000-track FLAC + MP3 library (80 GB) to managed Koel in our Germany region, set up music.muller.example as a custom domain with end-to-end SSL, and run four user accounts — two adults, two teenagers — each with their own smart playlists. The teenagers don't know it's not Spotify.

AUDIOPHILE · EX-PLEXAMP

Amsterdam, escaping the $749.99 lifetime Plex Pass

J.K. spent 18 months buying lossless FLACs on Qobuz and built up a 4,500-track library and a Plexamp habit. The 19 May 2026 Plex announcement — Lifetime Plex Pass tripling from $249.99 to $749.99 on 1 July 2026 — pushed him to managed Koel in Netherlands. He set TRANSCODE_FLAC="false" to always serve the original file, enabled Last.fm scrobbling with his existing API key, runs a single-user setup, and uses the iOS Koel Player app (€9.99 one-time on the App Store) over LTE.

INDIE LABEL · PODCAST PRODUCER

Berlin, 3-person team behind OIDC

Three-person electronic label running Koel for two purposes: a 12,000-track promo and reference library for the team, and a podcast archive of ~80 published episodes from their sister imprint. Hosted on DANIAN Germany behind catalogue.example.de, with OIDC sign-in via a self-hosted Authentik (PROXY_AUTH_ENABLED=true, PROXY_AUTH_USER_HEADER=remote-user). Specific tracks are toggled to public-share for press promo; the rest stays internal. The podcast feed pulls into Koel's podcast view for review before publication.

COMPARISON

Four ways to run Koel

A music streaming server is either rented from a vendor (Spotify), self-hosted on a VPS, run at home on a NAS, or paid for as a managed service. Same software in the bottom three rows — different price, different time budget.

 PATH1 USER5 USERS 10 USERS WHAT'S INCLUDEDYOUR TIME
Spotify Premium
proprietary SaaS
€12.99/mo€21.99/mo Family2× Family ≈ €43.98/mo~100M-track catalogue, polished apps, vendor controls what stays — tracks can be removed without notice0 hrs/mo
Self-host on a VPS
DIY
~$24 VPS + $5 object storage + $15 monitoring ≈ $44/mo infra + €60–240/mo of your time3same infrasame infrawhat you build: OS patching, Koel upgrades, backups, on-call1–2 hrs/mo plus on-call
Home server
Synology DS923+ class
~€210–667/mo effectivesame hardwaresame hardwarephysical box on you: electricity, business static-IP internet, off-site backup target2–4 hrs/mo
DANIAN Managed Koel€9/mo flat€9/mo flat€9/mo flatHosting, HTTPS, daily backup, monitoring, updates, custom domain, human support0 hrs/mo

Germany post-14 August 2025 price (Premium Individual €12.99).
Spotify Family is capped at 6 members in the same household; €21.99 figure is Germany post-14 August 2025 (was €17.99, a 22.2% hike per Spotify's notification emails).
Operator time costed at €60–120/hour, the typical EU senior sysadmin contract rate.
Home-server effective cost = €650 hardware amortised over 36 months + electricity at €0.30/kWh on a NAS drawing 30–50W average + €30–50/mo business internet with a static IP + €5–15/mo cloud target for off-site backup.

BY INDUSTRY

Koel for specific industries

Koel is a personal music server. The industries below run it because they own their audio and don't want vendor risk — but in each case there is a regulatory or operational layer Koel doesn't handle. Below: what's covered, what isn't, and how we configure each instance.

Playing recorded music in a venue where customers can hear it is a public performance under most national copyright laws and is shaped by the EU's broader framework. Directive 2014/26/EU of the European Parliament and Council, dated 26 February 2014, governs how Performing Rights Organisations (PROs) license and collect on behalf of authors and publishers, and also enables multi-territorial licensing of online music rights. In practice that means a separate licence from PRS for Music / PPL PRS in the UK, GEMA in Germany, SACEM in France, SIAE in Italy, SUISA in Switzerland, BUMA/STEMRA in the Netherlands, or BMI/ASCAP/SESAC/GMR in the US. Consumer Spotify, Apple Music, and Amazon Music are licensed for private use only and breach their own terms when piped into a venue. Koel doesn't grant public-performance rights either — the venue still needs the PRO licence — but it does give the venue full control over what gets played, when, and from which curated library.

On DANIAN, hospitality customers typically run a dedicated VM per venue or per brand so curation doesn't leak across properties. We recommend BACKUP_ON_DELETE=true, a 30-day backup retention bump, and IP allowlisting on the admin endpoints so the front-of-house tablet can browse but not edit. ALLOW_DOWNLOAD="false" closes the obvious leak. The library itself is sourced from royalty-free or PRO-cleared catalogues — Koel is the playback layer, not the licensing layer.
For an independent artist, the master files are the business. The relevant international frame is the WIPO Copyright Treaty (1996) and, in the US, the Digital Millennium Copyright Act safe-harbour regime that defines how platforms must handle takedowns. Neither tells you where to keep your stems and masters; both tell you that losing them is your problem. A consumer streaming service is the wrong tool — uploaded masters become a platform's takedown surface, not a backup, and the platform reserves the right to compress, transcode, or pull anything that gets flagged.

On DANIAN, producers get SFTP access to the media directory, so rsync of WAV stems and FLAC distribution masters runs as a scheduled job from the studio Mac. Koel itself surfaces only the listenable cuts. We attach a second nightly snapshot to a different region with 90-day retention, and use Koel's public-share toggle for promo links that don't require a login. BACKUP_ON_DELETE="true" remains on by default — accidental delete-from-filesystem stays recoverable.
Educational use of copyrighted music in the EU is anchored by Article 5 of Directive (EU) 2019/790 — the Copyright in the Digital Single Market Directive — which introduced a mandatory exception for the digital use of works "for the sole purpose of illustration for teaching" where the use takes place "under the responsibility of an educational establishment, on its premises or at other venues, or through a secure electronic environment which is accessible only by the educational establishment's pupils or students and teaching staff." The exception sits alongside the older Article 5(3)(a) of Directive 2001/29/EC (InfoSoc). In the US, the TEACH Act (17 U.S.C. §110(2)) plays the equivalent role. The 1980 UNESCO Recommendation concerning the Status of the Artist provides the broader cultural-policy backdrop.

On DANIAN, conservatoires run Koel Plus with SSO_GOOGLE_CLIENT_ID against the institution's Google Workspace tenant, or PROXY_AUTH_ENABLED="true" behind an Authentik OIDC proxy mapped to the student information system. Smart playlists drive lesson sequencing — "Week 4 — Baroque counterpoint" updates automatically as the tag set changes. We set ALLOW_DOWNLOAD="false" so the "secure electronic environment" condition of Art. 5 is defensible, and weekly backup snapshots cover the academic-year content cycle.
Worship music sits inside a parallel licensing regime. Per the CCLI homepage at ccli.com, Christian Copyright Licensing International licenses "a repertoire of 600,000 worship songs and hymns," is "trusted by more than 230,000 churches, schools, and organizations," and represents "more than 7,000 publishers globally." US Church Copyright Licence fees historically range from roughly $59/year for the smallest congregations up into the four- and five-figure range for the largest. CCLI covers reproduction of lyrics, projection, recording of services for limited distribution, and translation — but live-streaming worship requires the separate CCLI Streaming Plus add-on, and 17 U.S.C. §110 exempts religious performance "during a service" from infringement liability without exempting copying, recording, or translation.

On DANIAN, congregations use Koel for two libraries: a sermon archive with public-share toggled on (no login required for visitors) and a worship-team rehearsal library behind OIDC or basic auth. We set OUTPUT_BIT_RATE="192" for sermon archives (voice + sparse music), TRANSCODE_FLAC="true" for the rehearsal library so the worship band can pull lossless masters down to phones without saturating the church's DSL, and weekly automated backups of the sermon archive to a second region.

FAQ

Frequently asked questions

Everything teams ask before signing up — answered straight, without sales speak.

Three groups: technical setup, migration, and how DANIAN works as a service.

01

Technical and configuration

Yes. Register an API account at last.fm/api/account/create, then set LASTFM_API_KEY and LASTFM_API_SECRET in the .env. Scrobbling is per-user: each user authorises Koel from their profile page after the keys are present. Without these env vars, the scrobble UI is hidden and the lastfm endpoint at ws.audioscrobbler.com/2.0 is never called.
Yes. USE_MUSICBRAINZ="true" is the default in config/koel.php. You must set MUSICBRAINZ_USER_AGENT to a string identifying your instance per MusicBrainz policy, e.g. MyKoel/1.0 (admin@example.com). Koel calls https://musicbrainz.org/ws/2 to enrich artist and release metadata.
Yes. Set SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET from a Spotify developer app at developer.spotify.com. Album art, release dates, and related-artist info pull via client-credentials auth — no user-level OAuth needed.
Optional. YOUTUBE_API_KEY from Google Cloud Console enables the "watch on YouTube" links and the Videos tab on artist pages. Koel hits https://www.googleapis.com/youtube/v3 with that key.
The default 600-second timeout fails on libraries past about 9,000 tracks — exactly the case in upstream issue #186. The CLI path php artisan koel:sync has no timeout. We set APP_MAX_SCAN_TIME="18000" and run koel:sync from cron so the browser-driven scan path is never the limiting factor.
Yes. Set TRANSCODE_FLAC="false" in the .env. Native FLAC playback works in Chrome and Firefox; Safari and some mobile browsers still need transcoding for certain FLAC subtypes.
Transcoded streams default to OUTPUT_BIT_RATE=128; the newer TRANSCODE_BIT_RATE takes precedence if set. We typically raise to 192 or 256 kbps on request. Original-file streaming for MP3, FLAC, and ALAC is unbounded — limited only by bandwidth at both ends.

02

Migration and onboarding

We can activate your app on your own custom domain/subdomain. Examples: mydomain.com, anyword.mydomain.com.
Or, on our randomized free subdomain. Example: 963.apps.danian.cloud
If you wish to use a custom domain/subdomain, select that option when ordering your app (or notify us later). We will send you the required DNS records and if needed, our tech team will modify them for you.
21 datacenter locations across six continents. You choose the region at provisioning. Application data sits in the region you choose; pick whichever is closest to your users or matches your data-residency preference.
Yes. Request a region migration from the dashboard and we run the move in the background. The system emails you when the migration completes; total transfer time depends on data volume but typical instances finish in a few hours. There is no extra charge for a region change.
Yes. Full data export is available at any time, in a portable format you can bring to any infrastructure.
Spotify doesn't let you export audio. Use Soundiiz or Songshift to export your playlists as CSV, source the audio yourself (existing rips, Bandcamp, Qobuz, 7digital), upload via SFTP to the media directory, and rebuild the playlists.
Copy the music directory via SFTP and export Plex playlists as M3U; Koel ingests M3U on a manual import. ID3 tags carry across unchanged. Smart playlists need rebuilding by hand because Koel uses its own rule schema.
Flat folder structure works for all of them — Artist/Album/Track. Copy the files; Koel scans on the same layout. Existing API clients pointed at Subsonic-compatible servers will need to be repointed at Koel Player or the web UI.
Export the Library XML; audio files typically live in ~/Music/Music/Media. Upload via SFTP. Smart playlists need to be rebuilt by hand. Apple Music streaming-only tracks (not actually on disk) won't migrate — they aren't yours to migrate.

03

Billing, support, and platform

€9 covers everything we do for that app: hardware in the region you choose, daily off-site backups with one-click restore, automatic security patches and version upgrades, 24/7 monitoring, SSL and firewall, and engineering support on Email/LiveChat. There are no setup fees or hidden line items. For more info see our Pricing page.
If you decide to continue, we charge €9/app/month from day 8. If you don't, the trial ends and you can export your data. No card is required for the trial, and we never auto-charge you without explicit consent.
No. The €9/month is flat regardless of how many users log into your app. Add 5 users or 50; the price doesn't change.
24/7 Live chat and email support, both staffed by engineers who run the systems. We handle DNS configuration, SMTP setup, app integrations, performance tuning, troubleshooting, and migration help. Response time is typically under an hour. There is no tier system — every customer gets the same support.
Yes. Cancel from the dashboard. We don't charge a cancellation fee, we don't lock data, and we will export your data to you on request before deletion. data to you on request before deletion.
Every customer instance is backed up daily to a separate region from the primary. We test restores. You can request a restore at any backup point within the retention window — usually 7 days for daily backups.
Your application data sits in the region you choose at provisioning — 21 datacenter locations across six continents. Account-level data (billing, account email, support ticket history) is processed centrally. Application data region is picked by you, per app.
99.9% uptime SLA on every app, every tenant. Service credits are documented at danian.co/service-level-agreement. The status page is located at status.danian.co.
When your tenant approaches the resource ceiling — the base tier holds 1 vCPU/RAM, 30 GB storage — we notify you. Resource upgrades happen with your explicit consent; we will not upgrade your tenant or charge you without it.
We wait. We don't suspend the app or delete your data on the first failed charge. We email you, you fix the card on file, and we continue.
Invoices can be downloaded from the billing dashboard in PDF the day each charge succeeds. EU VAT is added where applicable and the VAT-reverse-charge regime applies for VAT-registered businesses with a valid number.
150+ open-source apps across automation, team chat, file sync, analytics, AI, password management, email marketing, dev tools, project management, smart home, CMS, and federated social. See the full catalog →
Yes. Every instance comes with a web-based terminal and a file manager in your DANIAN management dashboard. Useful for managing your data and customizations.
Resources scale with your usage. If your app needs more vCPU, RAM, or storage, we add it — and we ask first before any change to your plan. €9 is the floor; resource-heavy workloads may price higher, but you'll always know in advance.
Yes. We have both a Partner program and an Affiliate program available. Anybody can sign up.
No contract. No minimum commitment. Cancel anytime from the dashboard with one click. The 7-day free trial requires no credit card. After the trial converts to paid, you can still cancel at any month without notice or penalty.

DEPLOY IN YOUR REGION

21 datacenter locations on six continents

Pick the region closest to your users.

United States, Germany, Finland, Singapore, Australia, Brazil, Canada, Netherlands, UK, Spain, Italy, France, Sweden, Malaysia, India, Japan, Mexico, Poland, South Korea, Chile, South Africa and more coming soon

Global Reach Map

Try managed Koel for 7 days

No card. Cancel from the dashboard.