Skip to content

Install on Raspberry Pi

Production installs use pre-built Linux ARM64 release tarballs from GitHub Releases.

Tier 0: one-line install

On 64-bit Raspberry Pi OS (Bookworm-aligned), matching arm64 or x64 assets:

curl -fsSL https://raw.githubusercontent.com/dukk/waddle-view/main/deploy/install-latest-release.sh | bash

Non-interactive upgrade (skip confirmation when replacing /opt/waddle-view/bundle):

curl -fsSL https://raw.githubusercontent.com/dukk/waddle-view/main/deploy/install-latest-release.sh | bash -s -- --yes

Install runtime packages when ldd reports missing libraries:

WADDLE_INSTALL_RUNTIME_PACKAGES=1 curl -fsSL https://raw.githubusercontent.com/dukk/waddle-view/main/deploy/install-latest-release.sh | bash

Pin the script URL to a release tag or commit SHA if you do not want main to move.

Tier 1: manual tarball

  1. Download waddle-view-linux-arm64-<tag>.tar.gz from Releases (verify SHA256 when published).
  2. On the Pi:
tar xzf waddle-view-linux-arm64-v1.0.0.tar.gz
cd waddle-view-linux-arm64-v1.0.0
sudo bash install.sh
  1. On first launch, the app creates waddle_instance.id in app support (bootstrap for adoption).
  2. Install system libraries if needed:
sudo apt update && sudo apt install -y --no-install-recommends \
  at-spi2-core libmpv2 mpv libgtk-3-0 libsecret-1-0

Or re-run install.sh with WADDLE_INSTALL_RUNTIME_PACKAGES=1.

  1. Configure autostart (~/.config/autostart/*.desktop) or install sample waddle-view.service (edit User, DISPLAY, paths).
  2. Disable screen blanking (xset s off, xset -dpms, or Wayland equivalents).

Tier 2: flashable SD image

For a ready-to-flash .img, see deploy/pi-image — requires a pre-built ARM64 bundle. Follow Raspberry Pi trademark guidance if redistributing images.

Data locations

  • SQLite (default) and media/ live under the Flutter app support directory for the user running the app (path_provider / XDG on Linux).
  • Optional PostgreSQL: set WADDLE_DISPLAY_DATABASE_URL in systemd; blobs still use the same media/ directory.
  • Instance id (packaged): /etc/waddle-view/instance.id

Environment variables

Set bind options, live preview, optional Postgres URL, and OAuth client ids via systemd Environment= — see Configuration reference. Configure integration API keys in the controller UI, not env. Release builds do not read .env files.

Next steps