Setting up the current version of GnosisVPN PoC can be somewhat complex, as it was designed as a technical proof of concept rather than a full-fledged product.
If you are not comfortable editing configuration files or using your terminal, or if you are unable to run HOPR's hoprd
node, please wait for the next version, which will offer a more streamlined user experience.
We expect the below instructions to take approximately 1 hour (excluding wait time for obtaining your VPN IP).
The GnosisVPN proof of concept is a work in progress and may be updated at any time. It may therefore be unstable or contain bugs, and should not be used in situations which require full anonymity. Use at your own risk. To manage load and aid with testing and debugging, an allow list of sites is currently enforced. The full allow list can be viewed at the servers page. For testing and debugging, exit nodes currently gather logs. These logs cannot reveal user requests, server responses, IPs, or any other identifying information. Logs are deleted after thirty days.
The software is licensed under the GNU Lesser General Public License v3.0 and may be freely used, modified, and distributed in accordance with the license terms. Users should check local laws before using the PoC (including operating a relay node). Users are solely responsible for how they use and interact with the PoC, and for complying with applicable laws. The PoC should not be used for illegal, malicious, or unethical purposes.
The following 12-step process will guide you through these topics:
- Manually prepare and configure a WireGuard interface on top of your GnosisVPN connection.
- Configure your hoprd node to allow a GnosisVPN connection.
- Configure the GnosisVPN client using information from three separate sources:
- Your hoprd node credentials
- Your assigned WireGuard IP
- Your chosen exit location
- Download the binary file and run it with several env var parameters.
- Configure Firefox proxy settings to use the GnosisVPN connection.
- Leave feedback by filling out the feedback form.
Having trouble with the PoC? Check out the FAQ.
For any questions or assistance, feel free to join the GnosisVPN Discord support channel.
Please select your operating system to begin:
- Download the WireGuard app from the Mac App Store.
- Launch WireGuard, create an Empty tunnel, name it, and save.
- Copy the public key of the newly created tunnel.
Create a secure input location where you will receive your assigned WireGuard IP.
- Go to rentry.co.
- In the text field, enter the public key for your recently created WireGuard tunnel.
- Locate the "Custom url" input field and enter your desired text (e.g.,
toms-feedback-gvpn
). Leave the "Custom edit code" field empty. Click Go. An edit code will be generated automatically. - Save the generated URL from the browser's address bar (e.g.,
https://rentry.co/toms-feedback-gvpn
). - Note the edit code at the top for the next step.
Provide your
- WireGuard tunnel public key
- rentry.co URL
- rentry.co edit code
in our onboarding form. If you have trouble opening CryptPad, please try to open it in incognito mode.
After someone picks up your public key and adds it to our WireGuard servers, you will find your assigned WireGuard IP at your rentry.co document. You will have to check your rentry.co document yourself after a reasonable amount of time.
GnosisVPN will create a UDP connection to your hoprd node on a specified port (e.g., 1422
).
Treat this as an additional port for hoprd that needs the same treatment as the peer-to-peer port and API port. If you set up any firewall rules or port forwarding for those ports, you will need to do the same for the GnosisVPN port.
Additionally, you need to configure your hoprd node to allow GnosisVPN connections. The usual way of running hoprd is in a Docker container. This means you need to configure Docker to forward that port.
Depending on your setup, this can be done in different ways.
Update the hoprd
run command to include the port forwarding:
docker run ... -p 1422:1422/udp ...
Locate docker-compose.yaml
and update the ports:
section of hoprd
:
services:
hoprd:
...
ports:
...
- "1422:1422/udp"
- Connect to your Dappnode.
- Navigate to the HOPR package.
- Go to the Network tab and locate the Public Port Mapping section.
- Add a new port entry by clicking on New port +.
- Configure the following settings:
- HOST PORT:
1422
- PACKAGE PORT NUMBER:
1422
- PROTOCOL: Select UDP.
- Click Update Port Mappings to save your changes.
- Ensure you configure port forwarding on your router to expose the REST API port
3001
and the UDP port1422
to the internet.
- Create a folder in your home directory called
gnosisvpn-poc
. - Download the config.toml file and move it into that folder.
- Edit the
config.toml
and locate the[hoprd_node]
section to adjust these values:
[hoprd_node]
endpoint = "http://<hoprd node ip>:<hoprd node API port>"
api_token = "<hoprd node API token>"
internal_connection_port = 1422
endpoint
is the URL (including port) pointing to the API access of your node (e.g.,http://192.168.0.89:3001
).api_token
is the API access token of your node.internal_connection_port
is the static UDP port which you configured in step 5.
Visit GnosisVPN servers and choose an exit location.
Copy the settings into your config.toml
:
[connection]
destination = "<exit node peer id>"
[connection.path]
intermediates = ["<community relayer peer id>"]
destination
is the peer ID of the chosen exit node.intermediates
specifies the community relay node used to establish the connection.
Save and close the configuration file.
Caution: If you have channel auto-funding enabled on your hoprd node, you might drain your funds quickly.
To verify this, connect to your node via the Admin UI of your hoprd node and navigate to the Configuration page.
Look at the Strategies section and ensure that !AutoFunding
is absent.
Important Note: Currently, GnosisVPN can only establish connections through high-profile relay nodes maintained by the community. To use GnosisVPN, you must have an open payment channel from your entry node to the relayer node associated with your chosen exit node. The relay node address can be found on the GnosisVPN servers page.
- Connect to your node via the Admin UI of your hoprd node.
- Navigate to the PEERS page.
- Search for the peer you’ve chosen as a relayer node from GnosisVPN servers.
- Click on OPEN outgoing channel.
- Enter the funding amount (recommended: 15 wxHOPR) and click Open Channel.
- Once the channel is successfully opened, it will appear under the CHANNELS: OUT page.
Download the latest GnosisVPN binary file for your system by visiting the GitHub releases page. Choose the binary file that matches your system:
System | Binary file |
---|---|
macOS with ARM chip | gnosis_vpn-aarch64-darwin |
macOS with Intel chip | gnosis_vpn-x86_64-darwin |
Ignore the *-ctl-*
sibling files.
We do not need them for now.
Move the downloaded binary into your gnosisvpn-poc
folder next to your config.toml
.
In the following steps, we assume you downloaded gnosis_vpn-aarch64-darwin
to keep the instructions consistent.
- Make the downloaded binary executable by running the following command in your terminal:
chmod +x ~/gnosisvpn-poc/gnosis_vpn-aarch64-darwin
- Provide the path to your configuration file and launch the GnosisVPN binary file:
sudo GNOSISVPN_CONFIG_PATH=~/gnosisvpn-poc/config.toml ~/gnosisvpn-poc/gnosis_vpn-aarch64-darwin
-
Because of macOS security settings, you will see a message that says the binary file “cannot be opened because the developer cannot be verified.” Click Cancel or Done, then open System Settings → Privacy & Security, scroll down to Security, and find the blocked binary file. Click Allow Anyway.
-
In your terminal, run the command to start the binary file again. macOS will prompt you one more time to confirm if you want to open it. Click Open or Open anyway.
If you see immediate errors on startup, it is most likely due to errors in your configuration settings. The logs will indicate which setting parameter might be wrong.
In the WireGuard app, edit the tunnel you created.
Leave the existing content, including the PrivateKey, as is and paste this additional content as marked in the comments.
Replace placeholders <...>
with the actual values as documented.
# Leave this content as is in your tunnel configuration
[Interface]
PrivateKey = <Generated automatically by the WireGuard app>
# NOTE: Copy-paste from here
ListenPort = 51820
Address = <WireGuard IP> # received via **rentry.co** document, e.g., 10.128.0.5/32
[Peer]
PublicKey = <lm0QdCOxg4BxQK1wHujjHsOtSUKrNFgfbGxyWUH+hRk=> # listed on https://gnosisvpn.com/servers
Endpoint = <your hoprd node IP:1422> # port needs to match your `internal_connection_port` configuration
AllowedIPs = 10.128.0.0/9
PersistentKeepalive = 30
Now you can activate this interface to establish a connection.
For now, we only allow SOCKS v5 proxy connections tunneled through GnosisVPN. The easiest way to do this is to change the Firefox proxy settings.
- Open Network Connection Settings by navigating to Settings → General → Network Settings or search "proxy" in the settings search bar and click on the Settings button.
- Choose manual proxy configuration and enter:
- SOCKS Host:
10.128.0.1
- Port:
3128
- Socks v5
- Make sure the
Proxy DNS when using SOCKS v5
option is enabled.
- Click OK to save the settings. Start browsing these select sites through GnosisVPN.
- Make sure you have WireGuard and WireGuard-tools installed on your system. See the WireGuard installation guide.
- Follow the key generation guidelines on the official WireGuard documentation.
Usually:
wg genkey | tee privatekey | wg pubkey > publickey
Create a secure input location where you will receive your assigned WireGuard IP.
- Go to rentry.co.
- In the text field, enter the public key for your recently created WireGuard tunnel.
- Locate the "Custom url" input field and enter your desired text (e.g.,
toms-feedback-gvpn
). Leave the "Custom edit code" field empty. Click Go. An edit code will be generated automatically. - Save the generated URL from the browser's address bar (e.g.,
https://rentry.co/toms-feedback-gvpn
). - Note the edit code at the top for the next step.
- Prepare your public key for copying:
$ cat publickey
KruyGvXppZ+P4yktb9NmyDUfeqRcTlbgpH7XhywS4Cw= # sample public key
- Provide your
- public key
- rentry.co URL
- rentry.co edit code
in our onboarding form. If you have trouble opening CryptPad, please try to open it in incognito mode.
After someone picks up your public key and adds it to our WireGuard servers, you will find your assigned WireGuard IP at your rentry.co document. You will have to check your rentry.co document yourself after a reasonable amount of time.
GnosisVPN will create a UDP connection to your hoprd node on a specified port (e.g., 1422
).
Treat this as an additional port for hoprd that needs the same treatment as the peer-to-peer port and API port. If you set up any firewall rules or port forwarding for those ports, you will need to do the same for the GnosisVPN port.
Additionally, you need to configure your hoprd node to allow GnosisVPN connections. The usual way of running hoprd is in a Docker container. This means you need to configure Docker to forward that port.
Depending on your setup, this can be done in different ways.
Update the run command to include the port forwarding:
docker run ... -p 1422:1422/udp ...
Locate docker-compose.yaml
and update the ports:
section of hoprd
:
services:
hoprd:
...
ports:
...
- "1422:1422/udp"
- Connect to your Dappnode.
- Navigate to the HOPR package.
- Go to the Network tab and locate the Public Port Mapping section.
- Add a new port entry by clicking on New port +.
- Configure the following settings:
- HOST PORT:
1422
- PACKAGE PORT NUMBER:
1422
- PROTOCOL: Select UDP.
- Click Update Port Mappings to save your changes.
- Create a folder in your home directory called
gnosisvpn-poc
. - Download the config.toml file and move it into that folder.
- Edit the
config.toml
and locate the[hoprd_node]
section to adjust these values:
[hoprd_node]
endpoint = "http://<hoprd node ip>:<hoprd node API port>"
api_token = "<hoprd node API token>"
internal_connection_port = 1422
endpoint
is the URL (including port) pointing to the API access of your node (e.g.,http://192.168.0.89:3001
).api_token
is the API access token of your node.internal_connection_port
is the static UDP port which you configured in step 5.
If you prefer a more extensively documented configuration file, try using documented config.
Visit GnosisVPN servers and choose an exit location.
Copy the settings into your config.toml
:
[connection]
destination = "<exit node peer id>"
[connection.path]
intermediates = ["<community relayer peer id>"]
destination
is the peer ID of the chosen exit node.intermediates
specifies the community relay node used to establish the connection.
Save and close the configuration file.
Caution: If you have channel auto-funding enabled on your hoprd node, you might drain your funds quickly.
To verify this, connect to your node via the Admin UI of your hoprd node and navigate to the Configuration page.
Look at the Strategies section and ensure that !AutoFunding
is absent.
Important Note: Currently, GnosisVPN can only establish connections through high-profile relay nodes maintained by the community. To use GnosisVPN, you must have an open payment channel from your entry node to the relayer node associated with your chosen exit node. The relay node address can be found on the GnosisVPN servers page.
- Connect to your node via the Admin UI of your hoprd node.
- Navigate to the PEERS page.
- Search for the peer you’ve chosen as a relayer node from GnosisVPN servers.
- Click on OPEN outgoing channel.
- Enter the funding amount (recommended: 15 wxHOPR) and click Open Channel.
- Once the channel is successfully opened, it will appear under the CHANNELS: OUT page.
Download the latest GnosisVPN binary file for your system by visiting the GitHub releases page. Choose the binary file that matches your system:
system | binary file |
---|---|
linux with x86 chip | gnosis_vpn-x86_64-linux |
linux with newer ARM chip | gnosis_vpn-aarch64-linux |
linux with older ARM chip | gnosis_vpn-armv7l-linux |
Ignore the *-ctl-*
sibling files.
We do not need them for now.
Move the downloaded binary into your gnosisvpn-poc
folder next to your config.toml
.
In the following steps, we assume you downloaded gnosis_vpn-x86_64-linux
to keep the instructions consistent.
- Make the downloaded binary executable by running the following command in your terminal:
chmod +x ~/gnosisvpn-poc/gnosis_vpn-x86_64-linux
- Provide the path to your configuration file and launch the GnosisVPN binary file:
sudo GNOSISVPN_CONFIG_PATH=~/gnosisvpn-poc/config.toml ~/gnosisvpn-poc/gnosis_vpn-x86_64-linux
If you see immediate errors on startup, it is most likely due to errors in your configuration settings. The logs will indicate which setting parameter might be wrong.
Create a file called gnosisvpnpoc.conf
inside /etc/wireguard/
with the following content.
Replace placeholders <...>
with the actual values as documented.
[Interface]
PrivateKey = <Generated during step 1>
ListenPort = 51820
Address = <WireGuard IP> # received via **rentry.co** document, e.g., 10.128.0.5/32
[Peer]
PublicKey = <lm0QdCOxg4BxQK1wHujjHsOtSUKrNFgfbGxyWUH+hRk=> # listed on https://gnosisvpn.com/servers
Endpoint = <your hoprd node IP:1422> # port needs to match your `internal_connection_port` configuration
AllowedIPs = 10.128.0.0/9
PersistentKeepalive = 30
Activate the WireGuard device with:
sudo wg-quick up gnosisvpnpoc
For now, we only allow SOCKS v5 proxy connections tunneled through GnosisVPN. The easiest way to do this is to change the Firefox proxy settings.
- Open Network Connection Settings by navigating to Settings → General → Network Settings or search "proxy" in the settings search bar and click on the Settings button.
- Choose manual proxy configuration and enter:
- SOCKS Host:
10.128.0.1
- Port:
3128
- Socks v5
- Make sure the
Proxy DNS when using SOCKS v5
option is enabled.
- Click OK to save the settings.
Start browsing these select sites through GnosisVPN.