Skip to content

更新日志

tailscale-manager 脚本的所有重要变更记录于此。版本号以 tailscale-manager.sh 中的 VERSION 字段为准。

v4.6.2 (2026-06-29)

  • LuCI 改为可选安装,新增 tailscale-manager luci install|remove|statusinstall --yes --luci 1
  • 统一 install、reinstall、self-update 流程中的 LuCI 状态处理

v4.6.1 (2026-06-09)

  • logsdiagnostics 增加 --maskinfo,用于隐藏自定义敏感字符串

v4.6.0 (2026-06-08)

  • 修复贪婪 sed 解析 JSON 的 bug:在 GitHub API 返回单行 JSON 时只提取最旧版本而非最新版本;受影响函数包括 list-small-versionsget-small-latest-versionget-official-latest-versiontailscale-update;改用 grep -oE + sed -E 两阶段提取 (#33)
  • 新增 API 冒烟测试 (tests/bats/smoke/),对真实上游端点做可达性与解析验证;CI 单独运行,已从 make test 中排除

v4.5.0 (2026-06-07)

  • 新增 tailscale-manager diagnostics(别名 doctor):一键生成完整排查报告(版本、设备/系统信息、安装与运行状态、依赖与 HTTPS 连通性检查、UCI 配置、最近日志),与 issue 模板字段一一对应,提交 issue 时可直接粘贴
  • 新增 tailscale-manager logs [n]:一次性查看管理器 / 服务 / 自动更新 / 系统(logread)日志的最近 n 行(默认 200),不必再逐个记忆路径
  • 交互菜单新增「Collect Diagnostics」,并把诊断报告同时保存到 /tmp/tailscale-diagnostics.txt
  • 完善日志覆盖:回滚、卸载、内存模式下载(download-only)、库文件引导等关键节点补齐日志;状态变更类命令(install/update/uninstall/…)在管理器日志中留下调用记录
  • LOG_FILE 现支持环境变量覆盖,可把管理器日志放到持久化目录,避免 /var/log(tmpfs)重启清空导致排查无据
  • issue 模板与故障排查文档改为推荐 diagnostics / logs 命令

v4.4.0 (2026-06-07)

  • 明确区分「更新 Tailscale 二进制」(updateauto-update)与「更新 管理器本身」(self-update);help 现按作用对象分组,两者不再混淆
  • 规范命令命名(破坏性变更):install-quietinstall --yessetup-firewallsetup-subnet-routinglist-versionslist-small-versions
  • 非交互参数统一为 --yesupdate --yesself-update --yes);auto-update 推荐使用 enable/disable/status(仍兼容旧的 on/off/1/0
  • UCI 配置保持不变,仅重命名了上述 CLI 命令

v4.3.0 (2026-06-07)

  • 大幅简化自更新:self-update 现在一步重装整个管理层(脚本、库、LuCI 界面),并保留 UCI 配置、节点状态和已装二进制;重复执行总是安全,也能修复损坏文件
  • 移除冗余的 sync-scripts 命令及内部的“托管文件同步/版本对账”逻辑,不再有反复出现的同步告警
  • 普通命令不再每次联网检查更新;可更新提醒改为只在交互式菜单和 LuCI 维护页出现,菜单新增“更新管理脚本”入口
  • 二进制自动更新(定时任务)保持不变

v4.2.0 (2026-06-07)

  • 新增 tailscale-manager --version-v)直接查看版本;help--version 等只读命令不再联网检查更新 (#26)
  • LuCI 现在能识别手动安装在 /opt/tailscale 等位置的 Tailscale,不再只认本脚本安装的版本 (#26)
  • 托管文件同步失败时给出可操作的提示(如何重试、检查磁盘与网络),不再只是一句模糊告警 (#26)
  • 未知命令直接报错退出,不再先联网检查更新(此前任意未知输入都会触发更新检查,容易让人误以为命令有效)(#26)

v4.1.3 (2026-06-04)

  • 修复 extra_env 日志中键名重复打印的问题(如 GOMIPS=GOMIPS=softfloat 应为 GOMIPS=softfloat);实际 procd 注入无误,仅日志显示受影响 (#14)

v4.1.2 (2026-06-04)

  • init 脚本启动注入 extra_env / extra_args 时输出日志,便于在 /var/log/tailscale.log 和 syslog 中确认自定义调优(如 GOMIPSGOMEMLIMITGODEBUG)已生效 (#14)

v4.1.1 (2026-06-04)

  • 新增 UCI list extra_envlist extra_args,用于注入自定义 procd 环境变量与 tailscaled 启动参数,并在管理脚本升级时保留(#14)
  • 重装时不再覆盖用户改过的 port / net_mode / proxy_listen / update_cron / log_stdout / log_stderr;仅刷新安装期间用户主动选择的 storage_mode / bin_dir / download_source / auto_update
  • extra_args 中已提供 --socks5-server--outbound-http-proxy-listen 时,userspace 模式不再追加同名默认参数,避免出现重复 listener
  • 详细用法见配置参考

v4.1.0 (2026-06-03)

  • 版本号晋升为 minor,归并 v4.0.12–v4.0.15 期间的修复(MIPS 大端检测、小体积源校验在紧凑 JSON 下的解析、BusyBox awk 兼容、自更新自动 re-exec),除 VERSION 字段外无代码改动

v4.0.15 (2026-06-03)

  • 自更新成功后自动 exec 进新版本管理脚本,避免当前会话继续使用内存里的旧代码(用户在 issue #14 反馈:"Y 升级到 v4.0.13 但仍显示 v4.0.12,重新启动才生效")
  • 通过 TAILSCALE_MANAGER_REEXEC 环境变量标记重入,防止异常情况下的循环 exec,并跳过新版本启动时的版本检查回环
  • 新版本的二进制不可执行或 exec 失败时回退到内存中的旧代码,并打印警告,保留旧的可观测行为

v4.0.14 (2026-06-03)

  • 修复 v4.0.13 在 BusyBox awk 上 get_small_checksum() 直接报错并跳过校验的问题:BusyBox awk 把 *{ 视为 {n,m} 区间量词起始,原正则 },[[:space:]]*{ 触发 "Invalid contents of {}" / "Unmatched {";改用字符类 [}],[[:space:]]*[{] 规避

v4.0.13 (2026-06-03)

  • 修复使用小体积下载源时,当 GitHub API 响应被压成紧凑单行 JSON 时(部分网络/客户端会出现),除字母序末尾架构(当前为 mipsle)以外的架构 SHA-256 校验必然失败的问题 (#14)
  • 根因:get_small_checksum() 假设 API 返回多行 pretty-printed JSON,sed 范围匹配在紧凑单行下退化后,贪婪 .* 捕获到的是整行最后一个 sha256,即字母序末尾 asset 的 digest
  • 解析前先按 },{ 边界拆分,使每个 asset 独占一行,确保抓到的就是目标文件的 digest
  • 新增针对真实紧凑 JSON 形态的回归测试,覆盖首/中/末/缺失等情况

v4.0.12 (2026-06-01)

  • 修复 MIPS 大端路由器(如 Atheros/QCA)被误判为小端导致下载错误二进制、启动崩溃的问题 (#14)
  • 新增 mipsel/mips64eluname -m 分支(Linux 内核已区分字节序)
  • 引入 get_openwrt_arch() 辅助函数,优先读取 /etc/openwrt_releaseDISTRIB_ARCH(覆盖所有 OpenWrt 版本及衍生版),其次回退至 /etc/apk/arch/etc/opkg.conf
  • 移除不可靠的 hexdump -o 字节序检测,所有检测方法均失败时默认大端
  • 新增 MIPS 字节序检测与 OpenWrt 架构源优先级的测试

v4.0.11 (2026-05-30)

  • 移除管理脚本与 LuCI 的自动更新(cron)功能,脚本和界面更新改为仅手动触发;Tailscale 二进制自动更新保留
  • 升级时自动清理遗留的脚本自动更新定时任务与 /usr/bin/tailscale-script-update

v4.0.10 (2026-05-26)

  • init 脚本启动时轮询等待 tailscaled 二进制最多 30 秒,适配持久化模式下外部存储延迟挂载的场景
  • 等待超时后提示用户检查挂载配置

v4.0.9 (2026-05-25)

  • 新增可配置的持久化二进制目录(--bin-dir),支持将二进制安装到外部存储(如 USB),适用于内置闪存有限的设备
  • 安装时新增交互式 bin-dir 选择提示
  • 校验 bin_dir 必须为绝对路径且位于持久化文件系统,卸载时正确清理自定义目录下的文件
  • JSON 状态查询回退时正确使用 UCI 配置的 bin_dir
  • 修复非交互式安装时 auto_update 默认值未正确设置为关闭的问题

v4.0.8 (2026-04-19)

  • 将脚本更新切换为管理包

v4.0.7 (2026-04-19)

  • 新增下载校验和验证,确保二进制文件完整性
  • 新增更新回滚机制:下载失败或服务启动异常时自动恢复原有版本,并支持手动回滚命令
  • 重构 rpcd 桥接脚本,解耦对入口脚本的依赖,统一各下载源路径解析逻辑
  • 提取 JSON 辅助函数为共享模块,减少重复代码
  • 拆分测试套件为独立模块,支持按模块运行测试
  • 修正 small 二进制体积描述(约 8-10MB)

v4.0.6 (2026-04-12)

  • 重命名 tun-modenet-mode,更准确反映网络模式选择(TUN / userspace),UCI 配置自动迁移
  • 新增项目路线图文档

v4.0.5 (2026-04-11)

  • 修正官方二进制体积引用
  • 修正文档站点 Logo 路径

v4.0.4 (2026-04-10)

  • 修复官方二进制体积显示不正确的问题
  • 修复多架构环境下未正确选择最新版本的问题
  • 修复脚本自更新后路径丢失的问题
  • 托管文件同步失败时不再错误地标记为已完成

v4.0.3 (2026-04-10)

  • LuCI 维护页面全面重构,更新操作独立分区,操作更清晰
  • 新增日志查看标签页
  • 依赖检查改为非阻塞方式,逐包安装,避免整体卡住

v4.0.2 (2026-04-10)

  • 整理运行时目录结构,统一 TUN 相关术语和路径

v4.0.1 (2026-04-09)

  • 精简 LuCI 管理页面,修复托管文件在操作后被覆盖的问题

v4.0.0 (2026-04-09)

  • LuCI 后端迁移至 rpcd exec 桥接方式,不再依赖 controller 直接调用
  • 核心脚本模块化重构,运行时库拆分为独立文件
  • 修复 LuCI 版本显示和管理页面的多个问题

v3.1.0 (2026-04-09)

  • 新增 LuCI 图形管理界面,支持状态查看、启停控制、安装卸载等操作
  • 新增 shell CI 检查
  • 修复托管脚本同步问题

v3.0.2 (2026-03-11)

  • userspace 网络模式下支持配置代理监听范围(仅本地 / 全局)

v3.0.1 (2026-03-11)

  • 新增 SOCKS5 和 HTTP 代理监听,适用于 userspace 网络模式

v3.0.0 (2026-03-11)

  • 新增 userspace 网络模式支持,适用于无内核 TUN 的环境
  • 改进服务启动检测和状态输出
  • 重构托管脚本同步逻辑

v2.3.2 (2026-03-11)

  • 新增脚本自更新功能,支持手动检查和强制更新

v2.3.0 (2026-03-08)

  • 内部版本调整,无面向用户的变更

v2.2.1 (2026-01-28)

  • 新增 Tailscale 自动更新配置管理
  • 修复更新检查可能导致脚本挂起的问题

v2.2.0 (2026-01-20)

  • 新增子网路由配置和移除功能,自动管理网络接口和防火墙规则
  • 新增菜单中的重启选项
  • MIPS 架构默认使用 softfloat,并支持版本降级
  • 改进 MIPS 字节序检测和 BusyBox 环境下的 wget 兼容性

v2.1.0 (2025-12-31)

  • 内部版本调整,无面向用户的变更

v2.0.0 (2025-12-24)

  • 首次发布