Asus-Merlin Tailscale Installer, Configurator and Monitor (Swapless Edition)
Original Project: This is a fork of the amazing TAILMON project originally created by ViktorJp. All credit for the core implementation and terminal UI goes to the original author.
TAILMON ZER0 was created to explicitly support Asuswrt-Merlin routers running without swap space (e.g. strict 512MB RAM limits) which natively causes Go-based tailscaled binaries to crash with Segmentation fault on startup.
Key Changes from Upstream:
- Swapless Compatibility: Allows Tailscale to run on routers without a swap file by dynamically managing system memory requirements. It respects your setup—whether you use a swap file or not, the script adapts accordingly.
- Lower Memory Footprint: Aggressively limits background memory usage to help prevent Tailscale from exhausting your router's RAM.
- Reduced Flash Wear: Moves temporary downloads and tracking files to the RAM disk to minimize writes to the router's internal storage (
/jffs/). - Stable Execution Flow: Replaced fragmented process restarts with clean function calls in the setup menus. This eliminates screen flashing and prevents the wizard from accidentally skipping steps.
- Codebase Modernization: Split the original 4,500-line monolithic script into organized, modular files for easier maintenance, and configured diagnostics to correctly support Asuswrt's
ashshell. - Immediate Execution: Adds a global shortcut during installation so you can type
tailmon-zer0to launch the menu right away without needing to log out. - Cleaner Uninstallation: The uninstaller has been updated to restore all original system settings and remove leftover files more reliably.
v0.2.1 (Beta-to-Main Merge)
- SIGBUS Crash Fix: Injected
GODEBUG=tlsmlkem=0to prevent fatal memory alignment crashes on 32-bit ARM routers running Go 1.24+. - Watchdog Race Fix: Changed keepalive logic to monitor process PID rather than socket status, eliminating false-positive reboot loops during initialization.
- Architectural Rewrite: Transitioned the monolithic 4,500-line script into a maintainable modular
src/component system, and fixed 0-second UI screen flashing.
To install TAILMON ZER0 via SSH on your Asuswrt-Merlin router, simply run:
curl --silent --retry 3 "https://raw.githubusercontent.com/underd0se/TAILMON-Zero/main/tailmon-zero.sh" -o "/jffs/scripts/tailmon-zero.sh" && chmod 755 "/jffs/scripts/tailmon-zero.sh" && sh /jffs/scripts/tailmon-zero.shNote on Migration: TAILMON and TAILMON ZER0 cannot run alongside each other. If you already have the original TAILMON installed, the setup process will automatically detect it and prompt you to cleanly remove it before proceeding. All necessary memory management adaptations will then be applied for you.
If you ever choose to completely uninstall TAILMON ZER0, all modified router memory management settings (such as overcommit bypass rules) will be cleanly reverted back to their original system defaults.
(For support and discussion regarding the original upstream project, visit the SNBForums Thread).