Script: Update Tailscale on (nearly) all devices

Worked for me. updated to:

tailscale 1.60.1
Linux 4.4.60

1 Like

Is there any way for this script to survive after a backup restore or firmware update like you did in adguard?

In Adguard, both updating and restoring backup it goes back to the last version and that is very good.


I will try to add this feature.

1 Like

Works flawlessly on Flint 2 (4.5.7 release 6). Thanks Admon!

1 Like

New version released!

I added the option to make all changes permanent. The script therefore only needs to be executed once, the effects are then permanent. Even across firmware updates.
On the downside, it might create trouble when you flash a way older firmware.


Working great on a GL-X3000 as well, thanks for your script !

1 Like

Is there any way to update Tailscale on a Mudi v2 (e750v2) as well ?
Your script tells me the architecture is not supported but I’ve managed to install Tailscale on my Mudi v2 with the plugin page on the stock mudi v2 firmware. It’s working so far but there might be a way to update to the latest Tailscale.

Could you please paste the output of uname -a?

here it is :

Linux GL-E750 5.10.176 #0 Sun Apr 9 12:27:46 2023 mips GNU/Linux

Support for routers with MIPS architecture added.

1 Like

Thought I’d give this a whirl on my MT-3000 (Beryl AX) and make some comments, hopefully to help out / improve the experience for other folks.

Note that apart from some knowledge of SSH and WinSCP and being pretty good at following instructions I have a pretty low level of understanding of Linux etc.

So first off, thank you, it worked well!

I used the direct option “You can run it without cloning the repository by using the following command” and it worked very well. The reason I used this option is because I had no idea where I should have put the file, had I downloaded it, so as to be able to run it using that option.

  1. In my ASUS Router I would guess it would go in /jffs/scripts, is there an equivalent on the GLiNET devices? I searched for the file and it appears to be in /overlay/upper/root/ ?

  2. Having downloaded the script using that wget line, is it persistent i.e. stays in the router (whereabouts?) and can it then be run using the first command i.e. ./ [–ignore-free-space] [–force]

  3. When I did a ‘ls’ I saw it at the root (along with a new tailscale.bak directory). Is it possible to have the script clean up (and delete) the backup files and directory please? I manually deleted the backups. They appear to be in the dir /overlay/upper/root/tailscale.bak ?

Thanks again!


You could download the file to anywhere on the router itself and then execute it. But by using the “without cloning” method you did what is necessary, so all fine here.

/usr/sbin for the tailscale binaries. The script itself is not needed anymore after first execution, see info below.

Likely it’s in /root now. But I would not recommend using the script again and again - instead download a fresh copy each time you run it, so you will get the newest bug fixes and optimizations

No, since deleting the backup would make the whole backup process obsolete. If you don’t need a backup you can use --ignore-free-space or delete the backup afterward.

The /overlay is just an, well, overlay. You can reach all files directly by ignoring /overlay/upper/ so it’s just /root/

Since you are using OpenWrt now, you should get a quick overview about Linux in general to understand the directories: An Introduction to Linux Directories and the PATH Variable


Ok thank you, was asking as to be able to run it with the —ignore-free-space switch I understand it would need to be downloaded to my Windows PC first, then uploaded to somewhere on the Router (I use WinSCP for this).


OK thanks, makes sense (assuming I can put it anywhere and it’ll just run via SSH). Wondering if however the script could be adapted to check for and download the updated one by itself?

OK, but as above I understand you can only run the script with the –ignore-free-space switch once downloaded?

OK thank you … definitely learning stuff here! :pray:

Ok thank you for the heads up on this.

Released new version 2024-03-17-01 which comes with UPX compression to save space!
(And fancy colors + restore feature as well)

It totally makes sense to run the script again, even if you are up-to-date already!
(But please download a fresh copy before or use the Quick-start from above)

1 Like

tested, do you intend to do the same with adguard?

Hi, sorry to be a wee bit of a pest about this, but I tried to run just the update-tailscale script (both before and even after a successful “Quick Start” run) and it says not found.

I downloaded a fresh copy again as stated above and put it in the root dir as shown. What am I doing wrong?

Executing shell scripts works differently.
sh filename instead of just the filename

So in the case it‘s in root: sh

1 Like

Cheers that works! thanks a lot!

@admon Thank you, so much for creating the script for the GL•iNet community. It works flawlessly by the way.

Can you please elaborate what your new Permanent feature is designed to accomplish?

I have 2 GL routers:


I made installation permanent on the 1800 but not the 3000. I wasn’t really clear on this new UPGRADE PERSISTENCE within your new script.

1 Like

Flashing a new fw will downgrade tailscale if it’s not permanent.