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_USERNAMEDEFAULT_ADMIN_NAMEDEFAULT_ADMIN_PASSWORD
Configuration
The app reads its settings from environment variables.
Database Connection
DB_HOST- MySQL host, default127.0.0.1DB_PORT- MySQL port, default3306DB_NAME- database name, defaultsignageDB_USER- database user, defaultsignage_userDB_PASSWORD- database password, defaultsignage_password
Web Admin App
WEB_PORT- admin app port, default3000PLAYER_INTERNAL_BASE_URL- player address used by the server, defaulthttp://player:3001PLAYER_PUBLIC_BASE_URL- player address shown in browser links, defaulthttp://localhost:3001UPLOAD_DIR- storage location for uploaded files, default./uploads
Player App
PLAYER_PORT- player port, default3001
Docker Compose
The repository includes a docker-compose.yml file that starts three services:
webui- the admin app on port3000player- the signage player on port3001mysql- the database on port3306
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.