81 lines
2.8 KiB
Markdown
81 lines
2.8 KiB
Markdown
# Pulse Signage
|
|
|
|
Pulse Signage is a self-hosted digital signage platform built for teams that want clear, flexible control over what appears on every screen.
|
|
|
|
It gives you one place to manage playlists, slides, templates, screen assignments, announcements, data-driven content, and live player control without handing that workflow to a third-party service.
|
|
|
|
## Why It Stands Out
|
|
|
|
- Keep signage under your own control.
|
|
- Build polished screen experiences with reusable templates and playlists.
|
|
- Push announcements, schedules, RSS feeds, API content, and other dynamic content to screens.
|
|
- See what is live, what is queued, and what needs attention from a single admin dashboard.
|
|
- Use the same system for everyday signage, timed messages, and more structured information displays.
|
|
|
|
## What It Handles
|
|
|
|
- Screens and playlist assignments.
|
|
- Slides, templates, and canvas sizes.
|
|
- Announcements and screen-specific targeting.
|
|
- RSS feeds, API sources, and schedule-based content.
|
|
- Roles and permissions for admin access.
|
|
- Background tasks and scheduled refresh jobs.
|
|
- Player onboarding and live playback control.
|
|
|
|
## Simple Deployment
|
|
|
|
Pulse Signage ships with a Docker Compose stack for the published image:
|
|
|
|
- Published-image stack: `docker compose -f docker-compose.yml up -d`
|
|
|
|
Use this stack when you want to run the tagged image instead of building from source.
|
|
|
|
## Environment File
|
|
|
|
The compose files read from a root `.env` file. Start by copying `.env.example` to `.env`, then adjust the values for your setup.
|
|
|
|
The variables are split by who uses them:
|
|
|
|
Shared across the stack:
|
|
|
|
- `PULSE_SIGNAGE_IMAGE`
|
|
- `PULSE_SIGNAGE_SHARED_SECRET`
|
|
|
|
Web container:
|
|
|
|
- `SESSION_MAX_AGE_DAYS`
|
|
- `DEFAULT_ADMIN_USERNAME`
|
|
- `DEFAULT_ADMIN_NAME`
|
|
- `DEFAULT_ADMIN_PASSWORD`
|
|
- `PASSWORD_HASH_ITERATIONS`
|
|
|
|
Player container:
|
|
|
|
- `PLAYER_PUBLIC_BASE_URL`
|
|
- `PLAYER_INTERNAL_BASE_URL`
|
|
|
|
MySQL container:
|
|
|
|
- `DB_HOST`
|
|
- `DB_PORT`
|
|
- `DB_NAME`
|
|
- `DB_USER`
|
|
- `DB_PASSWORD`
|
|
- `MYSQL_ROOT_PASSWORD`
|
|
|
|
`DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, and `DB_PASSWORD` are shared in practice because both app containers talk to the same database service.
|
|
|
|
`PLAYER_INTERNAL_BASE_URL` is used by the web side for server-to-player calls, while `PLAYER_PUBLIC_BASE_URL` is used for browser-facing player links.
|
|
|
|
## First-Time Use
|
|
|
|
The first startup seeds a default admin account if the database is empty.
|
|
|
|
- Username: `admin`
|
|
- Password: `admin`
|
|
|
|
## In Practice
|
|
|
|
Pulse Signage is designed to feel focused and reliable rather than heavy or noisy. It works well when you want a clean internal signage system for offices, venues, dashboards, or any environment where screens need to stay up to date without a lot of manual effort.
|
|
|
|
The player and admin pieces stay linked, so changes made in the dashboard can flow out to screens quickly and consistently. |