Setup guide
Build the Players
Each player is an old PC that boots straight into a full-screen browser pointed at your signage server, with no desktop, no login prompt and nothing for a passer-by to click. Build one, pair it, test it for a day, then clone it for the rest.
1. What makes a good player
| Need | 1080p screens | 4K screens |
|---|---|---|
| CPU / graphics | 64-bit, Intel HD 4000 or newer (2012+) | Intel 7th gen or newer (hardware 4K and HEVC decode) |
| RAM | 4 GB (2 GB works for images-only screens) | 8 GB |
| Disk | 32 GB SSD; 64 GB if playlists are video-heavy | 64 GB SSD |
| Video out | HDMI, or DisplayPort with a DP→HDMI adapter | HDMI 2.0 or DP 1.2 |
| Network | Ethernet preferred; Wi-Fi works with a good signal | Ethernet |
Small-form-factor and “tiny” office PCs (OptiPlex Micro, ThinkCentre Tiny, EliteDesk Mini) mount on a VESA bracket behind the TV. Skip anything 32-bit only; current Linux no longer installs on it.
2. BIOS settings
- Restore on AC power loss: Power On
- Disable all sleep and hibernate states
- Boot from the internal SSD only once installed; set a BIOS password so nobody can boot a USB stick
- Disable the internal speaker beep
3a. Easy way: the Reboot Player image (planned)
Write the Reboot Player image to a USB stick, boot the PC from it, choose Install to this disk, and it comes up at the pairing screen. Skip to step 5. (Image: installer TBD.)
3b. Manual way: Debian 13 kiosk
For builders who want to see every part, or until the image ships.
- Download the Debian 13 netinst ISO from debian.org and write it to USB.
- Install. At Software selection, untick every desktop environment; tick only SSH server and
standard system utilities. Create a user called
kiosk. - After first boot, log in and install the kiosk pieces:
sudo apt update
sudo apt install -y cage chromium fonts-noto unattended-upgrades
cage is a tiny Wayland compositor that runs exactly one app full-screen, with no desktop to escape to.
4. Make it boot straight to the screen
Auto-login on the first console:
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
sudo tee /etc/systemd/system/getty@tty1.service.d/autologin.conf <<'EOF'
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin kiosk --noclear %I $TERM
EOF
Start the player when kiosk logs in, by adding this to /home/kiosk/.bash_profile:
if [ "$(tty)" = "/dev/tty1" ]; then
while true; do
cage -- chromium --kiosk --noerrdialogs \
--disable-session-crashed-bubble \
--autoplay-policy=no-user-gesture-required \
--check-for-update-interval=31536000 \
https://signage.yourdomain.com/player
sleep 5
done
fi
The loop restarts the player within 5 seconds if it ever crashes. Use http://192.168.1.10/player for a
single-network setup. (Player URL: installer TBD.)
Add a nightly reboot to clear memory and pick up updates:
echo '0 4 * * * root /sbin/reboot' | sudo tee /etc/cron.d/nightly-reboot
Reboot; the screen should come up on its own.
5. Pair it
- The player shows a 6-character pairing code.
- In the admin page: Players → Add player, type the code, name it after its location (“Clubhouse – Bar TV”), and pick its group.
- Within a minute the player downloads its playlist and starts playing.
Label the PC with its player name and the last 4 digits of its MAC address. It saves a ladder trip later.
6. Clone the rest
Once one player has run a full day without trouble, clone its disk with Clonezilla to the other PCs. Clone before pairing, or wipe the pairing first (Players → Reset on the device, installer TBD); two players sharing one identity will fight over the same screen.
7. Turning TVs on and off
Most PCs can’t send HDMI-CEC commands to switch the TV off. Use the TV’s own on/off timer, a hotel-mode TV setting, or a smart plug on a schedule. The player keeps running; it just waits for the TV.
8. Mounting
- VESA bracket behind the TV, vents unobstructed; a tiny PC sealed in a TV recess will overheat by summer
- Short HDMI cable, cable-tied so it can’t work loose
- Power the PC and TV from the same outlet so they share a fate
- Outdoor or poolside screens: the PC goes indoors or in a ventilated enclosure; run HDMI over a cable extender if needed