← HomeHub.wiki
Tailscale WD EX2 Ultra Remote NAS

Tailscale on WD EX2 Ultra

Install Tailscale on a WD My Cloud EX2 Ultra NAS and configure it to auto-start on reboot — surviving firmware updates.

🖥️ BusyBox / ARM ⏱️ ~15 min 🔑 SSH Required
📦

Device

WD My Cloud EX2 Ultra
BusyBox v1.30.1 (ARM)
Local IP: 192.168.0.5

🌐

Tailscale IP

Once connected:
100.75.215.101
Hostname: mycloudex2ultra

💾

Install Location

All files on the data partition:
/mnt/HD/HD_a2/tailscale/
Survives firmware updates.

🔁

Auto-Start

Cron-based startup script. Runs at boot and checks every 5 minutes. No init.d or systemd needed.

⚠️
Important: The WD EX2 Ultra's system partition gets wiped during firmware updates. Anything stored in /etc/ or /usr/local/bin/ will be erased. That's why we install everything on the data partition at /mnt/HD/HD_a2/ — this persists through updates.

Prerequisites

Before starting, make sure you have:

SSH access enabled on your WD NAS (Settings → Network → SSH in the WD dashboard at http://192.168.0.5)

A Tailscale account — sign up free at tailscale.com

A terminal app — PowerShell on Windows, Terminal on Mac/Linux

Installation

1

SSH into the NAS

Open PowerShell (Windows) or Terminal (Mac/Linux) and connect:

Terminal
ssh sshd@192.168.0.5

Enter your NAS password when prompted. You should see:

✓ Expected prompt
root@MyCloudEX2Ultra ~ #
2

Create the Tailscale directory on the data partition

This is where all Tailscale files will live — safe from firmware updates.

Run on NAS
mkdir -p /mnt/HD/HD_a2/tailscale
cd /mnt/HD/HD_a2/tailscale
3

Download and extract Tailscale (ARM build)

The WD EX2 Ultra uses an ARM processor, so we need the ARM build. Download and extract it:

Run on NAS
wget --no-check-certificate https://pkgs.tailscale.com/stable/tailscale_1.74.1_arm.tgz
tar xvf tailscale_1.74.1_arm.tgz
cd tailscale_1.74.1_arm
chmod +x tailscale tailscaled
💡
The --no-check-certificate flag is needed because the WD NAS doesn't have up-to-date SSL certificates. This is safe since we're downloading directly from Tailscale's official server.
4

Set up the state directory

Tailscale stores its login state in /var/lib/tailscale by default. We create a directory on the data partition and symlink it so the state survives firmware updates.

Run on NAS
mkdir -p /mnt/HD/HD_a2/tailscale/tailscale_1.74.1_arm/tailscale_lib
ln -s /mnt/HD/HD_a2/tailscale/tailscale_1.74.1_arm/tailscale_lib /var/lib/tailscale
5

Start Tailscale and authenticate

Start the Tailscale daemon in the background, then bring it up:

Run on NAS
./tailscaled &
./tailscale up

Tailscale will print a login URL. It looks like this:

✓ Expected output
To authenticate, visit:
    https://login.tailscale.com/a/xxxxxxxxxx

Open that URL in a web browser on any device and log in to your Tailscale account. Once authenticated, the terminal will print Success.

6

Verify the connection

Check that the NAS is connected and has a Tailscale IP:

Run on NAS
./tailscale status | head -3
./tailscale ip -4
✓ Expected output
100.75.215.101  mycloudex2ultra  brentrosen@  linux  -
...

100.75.215.101
💡
You may see an iptables NAT warning in the health check. This is cosmetic — the WD kernel lacks the NAT module, but Tailscale works fine in userspace networking mode.

Auto-Start Setup

ℹ️
The WD EX2 Ultra doesn't have systemd or traditional init.d directories that persist. We use cron instead — it runs our startup script at boot and checks every 5 minutes to recover if Tailscale ever stops.
7

Create the auto-start script

Paste this entire block as one command. Wait for the root@MyCloudEX2Ultra prompt to return before continuing.

Paste as one block — wait for prompt
cat > /mnt/HD/HD_a2/tailscale/start_tailscale.sh << 'EOF'
#!/bin/sh
TSDIR="/mnt/HD/HD_a2/tailscale/tailscale_1.74.1_arm"
STATEDIR="/mnt/HD/HD_a2/tailscale/tailscale_1.74.1_arm/tailscale_lib"
LOGFILE="/mnt/HD/HD_a2/tailscale/tailscale.log"
if pgrep -f tailscaled > /dev/null 2>&1; then
    echo "$(date): tailscaled already running" >> "$LOGFILE"
    exit 0
fi
mkdir -p "$STATEDIR"
rm -f /var/lib/tailscale
ln -s "$STATEDIR" /var/lib/tailscale
echo "$(date): Starting tailscaled..." >> "$LOGFILE"
"$TSDIR/tailscaled" --state="$STATEDIR/tailscaled.state" >> "$LOGFILE" 2>&1 &
sleep 5
"$TSDIR/tailscale" up >> "$LOGFILE" 2>&1
echo "$(date): Tailscale started, IP: $($TSDIR/tailscale ip -4)" >> "$LOGFILE"
EOF
⚠️
BusyBox shell tip: Only paste ONE command at a time. Wait for the root@MyCloudEX2Ultra prompt to appear before pasting the next command. Pasting multiple commands at once will cause them to get jumbled together.
8

Make the script executable

Run on NAS
chmod +x /mnt/HD/HD_a2/tailscale/start_tailscale.sh
9

Add to crontab

This adds two cron entries: one that runs at reboot (with a 30-second delay to let networking come up) and one that checks every 5 minutes.

Run on NAS
(crontab -l; echo "@reboot sleep 30 && /mnt/HD/HD_a2/tailscale/start_tailscale.sh"; echo "*/5 * * * * /mnt/HD/HD_a2/tailscale/start_tailscale.sh") | crontab -

Verify the cron entries were saved:

Run on NAS
crontab -l | grep tailscale
✓ Expected output
@reboot sleep 30 && /mnt/HD/HD_a2/tailscale/start_tailscale.sh
*/5 * * * * /mnt/HD/HD_a2/tailscale/start_tailscale.sh
10

Test the auto-start script

Kill the currently running Tailscale daemon, then start it using the script to confirm everything works:

Run on NAS — one at a time
killall tailscaled; sleep 3

Wait for the prompt. Then:

Run on NAS
/mnt/HD/HD_a2/tailscale/start_tailscale.sh

Wait about 15 seconds. Then verify:

Run on NAS
/mnt/HD/HD_a2/tailscale/tailscale_1.74.1_arm/tailscale status | head -3
✓ Expected output
100.75.215.101  mycloudex2ultra  brentrosen@  linux  -
...

File Reference

Here's where everything lives on the NAS after installation:

File layout
/mnt/HD/HD_a2/tailscale/
├── start_tailscale.sh              # Auto-start script (runs via cron)
├── tailscale.log                   # Startup log file
├── tailscale_1.74.1_arm.tgz       # Downloaded archive
└── tailscale_1.74.1_arm/
    ├── tailscale                   # CLI binary
    ├── tailscaled                  # Daemon binary
    └── tailscale_lib/              # State directory (login, keys)
        └── tailscaled.state

/var/lib/tailscale → symlink to tailscale_lib/

NAS Side Complete

Tailscale is installed, authenticated, and will auto-start on every reboot. The WD EX2 Ultra is reachable at 100.75.215.101 from any device on your Tailscale network.

Next: Mount on Media-PC2 →