Tailscale service add-on does not persist login across boots

  • Running LibreELEC 13 nightly 20260927 with the latest version of the Tailscale add-on, on a LattePanda IOTA. Running tailscale up or tailscale login manually fixes the broken service and allows pinging other nodes. After a reboot, Tailscale no longer works and requires another tailscale up (which, curiously, does not ask for a login, so the state is stored somewhere) or tailscale login (which does request a login).

    Logs from journalctl -u service.tailscale: https://paste.libreelec.tv/unbullying-brittani.log

    Any help is appreciated ^^. If any additional information is needed, let me know.

  • Still having the issue. Seems like adding

    Code
    ts_connect="true"

    to the ~/.kodi/addons/service.tailscale/bin/tailscale.start script before the if [ "$ts_connect" = "true" ]; then line fixes it. The "Enable" setting is definitely on in the UI, but it doesn't seem to actually be set in the script. Curiously, when I open the settings, change nothing, and click "Ok", it still says settings were changed and asks to restart the service.

    Regardless, I've decided to just move away from the Tailscale add-on and use a separate machine as a reverse proxy to my Jellyfin instance.

  • The tailscale add-on was largely developed by Claude (driven by me, who is not a software architect) over a long weekend at Kodi DevCon when lots of beer was drunk. I'm still amazed it works at all, so there are likely many opportunities for improvement :)

  • The tailscale add-on was largely developed by Claude (driven by me, who is not a software architect) over a long weekend at Kodi DevCon when lots of beer was drunk. I'm still amazed it works at all, so there are likely many opportunities for improvement :)

    Haha, fair enough. Thanks for the response. I'm taking a closer look and I don't think that it is an issue with the Tailscale addon, actually. I inserted a set after the oe_setup_addon call in the Tailscale script and all of the necessary variables show, but they're empty. Same behavior can be seen running oe_setup_addon service.tailscale; set outside of the script. It seems like the wrong xmlstarlet call is being triggered in oe_setup_addon. Someone had the same issue a few months ago, but with version 3 instead of 4: https://github.com/LibreELEC/LibreELEC.tv/pull/11721

    Relevant section of oe_setup_addon:

    Running the v2 / v3 call works fine for the v4 settings file:

    but if I run the wildcard call manually for the same settings file:

    Perhaps the switch case should be extended to 2|3|4 instead of 2|3? I'll take another look and make a pull request tomorrow.