Favicon of Koel

Koel

Build a personal music streaming server featuring lossless audio, smart playlists, and mobile apps. Manage metadata easily and sync across all your devices.

Take full control of your audio library with a fast, open-source music streaming server. Enjoy a modern, intuitive interface optimized to deliver lightning-fast performance and seamless playback across all your devices, no matter how large your collection grows.

Key benefits include:

  • Lossless Audio Support: Listen to your music in the highest possible quality.
  • Robust Media Management: Easily upload tracks, edit metadata, and organize compilation albums.
  • Third-Party Integrations: Automatically enrich your library with data from Last.fm, Spotify, and Wikipedia.
  • Cross-Device Sync: Access your music anywhere using native mobile apps for iOS and Android.
  • Advanced Playback: Utilize smart playlists, equalizer settings, visualizers, and podcast support.

Premium upgrades offer cloud storage compatibility, individual user libraries, and collaborative playlists for a complete multi-user experience.

Directory Structure

koel
covers
db_data
music
search_index
.env
docker-compose.yml

docker-compose.yml

services:
  koel:
    image: phanan/koel:latest
    container_name: koel
    depends_on:
      - database
    ports:
      - "8000:8000"
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=database
      - DB_PORT=3306
      - DB_DATABASE=${DB_DATABASE}
      - DB_USERNAME=${DB_USERNAME}
      - DB_PASSWORD=${DB_PASSWORD}
      - APP_KEY=${APP_KEY}
      - ADMIN_EMAIL=${ADMIN_EMAIL}
      - ADMIN_NAME=${ADMIN_NAME}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD}
      - MEMORY_LIMIT=512
    volumes:
      - ./music:/music
      - ./covers:/var/www/html/public/img/covers
      - ./search_index:/var/www/html/storage/search-indexes
    restart: unless-stopped

  database:
    image: mysql:8.0
    container_name: koel-database
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}
    volumes:
      - ./db_data:/var/lib/mysql
    restart: unless-stopped

.env

DB_ROOT_PASSWORD=supersecretrootpassword
DB_DATABASE=koel
DB_USERNAME=koel
DB_PASSWORD=supersecretpassword
# Generate a key with `php artisan key:generate` or `openssl rand -base64 32`
APP_KEY=base64:your_32_char_random_string_here================
ADMIN_EMAIL=admin@example.com
ADMIN_NAME=Admin
ADMIN_PASSWORD=changeme123
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Koel

Favicon

 

  
  
Favicon

 

  
  
Favicon