{"id":23823326,"url":"https://github.com/admonstrator/glinet-tailscale-updater","last_synced_at":"2026-04-01T18:09:45.443Z","repository":{"id":238585281,"uuid":"796872246","full_name":"Admonstrator/glinet-tailscale-updater","owner":"Admonstrator","description":"This script updates the Tailscale installation on GL.iNet routers.","archived":false,"fork":false,"pushed_at":"2025-03-27T00:51:37.000Z","size":370,"stargazers_count":178,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T19:05:59.527Z","etag":null,"topics":["gl-inet","glinet","headscale","openwrt","tailscale"],"latest_commit_sha":null,"homepage":"https://forum.gl-inet.com/t/how-to-update-tailscale-on-arm64/37582","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Admonstrator.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-06T19:24:16.000Z","updated_at":"2025-03-28T13:44:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d7a9afb-13e4-490e-9721-8f4f738ecc12","html_url":"https://github.com/Admonstrator/glinet-tailscale-updater","commit_stats":null,"previous_names":["admonstrator/glinet-tailscale-updater"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Admonstrator%2Fglinet-tailscale-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Admonstrator%2Fglinet-tailscale-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Admonstrator%2Fglinet-tailscale-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Admonstrator%2Fglinet-tailscale-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Admonstrator","download_url":"https://codeload.github.com/Admonstrator/glinet-tailscale-updater/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276159,"owners_count":20912288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gl-inet","glinet","headscale","openwrt","tailscale"],"created_at":"2025-01-02T10:17:41.170Z","updated_at":"2025-12-29T12:09:57.960Z","avatar_url":"https://github.com/Admonstrator.png","language":"Shell","funding_links":["https://github.com/sponsors/admonstrator","https://buymeacoffee.com/admon","https://ko-fi.com/admon","https://paypal.me/aaronviehl"],"categories":["Shell"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"images/robbenlogo-glinet-small.webp\" width=\"300\" alt=\"GL.iNet Tailscale Logo\" style=\"border-radius: 10px; margin: 20px 0;\"\u003e\n\n## Tailscale Updater for GL.iNet Routers\n\n**Keep Tailscale up-to-date on your GL.iNet router with ease!**\n\n[![Latest Release](https://img.shields.io/badge/release-v1.92.3-blue?style=for-the-badge\u0026logo=github)](https://github.com/Admonstrator/glinet-tailscale-updater/releases/latest) [![License](https://img.shields.io/github/license/Admonstrator/glinet-tailscale-updater?style=for-the-badge)](LICENSE) [![Stars](https://img.shields.io/badge/stars-419-brightgreen?style=for-the-badge\u0026logo=github)](https://github.com/Admonstrator/glinet-tailscale-updater/stargazers)\n\n---\n\n## 💖 Support the Project\n\nIf you find this tool helpful, consider supporting its development:\n\n[![GitHub Sponsors](https://img.shields.io/badge/GitHub-Sponsors-EA4AAA?style=for-the-badge\u0026logo=github)](https://github.com/sponsors/admonstrator) [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black)](https://buymeacoffee.com/admon) [![Ko-fi](https://img.shields.io/badge/Ko--fi-FF5E5B?style=for-the-badge\u0026logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/admon) [![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge\u0026logo=paypal\u0026logoColor=white)](https://paypal.me/aaronviehl)\n\n\u003c/div\u003e\n\n---\n\n## 📖 About\n\nThis script automatically fetches and installs the latest Tailscale version, optimized specifically for GL.iNet routers. Keep your Tailscale installation current with just one command!\n\nCreated by [Admon](https://forum.gl-inet.com/u/admon/) for the GL.iNet community. Tested on nearly all GL.iNet routers with firmware 4.x.\n\n\u003e 🎖️ **Community Maintained** – Part of the [GL.iNet Toolbox](https://github.com/Admonstrator/glinet-toolbox) project  \n\u003e ⚠️ **Independent Project** – Not officially affiliated with GL.iNet or Tailscale\n\n---\n\n## ✨ Features\n\n- 🚀 **Automatic Updates** – Fetches and installs the latest Tailscale version\n- 📦 **Tiny Version Support** – Uses optimized tiny binaries to save space\n- 🗜️ **UPX Compression** – Further reduces binary size when needed\n- 🔒 **Tailscale SSH Ready** – Enables secure SSH access to the router via Tailscale\n- 🎯 **Version Selection** – Install specific Tailscale versions\n- 🔧 **Stateful Filtering** – Auto-configures for exit node compatibility\n- 🛡️ **Safe Restore** – Restore original firmware binaries if needed\n- ⚡ **Flexible Options** – Multiple flags for customized installations\n\n---\n\n## 📋 Requirements\n\n| Requirement | Details |\n|-------------|---------|\n| **Router** | GL.iNet router with firmware 4.x (including GL-BE9300 Flint 3) |\n| **Architecture** | arm64, armv7, mips, mipsle, or x86_64 |\n| **Free Space** | At least 15 MB (can be bypassed with `--ignore-free-space`) |\n\n\u003e ⚠️ **Please make sure, that you enabled Tailscale in the GL.iNet router settings before running this script!**\n\n---\n\n## 🚀 Quick Start\n\nRun the updater without cloning the repository:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh\n```\n\n\u003e ⚠️ **Important:** Do not run this script as a cron job! Manual execution is recommended.\n\n---\n\n## 🎛️ Arguments\n\nThe `update-tailscale.sh` script supports the following arguments:\n\n| Argument | Description |\n|----------|-------------|\n| `--ignore-free-space` | Bypasses the free space check. Use with caution on low-storage devices! |\n| `--force` | Skips all confirmation prompts and makes installation permanent. Ideal for unattended installations. |\n| `--force-upgrade` | Forces upgrade even if the current version is already up to date. Useful for reinstalling the same version. |\n| `--restore` | Restores original firmware binaries (`/usr/sbin/tailscaled` and `/usr/sbin/tailscale`). ⚠️ Does not restore config files! |\n| `--no-upx` | Skips UPX compression. Binaries will be larger but installation is faster. |\n| `--no-download` | Skips downloading binaries. Use pre-downloaded archive at `/tmp/tailscale.tar.gz`. |\n| `--no-tiny` | Uses full Tailscale binaries instead of tiny version. Not recommended for GL.iNet routers. |\n| `--select-release` | Displays available releases and lets you choose a specific version. ⚠️ Downgrading not officially supported! |\n| `--testing` | Uses prerelease/testing versions from the testing branch. ⚠️ Use at your own risk! May contain bugs or experimental features. |\n| `--ssh` | Enables Tailscale SSH feature after installation. |\n| `--log` | Shows timestamps in all log messages. Useful for debugging and tracking execution time. |\n| `--ascii` | Uses ASCII characters (`[OK]`, `[X]`, `[!]`, `[-\u003e]`) instead of emojis for compatibility with older terminals. |\n| `--help` | Displays help message with all available arguments. |\n\n---\n\n## 📚 Usage Examples\n\n### Standard Update\n\nUpdate to the latest stable release:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh\n```\n\n### Testing/Prerelease Versions\n\nInstall prerelease versions from the testing branch for early access to new features:\n\n```bash\nsh update-tailscale.sh --testing\n```\n\n\u003e ⚠️ **Warning:** Testing versions are experimental and may contain bugs or unstable features. Use at your own risk!\n\n### Select a Specific Version\n\nInstall a specific Tailscale version (useful if the latest version has issues):\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --select-release\n```\n\nThe script will display available releases for you to choose from.\n\n\u003e ⚠️ **Warning:** Downgrading Tailscale is not officially supported and may cause unexpected behavior.\n\n### Force Update (Unattended Installation)\n\nSkip all prompts and make the installation permanent:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --force\n```\n\nCombine with `--ignore-free-space` for devices with limited storage:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --force --ignore-free-space\n```\n\n### Restore Original Binaries\n\nRevert to the original firmware binaries:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --restore\n```\n\n\u003e ⚠️ **Caution:** This does not restore configuration files and may result in a broken installation.\n\n### Logging and Output Options\n\nEnable timestamps for debugging or tracking execution time:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --log\n```\n\nUse ASCII characters instead of emojis for compatibility with older terminals:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --ascii\n```\n\nCombine both options:\n\n```bash\nwget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh --log --ascii\n```\n\n---\n\n## 🔍 Key Features Explained\n\n### 🎯 Tailscale Stateful Filtering\n\nThe script automatically adds `--stateful-filtering=false` to the `gl_tailscale` script. This is required for proper exit node functionality on GL.iNet routers.\n\nThe modification is:\n- ✅ Applied automatically\n- ✅ Permanent (survives firmware upgrades)\n- ✅ No manual configuration needed\n\n### 🔐 Tailscale SSH Ready\n\nIf 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](https://tailscale.com/kb/1193/tailscale-ssh).\n\n\u003e ⚠️ **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.\n\n### 📦 Tiny-Tailscale\n\nBy default, the script uses optimized tiny binaries that:\n- 🔹 Significantly reduce storage footprint\n- 🔹 Maintain full functionality\n- 🔹 Skip UPX compression (already optimized)\n- 🔹 Are recommended for all GL.iNet routers\n\nUse `--no-tiny` if you need the full-sized binaries.\n\n### 🗜️ UPX Compression\n\nFor standard (non-tiny) binaries, UPX compression:\n- 🔹 Substantially reduces binary size\n- 🔹 Is recommended for storage-limited devices\n- 🔹 Requires `xz` (auto-installed if missing)\n- 🔹 Can be disabled with `--no-upx`\n\n---\n\n## 📸 Screencast\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"images/screencast.gif\" width=\"600\" alt=\"Tailscale Updater Screencast\" style=\"border-radius: 10px; margin: 20px 0;\"\u003e\n\n\u003c/div\u003e\n\n---\n\n## 💡 Getting Help\n\nNeed assistance or have questions?\n\n- 💬 [Join the discussion on GL.iNet Forum](https://forum.gl-inet.com/t/how-to-update-tailscale-on-arm64/37582) – Community support\n- 💬 [Join GL.iNet Discord](https://link.gl-inet.com/website-discord-support) – Real-time chat\n- 🐛 [Report issues on GitHub](https://github.com/Admonstrator/glinet-tailscale-updater/issues) – Bug reports and feature requests\n- 📧 Contact via forum private message – For private inquiries\n\n---\n\n## ⚠️ Disclaimer\n\nThis script is provided **as-is** without any warranty. Use it at your own risk.\n\nIt may potentially:\n- 🔥 Break your router, computer, or network\n- 🔥 Cause unexpected system behavior\n- 🔥 Even burn down your house (okay, probably not, but you get the idea)\n\n**You have been warned!**\n\nAlways read the documentation carefully and understand what a script does before running it.\n\n---\n\n## 👥 Contributors\n\nSpecial thanks to:\n\n- [lwbt](https://github.com/lwbt) – UPX compression \u0026 tiny-tailscale feature\n- [Aubermean](https://github.com/Aubermean) – Clarification of `--stateful-filtering=false` ([#1](https://github.com/Admonstrator/glinet-tailscale-updater/issues/1))\n- All the testers and feedback providers in the GL.iNet forum!\n- Copilot – Yeah, I am using AI to help write code. But I review and test everything thoroughly!\n\nWant to contribute? Pull requests are welcome!\n\n---\n\n## 📜 License\n\nThis project is licensed under the **MIT License** – see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n## 🧰 Part of the GL.iNet Toolbox\n\nThis project is part of a comprehensive collection of tools for GL.iNet routers.\n\n**Explore more tools and utilities:**\n\n[![GL.iNet Toolbox](https://img.shields.io/badge/🧰_GL.iNet_Toolbox-Explore_All_Tools-blue?style=for-the-badge)](https://github.com/Admonstrator/glinet-toolbox)\n\n*Discover AdGuard Home Updater, ACME Certificate Manager, and more community-driven projects!*\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ by [Admon](https://github.com/Admonstrator) for the GL.iNet Community**\n\n⭐ If you find this useful, please star the repository!\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n_Last updated: 2025-12-28_\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadmonstrator%2Fglinet-tailscale-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadmonstrator%2Fglinet-tailscale-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadmonstrator%2Fglinet-tailscale-updater/lists"}