tailscale-qpkg icon indicating copy to clipboard operation
tailscale-qpkg copied to clipboard

QTS4 compatibility

Open DocEmmetBrown opened this issue 2 years ago • 37 comments

Hi Folks,

I used to update my qnap-412 NAS with the Tailscale_*_arm-x19.qpkg packages, and they don't seem to be available anymore with the new building system. Is there a chance that I can find them somewhere ? or do I have to build them myself ?

Thanks a lot for this package, and also for all the hard work in Tailscale, the product is amazing !

DocEmmetBrown avatar Jan 19 '23 18:01 DocEmmetBrown

The latest stable release is https://github.com/tailscale/tailscale-qpkg/releases/tag/v1.34.1, which has x19 packages available.

You may find other binaries if you look for them, which are marked as Pre-release and not intended for use. Those are aimed at getting into the QNAP App Center, which has its own notion of packaging. For example: x19, x31, and x41 all use exactly the same ARMv7 binary. The Tailscale_1.34.2-1_arm-x41.qpkg gets bundled as the ARMv7 package which all three use.

DentonGentry avatar Jan 20 '23 05:01 DentonGentry

Thanks for your message @DentonGentry. I tried with the Tailscale_1.34.2-1_arm-x41.qpkg on my hardware, and it fails, with message Failed to install Tailscale 1.34.2-1. Installation package is incompatible. Use the correct package. . It's OK with version 1.34.1, with the x19 package Do you think it's worth investigating ? and if yes, what data can I collect to help the investigation ?

My NAS is a TS-412 ( and not 420 as I mistakenly mentioned in my first message), with QNAP OS version 4.3.3.2211

DocEmmetBrown avatar Jan 20 '23 09:01 DocEmmetBrown

from my reading of the old GitHub action builder code , it looks like the x19 package is actually the only ARMv5. That would explain why it doesn't install on my super old NAS.

DocEmmetBrown avatar Jan 20 '23 17:01 DocEmmetBrown

Next week we're expecting to release 1.36.0, so a new qnap-* package will appear. I'll include the x19 build this time instead of x41, and expect to use that for the QNAP App Center ARM32 build.

It is unfortunate that we only get to deliver one ARM32 binary, we don't have a way to deliver one ARMv5 and one ARMv7.

DentonGentry avatar Jan 20 '23 17:01 DentonGentry

Thanks @DentonGentry. Don't hesitate to ping me if I can be any helpful for testing things on very old hardware ;)

DocEmmetBrown avatar Jan 20 '23 17:01 DocEmmetBrown

https://github.com/tailscale/tailscale-qpkg/releases/tag/qnap-1.36.0 includes an x19 binary.

DentonGentry avatar Jan 25 '23 23:01 DentonGentry

Hey @DentonGentry , I tried to install it, but get the [App Center] Failed to install Tailscale. Upgrade QTS to 5.0.0 or a newer compatible version. message. Any chance that you're also able to package it for QTS 4.X ?

DocEmmetBrown avatar Jan 26 '23 10:01 DocEmmetBrown

Any chance that you're also able to package it for QTS 4.X ?

We tried, by purchasing a refurbished TS-231K which arrived with QTS 4.x. Without us ever telling it to do so, it updated itself to QTS5 overnight one night. QNAP is apparently pushing to get devices onto QTS5.

At this point I don't expect to be able to support QTS4. We do not have a way to develop for it nor test it.

DentonGentry avatar Jan 26 '23 13:01 DentonGentry

At this point I don't expect to be able to support QTS4. We do not have a way to develop for it nor test it.

That's very unfortunate, as some (very) "old" Qnap devices can't migrate to QTS5. :'( Any chance that you could download the old firmware from this page, and revert it to QTS 4 ? My understanding is that models TS-X3X, X5X, and X7X can update to QTS5. TS-X1X and X2X can't.

DocEmmetBrown avatar Jan 26 '23 14:01 DocEmmetBrown

Any chance that you could download the old firmware from this page, and revert it to QTS 4 ?

I understand that you want QTS4 support. We did try. At this point I do not expect to put more effort into it. You are welcome to continue to use the CLI version https://github.com/tailscale/tailscale-qpkg/releases/tag/v1.34.1, which will continue to interoperate with Tailscale updates for the foreseeable future.

DentonGentry avatar Jan 27 '23 04:01 DentonGentry

Thanks for your answer @DentonGentry . I'm sad but I can understand. Is there and easy-ish way for me to build it from source if I want to have the updated tailscale code ? Thanks again

DocEmmetBrown avatar Jan 27 '23 14:01 DocEmmetBrown

Is there and easy-ish way for me to build it from source

git clone this repository and run make pkg on a Linux machine which has docker available. It will fetch the tailscale and tailscaled binaries from pkgs.tailscale.com, and create a set of packages in out/tailscale-<version>/pkg

If you want to build the tailscale and tailscaled binaries you can, it just isn't automated. You'd git clone https://github.com/tailscale/tailscale on a Linux machine and run GOARCH=arm go build ./cmd/tailscale and GOARCH=arm go build ./cmd/tailscaled Then copy the new binaries into this repository's out/tailscale-<version>/ and run make pkg again. It won't download the binaries from pkgs.tailscale.com if they are already present.

DentonGentry avatar Jan 27 '23 14:01 DentonGentry

Hey @DentonGentry , FWIW, after running :

sed -i -e  's/QTS_MINI_VERSION=".*"/QTS_MINI_VERSION="4.0.0"/' ./Tailscale/qpkg.cfg.in

and

make pkg

the Tailscale_1.36.0-1_arm-x19.qpkg can be installed on my TS-412, and seems to be working like a charm, including the webUI for the login page. 🥳

DocEmmetBrown avatar Jan 28 '23 14:01 DocEmmetBrown

QTS4 would also require the QVPN package be installed, to create /dev/net/tun. Presumably you already had it. QTS5 has a /dev/net/tun device by default without needing to install QVPN.

To support QTS4 we have to add QVPN as a package dependency, which QTS5 users would also have to install it as I know of no way for a package to express different dependencies based on QTS version.

DentonGentry avatar Jan 28 '23 15:01 DentonGentry

Hej @DocEmmetBrown,

FWIW, the binaries (well, executables) still work. A workaround is to extract the executables tailscaled and tailscale from the qpkg package, and replace the older, already installed version of them with the newer versions. That has worked for my trusty old TS-112P.


Prerequisites:

  • a Linux installation
  • SSH access to the QNAP.

  1. Download the current Tailscale_..._x19.qpkg:

     curl -sSLO $(curl -s https://api.github.com/repos/tailscale/tailscale-qpkg/releases/latest | awk '/https.*x19.qpkg"/{gsub("\"",""); print $2}')
    
  2. Clone the extraction scripts from Max Boehm:

     git clone https://github.com/max-boehm/qnap-utils.git
    
  3. Unpack the qpkg package: The tailscale and tailscaled executables will be available in the folder ./Tailscale*/data.

     ./qnap-utils/extract_qpkg.sh ./Tailscale*.qpkg
    
  4. Copy the executables with SSH to the QNAP and overwrite the existing files:

     scp Tailscale*/data/tailscale* <user>@<server>:/share/HDA_DATA/.qpkg/Tailscale/
    
  5. Restart the Tailscale app in the QNAP App Center, or reboot the QNAP.


Hope that helps.

QuantumLibet avatar May 01 '23 12:05 QuantumLibet

Thanks @QuantumLibet .

I continue building the packages from source, which is super quick, and it works perfectly ;) But thanks for your solution that will probably be useful sooner rather than later !

DocEmmetBrown avatar May 03 '23 16:05 DocEmmetBrown

If there are any examples of packages which can express a different set of dependencies for QTS4 versus QTS5, we would do that.

We'd still need to acquire a QTS4 system to be able to test and develop, and prevent it from auto-updating to QTS5, but we can probably do that.

DentonGentry avatar May 03 '23 23:05 DentonGentry

If there are any examples of packages which can express a different set of dependencies for QTS4 versus QTS5, we would do that.

Hi @DentonGentry , unfortunately I don't think that such thing would be possible natively. The least crappy solution that I can think of right now would be to have a specific build process for arm-x19 with a specific qpkg.cfg.in file, that would only build for QTS4, with the required set of dependencies.

DocEmmetBrown avatar May 05 '23 16:05 DocEmmetBrown

Hey @DentonGentry , FWIW, after running :

sed -i -e  's/QTS_MINI_VERSION=".*"/QTS_MINI_VERSION="4.0.0"/' ./Tailscale/qpkg.cfg.in

and

make pkg

the Tailscale_1.36.0-1_arm-x19.qpkg can be installed on my TS-412, and seems to be working like a charm, including the webUI for the login page. 🥳

Hi @DocEmmetBrown , I followed your comment to build pkg for my qnap TS-412 on ubuntu18.04. I got an error shown below. I am wondering if you have met this error before. Thank you.

` tailscale_1.36.0_arm64/

      tailscale_1.36.0_arm64/tailscale
    
      tailscale_1.36.0_arm64/tailscaled
    
      tailscale_1.36.0_arm64/systemd/
    
      tailscale_1.36.0_arm64/systemd/tailscaled.defaults
    
      tailscale_1.36.0_arm64/systemd/tailscaled.service
    
      docker run --rm \

      -e TSTAG=1.36.0 \

      -e QNAPTAG=1 \

      -v /home/hans/Downloads/tailscale-qpkg-1.36.0/out/tailscale-1.36.0:/out \

      -v /home/hans/Downloads/tailscale-qpkg-1.36.0/Tailscale:/Tailscale \

      -v /home/hans/Downloads/tailscale-qpkg-1.36.0/build/build-qpkg.sh:/build-qpkg.sh \

      build.tailscale.io/qdk:latest \

      /build-qpkg.sh

      Unable to find image 'build.tailscale.io/qdk:latest' locally
    
      docker: Error response from daemon: Get https://build.tailscale.io/v2/: dial tcp: lookup build.tailscale.io: no such host.
    
      See 'docker run --help'.
    
      Makefile:17: recipe for target 'pkg' failed
    
      make: *** [pkg] Error 125

`

HansRen1024 avatar May 11 '23 12:05 HansRen1024

Hi @HansRen1024 , I think I recall this bug 🤔

you might need to run make build-qdk-container on the first time, to set everything up properly. and then your make pkg should (hopefully) work 🤞

DocEmmetBrown avatar May 11 '23 14:05 DocEmmetBrown

make build-qdk-container

@DocEmmetBrown Brilliant! I have had them run properly. Thank you, Emmet!

HansRen1024 avatar May 12 '23 10:05 HansRen1024

@HansRen1024 Did you have a previous version of Tailscale installed on your TS-412? Did the package you created also include the QVPN package necessary for the QTS4 version?

I am asking, since it was my understanding, that the current source does not build the QVPN package, which QTS4 needs, but QTS5 does not.

QuantumLibet avatar May 12 '23 19:05 QuantumLibet

@QuantumLibet : "QVPN Service" is available from the QNAP App Center, even with QTS version 4.* . It does not have to be built AFAIU.

DocEmmetBrown avatar May 13 '23 16:05 DocEmmetBrown

We tried, by purchasing a refurbished TS-231K which arrived with QTS 4.x. Without us ever telling it to do so, it updated itself to QTS5 overnight one night.

Hey Denton, did you manage to get TailScale working on your TS-231K running QTS 5? The available download is currently not compatible. TS-231K uses an AnnapurnaLabs Alpine AL214 32-bit ARM CPU.

daxliniere avatar Jan 17 '24 20:01 daxliniere

Hi @DentonGentry,

v1.34.1 does install on an old QNAP TS870 Pro with QTS 4.3.6.2665, and I've also updated it successfully extracting the latest qpkg and overwriting the files.

However, 1.34.1 does not create an app icon in QTS, nor a web interface. I've managed to make it run through SSH with the following:

./tailscaled
./tailscale up

but it would be nice to have a web interface :)

Also, the Tailscale.sh script always exit with Tailscale is disabled.

aith85 avatar Apr 29 '24 18:04 aith85

I have an old QNAP TS-231 with firmware 4.3.6.2665 and I was able to build the latest release 1.58.2 as suggested here https://github.com/tailscale/tailscale-qpkg/issues/72#issuecomment-1544110397 It's running fine with an icon in the menu and launches a web interface. Only downside is that the exit node feature does not work.

salimhb avatar Apr 30 '24 09:04 salimhb

Hi @salimhb

Thanks for confirming.

I did try to git clone and build the latest version, but it says it wants go version 1.23, but I only have 1.22 (which I understand it's the latest one). I'm completely new to linux and build, so I did my best googling through it but I'm stuck at the moment. I'll give it another try later.

Did someone managed to build a recent version for QNAP with x86_64 intel cpu (EG: i3-3220) in qpkg format with working web interface?

aith85 avatar Apr 30 '24 15:04 aith85

The build should run in docker. I manage to run it and it creates packages for all CPUs.

sed -i -e  's/QTS_MINI_VERSION=".*"/QTS_MINI_VERSION="4.0.0"/' ./Tailscale/qpkg.cfg.in

make build-qdk-container
make pkg

salimhb avatar Apr 30 '24 16:04 salimhb

Sorry but I'm not sure what you mean. Should I build the qpkg from inside the docker with TS installed? I have a Tailscale container running already, but I'd like to install Tailscale on the nas to have it accessible via a Tailscale IP (and not by routes).

aith85 avatar May 01 '24 13:05 aith85

I'm running the compile on my desktop using docker and then simply installing the package in QNAP. When the build works, it generates Packages for all architectures. Which one do you need?

Tailscale_1.58.2-1_arm-x19.qpkg
Tailscale_1.58.2-1_arm-x19.qpkg.md5
Tailscale_1.58.2-1_arm-x31.qpkg
Tailscale_1.58.2-1_arm-x31.qpkg.md5
Tailscale_1.58.2-1_arm-x41.qpkg
Tailscale_1.58.2-1_arm-x41.qpkg.md5
Tailscale_1.58.2-1_arm_64.qpkg
Tailscale_1.58.2-1_arm_64.qpkg.md5
Tailscale_1.58.2-1_x86.qpkg
Tailscale_1.58.2-1_x86.qpkg.md5
Tailscale_1.58.2-1_x86_64.qpkg
Tailscale_1.58.2-1_x86_64.qpkg.md5
Tailscale_1.58.2-1_x86_64.zip
Tailscale_1.58.2-1_x86_ce53xx.qpkg
Tailscale_1.58.2-1_x86_ce53xx.qpkg.md5

salimhb avatar May 02 '24 07:05 salimhb