How to run Mysterium dVPN on Linux
Mysterium node comes with a built-in command line tool
which can be used to connect to other nodes and use our
It has been tested on:
- Raspbian 9/10
- Debian 9/10
- Ubuntu 18.04/20.04
- Pop_os 20.04
If you're running a different linux distribution, you can still
download the tool and try to configure the
There are two ways to install Mysterium node.
Ubuntu systems you can use
Aptitude and execute:
sudo add-apt-repository ppa:mysteriumnetwork/node sudo apt-get update sudo apt install myst
If for some reason that fails, or you can't do that we also provide an installation script written in
which can be downloaded and executed using this command:
sudo -E bash -c "$(curl -s https://raw.githubusercontent.com/mysteriumnetwork/node/master/install.sh)"
In addition to downloading and installing our Node using either of these commands will also install additional required dependencies like WireGuard and OpenVPN if you don't have them already.
After installation is complete two services are created:
mysterium-node.service will be automatically started. It allows you to use both consumer
and provider features.
If your plan is to use our
node as a regular VPN client for data consumption a few additional steps have to be taken.
The previously mention
mysterium-node.service has to be stopped and replaced with
By default, services are controlled using
systemctl. A detailed guide on how it works can be found here.
To enable consumer only mode you will have to execute these commands in order:
sudo systemctl stop mysterium-node.service # stop current node service sudo systemctl disable mysterium-node.service # disable node service so it doesn't start again automatically sudo systemctl enable mysterium-consumer.service # enable consumer service sudo systemctl start mysterium-consumer.service # start consumer service
After keeping the default
mysterium-node.service or replacing it with the
consumer service you should make sure
everything actually started and is working. That can be done using
systemctl status [service-name] for example:
systemctl status mysterium-consumer.service ● mysterium-consumer.service - Consumer client for Mysterium - decentralised VPN Network Loaded: loaded (/lib/systemd/system/mysterium-consumer.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-01-07 11:22:55 UTC; 7s ago Docs: https://mysterium.network/ Main PID: 4286 (myst) Tasks: 9 (limit: 1064) Memory: 15.3M ...
In case of service failing to start you can try and restart it using
systemctl restart [service-name].
mysterium.node service is still refusing to start you can report an issue to our support team
which will help you figure it out as best as they can. Application logs can be found using
journalctl -u [service-name].
After getting your node up and running you should be almost ready to connect. In this section we'll go through the steps required to do that.
This section will touch on two commands
myst account and
myst connection together with
These two commands expose the most basic and user-friendly way to use your terminal in order
to connect to the dVPN. For more advanced user guide please follow the section below
which explains how to use
As mentioned above we'll use two commands and their subcommands:
In order to read more about them you can execute them with a help flag like this:
myst account --help myst connection --help
This also works for any sub-commands.
Each command has an output, if the output does not start with
[WARNING] consider that command a success.
Command: myst account register
We will need to create and register an identity which is required in order to identify yourself in the network.
This can be done by executing:
myst account register
Depending on the network you're using, you might need to top up your balance to finish your registration, if that is the case after executing the above command you'll get an output which asks you to do so. For that just follow the below instructions on managing your balance.
Command: myst account info
If the above command passed without any errors, you can now view your account information using:
myst account info
This will display the identity you're using, it's balance and other important information like your registration status.
Managing your balance is essential as you must have some amount of
MYSTT while in Testnet) tokens in order to use the dVPN.
Command: myst account topup
Topping up is done using the
topup sub-command. It expects a few flags to be passed
together with your request:
- amount ( Amount of tokens you want to top up in to your account )
- currency ( Currency you want to use when paying for your top up )
For the example lets say we'll top up 100
MYST while paying in
in that case we'd execute the command like this:
myst account topup --amount 100 --currency BTC
If everything is completed without errors, the output should be similar to this:
[INFO] Order ID 'XXXX' is in state: 'pending' [INFO] Price: 0.000584 BTC [INFO] Pay: unknown unknown [INFO] Receive: 0.000578 BTC [INFO] Myst amount: 100.000000 [INFO] PaymentURL: https://pay-sandbox.coingate.com/invoice/c60cd410-99bb-4430-9d7a-ea7a01fXXXXX
You will now need to follow the
PaymentURL in order to complete your top up request.
Command: myst account info
To inspect your last top up, see it's state and
PaymentURL you can execute:
myst account info --last-topup
Connecting to other nodes will require us to use the
connection command and it's subcommands.
Command: myst connection proposals
To list the available exit nodes, you have to view proposals which can be done by executing:
myst connection proposals
The output should be similar to this:
[INFO] Found proposals: | Identity: 0x6b3dfae79ef37495c84f8de590503f54d8a597ce | Type: hosting | Country: CA | Price: 0.000698MYST/min 3.000016MYST/GB | | Identity: 0x95216857fe5575e033c143ad2d02e95b726f30df | Type: residential | Country: LT | Price: 0.000020MYST/min 0.650000MYST/GB | | Identity: 0xab0d493e23f4d9b568aa533db87d09fc8f836efb | Type: hosting | Country: NL | Price: 0.000007MYST/min 0.300000MYST/GB | | Identity: 0xb022800e11233a963040a48f456de922f2d0cc5d | Type: hosting | Country: GB | Price: 0.000010MYST/min 0.100000MYST/GB |
Now all you have to do is pick a node from this list, copy it's
Identity field and continue to
the next step.
Note: This command also comes with a few flags which can act as filters. To view them
--help flag at the end of the command.
Command: myst connection up
For simplicity lets say we picked
Identity: 0x6b3dfae79ef37495c84f8de590503f54d8a597ce and will now
connect to it using the
That can be done by executing:
myst connection up 0x6b3dfae79ef37495c84f8de590503f54d8a597ce
This might take a few seconds and after that you should see a message
There is a possibility that the proposal you picked, cannot accept your connection in that case you should try the other proposals.
To disconnect you can execute:
myst connection down
To see your connection information you can execute:
myst connection info
myst cli is a tool that is more advanced than the basic
used for connecting. While in some ways it's similar to
account commands gives greater control for an end user alongside some additional
features in turn sacrificing some convenience.
To get familiar with
myst cli follow the below steps which detail initial set up
and use of the Mysterium dVPN using the
To start open your terminal and execute:
Once started your terminal window should change to the
myst cli interface.
To get help and see a list of possible commands execute:
Each command has an output, if the output does not start with
[WARNING] consider that command a success.
Commands can be autocompleted using the
tab key on your keyboard.
If you've never used mysterium dVPN you'll have to create, unlock and register your identity. Go ahead and fire up the cli application and follow the steps below.
Command: identities new
In order to identify yourself in the network you must have an identity, to create it
execute the following command in the
This command will create you a new identity which you can use. It will be printed to your terminal, but in case you want to check it out later you can do that will the following command:
Command: identities unlock [identity]
In order to use the created identity it has to be unlocked first.
Unlocking has to be done every time we launch the
myst cli and want to use the created identity.
For the sake of simplicity let's say we've received an identity:
which we'll use in all later steps.
To unlock it we'd have to execute:
identities unlock 0x4570fe47a49af9ae9bd76f029818413ea18620000
Command: identities register [identity] [stake]
After creating and unlocking the identity it must be registered so that Mysterium services are aware
about it and it's balance, to do that execute the
identities register command.
identities register 0x4570fe47a49af9ae9bd76f029818413ea18620000 0
Managing your balance can be done using the
order commands in the
You must have some amount of
MYST in your balance in order to use the dVPN.
Command: identities get [identity]
In order to get information about your identity you can execute:
identities get 0x4570fe47a49af9ae9bd76f029818413ea18620000
It should output a few lines of text among them you should be able to find your balance:
[INFO] Balance: 6.900000MYST
If your balance is not
0 and don't want to top up you can skip further to the
Connecting to other nodes.
Command: order create [identity] [amount] [pay currency]
To add additional
MYST to the balance a payment order has to be created.
To get the full list of currencies which can be used to pay execute:
Let's say that for example for our identity:
we would like to add
100 MYST paying with
We would execute the order command like this:
order create 0x4570fe47a49af9ae9bd76f029818413ea18620000 100 BTC
It's output should be similar to this:
[INFO] Order ID '6984004' is in state: 'pending' [INFO] Price: 0.000614 BTC [INFO] Pay: unknown unknown [INFO] Receive: 0.000608 BTC [INFO] Myst amount: 100.000000 [INFO] PaymentURL: https://pay.coingate.com/invoice/76cd2bfa-e1f2-42c6-ae7c-0972b15601ab
To finish your order and receive the requested
MYST navigate to the
PaymentURL and complete your order.
To check your whole order history execute:
To inspect each order in more detail execute:
order get [ORDER_ID]
Connecting to other nodes on the network is easy using the
To list all possible exit nodes can be done using the proposals command
This command will output a list which is similar to this:
proposals Found proposals provider id: 0x773783463adb681ad67052213ae1ae204e32dab1 type: wireguard country: DE access policies: provider id: 0x80ec29bb58365aceb06be7558b05a789b9e6458a type: wireguard country: GB access policies: provider id: 0xfa7855e183c3474eddd9d3a0088d2b1abddde837 type: wireguard country: GB access policies: provider id: 0x043107c1ec68ef73cb4a184fe19fdff836eebbe6 type: openvpn country: NL access policies: provider id: 0x09b3c5f0ecc61a28ea5cd91ac2b6edd4cd90f50c type: wireguard country: AU access policies: provider id: 0x0da444370166e0c2decb744122fcc2d07b8be4ce type: wireguard country: MD access policies: provider id: 0xbb3dd5828ecb040c23e80ec7ccda16066bc1bc9f type: openvpn country: EE access policies: provider id: 0x2f4ec475c42677b2b37a8831de456c43cadda89b type: wireguard country: GB access policies: provider id: 0x770c9ad96fe1843068e6100451d3282ce67c3596 type: wireguard country: US access policies:
Command: connect [consumer-identity] [provider-identity] [service-type]
The last step that is left is to actually connect. First make sure your identity is
instructions on how to do that are in the
Initial setup section.
First lets explore the connect command. It accepts three arguments which are required.
- "consumer-identity" which is your identity that you created using the
- "provider-identity" which you can get from the
- "service-type" which is either
openvpnwhich you also get from the
So lets say our identity is
0x4570fe47a49af9ae9bd76f029818413ea18620000 and we'll connect to proposal:
provider id: 0x773783463adb681ad67052213ae1ae204e32dab1 type: wireguard country: DE access policies:
So we'll execute the connect command like this:
connect 0x4570fe47a49af9ae9bd76f029818413ea18620000 0x773783463adb681ad67052213ae1ae204e32dab1 wireguard
It should take a few seconds to connect and once it finishes you're done, you can now use the internet as if you're in a different location.
To disconnect from a node you can execute:
To check your connection status you can execute:
- SSH into your RaspberryPi and open editor of /lib/systemd/system/mysterium-node.service file.
- Replace the following line:
ExecStart=/usr/bin/myst $CONF_DIR $SCRIPT_DIR $DATA_DIR $RUN_DIR $DAEMON_OPTS service --agreed-terms-and-conditions $SERVICE_OPTS
ExecStart=/usr/bin/myst $CONF_DIR $SCRIPT_DIR $DATA_DIR $RUN_DIR $DAEMON_OPTS daemon
- To apply the changed configuration you will need to reboot host or re-read configuration and restart it via terminal:
sudo systemctl daemon-reload
sudo systemctl restart mysterium-node
That’s it! Your device is ready to be used in the consumer mode and successfully establish a connection.