MCPSERV.CLUB
Koel

Koel

Self-Hosted

Self‑hosted web music streaming for developers

Active(100)
16.8kstars
1views
Updated 7 hours ago
Koel screenshot 1
1 / 5

Overview

Discover what makes Koel powerful

**Koel** is a self‑hosted, web‑based personal audio streaming platform that combines a lightweight Vue.js front end with a Laravel back end. It is engineered for developers who need a modern, extensible media server that can be deployed on a single machine or scaled across multiple nodes. From ingesting music files to delivering transcoded streams over HTTP, Koel exposes a rich set of RESTful endpoints and WebSocket channels that enable real‑time playback control, cross‑device synchronization, and advanced playlist management.

Backend

Frontend

Media Processing

Database

Overview

Koel is a self‑hosted, web‑based personal audio streaming platform that combines a lightweight Vue.js front end with a Laravel back end. It is engineered for developers who need a modern, extensible media server that can be deployed on a single machine or scaled across multiple nodes. From ingesting music files to delivering transcoded streams over HTTP, Koel exposes a rich set of RESTful endpoints and WebSocket channels that enable real‑time playback control, cross‑device synchronization, and advanced playlist management.

Architecture & Technical Stack

  • Backend: Laravel 10 (PHP) provides the core business logic, authentication, and database access. Eloquent ORM maps media metadata to a relational schema (MySQL / MariaDB). Laravel’s queue system powers background tasks such as metadata extraction, album art generation, and transcoding jobs.
  • Frontend: Vue 3 with Vite builds a SPA that consumes the API. The UI leverages modern CSS frameworks (Tailwind) and component libraries for a responsive, mobile‑first experience. Real‑time features are handled by Laravel Echo and Pusher/Redis for WebSocket broadcasting.
  • Media Processing: FFmpeg is the backbone of transcoding, enabling on‑the‑fly conversion to AAC/MP3/FLAC streams. The server stores raw files in a configurable filesystem (local, S3‑compatible storage) and serves encoded streams via the Laravel HTTP kernel.
  • Database: A relational database (MySQL, MariaDB) stores metadata, user accounts, playlists, and playback history. The schema is fully migrations‑driven, making upgrades painless.
  • Caching & Queue: Redis (or Memcached) is used for session storage, caching query results, and as the queue driver for background jobs.

Core Capabilities & APIs

  • RESTful API: Endpoints expose CRUD operations for artists, albums, tracks, playlists, and users. Pagination, filtering, and search are built‑in.
  • WebSocket API: Real‑time events for playback state, track changes, and cross‑device sync. Ideal for building custom clients or integrating with home automation systems.
  • Transcoding Service: Exposes a simple interface to request transcoded streams; supports custom bitrates and codecs.
  • Metadata Management: Bulk import/export via ID3/FLAC tags, automated cover art extraction, and manual editing through the API.
  • Smart Playlists: Rules‑based playlist generation (e.g., “Top 50”, “Recently Added”) that can be queried programmatically.

Deployment & Infrastructure

Koel is designed for self‑hosting on a variety of environments:

  • Docker Compose: Official docker files bundle the PHP/FPM service, Nginx reverse proxy, Redis, and MySQL, making zero‑configuration deployments trivial.
  • Kubernetes: The container images are OCI‑compatible; Helm charts can be crafted for production clusters, leveraging StatefulSets for persistent storage and Ingress controllers for TLS termination.
  • Scalability: Stateless API servers can be horizontally scaled behind a load balancer. Media files are stored on shared storage (e.g., NFS, S3), allowing any number of worker nodes to serve streams.
  • Resource Footprint: A single 2‑core VM with 4 GB RAM can comfortably host a library of ~50,000 tracks; transcoding is offloaded to a dedicated GPU/CPU node if needed.

Integration & Extensibility

  • Plugin System: Custom Laravel packages can hook into events (e.g., TrackUploaded, UserCreated) or add new API routes. The front end can consume these via the existing Vuex store.
  • Webhooks: External services (e.g., Home Assistant, IFTTT) can subscribe to playback events or playlist changes.
  • SDKs & Clients: The open API is documented with OpenAPI/Swagger; developers can generate client libraries in any language.
  • Theme & UI Customization: Themes are modular; developers can ship their own CSS/JS bundles or override Vue components.

Developer Experience

  • Documentation: Comprehensive docs cover installation, API usage, development workflow, and contribution guidelines. Code comments follow PSR‑12 standards.
  • Testing: Unit tests for both Laravel and Vue components are maintained in GitHub Actions; code coverage is publicly visible.
  • Community: Active issue tracker, discussion forum, and Slack channel provide rapid support. Contributions are welcomed through pull requests and feature proposals.
  • Licensing: MIT‑licensed, allowing unrestricted use in commercial or personal projects.

Use Cases

  1. Personal Music Server – A solo developer hosting a private library with cross‑device sync and a mobile app (Koel Player).
  2. Enterprise Soundscape – A small business serving background music across multiple locations, leveraging the API to integrate with building automation.
  3. Open‑Source Projects – Integrating Koel into a larger media platform (e.g., podcast aggregator) via its REST/WebSocket APIs.
  4. Educational Platforms – Teaching web development by extending Koel’s plugin system or building custom front‑end clients.

Advantages Over Alternatives

  • Full Stack Control: Unlike SaaS services, Koel gives developers ownership of data and the ability to customize every layer.
  • Modern Tech Stack: Vue 3 + Laravel 10 ensures developers can use familiar tools and libraries.
  • Extensible API: Built‑in WebSocket support and plugin hooks reduce the need for custom middleware.
  • **Performance

Open SourceReady to get started?

Join the community and start self-hosting Koel today