Account
Personal server. The process runs as daz.
Rex is Superlogical’s terminal multiplexer. On dbb-server it is a personal server for the daz account. A client attaches to a session on that server. A program started in a session runs as daz.
The package channel is preview. bootstrap/rex.sh passes --channel preview. With no channel, the install script falls back to snapshot while stable has no release.
Account
Personal server. The process runs as daz.
Boot
systemd user unit, linger on, Restart=on-failure.
Access
Built-in Tailscale device dbb-rex. The device owner only.
The unit file in this repo is platform/systemd/user/rex.service. bootstrap/rex.sh copies it to ~/.config/systemd/user/rex.service, which replaces the packaged user unit of the same name. Linger is on for daz, so the user manager starts at boot and stays up after logout.
ExecStart=/usr/bin/rex server run --log-format text --tailscale --tailscale-hostname dbb-rexRestart=on-failureThe packaged system units stay disabled: rex.service, rex.socket, rex-login-server.service, and rex-login-server.socket. The packaged user socket stays disabled. The server is not socket-activated. It does not run as root, and it does not run as the rex system account.
The command line is built-in Tailscale and the hostname dbb-rex. It does not set --tailscale-allow-tailnet-members, --allow-anonymous, a plain HTTP listener, a tailnet:// listener, or a tag. The host tailscaled process and tailscale serve are separate. This server does not use them.
The tailnet address is https://dbb-rex.tail8026fe.ts.net.
The device name is dbb-rex on the tailnet tail8026fe.ts.net. The address answers after the node is signed in. Until then, rex server status prints tailscale: needs login and an authenticate: URL. The device owner opens that URL. The server stores the login under ~/.local/state/rex/tsnet.
Rex for Mac adds the server with Add Remote Host and the address https://dbb-rex.tail8026fe.ts.net.
rex hosts add dbb-rex https://dbb-rex.tail8026fe.ts.netrex server statussystemctl --user status rex.servicejournalctl --user -u rex.servicerex version prints the Superlogical version. rex -v raises diagnostic verbosity. It is not the version flag.
Ubuntu also publishes a package named rex, the Perl tool (R)?ex. /etc/apt/preferences.d/rex pins origin pkgs.superlogical.com at priority 1001, so apt installs the Superlogical package.
A client disconnect leaves the session running. exit-empty is false for this unit, so the server does not exit when the last client goes away.
A host reboot stops the process. The session does not keep running through the reboot. On a clean stop the server writes a snapshot under ~/.local/state/rex, and the next start restores it. --restore defaults to true.
Key expiry for the dbb-rex device is off in the Tailscale admin. An expired device key drops the node until the next sign-in. A reboot does not. The node login stays in ~/.local/state/rex/tsnet.
Rex admits a caller by the connection. It does not check a password or an SSH key. On this server the connection is the built-in Tailscale device, and the admitted caller is the device owner.
The server listens on two Unix sockets in /run/user/1000/rex, server.sock and login-server.sock, mode 0600, owner daz. It opens no TCP port. Built-in Tailscale uses a userspace stack and binds UDP on eno1 for its own packets. UFW is unchanged, and unsolicited incoming traffic stays denied.
login-server.sock belongs to the personal server. The packaged rex-login-server.service stays disabled. /etc/rex/accounts.jsonc ships empty, which admits nobody through that service.
| Path | What it is |
|---|---|
/etc/apt/sources.list.d/rex.sources |
apt source. Suite preview, component main, architecture amd64. |
/etc/apt/preferences.d/rex |
Pin for package rex, origin pkgs.superlogical.com, priority 1001. |
/etc/apt/keyrings/rex-archive-keyring.gpg |
Repository signing key. |
rex account |
Locked system account. Home /var/lib/rex. Shell nologin. |
/usr/bin/rex |
The server and the CLI, one binary. |
/usr/lib/systemd/system/rex.service |
Shared server unit. Disabled. |
/usr/lib/systemd/system/rex.socket |
Socket activation for the shared server. Disabled. |
/usr/lib/systemd/system/rex-login-server.service |
Login server unit. Disabled. |
/usr/lib/systemd/system/rex-login-server.socket |
Socket activation for the login server. Disabled. |
/usr/lib/systemd/user/rex.service |
Packaged personal server unit. The file in ~/.config/systemd/user/ replaces it. |
/usr/lib/systemd/user/rex.socket |
Packaged user socket. Disabled. |
/usr/share/terminfo/x/xterm-rex |
Terminfo entry xterm-rex. |
/usr/share/terminfo/r/rex |
The same entry under the name rex. |
/etc/ssh/ssh_config.d/50-rex.conf |
When TERM is xterm-rex, ssh sends xterm-256color to a host that is not listed in ~/.config/rex/terminfo-hosts. |
/etc/rex/accounts.jsonc |
Login server accounts. Empty. |
/etc/pam.d/rex-login-server |
PAM policy for the login server. Auth is denied. It does not ask for a password. |
/var/lib/rex |
Home directory of the rex account. Mode 0700. |
bootstrap/rex.sh installs the package, copies the user unit, turns linger on, and enables the user service. The Tailscale sign-in stays a manual step.