Skip to content

Admonstrator/glinet-tailscale-updater

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GL.iNet Tailscale Logo

Tailscale Updater for GL.iNet Routers

Keep Tailscale up-to-date on your GL.iNet router with ease!

Latest Release License Stars


πŸ’– Support the Project

If you find this tool helpful, consider supporting its development:

GitHub Sponsors Buy Me A Coffee Ko-fi PayPal


πŸ“– About

This script automatically fetches and installs the latest Tailscale version, optimized specifically for GL.iNet routers. Keep your Tailscale installation current with just one command!

Created by Admon for the GL.iNet community. Tested on nearly all GL.iNet routers with firmware 4.x.

πŸŽ–οΈ Community Maintained – Part of the GL.iNet Toolbox project
⚠️ Independent Project – Not officially affiliated with GL.iNet or Tailscale


✨ Features

  • πŸš€ Automatic Updates – Fetches and installs the latest Tailscale version
  • πŸ“¦ Tiny Version Support – Uses optimized tiny binaries to save space
  • πŸ—œοΈ UPX Compression – Further reduces binary size when needed
  • πŸ”’ Tailscale SSH Ready – Enables secure SSH access to the router via Tailscale
  • 🎯 Version Selection – Install specific Tailscale versions
  • πŸ”§ Stateful Filtering – Auto-configures for exit node compatibility
  • πŸ›‘οΈ Safe Restore – Restore original firmware binaries if needed
  • ⚑ Flexible Options – Multiple flags for customized installations

πŸ“‹ Requirements

Requirement Details
Router GL.iNet router with firmware 4.x (including GL-BE9300 Flint 3)
Architecture arm64, armv7, mips, mipsle, or x86_64
Free Space At least 15 MB (can be bypassed with --ignore-free-space)

πŸš€ Quick Start

Run the updater without cloning the repository:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh

⚠️ Important: Do not run this script as a cron job! Manual execution is recommended.


πŸŽ›οΈ Arguments

The update-tailscale.sh script supports the following arguments:

Argument Description
--ignore-free-space Bypasses the free space check. Use with caution on low-storage devices!
--force Skips all confirmation prompts and makes installation permanent. Ideal for unattended installations.
--force-upgrade Forces upgrade even if the current version is already up to date. Useful for reinstalling the same version.
--restore Restores original firmware binaries (/usr/sbin/tailscaled and /usr/sbin/tailscale). ⚠️ Does not restore config files!
--no-upx Skips UPX compression. Binaries will be larger but installation is faster.
--no-download Skips downloading binaries. Use pre-downloaded archive at /tmp/tailscale.tar.gz.
--no-tiny Uses full Tailscale binaries instead of tiny version. Not recommended for GL.iNet routers.
--select-release Displays available releases and lets you choose a specific version. ⚠️ Downgrading not officially supported!
--testing Uses prerelease/testing versions from the testing branch. ⚠️ Use at your own risk! May contain bugs or experimental features.
--ssh Enables Tailscale SSH feature after installation.
--log Shows timestamps in all log messages. Useful for debugging and tracking execution time.
--ascii Uses ASCII characters ([OK], [X], [!], [->]) instead of emojis for compatibility with older terminals.
--help Displays help message with all available arguments.

πŸ“š Usage Examples

Standard Update

Update to the latest stable release:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh

Testing/Prerelease Versions

Install prerelease versions from the testing branch for early access to new features:

sh update-tailscale.sh --testing

⚠️ Warning: Testing versions are experimental and may contain bugs or unstable features. Use at your own risk!

Select a Specific Version

Install a specific Tailscale version (useful if the latest version has issues):

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --select-release

The script will display available releases for you to choose from.

⚠️ Warning: Downgrading Tailscale is not officially supported and may cause unexpected behavior.

Force Update (Unattended Installation)

Skip all prompts and make the installation permanent:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --force

Combine with --ignore-free-space for devices with limited storage:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --force --ignore-free-space

Restore Original Binaries

Revert to the original firmware binaries:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --restore

⚠️ Caution: This does not restore configuration files and may result in a broken installation.

Logging and Output Options

Enable timestamps for debugging or tracking execution time:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --log

Use ASCII characters instead of emojis for compatibility with older terminals:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --ascii

Combine both options:

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --log --ascii

πŸ” Key Features Explained

🎯 Tailscale Stateful Filtering

The script automatically adds --stateful-filtering=false to the gl_tailscale script. This is required for proper exit node functionality on GL.iNet routers.

The modification is:

  • βœ… Applied automatically
  • βœ… Permanent (survives firmware upgrades)
  • βœ… No manual configuration needed

πŸ” Tailscale SSH Ready

If you agree to enable Tailscale SSH during installation (manually or by using --ssh), the script will automatically configure Tailscale SSH after updating. You can read more about Tailscale SSH here.

⚠️ Warning: If you are connected to your router via Tailscale SSH, you will be disconnected when SSH support is enabled. This might cause the script to terminate prematurely. It is recommended to run the script via local SSH or via GoodCloud SSH terminal.

πŸ“¦ Tiny-Tailscale

By default, the script uses optimized tiny binaries that:

  • πŸ”Ή Significantly reduce storage footprint
  • πŸ”Ή Maintain full functionality
  • πŸ”Ή Skip UPX compression (already optimized)
  • πŸ”Ή Are recommended for all GL.iNet routers

Use --no-tiny if you need the full-sized binaries.

πŸ—œοΈ UPX Compression

For standard (non-tiny) binaries, UPX compression:

  • πŸ”Ή Substantially reduces binary size
  • πŸ”Ή Is recommended for storage-limited devices
  • πŸ”Ή Requires xz (auto-installed if missing)
  • πŸ”Ή Can be disabled with --no-upx

πŸ“Έ Screencast

Tailscale Updater Screencast

πŸ’‘ Getting Help

Need assistance or have questions?


⚠️ Disclaimer

This script is provided as-is without any warranty. Use it at your own risk.

It may potentially:

  • πŸ”₯ Break your router, computer, or network
  • πŸ”₯ Cause unexpected system behavior
  • πŸ”₯ Even burn down your house (okay, probably not, but you get the idea)

You have been warned!

Always read the documentation carefully and understand what a script does before running it.


πŸ‘₯ Contributors

Special thanks to:

  • lwbt – UPX compression & tiny-tailscale feature
  • Aubermean – Clarification of --stateful-filtering=false (#1)
  • All the testers and feedback providers in the GL.iNet forum!
  • Copilot – Yeah, I am using AI to help write code. But I review and test everything thoroughly!

Want to contribute? Pull requests are welcome!


🀝 Sponsors

This project is proudly supported by:

GL.iNet Robben Logo

Termius - The SSH client that works everywhere

Termius provides powerful SSH client solutions for developers and system administrators. Perfect for managing your GL.iNet router and other infrastructure from anywhere.


πŸ“œ License

This project is licensed under the MIT License – see the LICENSE file for details.


🧰 Part of the GL.iNet Toolbox

This project is part of a comprehensive collection of tools for GL.iNet routers.

Explore more tools and utilities:

GL.iNet Toolbox

Discover AdGuard Home Updater, ACME Certificate Manager, and more community-driven projects!


Made with ❀️ by Admon for the GL.iNet Community

⭐ If you find this useful, please star the repository!

Last updated: 2025-11-23