• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
ashryanio

ashryanio

routineTrackerApp

Public
Like
4
routineTrackerApp
Home
Code
9
backend
3
frontend
2
shared
2
.vtignore
AGENTS.md
RASPBERRY_PI_SETUP.md
README.md
deno.json
H
main.tsx
Environment variables
2
Branches
1
Pull requests
Remixes
2
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
RASPBERRY_PI_SETUP.md
Code
/
RASPBERRY_PI_SETUP.md
Search
2/15/2026
Viewing readonly version of main branch: v138
View latest version
RASPBERRY_PI_SETUP.md

Raspberry Pi Kiosk Setup (Wayland + Chromium)

This document describes how to configure a Raspberry Pi to boot directly into a full-screen Chromium kiosk running a single web page.

Target environment:

  • Raspberry Pi OS Desktop (Debian 13 / Trixie)
  • Wayland session (Wayfire)
  • Chromium
  • Auto-login enabled
  • No GNOME keyring prompts

Architecture Summary

Boot → Desktop Autologin → Wayland session → systemd user service → kiosk.sh → Chromium full-screen → single URL

No stored credentials No keyring Auto-restarts on crash


1. Install Raspberry Pi OS Desktop

Use Raspberry Pi OS with desktop (not Lite).

Verify:

cat /etc/os-release

Confirm desktop is installed.

2. Configure Boot Behavior

Run:

sudo raspi-config

Set:

System Options → Boot → Desktop System Options → Auto Login → Desktop Autologin

Reboot:

sudo reboot

3. Confirm Session Type

After login (or via SSH):

loginctl

Identify the session attached to seat0, then:

loginctl show-session <SESSION_ID> -p Type

Expected:

Type=wayland

4. Install Chromium

Modern Raspberry Pi OS uses chromium, not chromium-browser.

sudo apt update sudo apt install -y chromium

Verify:

chromium --version

5. Create Kiosk Launch Script

Create:

nano ~/kiosk.sh

Example:

#!/usr/bin/env bash set -euo pipefail URL="https://routine-tracker.val.run/" # Small delay to allow Wayland session to initialize sleep 1 exec chromium \ --kiosk \ --noerrdialogs \ --disable-infobars \ --disable-session-crashed-bubble \ --no-first-run \ --password-store=basic \ --use-mock-keychain \ --incognito \ "$URL"

Make executable:

chmod +x ~/kiosk.sh

Key flags:

  • --kiosk → full-screen mode
  • --password-store=basic → disables GNOME keyring integration
  • --use-mock-keychain → prevents keyring prompts
  • --incognito → prevents persistent session state

6. Create systemd User Service

Create directory:

mkdir -p ~/.config/systemd/user

Create service:

nano ~/.config/systemd/user/kiosk.service

Contents:

[Unit] Description=Chromium Kiosk After=graphical-session.target [Service] Type=simple ExecStart=%h/kiosk.sh Restart=always RestartSec=2 [Install] WantedBy=default.target

Enable:

systemctl --user daemon-reload systemctl --user enable kiosk.service systemctl --user start kiosk.service

Check status:

systemctl --user status kiosk.service --no-pager

7. Reboot Test

sudo reboot

Expected flow:

  1. Boot
  2. Wayland desktop briefly visible
  3. Chromium launches full-screen
  4. Kiosk page loads

A short desktop flash before kiosk launch is normal under Wayland.

8. Disable GNOME Keyring Prompts

Chromium on modern Debian attempts to use Secret Service (GNOME keyring).

The flags below suppress it:

--password-store=basic
--use-mock-keychain

If prompts still occur, optional hard removal:

sudo apt purge -y gnome-keyring sudo reboot

For a single-purpose kiosk, this is safe.

9. Debugging

Check kiosk service:

systemctl --user status kiosk.service

View logs:

journalctl --user -u kiosk.service -n 200 --no-pager

Confirm Chromium flags:

pgrep -a chromium

Confirm keyring not running:

pgrep -a gnome-keyring
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.