Tutorial: Wireguard and the Tasker integration

Why is this useful?

Well, in my Tutorial "Pihole and PiVPN on a Raspberry Pi", I showed you, how to install a wireguard based VPN Server (with PiVPN) and the Ad-Filter Pihole on any Debian based System and use them on your Phone, when you are on the go or in a public network.

But you always have to manually connect to your Home-VPN, once you want to enjoy an encrypted connection to your home-network with Pihole filtering on the go.

What we want to achieve:

  • automatically connect to the Home-VPN once you leave the Home-Network
  • automatically disconnect from the Home-VPN once you enter the Home-Network

We can achieve it with the Android Swiss Army Knife in Terms of automation: Tasker (Play Store)

What's Tasker?

Tasker is an app, which you can use to automate like nearly anything on your phone. For example, I used it years ago to switch off any sounds on my phone when I arrived my workplace (GPS based). When I left my workplace, my phone automatically enabled sounds again and send a text to my wife that I'm coming home to let her know.

It's such a powertool, I freakin love it.

How to use Tasker to auto-connect to your VPN

Before we start, we need to make sure we match all dependencies!

Dependencies

What we need:

  • A set up and working Wireguard server (you can use my Tutorial)
  • The Wireguard app with a working Profile and enabled third party App access
  • Tasker installed as well

I presume that you are able to install Tasker on your own, so I skip this part. Important is just, that Tasker has all the permissions it needs.

Creating the first Tasker-Profile

So now we are going to create the first Tasker-Profile. It should disconnect your Home-VPN-Connection once we enter our Home-Wifi.

We open up the Tasker App and see just an empty screen.
To add a profile we tap the + button.

Tasker: Add a Profile

We choose "create" on the following dialogue.

Tasker: Create

Now Tasker asks for a profile-type. In our case we need to tap on "State", because our automation profile is dependant on the WIFI-State of our device.

Tasker: State

We need to choose "Net" to open all the network options available and hit "Wifi Connected" next.

Tasker: Net - Wifi Connected

On the following dialogue we can set up all the dependancies of our Wifi-State. Let's fill in our Home Network's SSID.

Tasker: Wifi data

You can also fill in your routers MAC address if needed. My Home SSID is that unique that it's specific enough in my case.

Once filled in, we hit the back arrow and Tasker asks us to create a "New Task". We tap the + button and name the new task "Wireguard off" or whatever you like.

Tasker: create a task

Now we need to add the specific task Tasker has to do when our phone is connected to our homenetwork.

We hit the + button and choose "Tasker -> Tasker Function -> Wireguard Set Tunnel"

Tasker: Task -> Tasker

It asks us for "Tunnel up?", we choose "no" and now we need to enter the Tunnel's name.

This is the name of your Tunnel in the wireguard app. Mine is called "Home" so I'm going to enter it here.

Tasker: Enter the Tunnel's Name

The task should look like this:

Tasker: The first task

Now tap the back arrows like 2 or 3 times and we are on the main screen of tasker again with the first profile done!

Tasker: Back to the main screen

As you can see there is a switch. You can use this to enable or disable the profiles. Once switched off you need to make your new configuration "live" by tapping the ✔️.

Creating the second Tasker-Profile

Okay, now that we have the first Profile we are going to add the second one. We want to auto-connect to our VPN once we leave our Home-Wifi.

The steps are pretty similar, so I want to only point out the differences, as we already know where to dig in Tasker's configutation possibilities.

1.) We add a new Profile - create - State - Net - Wifi Connected

We enter our Wifi data needed for the state, but this time we also check the "Invert" option ✔️.

Tasker: the second state

Invert means here that the State "Wifi Connected" gets inverted to "Wifi Disconnected"

2.) We add a new task - name it "wireguard on" - Tasker - Tasker function - Wireguard Set Tunnel

It asks us for “Tunnel up?”, we choose “yes” and now we need to enter the Tunnel’s name.

Tasker: the second task

Now we go back - back into the main screen and see of both Profiles are enabled. We make the changed "live" by tapping the ✔️.

Let's test!

To see if the profiles work, let's just disable the wifi connection and see what's happening on Tasker's main screen:

Tasker: let's test 1

Tasker: let's test 2

The green text will show the current active Profiles. If you also have the "Key-Icon" on your statusbar you should also see that the Wireguard trigger works.

Possible Issues

Battery Optimizations

You need to disable any battery optimizations of the wireguard app, to let it run in the background. Usually you can find the settings in the specific App's settings (Settings -> Apps -> Wireguard), or when you long tap on the App's icon and hit die info button, but it may differ from OEM/Rom of your phone.

Issues: Battery Settings

Permissions

The Wireguard App has to be set to allow third party Apps controlling its Tunnels.

To do so open the Wireguard app and its Settings. Tab on the Advanced section to make it visible and check this option:

Issues: Wireguard

Tasker usually yells at you, if it's missing a permission, but you can also manually check in your Android's settings.

As the settings apps differ per OS, here is how it looks for me:

Issues: Permissions

Comments