Success with Tailscale VPN

As already mentioned, I tried normal WireGuard (not Tailscale) as well, and Roon ARC worked via internet and cellular network to my iPhone. The WireGuard server in my network runs under DietPi as a virtual machine on a Synology NAS. Nothing special had to be configured. Its just an ordinary WireGuard server setup as can easily configured with the functionalities given in the DietPi UI. See VPN Software Options - DietPi.com Docs

What is you Roon Core installed on?

For my setup I have Roon Core running on a Linux VM along with Wireguard and Wireguard UI.

I used the link above to install both Wireguard and the UI for it which gives you a nice web front for creating new wireguard host.

Once you connect to wireguard you should be able to see you Roon Core and connect to it just fine.

With regard to Roon Arc specifically, I just forwarded the port on my router. If you just want to use Roon Arc it would probably be easier just to manually forward the port or enable upnp. If you want to connect to you core using Roon Remote or you want to connect from another computer outside you network just make sure wireguard is installed on the same server as Roon Core.

Here is my structure

OMG why did I not know of this! Thank you so much!

I’ve been using a manually configured WireGuard VPN server on my pfSense router for my devices (also manually configured) but this makes things so much easier. Especially since it is available as a package for my pfSense router.

Thank you!

1 Like

Hi, I use pfsense as my router and have Tailscale working meaning I can connect to my home network from the road. I have shared routes in Tailscale and can basically see all the devices on my home network remotely. However, I can’t see my Roon Core from the Roon App on my iPad (not ARC). Anyone know what that is?

Update: if I set my Tailscale as an exit node, then it works!

I have Roon reliably working with Tailscale, on both local and remote networks. :slight_smile:

Connect your Roon Core and your Endpoints (laptop / iphone) to the same Tailscale network. I also made sure to share the subnet of my home network via my Roon Core node in Tailscale. I’d also recommend turning on MagicDNS.

At this point, both the Roon app and ARC allow connecting to the Roon Core. If it doesn’t appear automatically, you’ll need to click the “having trouble connecting” text that pops up and manually configure the Roon Core via the IP Tailscale or magic DNS of your Roon Core provided in the admin panel. I also have the Roon Core configured as an Exit Node in Tailscale (more on this later).

Once you have your Roon App / ARC App connecting to your Roon Core over the Tailscale VPN, Roon should work except that your audio zone will likely not be detected properly.

This is the finicky bit – I’ve found that if I disconnect and reconnect my Tailscale network and/or select my Roon Core as the exit node, then deselect the exit node – basically, toggling the network state between connected to tailscale and not – eventually the correct Audio Zone will appear.

For example, I connect my work macbook to my home Tailscale network, open Roon, let it find the Roon Core (often have to click “find other core” and then re-select mine), then once my library appears, I toggle the Tailscale connection on and off over the course of a few minutes and eventually my local Audio Zone (“Macbook Pro” in this case) appears. Same deal for iPhone. The Roon / ARC app will show a little dialog when you’re disconnected, just let it wait and try and reconnect on its own.

It’s frustrating to have to toggle the network connection on/off a few times, but it eventually works every time. I think Roon must be doing some DNS lookup when network connections change, and that only succeeds intermittently depending on how Tailscale sets up the network :man_shrugging:

TL;DR

  1. Connect Roon Core and remote device to Tailscale
  2. Enable Subnet Routing and Exit Node on Roon Core Tailscale node
  3. Connect manually via Tailscale IP/MagicDNS name (only needs to be done the first time)
  4. Toggle Tailscale Connection and/or Use Exit Node (Roon Core) on the remote device
  5. Wait for your local Audio Zone to appear
3 Likes

I think you will find toggling the tailscale application does nothing on IOS,

You can turn tailscale off and even kill the app and music should continue to play, I found the only method to turn it off is to turn off VPN within IOS.

Huh, interesting. This may be because iOS VPNs are handled kind of strangely. Connections which are open before you start the VPN will still use non-VPN networks. I bet if you force quit it wouldn’t work next time you tried…

Also, realizing that toggling “Use Tailscale subnets” seems to be the best way to get Roon to see my audio zone, rather than disconnect/reconnect.

2 Likes

Does this Tailscale also work on Roon on Mac OS? So Roon core at home and Macbook somwhere in the world via VPN.

Yes it should do, you need to install it on your mac and it will become part of your network.
You will need to have it always running on you core or something always on within your home network.

Is there a solution to this?

I installed Tailscale on my devices, I set up subnet sharing on my Roon core (Linux) as described by @Joe_Goldin and the docs he references, I connected My Pixel Android Roon remote to this core using its name, I enabled it as an audio device in Settings>Audio, and I could stream to it with the phone not on WiFi. My main use for Tailscale is different, to integrated several locations I spend time on for remote access and file sharing, but it was nice to see that it could also give me Roon access if needed.

1 Like

Anyone using this for site-to-site VPN (one core, two locations with endpoints)?

I’ll test it this weekend (I hope) when I get to site #2 and install Tailscale there, but I intend to continue with separate cores (I’ve got the licenses for that) for optimal responsiveness, especially given the winter storm flakiness of the power grids around my locations.

But how do you do sync (tags, playlists, etc)? I feel like if I could get completely automated passive sync of all (except library, which I can do manually & periodically via sneakernet) I could be quite happy with two cores…

I won’t, but that’s because:

  1. Most of my music is local, with ROONALBUMTAG ID3 tags for whatever tags I need
  2. I sync local music using Syncthing across sites
  3. I don’t use playlists much

Not ideal, I’ve put in a feature request for library sync a long while ago, but I’d rather to this than continue to carry a core around, which has worked between sites #1 and #2 (driving distance) but not so much between #1 and #3 (flying distance, with #3 sometimes concurrently occupied with #1 or #2).

I’ve done a quick test using my iphone with Roon.
It does not seem to work because you have no way to configure Roon to know it needs to connect to the IP that Roon is hosted on.

I could use Roon with Tailscale providing I started play on my own network, then turn wi-fi off. Because i already had a network connection Roon continues to work over 4G using Tailscale.

I guess someone with network skills could find away to ensure your remote core connects to the IP address of your core for its network access to gain the connection.

That’s what I do with my Synology apps, they are configured to connect to my NAS IP.

It works for me (from Android) with the following setup:

  1. I have a subnet router for my Roon LAN (which happens to also be the Roon Core server, but that’s not essential). The route must be explicitly authorized on the route settings for the machine in the Tailscale machine dashboard, I missed that at first and had the problem you describe of not finding the Roon Core.
  2. I had to enter the Roon Core server Tailscale host name as a “new” Core on the Android Roon remote first time I connected. Once that was done, I checked that I could both use the remote as a remote, and as an endpoint.

Can you expand on what you did here?
I can see the ARC port is listed in Tailscale machine settings.

I didn’t try ARC, just Roon remote (which works but it’s suboptimal bandwidth-wise). I see the problem now with ARC connection, I’ll have to try to debug this later, I suspect we need a specific route added but I need to read Tailscale docs on how to achieve that.