Can we have support for Tailscale? #26

Open
opened 2026-02-20 08:19:23 -05:00 by deekerman · 9 comments
Owner

Originally created by @lwbt on GitHub (Jan 7, 2025).

This is not intended to be a request for a perfect integration into the UI. Just getting client and server binary to run would be sufficient for now, but it seems there are some problems (is CONFIG_TUN enabled in your kernel? modprobe tunfailed with:).

#  uname -a
Linux JetKVM 5.10.160 #1 Sun Oct 20 20:41:29 CEST 2024 armv7l GNU/Linux

#  cat /version 
0.2.0

#  cat /proc/cpuinfo 
processor	: 0
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 48.00
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 5

Hardware	: Rockchip (Device Tree)
Revision	: 0000
Serial		: d7a1a831616f5834

#  ./tailscaled
logtail started
Program starting: v1.78.1-tc80eb698d, Go 1.23.4: []string{"./tailscaled"}
LogID: 633486cc3b03fa21f293c2a97ef4e62cf84c411818e4a668833d5f1a56015b6e
logpolicy: using system state directory "/var/lib/tailscale"
logpolicy.ConfigFromFile /var/lib/tailscale/tailscaled-linux-arm.log.conf: open /var/lib/tailscale/tailscaled-linux-arm.log.conf: no such file or directory
logpolicy.Config.Validate for /var/lib/tailscale/tailscaled-linux-arm.log.conf: config is nil
dns: [rc=unknown ret=direct]
dns: using "direct" mode
dns: using *dns.directManager
linuxfw: clear iptables: exec: "iptables": executable file not found in $PATH
linuxfw: clear ip6tables: exec: "ip6tables": executable file not found in $PATH
cleanup: list tables: socket: protocol not supported
wgengine.NewUserspaceEngine(tun "tailscale0") ...
Linux kernel version: 5.10.160
is CONFIG_TUN enabled in your kernel? `modprobe tun` failed with: 
wgengine.NewUserspaceEngine(tun "tailscale0") error: tstun.New("tailscale0"): CreateTUN("tailscale0") failed; /dev/net/tun does not exist
flushing log.
logger closing down
getLocalBackend error: createEngine: tstun.New("tailscale0"): CreateTUN("tailscale0") failed; /dev/net/tun does not exist
Originally created by @lwbt on GitHub (Jan 7, 2025). This is not intended to be a request for a perfect integration into the UI. Just getting client and server binary to run would be sufficient for now, but it seems there are some problems (`is CONFIG_TUN enabled in your kernel? `modprobe tun` failed with: `). ```bash # uname -a Linux JetKVM 5.10.160 #1 Sun Oct 20 20:41:29 CEST 2024 armv7l GNU/Linux # cat /version 0.2.0 # cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 48.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : Rockchip (Device Tree) Revision : 0000 Serial : d7a1a831616f5834 # ./tailscaled logtail started Program starting: v1.78.1-tc80eb698d, Go 1.23.4: []string{"./tailscaled"} LogID: 633486cc3b03fa21f293c2a97ef4e62cf84c411818e4a668833d5f1a56015b6e logpolicy: using system state directory "/var/lib/tailscale" logpolicy.ConfigFromFile /var/lib/tailscale/tailscaled-linux-arm.log.conf: open /var/lib/tailscale/tailscaled-linux-arm.log.conf: no such file or directory logpolicy.Config.Validate for /var/lib/tailscale/tailscaled-linux-arm.log.conf: config is nil dns: [rc=unknown ret=direct] dns: using "direct" mode dns: using *dns.directManager linuxfw: clear iptables: exec: "iptables": executable file not found in $PATH linuxfw: clear ip6tables: exec: "ip6tables": executable file not found in $PATH cleanup: list tables: socket: protocol not supported wgengine.NewUserspaceEngine(tun "tailscale0") ... Linux kernel version: 5.10.160 is CONFIG_TUN enabled in your kernel? `modprobe tun` failed with: wgengine.NewUserspaceEngine(tun "tailscale0") error: tstun.New("tailscale0"): CreateTUN("tailscale0") failed; /dev/net/tun does not exist flushing log. logger closing down getLocalBackend error: createEngine: tstun.New("tailscale0"): CreateTUN("tailscale0") failed; /dev/net/tun does not exist ```
Author
Owner

@Nevexo commented on GitHub (Jan 7, 2025):

To run it manually follow the guide linked from the FAQ. This uses the userspace TUN driver, because, as you noted, the TUN driver is not in the kernel.

Once plugin-system is upstreamed (https://github.com/jetkvm/kvm/pull/10) you'll be able to use https://github.com/tutman96/jetkvm-plugin-tailscale via that.

You can install my tree at tag jetkvm-next-5 which has the latest version of plugin-system merged, then you can install the plugin as above, if you don't want to do the manual installation detailed in the Medium post.

@Nevexo commented on GitHub (Jan 7, 2025): To run it manually follow the guide linked [from the FAQ](https://jetkvm.com/docs/getting-started/faq#does-it-come-with-tailscale). This uses the userspace TUN driver, because, as you noted, the TUN driver is not in the kernel. Once `plugin-system` is upstreamed (https://github.com/jetkvm/kvm/pull/10) you'll be able to use https://github.com/tutman96/jetkvm-plugin-tailscale via that. You can install my tree at tag [jetkvm-next-5](https://github.com/Nevexo/jetkvm-kvm/releases/tag/next-5) which has the latest version of `plugin-system` merged, then you can install the plugin as above, if you don't want to do the manual installation detailed in the Medium post.
Author
Owner

@lwbt commented on GitHub (Jan 7, 2025):

Oh this plugin uses tsnet? Exciting!

Here is a brief summary of what I did so far:

wget https://github.com/Nevexo/jetkvm-kvm/releases/download/next-5/jetkvm_app

# Not sure if this is the intended way, scp and rsync don't seem to be available
dbclient root@jetkvm_ip "cat > /root/jetkvm_app_next" < 'jetkvm_app'

ssh jetkvm

# # Connected to JetKVM

# cp /data/jetkvm/bin/jetkvm_app .
# cp jetkvm_app_next  /data/jetkvm/bin/jetkvm_app
# reboot

# # JetKVM disconnects

git clone https://github.com/tutman96/jetkvm-plugin-tailscale.git && cd jetkvm-plugin-tailscale/
GOOS=linux GOARCH=arm GOARM=7 go build .
...
tar -czvf tailscale.tar.gz manifest.json jetkvm-plugin-tailscale

Then upload the plugin and authenticate with Tailscale.

I can see the device now in my Tailscale console appearing as online.

Plugin configuration coming soon

I guess that's as far as I can get today?

Something like tailscale serve and others are probably not ready yet because I can't reach the device on my Tailnet through HTTP, HTTPS or SSH.

But very exciting so far!


Also super neat and tidy compared to the competitor. 👍

@lwbt commented on GitHub (Jan 7, 2025): Oh this plugin uses [tsnet](https://tailscale.com/blog/tsnet-virtual-private-services)? Exciting! Here is a brief summary of what I did so far: ```bash wget https://github.com/Nevexo/jetkvm-kvm/releases/download/next-5/jetkvm_app # Not sure if this is the intended way, scp and rsync don't seem to be available dbclient root@jetkvm_ip "cat > /root/jetkvm_app_next" < 'jetkvm_app' ssh jetkvm # # Connected to JetKVM # cp /data/jetkvm/bin/jetkvm_app . # cp jetkvm_app_next /data/jetkvm/bin/jetkvm_app # reboot # # JetKVM disconnects git clone https://github.com/tutman96/jetkvm-plugin-tailscale.git && cd jetkvm-plugin-tailscale/ GOOS=linux GOARCH=arm GOARM=7 go build . ... tar -czvf tailscale.tar.gz manifest.json jetkvm-plugin-tailscale ``` Then upload the plugin and authenticate with Tailscale. I can see the device now in my Tailscale console appearing as online. > Plugin configuration coming soon I guess that's as far as I can get today? Something like `tailscale serve` and others are probably not ready yet because I can't reach the device on my Tailnet through HTTP, HTTPS or SSH. But very exciting so far! --- Also super neat and tidy compared to the competitor. :+1:
Author
Owner

@Nevexo commented on GitHub (Jan 7, 2025):

scp and rsync don't seem to be available

They are not available in the buildroot image, that's why dev_deploy.sh (and next_deploy fwiw) cats the binary over SSH.

Everything else is good, @tutman96 will likely continue with plugin config work once the initial concept is approved and/or upstreamed.

Not sure on not being able to access it, tutman may be able to weigh in, I'm not sure how far he got with the TS plugin.

Glad you got jetkvm-next working though :)

@Nevexo commented on GitHub (Jan 7, 2025): > scp and rsync don't seem to be available They are not available in the buildroot image, that's why dev_deploy.sh (and next_deploy fwiw) cats the binary over SSH. Everything else is good, @tutman96 will likely continue with plugin config work once the initial concept is approved and/or upstreamed. Not sure on not being able to access it, tutman may be able to weigh in, I'm not sure how far he got with the TS plugin. Glad you got jetkvm-next working though :)
Author
Owner

@tutman96 commented on GitHub (Jan 7, 2025):

Yup, still a bunch of code left to write to do http and https through the tailnet and eventually exposing a TURN server to forward the webrtc connection over the tailnet as well. Glad to see it worked for you!

@tutman96 commented on GitHub (Jan 7, 2025): Yup, still a bunch of code left to write to do http and https through the tailnet and eventually exposing a TURN server to forward the webrtc connection over the tailnet as well. Glad to see it worked for you!
Author
Owner

@n8ur commented on GitHub (Jan 8, 2025):

Just a comment that following tutman96's Medium post, I can connect to the JetKVM but get a video connection failure. I'm really looking forward to tailscale integration, so adding my encouragement to any efforts to getting there.

@n8ur commented on GitHub (Jan 8, 2025): Just a comment that following tutman96's Medium post, I can connect to the JetKVM but get a video connection failure. I'm really looking forward to tailscale integration, so adding my encouragement to any efforts to getting there.
Author
Owner

@shayaansiddiqui commented on GitHub (Feb 22, 2025):

Has anyone gotten tailscale? the medium article says to use curl to download the package but curl is not installed

@shayaansiddiqui commented on GitHub (Feb 22, 2025): Has anyone gotten tailscale? the medium article says to use curl to download the package but curl is not installed
Author
Owner

@lwbt commented on GitHub (Feb 22, 2025):

the medium article says to use curl to download the package but curl is not installed

Download it on your desktop and use dbclient to copy to your JetKVM host as I have demonstrated above. This is the only way I know at the moment.

You could compile your own system image that includes more tools, but from the point of view of system hardening, I think shipping an image that only provides what the app needs to run is the right decision.

@lwbt commented on GitHub (Feb 22, 2025): > the medium article says to use curl to download the package but curl is not installed Download it on your desktop and use `dbclient` to copy to your JetKVM host as I have demonstrated above. This is the only way I know at the moment. You could compile your own system image that includes more tools, but from the point of view of system hardening, I think shipping an image that only provides what the app needs to run is the right decision.
Author
Owner

@shayaansiddiqui commented on GitHub (Feb 22, 2025):

I am getting an error

wget https://github.com/Nevexo/jetkvm-kvm/releases/download/next-7.1-r
c2/jetkvm_app_next
Connecting to github.com (140.82.114.3:443)
wget: can't execute 'openssl': No such file or directory
wget: error getting response: Connection reset by peer

@shayaansiddiqui commented on GitHub (Feb 22, 2025): I am getting an error wget https://github.com/Nevexo/jetkvm-kvm/releases/download/next-7.1-r c2/jetkvm_app_next Connecting to github.com (140.82.114.3:443) wget: can't execute 'openssl': No such file or directory wget: error getting response: Connection reset by peer
Author
Owner

@hanyan009 commented on GitHub (Apr 11, 2025):

@lwbt 's dbclient copy method doesn't work for me (with jetkvm version 0.3.9), because it still requires a password input even with SSH keys set up.
I managed to copy the file using an SSH tunnel instead:
cat jetkvm_app | ssh root@jetkvm_ip "cat > /root/jetkvm_app_next"

@hanyan009 commented on GitHub (Apr 11, 2025): @lwbt 's dbclient copy method doesn't work for me (with jetkvm version 0.3.9), because it still requires a password input even with SSH keys set up. I managed to copy the file using an SSH tunnel instead: cat jetkvm_app | ssh root@jetkvm_ip "cat > /root/jetkvm_app_next"
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/kvm#26
No description provided.