Linux & Raspberry Pi
The desktop sign app builds for Linux. It works. We don't yet recommend it as the default platform for production events — but it's the right answer for some specific cases, and the gap to Windows is shrinking.
This page covers what's supported today, when to choose Linux over Windows, and the limitations to plan around.
Linux is supported but secondary
Windows 10/11 Pro is DisplaySync's primary platform. The Linux builds work and are tested in CI, but the kiosk lock-down tooling, the USB recovery kit, the provisioner, and most of our deployment documentation assume Windows. Linux deployments require more on-the-team expertise and are more DIY.
Supported configurations
| Architecture | OS | Status |
|---|---|---|
| x64 | Debian 11+, Ubuntu 22.04+ (24.04 LTS recommended) | Supported |
| ARM64 | Debian 11+, Ubuntu 22.04+ on Raspberry Pi 4 / 5 | Supported, lower-stakes use only |
| ARM64 | Debian on other ARM SBCs (Orange Pi, etc.) | Best-effort — likely works, less tested |
| x86 / 32-bit | Anything | Not supported |
The desktop sign ships as a .deb package and an AppImage. The .deb is the recommended install path — installs cleanly via dpkg or apt, integrates with systemd for auto-start, supports controlled rollouts via the same R2-backed channel as Windows.
When Linux is the right call
A few scenarios where Linux beats Windows:
- Cost-sensitive deployments at small venues or small fleets where Windows licensing per kiosk isn't worth it.
- ARM-based hardware you already own — Raspberry Pi 4 / 5 in particular. Wired Pi is a perfectly good signage rig if your content is light.
- Compliance environments that prefer or require Linux for auditability (Debian's reproducible builds, no Microsoft data telemetry).
- Solar-powered or low-power deployments — Pis sip 5-15 W vs 30-50 W typical for a Windows mini PC.
- You have Linux ops expertise on the team. If managing systemd,
dpkg, and a Debian-based stack is comfortable for your team, the Linux path is friendly.
When to stay on Windows despite the cost:
- Tier-1 conferences with vendor warranties, dedicated AV support, and customer expectations of "it just works"
- Fleets above ~20 signs — the deployment guide is denser on Windows; you save time at scale
- Anywhere you need Tailscale + RDP for hands-on access — Windows RDP is mature; Linux options (XRDP, VNC) are less polished
Hardware
Specs are lower than Windows because there's no per-kiosk OS license and Linux uses RAM more conservatively.
| Spec | Minimum | Recommended |
|---|---|---|
| CPU | Dual-core ARM64 or x64 | Quad-core |
| RAM | 2 GB | 4 GB |
| Storage | 16 GB SD/eMMC/SSD | 32 GB SSD |
| OS | Debian 11+ / Ubuntu 22.04+ | Ubuntu 24.04 LTS |
| Display | HDMI | HDMI 2.0+ |
| Network | Ethernet or Wi-Fi | Gigabit Ethernet |
For ARM64 Raspberry Pi specifically:
- Pi 4 (4 GB+): works fine for static signage, simple animations, 1080p webpages
- Pi 5: noticeably faster — handles heavier content, smoother video playback
- Earlier Pis (3 and below): not supported; the renderer is too slow for modern web content
Install path
The provision-linux.sh script in desktop-sign/scripts/ automates installation, similar to Windows' provision-windows.ps1. From the target machine:
# Copy the script over (USB, SCP, etc.) then run as root:
sudo ./provision-linux.sh --backend-url https://api.displaysync.live
# Preview first if you want:
sudo ./provision-linux.sh --backend-url https://api.displaysync.live --dry-run
What it does:
| Step | Action |
|---|---|
| Pre-flight | Check root, architecture, OS, connectivity, disk space |
| Install | Download correct .deb from GitHub Releases |
| Kiosk user | Create displaysync user in video/audio/input groups, lock password |
| Configuration | Write .env to /opt/DisplaySync Sign/resources/.env |
| Auto-login | Detect display manager (GDM3 / LightDM / SDDM) and configure |
| Auto-start | systemd service or X session autostart entry |
| Optional hardening | --watchdog for hardware watchdog timer, --read-only for overlayfs read-only root |
Kiosk lockdown on Linux
The Linux story for kiosk mode is good but more DIY than Windows.
- Auto-login: the script handles this for the common display managers. Custom DM setups need manual config.
- Shell replacement: there's no Linux equivalent to Windows Shell Launcher in the kiosk-app-as-shell sense. The closest pattern is a custom
.xinitrcthat launches the sign app instead of a window manager. - No-distractions desktop: running on a minimal X session (no panel, no taskbar, no notifications) is a few configuration lines.
- Read-only root (via overlayfs) protects against accidental writes that would persist across reboots — good for unattended fleets, slightly more complex to operate.
Tailscale
Tailscale on Linux is at least as polished as on Windows. Install via apt:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --authkey <key> --hostname $(hostname) --tags tag:displaysync-sign
The desktop sign automatically reads tailscale ip -4 and reports it in the heartbeat — same behavior as Windows. See Tailscale integration.
For remote access:
tailscale sshis the cleanest path for Linux. No SSH keys to manage; ACL-gated.- VNC server (TightVNC, x11vnc) works and is the right choice if you need a GUI session.
- Linux's RDP options (XRDP) are less mature than Windows native RDP — use SSH and VNC instead.
What's missing or weaker
Things that are great on Windows and weaker on Linux today:
- No equivalent to the USB recovery kit for Linux. Recovery on Linux is currently "reimage from your captured disk image" — manual but not hard with
ddor Clonezilla. - No native fleet management tooling. Windows has Group Policy, Intune, Configuration Manager. Linux has Ansible, Salt, Puppet — capable but not pre-configured by us.
- Windows Update equivalent.
apt unattended-upgradeshandles security updates; tune the timing to avoid mid-event reboots — analogous to Windows Update active hours, but you configure it yourself. - Hardware variety. Linux runs on more hardware than Windows, but driver support varies. Validate every SKU before committing to a fleet.
Rough install (without the provisioner)
If you can't run the provisioner script (locked-down environment, custom hardware), the manual install:
# 1. Install the .deb
sudo dpkg -i DisplaySync-Sign-x.y.z-amd64.deb
sudo apt-get install -f # resolve any deps
# 2. Configure
sudo cat > /opt/DisplaySync\ Sign/resources/.env <<EOF
BACKEND_URL=https://api.displaysync.live
KIOSK_MODE=true
AUTO_UPDATE_ENABLED=true
EOF
# 3. systemd service
sudo systemctl enable displaysync-sign
sudo systemctl start displaysync-sign
# 4. Verify
systemctl status displaysync-sign
journalctl -u displaysync-sign -n 50
For the full reference — including kiosk user setup, watchdog, and read-only root — see the desktop-sign/docs/DEPLOYMENT.md and KIOSK_DEPLOYMENT.md in the main repo.
The Linux data root lives at /var/lib/displaysync/ (logs, SQLite database, identity). For the per-file map and Windows counterparts, see File locations.
See also
- Hardware requirements → Linux and Raspberry Pi — the spec-table version
- Network requirements — same outbound allowlist applies
- Tailscale integration — Tailscale setup notes (Linux works similarly)
- Parallel deployment — Linux + Windows fleets in the same event