LZStealth e65a43b13c
Publish Docker Image / build-and-push (push) Successful in 21s
Handle player redirects on screen slug change
2026-07-14 15:30:05 +01:00
2026-07-14 12:50:52 +01:00
2026-07-13 21:44:49 +01:00
2026-07-13 21:44:49 +01:00
2026-07-13 21:44:49 +01:00
2026-07-13 21:44:49 +01:00
2026-07-14 13:56:54 +01:00
2026-07-14 14:40:47 +01:00

Pulse Signage

Pulse Signage is a digital signage system that lets you manage screens, playlists, slides, templates, and uploaded media from one admin interface.

It runs as two connected services:

  • the web admin app for managing content and screens
  • the player app that shows the current signage on each screen and listens for live updates

What You Can Do

  • Sign in to the admin dashboard
  • Create and organize playlists and slides
  • Design reusable templates and canvas sizes
  • Register screens and assign playlists to them
  • Upload images and other media for use in slides and templates
  • View live screen connections and send player commands

Documentation

Player-facing API details live in docs/api.md. It covers the player HTTP endpoints for screen playback, playlist data, connections, and commands.

Player websocket behavior lives in docs/websocket.md. It covers the player control socket, snapshot stream, and the command/message shapes the player accepts.

What You Need

  • Docker and Docker Compose
  • A MySQL database

First-Time Setup

When the app starts for the first time, it creates the database tables it needs and adds a default admin account if no users exist yet.

  • Username: admin
  • Password: admin

You can change the initial admin credentials with these optional environment variables:

  • DEFAULT_ADMIN_USERNAME
  • DEFAULT_ADMIN_NAME
  • DEFAULT_ADMIN_PASSWORD

Configuration

The app reads its settings from environment variables.

Database Connection

  • DB_HOST - MySQL host, default 127.0.0.1
  • DB_PORT - MySQL port, default 3306
  • DB_NAME - database name, default signage
  • DB_USER - database user, default signage_user
  • DB_PASSWORD - database password, default signage_password

Web Admin App

  • WEB_PORT - admin app port, default 3000
  • PLAYER_INTERNAL_BASE_URL - player address used by the server, default http://player:3001
  • PLAYER_PUBLIC_BASE_URL - player address shown in browser links, default http://localhost:3001
  • UPLOAD_DIR - storage location for uploaded files, default ./uploads

Player App

  • PLAYER_PORT - player port, default 3001

Docker Compose

The repository includes a docker-compose.yml file that starts three services:

  • webui - the admin app on port 3000
  • player - the signage player on port 3001
  • mysql - the database on port 3306

By default, webui and player use the published image from git.lzstealth.com/LZStealth/pulse-signage:latest. You can point both services at a specific release by setting PULSE_SIGNAGE_IMAGE to a tagged image such as git.lzstealth.com/LZStealth/pulse-signage:v1.0.0.

The Compose file also defines a shared uploads volume for media and a mysql_data volume for database persistence.

Important Notes

  • The web app must be able to reach the player through PLAYER_INTERNAL_BASE_URL.
  • When running in Docker, that value should point to the Docker service name, not localhost.
  • Uploaded media is stored separately from the application source, so make sure it is backed up if you are not using Docker volumes.
S
Description
No description provided
Readme
7.6 MiB
Languages
JavaScript 78.7%
Handlebars 14.9%
CSS 4.5%
HTML 1.9%