Home · Install

Install

Download the box. Then the Pi, if you need another screen.

Two files. The standalone tarball is the site manager on the LAN. The Pi agent is a kiosk that talks only to that box, never to dutywall.com.

Stable URLs (always the current build):

curl -fsSL -O https://dutywall.com/download/dutywall-standalone.tar.gz
curl -fsSL -O https://dutywall.com/download/dutywall-pi-agent.tar.gz
curl -fsSL -O https://dutywall.com/download/dutywall-roku-channel.tar.gz
curl -fsSL -O https://dutywall.com/download/dutywall-windows-agent.tar.gz
curl -fsSL -O https://dutywall.com/download/dutywall-android-kiosk.tar.gz
curl -fsSL -O https://dutywall.com/download/SHA256SUMS
sha256sum -c SHA256SUMS

Full platform steps: Setup docs: Linux, Windows, Raspberry Pi, macOS, then screens.

1. On-site box (Linux, Pi, or Windows with Docker Desktop)

One machine on the facility LAN is the site manager. Displays poll it. Cloud, if used, is outbound HTTPS from this box only. A Windows mini-PC HDMI’d to a TV is a screen (step 2); a Windows PC running Docker Desktop is the box. Guides: Linux · Windows · Pi · macOS.

tar -xzf dutywall-standalone.tar.gz
cd dutywall-standalone-*
cp .env.standalone.example .env
# DUTYWALL_BASE_URL=http://<this-LAN-IP>:8090
# DUTYWALL_PANEL_USER / DUTYWALL_PANEL_PASSWORD
# Optional cloud attach (from https://dutywall.com/app → site → Copy env):
#   DUTYWALL_CLOUD_URL=https://dutywall.com
#   DUTYWALL_SITE_ID=site_…
#   DUTYWALL_SITE_TOKEN=…
# Linux / Pi:
docker compose up -d --build
# Windows (Docker Desktop, Linux containers):
#   powershell -ExecutionPolicy Bypass -File .\scripts\standalone-up.ps1
curl -sS http://127.0.0.1:8090/healthz
# standalone → {"ok":true,"mode":"standalone"}
# attached   → {"ok":true,"mode":"managed"}

Panel: http://<LAN-IP>:8090/. Keep :8090 on the LAN. Do not publish it.

2. A TV without a Pi

Every client talks to the box on the LAN (http://<BOX>:8090), never to dutywall.com.

DisplayWhat to installNotes
Any browser / Fire TV SilkOpen /playerNo install. Demo or a spare stick. Not a locked kiosk.
Raspberry Pidutywall-pi-agent.tar.gzBest new screen: CEC power, ~$60.
Existing Roku TVdutywall-roku-channel.tar.gzDeveloper Mode. ./install.sh IP PASSWORD or box panel → Install/Update.
Windows mini-PCdutywall-windows-agent.tar.gzinstall.ps1 -MasterUrl "http://BOX:8090"
Fire TV / Android TV / tabletdutywall-android-kiosk.tar.gzSource; ./gradlew assembleRelease then adb install. No prebuilt APK yet.

Pi

tar -xzf dutywall-pi-agent.tar.gz
cd dutywall-pi-agent-*
sudo ./install.sh
sudo nano /etc/dutywall-kiosk.conf
# MASTER_URL=http://<BOX-LAN-IP>:8090
# SCREEN_ID=     (blank = 6-character enroll code on the TV)
sudo systemctl start dutywall-kiosk

Bind the code in the box panel → Enroll a screen. Group names (lobby, breakroom, …) are zones, not timers.

Roku

Enable Developer Mode + Fast TV Start on the TV. Username is always rokudev.

tar -xzf dutywall-roku-channel.tar.gz
cd dutywall-roku-channel-*
./install.sh <ROKU-IP> <DEV-PASSWORD>
# optional launch:
./install.sh <ROKU-IP> <DEV-PASSWORD> http://<BOX-LAN-IP>:8090 Lobby

Then add the TV in the box panel (id, IP, group, same password) so heartbeats and later Install/Update work. There is no Roku Store listing.

Windows screen (kiosk, not the box)

tar -xzf dutywall-windows-agent.tar.gz
# elevated PowerShell on the PC driving the TV:
install.ps1 -MasterUrl "http://<BOX-LAN-IP>:8090"

Fire TV / Android

Edit master_url in app/src/main/res/values/strings.xml, build a release APK, adb install. Until then, Silk/Chrome at http://<BOX>:8090/player is enough to prove a screen.

Handoff for another installer / agent

Architecture: displays → on-site box :8090 → optional outbound to https://dutywall.com. Do not set MASTER_URL to dutywall.com. Do not reuse a site token already bound to another box (unassign or mint a new site first). NWS user-agent must be a real contact. Panic webhook is DUTYWALL_ALERT_TOKEN on the box.

Questions

Does the Pi download from the cloud?

No. Download the zip here, then the Pi only talks to the box on the LAN.

Do I need a Dutywall Cloud account?

No for the box or the Pi. Cloud is optional: set SITE_ID and SITE_TOKEN on the box if you want multi-site desired state.

Can two boxes share one site token?

No. One site token, one box. Create another site in the cloud panel for a second facility.