Open-source digital signage ยท FreeBSD

Signage that runs itself.

Flash a cheap mini-PC and it boots straight into your web page, full-screen. Set it up from the screen. It updates and heals on its own โ€” for years, on a wall.

Lobby ยท Display 3Updated 2m ago
Your content, full-screen14:32
Next update03:00
Uptime147d
Reloads on change onlyโœ“
online ยท hc-lobby ยท v8852618
What it is

The content is the product. The stick is just the delivery mechanism.

kioskage turns a throwaway mini-PC into a maintenance-free wall display: it boots to full-screen Chromium pointed at a URL you choose, with an on-screen setup flow so you never need a laptop at the wall.

It's the whole appliance, open-sourced โ€” FreeBSD image, self-healing over-the-air updates, a setup portal, fleet keep-alive, and drop-in content tools you can use even without the stick. Bring your own content; kioskage carries it.

How it works

A stick owns nothing but the display. It pulls its code from the public repo and its brand from your private overlay, pulls its own content from your server โ€” every display in a fleet can show a different page โ€” and pings back a keep-alive so you can watch them all. Nothing phones home to us.

Only the sticks need to run FreeBSD. Your content server and the management hub can be anything โ€” any web server for the content, any host with an SSH server for the tunnels. Linux, BSD, a container, or whatever you already run. We run FreeBSD on everything ourselves, but it isn't required.

Planned โ†’ a management server the sticks dial out to over reverse SSH (held open with autossh), so you can reach any display for maintenance even when it sits behind NAT on someone else's network.

Features
/ setup

On-screen setup

Connect Wi-Fi or Ethernet and point it at your URL from the display itself โ€” scan a QR from your phone, or use a keyboard. No laptop, no SSH.

/ ota

Self-healing updates

Pulls nightly, health-checks the result, and automatically rolls back if an update fails to come up. The running revision is always one that passed.

/ brand

Overlay branding

Public code plus a small private overlay โ€” your brand.conf, a logo, an optional portal โ€” equals your fleet's identity. Nothing brand-specific in the code.

/ resilient

Offline-resilient content

A drop-in service worker never shows a browser error page, keeps the last good render when the network drops, and reloads only when the content actually changes.

/ fleet

Fleet keep-alive

Each display tags its requests with its name and version, so one line of your access log tells you who's alive, on what build, and when it last checked in.

/ locked

Locks down

Password-gate the setup portal and validate a kiosk key against your content server. Boots read-only; the cursor hides; a physical factory-reset is the escape hatch.

Hardware

kioskage runs on cheap mini-PCs โ€” the kind you leave on a wall and forget. The two verified units are honestly overkill: FreeBSD plus Chromium is light, so the bar for anything else is low.

Verified today

PROVEN

HIGOLE D5

  • Intel Celeron J3455 ยท Apollo Lake ยท x86-64
  • Realtek Gigabit Ethernet
  • Onboard Wi-Fi (client) ยท eMMC boot
VERIFIED

MeLE mini-PC

  • x86-64 fanless mini-PC
  • USB Wi-Fi dongle for the setup hotspot
  • onboard Wi-Fi can't host an access point

Bring your own โ€” the bar

  • โœ“
    Boots FreeBSD 15 with Chromiumamd64 today, arm64 increasingly โ€” the OS and browser are light. Most cheap Intel/AMD mini-PCs qualify.
  • โœ“
    HDMI display outputIt drives one screen, edge to edge.
  • โœ“
    Ethernet and/or Wi-Fi supported by FreeBSDEither works. Ethernet is the simplest path.
  • โœ“
    For on-screen Wi-Fi setup: an AP-capable adapterOr an ~$8 USB dongle โ€” or skip it and set up over Ethernet.

On the radar โ€” leaner & cheaper

CANDIDATE

Raspberry Pi 5

  • arm64 ยท tiny and cheap
  • Ethernet works on FreeBSD
  • onboard Wi-Fi isn't fully supported โ€” pair a compatible USB dongle, or use Ethernet
FUTURE

RISC-V boards

  • as FreeBSD + Chromium support matures
  • the leanest, most open target

Why FreeBSD on the sticks? A smaller footprint and a more unified distribution model than a typical Linux appliance. It should also port to NetBSD without much trouble โ€” worth it if you want to run even leaner hardware.

Quickstart
01 โ€” Flash

Write the image

Provision a mini-PC with the FreeBSD image from a USB stick. Boots from eMMC; card slots stay empty.

02 โ€” Boot

It comes up in setup

First boot shows a setup screen with a QR code and an address โ€” the display hosts its own portal over a temporary hotspot.

03 โ€” Point it

Give it a page

Enter a kiosk key or a full URL. It goes full-screen, remembers everything, and starts on every boot from then on.

Full walkthrough โ†’ docs/INSTALL-FreeBSD.md

Use the content tools anywhere

Even if you never touch the appliance, js/ makes any signage page well-behaved on an always-on screen: no error pages, change-only reloads, and fleet keep-alive. It's independent of the stick โ€” drop it into a page you already have.

<script src="kioskage.js"></script>
<script>
  kioskage.keepAlive({ host: "lobby" });
  kioskage.reloadOnChange();
</script>