Tailscale ‚tailcat‘ – is both an open-source Go package and a CLI tool using that package it lets you run a server side listener and a client to connect to that server moving bidirectional bytes back and forth
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# ./tailcat >> remote_logs.txt
# Selected bootstrap relay region 303, Frankfurt
# 🐈 Server listening with new address: <tcp…QEv>
root@pve-tailcat-0a:~#
root@pve-tailcat-02:~#
root@pve-tailcat-02:~# echo „Server-Neustart durchgeführt um $(date)“ | ./tailcat <tcp…QEv>
root@pve-tailcat-02:~#
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# cat remote_logs.txt
Server-Neustart durchgeführt um Tue Oct 13 09:36:34 UTC 2026
root@pve-tailcat-01:~#
root@pve-tailcat-02:~# echo „Server-Neustart durchgeführt um $(date)“ | ./tailcat <tcp…QEv>
root@pve-tailcat-01:~#
root@pve-tailcat-02:~#
root@pve-tailcat-01:~# cat remote_logs.txt
Server-Neustart durchgeführt um Tue Oct 13 09:36:34 UTC 2026
Server-Neustart durchgeführt um Tue Oct 13 09:58:13 UTC 2026
root@pve-tailcat-01:~#
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# ./tailcat genkey –key=pve-tailcat-01
# wrote file to /root/.config/tailcat/keys/pve-tailcat-01.private.json
<tcp…pIA>
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# ./tailcat genkey –list
pve-tailcat-01
root@pve-tailcat-01:~#
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# cat tailcat.sh
while true; do
/root/tailcat serve –key=pve-tailcat-01 >> /root/tailcat.log ;
sleep 1 ;
done
root@pve-tailcat-01:~#
root@pve-tailcat-01:~# crontab -l
* * * * * pgrep -x „tailcat“ > /dev/null || /root/tailcat.sh
root@pve-tailcat-01:~#
with Linux
root@pve-tailcat-02:~# vi tailcat.sh
#!/bin/bash
# set -x
sleep $(( (RANDOM % 59) + 1 ))
echo „$(date +“%d.%m.%Y %H:%M:%S“) Tracking $(uname -n)“ | /root/tailcat <tcp…QEv>
root@pve-tailcat-02:~#
with Windows

