Replies: 2 comments 3 replies
-
|
Thinking of a few ways how to implement this: 1. A universal plugin loading in a CSV into the app, skipping duplicatesPros: Easy maintenance, Universal entry point for custom scripts, Easy mapping 2. A universal plugin loading in data as per plugin format https://jokob-sk.github.io/NetAlertX/PLUGINS_DEV/?h=plugin#column-order-and-values-plugins-interface-contractPros: Easy maintenance, Universal entry point for custom scripts, Adding new fields to the Devices table will NOT break custom scripts as only a subset is used 3. A bespoke tailscale pluginPros: Easy config Let me hear your thoughts |
Beta Was this translation helpful? Give feedback.
-
|
Well… I’ve spent the whole day trying to make a Tailscale plugin. It partially worked — I managed to extract the data I wanted — but I just can’t get it to show up properly inside the NAX interface. At this point I’ve completely fried my last remaining brain cell. I’m not a developer, and ChatGPT has been driving me in circles. The goal was simple: just pull the Tailscale peers and either merge them with existing devices or create a new virtual entry like PC_xxx - Tailscale, ideally grouped under a main Tailscale gateway. But I can’t get it to behave. I’m also running into hostname resolution issues on my local network, so I’ll set up Technitium DNS Server tomorrow. That should at least give me consistent hostnames — then I’ll see if I can either inject the Tailscale IPs into existing devices or link them to the virtual “- Tailscale” ones. |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I’d like to integrate my local Tailscale network information with NetAlertX using the command:
tailscale status --json | jq -r ' (["devMac","devName","devOwner","devType","devVendor","devFavorite","devGroup","devComments","devFirstConnection","devLastConnection","devLastIP","devStaticIP","devScan","devLogEvents","devAlertEvents","devAlertDown","devSkipRepeated","devLastNotification","devPresentLastScan","devIsNew","devLocation","devIsArchived","devParentMAC","devParentPort","devIcon","devGUID","devSite","devSSID","devSyncHubNode","devSourcePlugin","devCustomProps","devFQDN","devParentRelType","devReqNicsOnline"] | @csv), (.Peer | to_entries[] | [ "", .value.HostName, (.value.User // "unknown"), (.value.OS // "unknown OS"), "Tailscale","","","","", (.value.LastSeen // ""), (.value.TailscaleIPs[0] // ""), "","1","1","0","0","0","","1","0","Tailscale Network","0","","", (if .value.OS == "windows" then "mdi:monitor" elif .value.OS == "android" then "mdi:cellphone" else "mdi:laptop" end), (.key // "nodekey:unknown"),"","","","TAILSCALE","",(.value.DNSName // .value.HostName),"","1" ] | @csv)'This command generates a CSV file matching the NetAlertX device structure, ready to import.
I’d like some help understanding the best way to use this with NetAlertX.
Is there a native or simple method to import this kind of data (from tailscale status --json) into the device list without creating duplicates, since the same hosts also exist locally (same MACs or hostnames)?
Any advice or example from someone who has done something similar would be really appreciated.
Thanks a lot for your help and for all the work on this project.
My setup: Ubuntu Server (host mode, running NetAlertX in Portainer).
(I’m using ChatGPT to translate my message because I don’t speak English well enough for technical topics like this.)
Beta Was this translation helpful? Give feedback.
All reactions