Distro compatibility (laptop fleets)

Ubuntu, Debian, CachyOS, Fedora, and openSUSE support.

Distro compatibility (laptop fleets)

Lindir targets remote administration of laptops and similar hosts. Ubuntu LTS and CachyOS are first-class for server and client. Debian, Fedora / RHEL-like, and openSUSE / SLES are first-class for the client.

Support matrix

Component Ubuntu / Debian CachyOS (Arch) Fedora / RHEL-like openSUSE / SLES
lindir-server .deb / install script PKGBUILD / pacman .rpm .rpm (openSUSE)
lindir-client .deb + sync timer PKGBUILD + sync timer .rpm + sync timer .rpm + sync timer
Config /etc/lindir/ Yes Yes Yes Yes
NSS (libnss-extrausers) apt (required) AUR required (paru/yay) Distro package when available; else build from Debian source Distro package when available; else build from Debian source
Default login shell (sync) Directory value (usually /bin/bash) /usr/bin/fish when installed Directory value Directory value
systemd / PAM / SSH Client Same Same Same
VPN plugins Optional (--skip-vpn OK) Same Same Same
Fleet packages apt-get pacman dnf zypper
Energy (logind/DPMS/dconf) Yes Yes Yes Yes
osFamily debian arch rhel suse

Pacman-based hosts (CachyOS, Arch, derivatives): official repos do not ship libnss-extrausers. Installing the client for password/SSH login requires the AUR package first: paru -S libnss-extrausers (or yay -S libnss-extrausers). See Client.

Fedora / RHEL-like / openSUSE: many images do not ship libnss-extrausers. Install a distro package if present; otherwise build the NSS module from the Debian orig tarball (or equivalent) before enroll — Client and the Podman auth suite document the fallback.

Cloud-validated client matrix (isolated e2e lab)

Scripted enroll/sync + PAM wiring was exercised on cloud images (not a product support ceiling — a regression floor):

Lab host Image / notes
Ubuntu 24.04 LTS
Debian 12 (bookworm)
CachyOS stand-in Arch cloud image + NSS from Debian source (real CachyOS still uses AUR libnss-extrausers)
Fedora 41 (SELinux Enforcing — see Client)
openSUSE Leap 15.6
Rocky 9 (SELinux Enforcing)

Full stack (IdP, Headscale, Nextcloud SSO, six fleets): scripts/integration/e2e-lab/.

Fleet package management

Distro Backend
Ubuntu / Debian apt-get (noninteractive)
CachyOS / Arch pacman --noconfirm
Fedora / RHEL / Rocky / Alma dnf (yum shim OK)
openSUSE Leap / Tumbleweed / SLES zypper --non-interactive

See Fleet. Reboot hints: Ubuntu /run/reboot-required; RHEL needs-restarting -r; openSUSE zypper needs-rebooting.

Packaging

See Packaging.

  • Ubuntu/Debian .deb: packaging/ubuntu/, client/packaging/ubuntu/
  • CachyOS: packaging/cachyos/, client/packaging/cachyos/
  • Fedora/RHEL: packaging/fedora/, scripts/packaging/
  • openSUSE: client/packaging/opensuse/, scripts/packaging/build-rpm-client-opensuse.sh

Client install (CachyOS / Arch)

Full path from a repo checkout — see also Client:

paru -S libnss-extrausers
sudo ./client/packaging/install.sh          # from repo root; builds + installs agent
sudo lindir-client enroll --url https://id.example.com --token "$TOKEN" --skip-vpn
sudo lindir-client sync
getent passwd alice

If the host is already enrolled, use sudo lindir-client configure-login instead of re-enrolling, then sync.

Client enroll (other distros)

# Debian/Ubuntu:
sudo apt install libnss-extrausers
sudo ./client/packaging/install.sh

sudo lindir-client enroll --url https://id.example.com --token "$TOKEN"
sudo lindir-client sync
getent passwd alice

Debian and Ubuntu both report osFamily=debian. MDM aliases debian / ubuntu match that family.

Integration tests (Podman)

Suite Path Gates
Fleet / package managers scripts/integration/distro/ enroll osFamily, apt/dnf/zypper
Client authentication scripts/integration/auth/ NSS, PAM, sync, getent, online/offline pam-auth on Debian, Ubuntu, Fedora, openSUSE, Arch (CachyOS stand-in), Rocky
Platform + live SQL scripts/integration/platform/ Build server/client/CLI on each OS; smoke against real PostgreSQL and MySQL
./scripts/integration/auth/run.sh
./scripts/integration/platform/run.sh ubuntu   # libpq + PG + MySQL
./scripts/integration/platform/run.sh all