{
"$type": "site.standard.document",
"content": "---\ntitle: \"Automated RPi Web Kiosk Setup in 2025\"\ndescription: \"A fully scripted burn-and-boot process for setting up Raspberry Pi 5s as\n fullscreen Chromium kiosks with Tailscale, WiFi and 4K support.\"\ntags:\n - dev\n---\n\nAs part of a [recent art installation](https://github.com/anucybernetics/panic)\nI've needed to set up lots (well, dozens) of Raspberry 5s to run as fullscreen\nChromium \"kiosks\" with a pre-set URL (network connected, but with no\nkeyboard/mouse).\n\nThey've all needed slightly different kiosk URLs, and I _hate_ doing this sort\nof busy-work by hand, so I've spent longer than I'd like to admit[^time] putting\ntogether a fully scripted burn-and-boot process. My non-negotiables were:\n\n[^time]: I thought it'd take a day, it's taken about a week, on and off :(\n\n- script needs to be fully automated (though it turns out it only works on Linux\n now due to the tools required)\n- once the SD card is put into an rpi and plugged in, everything should be\n automatic (join network, install and configure software and OS)\n- I need a way to remotely access the rpis once \"in the field\" (in particular,\n sometimes I need to change their kiosk URL)\n\nI _thought_ that this would be a pretty common thing that others would have\ndone---rpis are cheap and seem like a good fit for this type of \"web browser as\ninstallation display\" thing. But I kept running into dead ends.\n\nI finally got it fully working with\n[Raspberry Pi OS](https://www.raspberrypi.com/software/) (Bookworm) as the OS\nand [labwc](https://github.com/labwc/labwc) as the compositor (which is the\ndefault on RPi OS). To save you the trouble, dear reader, I've packaged it all\nup into a script (which works as of the date of this post---July 2025) and put\nit [here](https://github.com/ANUcybernetics/panic/tree/main/rpi). From that\nfolder's `README.md`:\n\n> This directory contains scripts for setting up Raspberry Pi 5 devices as\n> browser kiosks that boot directly into fullscreen Chromium displaying a\n> specified URL.\n>\n> The setup process uses:\n>\n> - **install-sdm.sh** - Installs SDM (SD Card Image Management tool) - one-time\n> setup\n> - **pi-setup.sh** - Creates customized Raspberry Pi OS SD cards with kiosk\n> mode\n>\n> The resulting installation:\n>\n> - boots directly into GPU-accelerated kiosk mode using labwc Wayland\n> compositor (RPi OS default)\n> - automatically joins your Tailscale network\n> - supports native display resolutions including 4K at 60Hz\n> - configures WiFi (WPA2 and enterprise 802.1X)\n> - includes HDMI audio support\n> - optimized specifically for Raspberry Pi 5\n> - provides a `kiosk-set-url` utility for easy URL changes\n> - uses official Raspberry Pi OS Bookworm (64-bit)\n\nI hope this saves you some time. Use it to hug your loved ones.\n",
"createdAt": "2026-05-13T23:14:44.235Z",
"description": "A fully scripted burn-and-boot process for setting up Raspberry Pi 5s as fullscreen Chromium kiosks with Tailscale, WiFi and 4K support.",
"path": "/blog/2025/07/16/automated-rpi-web-kiosk-setup-in-2025",
"publishedAt": "2025-07-16T00:00:00.000Z",
"site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
"tags": [
"dev"
],
"textContent": "A fully scripted burn-and-boot process for setting up Raspberry Pi 5s as fullscreen Chromium kiosks with Tailscale, WiFi and 4K support.",
"title": "Automated RPi Web Kiosk Setup in 2025"
}