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
| Option | Description |
|---|---|
--port N | Port for the service (default 8080). |
--no-https | Serve plain HTTP instead of HTTPS (TLS is the default). |
--no-deps | Don't install system packages or tune TCP. |
--no-gnome | Don't offer to install GNOME if it's missing. |
--no-extension | Don't install the locked-screen extension. |
-y, --yes | Assume "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
- Checks the machine: it must be x86-64, and GNOME, GStreamer, an SSH server
and the TCP settings are looked at.
--checkstops here and lists what the install would set up. - Copies the release to
~/.local/share/waylo/releases/<version>and verifies it against WayLo's signing keys. - Writes the port and HTTPS setting to
~/.config/waylo/waylo.env. - 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. - With
--no-depsoff, offers to install GStreamer plugins and an OpenSSH server and makes suresshdruns. It also offers to tune TCP for streaming: it writes/etc/sysctl.d/60-waylo-streaming.conf(net.ipv4.tcp_notsent_lowat = 32768andnet.ipv4.tcp_slow_start_after_idle = 0) and applies it. See Performance. - Offers to enable linger, and installs the
allow-locked-remote-desktopextension (best effort). - 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
| Path | What |
|---|---|
~/.local/share/waylo/releases/<version>/ | The installed releases (the last three are kept). |
~/.local/share/waylo/current | Link to the running release. |
~/.local/share/waylo/state/update-status.json | Progress and result of the last install or update. |
~/.config/waylo/waylo.env | Port and HTTPS (WAYLO_PORT, WAYLO_HTTPS). |
~/.config/waylo/certs/ | The self-signed TLS certificate and key. |
~/.config/waylo/settings.json | Update settings (auto_update). |
~/.config/waylo/keyring.json | The keys this machine trusts to sign WayLo releases. |
~/.config/systemd/user/waylo.service | The service unit. It is rewritten by every update; put local changes in a drop-in (systemctl --user edit waylo). |
~/.local/bin/waylo-update | The 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.