Running Tailscale on the EdgeRouter X

Tailscale if you haven't come across it just yet is a fantastic service which allows you to set up an interlinking mesh between various nodes on the internet. Until just a moment ago, I had all my personal devices and servers set up with Tailscale except one. The last hold out was my Edge Router X, to which I pondered, "Why can't this device also be connected to Tailscale?"

And truth be told Tailscale generates MIPS architecture binaries which are compatible with the various EdgeMAX products produced by Ubiquiti. In the case of the EdgeRouter X, you'll want to get the mipsle package.

https://pkgs.tailscale.com/stable/#static

The package contains both the precompiled binary which you'll need to put into /usr/sbin/ as well as systemd config files that you'll need to move to the correct places. Lastly, you'll need to create some file directories for Tailscale to generate temporary files and state.

Start by SSH'ing into your EdgeRouter X or using the "CLI" button from the WebUI. Then run the following commands to get set up.

# Double check the packages site for the latest version! 
curl https://pkgs.tailscale.com/stable/tailscale_1.8.5_mipsle.tgz -o tailscale.tgz
tar xvzf tailscale.tgz

# cd into the directory
cd tailscale

# Move the binaries 
mv tailscale* /usr/sbin

# Move the systemd config and defaults
mv systemd/tailscaled.service /etc/systemd/system
mv systemd/tailscaled.defaults /etc/default/tailscaled

# Create the tailscale dirs required for operation
mkdir /var/lib/tailscale /run/tailscale

You'll want to activate the new service and get it started

sudo systemctl enable --now tailscaled.service

If you have any issues, they should appear here as the service gets started. I wasn't able to get journalctl working here, but was able to see the log output from Tailscale by taking a peek into /var/log/messages.

Lastly, start up and authenticate as prompted with Tailscale.

tailscale up

Because I also want to use this node in my Tailscale network as an exit node, I also added --advertise-exit-node as well and then confirm in the Tailscale web UI.