Skip to content

bhj/KaraokeEternal

Repository files navigation

Karaoke Eternal

Host awesome karaoke parties where everyone can easily find and queue songs from their phone's browser. The player is also fully browser-based with support for MP3+G, MP4 videos and WebGL visualizations. The server is self-hosted and runs on nearly everything.

Karaoke Eternal

App in mobile browser (top) controlling player in desktop browser (bottom)

Features

  • Plays:
    • MP3+G (MP3 with CDG lyrics; including zipped)
    • MP4 videos
    • Music-synced visualizations (with automatic lyrics background removal)
  • Fast, modern mobile browser app designed for "karaoke conditions"
  • Easy joining with QR codes and guest accounts
  • Multiple simultaneous rooms/queues (optionally password-protected)
  • Dynamic queues keep parties fair, fun and no-fuss
  • Fully self-hosted
  • No ads or telemetry

Microphones are not required since the player itself only outputs music - this allows your audio setup to be as simple or complex as you like. See the F.A.Q. for more information.

Getting Started

Karaoke Eternal basically has 3 parts. See Getting Started to get up and running step-by-step, or jump to the documentation for each part below:

  • Server: Runs on pretty much anything to serve the web app and your media files, including a Windows PC, Mac, or a dedicated server like a Raspberry Pi or Synology NAS.
  • App: Fast, modern mobile web app designed for "karaoke conditions".
  • Player: Just another part of the app, but meant to run fullscreen on the system handling audio/video for a room

Installation

There are several installation methods available for Karaoke Eternal Server.

Discord & Support

Join the Karaoke Eternal Discord Server for general support and development chat, or just to say hi!

Contributing & Development

Contributions are welcome! Please join the #dev channel of the Discord Server before embarking on major features; the project's scope is limited to ensure success.

Make sure you have Node.js v24 or later, then:

  1. Fork and clone the repo
  2. npm i
  3. npm run dev and look for "Web server running at" for the server URL