Web app for managing songs, organizing setlists, and displaying live lyrics on external screens through a built-in channel system.
| Main interface (example for church use) | Connect screen |
|---|---|
![]() |
![]() |
| Display settings | Output view |
![]() |
![]() |
| Setlist and queue | Lyrics editor |
![]() |
![]() |
- Add songs to the library easily
- Powerful search and filtering for your song library
- Add lyrics with sections and repeats
- Insert chords directly into lyrics
- Upload your own sheet music, with support for SVG files and raster formats
- Set a sheet position for each lyrics section
- Organize songs into setlists for live performances
- Group songs and text sections inside setlists
- Reorder items and build a running sequence for live use
- Show lyrics on external screens in real time
- Connect presenters and viewers through a built-in channel system
- Sync display settings across connected devices
- Easy-to-use interface designed for live work
- Fast navigation between songs, setlists and queue
- Use both a visual editor and a JSON editor for lyrics and setlists
- Support multiple users with individual accounts
- Keep songs and setlists public or private
- Control who can add or manage content
Download the BaryMusic-1.1-windows-x64.zip file from the latest release, unpack it, then double-click Start BaryMusic.
Windows releases are built from this repository and published together with an SHA-256 checksum.
On the first launch, choose a language and configure a few basic settings. You can change them at any time by double-clicking Change Settings.
App data is stored outside the unpacked application, in %LOCALAPPDATA%\BaryMusic\.
The launcher automatically creates the server configuration file at
%LOCALAPPDATA%\BaryMusic\config\.env. The launcher sets the listening address
and port according to the choices made during initial setup, so you do not need
to copy server/.env.example into the Windows release.
The image is available on Docker Hub.
Run BaryMusic with local access only:
docker run \
-p 127.0.0.1:3000:3000 \
-v barymusic_data:/var/lib/barymusic \
barypia/barymusicTo make it available to other devices on your local network:
docker run \
-p 0.0.0.0:3000:3000 \
-v barymusic_data:/var/lib/barymusic \
barypia/barymusicThe container always listens on 0.0.0.0. Local/LAN access is controlled by the host-side Docker port binding. LAN mode should only be used on a trusted network and may require allowing Docker through the host firewall.
BaryMusic uses SQLite, so Docker and Kubernetes deployments should run as a single instance.
You can pass environment variables with -e, for example:
docker run \
-p 127.0.0.1:3000:3000 \
-v barymusic_data:/var/lib/barymusic \
-e ALLOW_ALL_USERS_TO_ADD_SONGS=false \
barypia/barymusicAvailable environment variables:
| Variable | Default | Description |
|---|---|---|
ADMINS |
(none) | Comma-separated list of admins |
CAN_ADD_SONGS |
(none) | Comma-separated list of users allowed to add songs besides admins |
ALLOW_ALL_USERS_TO_ADD_SONGS |
true |
Allow all users to add songs |
ALLOW_REGISTRATION |
true |
Allow new account registration |
CORS_ORIGIN |
http://localhost:3000 |
Frontend URL for CORS |
HOST |
127.0.0.1 (0.0.0.0 in Docker) |
Address the Node.js server listens on |
PORT |
3000 |
Service port |
BARYMUSIC_HOME |
(unset) | Root containing config, data, and logs; set automatically in Docker and Windows releases |
In Docker, variables passed with -e or --env-file take precedence over values stored in /var/lib/barymusic/config/.env. Do not pass the local server/.env unchanged as a Docker --env-file: the container must listen on HOST=0.0.0.0 for port mapping to work.
Set BARYMUSIC_HOME in the process environment before starting the application, not inside .env, because this variable determines the location of the .env file itself.
Requirements: Node.js 22 or newer
cd server
npm install
node barymusic.js
# Open http://localhost:3000cd frontend
npx @tailwindcss/cli -i styles.css -o vendor/tailwind/tailwind.css --watchApp data is stored in the server directory.
For local configuration, copy the example file and adjust its values as needed:
Copy-Item server/.env.example server/.envOn macOS or Linux, use cp server/.env.example server/.env. The local .env file is ignored by Git and should not be committed. Variables set directly in the process environment take precedence over values from this file.
To build the Windows release:
.\scripts\build-windows-portable.ps1This project is licensed under GPL-3.0. See the LICENSE file for details.





