Skip to main content

Installer Reference

WayLo ships as a signed, self-extracting .run archive. It bundles a pinned Node runtime, the prebuilt frontend and prebuilt native dependencies, so the target machine needs no Node, npm, compiler, or network. Releases are published to the Harness release server, updates.harnessautomation.com; the one-line installer fetches the latest one from there.

Running the installer​

Run it as your normal desktop user. It refuses to run as root or under sudo: the service is a systemd user service that must live in your graphical session. It uses sudo itself only for system packages and settings, and only on a first install.

./waylo-<version>-linux-x64.run # install, or upgrade an existing one
./waylo-<version>-linux-x64.run -- --unattended # no prompts (assume yes)
./waylo-<version>-linux-x64.run -- --install -- --port 9000 # install with options
./waylo-<version>-linux-x64.run -- --check # report what an install would change
./waylo-<version>-linux-x64.run -- --help

Options for the installer itself go after the first --. WayLo's own install options go after a second --.

Install options​

OptionDescription
--port NPort for the service (default 8080).
--no-httpsServe plain HTTP instead of HTTPS (TLS is the default).
--no-depsDon't install system packages or tune TCP.
--no-gnomeDon't offer to install GNOME if it's missing.
--no-extensionDon't install the locked-screen extension.
-y, --yesAssume "yes" to all prompts. Without a terminal (over a plain SSH command, for example) the installer assumes yes anyway.

The old installer's --prefix, --use-system-node, --no-service and --uninstall options are gone: WayLo always installs to ~/.local/share/waylo with its own Node, the service is always installed, and uninstalling has its own script.

What a first install does​

  1. Checks the machine: it must be x86-64, and GNOME, GStreamer, an SSH server and the TCP settings are looked at. --check stops here and lists what the install would set up.
  2. Copies the release to ~/.local/share/waylo/releases/<version> and verifies it against WayLo's signing keys.
  3. Writes the port and HTTPS setting to ~/.config/waylo/waylo.env.
  4. Makes sure GNOME is there and running, offering (with sudo) to install a minimal GNOME, start a session, and set up auto-login on Wayland with no idle sleep. If another user holds the screen, it offers to take it over.
  5. With --no-deps off, offers to install GStreamer plugins and an OpenSSH server and makes sure sshd runs. It also offers to tune TCP for streaming: it writes /etc/sysctl.d/60-waylo-streaming.conf (net.ipv4.tcp_notsent_lowat = 32768 and net.ipv4.tcp_slow_start_after_idle = 0) and applies it. See Performance.
  6. Offers to enable linger, and installs the allow-locked-remote-desktop extension (best effort).
  7. Installs the systemd user service and ~/.local/bin/waylo-update. If a desktop session is running it starts WayLo and checks that it answers. Otherwise WayLo starts at the next desktop login.

If the install fails part-way, nothing is started and the same .run can be run again once the problem is fixed.

Moving an older install over​

WayLo 0.4.25 and earlier used a different installer that copied a plain tree into ~/.local/share/waylo. Run a current .run (or the one-liner) over one of those and it moves it to managed releases:

  • The TLS certificate is copied to ~/.config/waylo/certs, so desktop clients that pinned it keep connecting without a warning.
  • The port and HTTPS choice are read from the old service and written to ~/.config/waylo/waylo.env.
  • The old tree is kept as ~/.local/share/waylo.legacy-<date>. If the new release doesn't start and pass its checks, the old tree and service are put back automatically. Once you're happy, delete the legacy directory.

The machine-wide setup the old installer did (GNOME, packages, auto-login) is left as it is.

Where things go​

PathWhat
~/.local/share/waylo/releases/<version>/The installed releases (the last three are kept).
~/.local/share/waylo/currentLink to the running release.
~/.local/share/waylo/state/update-status.jsonProgress and result of the last install or update.
~/.config/waylo/waylo.envPort and HTTPS (WAYLO_PORT, WAYLO_HTTPS).
~/.config/waylo/certs/The self-signed TLS certificate and key.
~/.config/waylo/settings.jsonUpdate settings (auto_update).
~/.config/waylo/keyring.jsonThe keys this machine trusts to sign WayLo releases.
~/.config/systemd/user/waylo.serviceThe service unit. It is rewritten by every update; put local changes in a drop-in (systemctl --user edit waylo).
~/.local/bin/waylo-updateThe update tool.
~/.local/state/waylo/log/Install, update and rollback logs.

Updates​

WayLo updates from its own toolbar; see Updates. From a terminal:

waylo-update status # installed version, service, last result
waylo-update apply waylo-<version>-linux-x64.run # needs the .run.sig next to it
waylo-update verify waylo-<version>-linux-x64.run
waylo-update rollback # back to the previous release

Running a newer .run directly upgrades too. Running the same version again just says it's already installed.

Uninstalling​

~/.local/share/waylo/current/packaging/harness/uninstall.sh [-y] [--purge]

This removes the service, ~/.local/share/waylo and waylo-update. With --purge (or if you answer yes when asked) it also removes ~/.config/waylo (settings and the certificate) and ~/.local/state/waylo. The GNOME extension, auto-login and the no-sleep settings stay, since other things may rely on them.

Verifying a download​

Each .run has a detached signature, <file>.run.sig. The latest stable pair is always at:

https://updates.harnessautomation.com/install/waylo/latest/linux-x64.run
https://updates.harnessautomation.com/install/waylo/latest/linux-x64.run.sig

waylo-update verify checks a file against the keys an installed WayLo trusts. Updates are always checked this way before anything in them runs.