node is a free, open source networking & connectivity project written in Go and released under GPL-3.0. It has 1,354 GitHub stars, 355 forks and 80 open issues, and was last pushed 30 hours ago. On this registry it ranks #31 of 31 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is node?

Mysterium Node is the official Go implementation of the Mysterium Network distributed VPN (dVPN) protocol, a cross-platform package for operators who want to run a node on that network and for developers who want to build clients against it.

What it is

The project is the node software for Mysterium Network, described in its own README as a decentralized VPN built on blockchain. It contains three pieces in one cross-platform codebase: the Mysterium server (the node itself), the client API known as the tequila API, and client-cli, a console client. WireGuard is currently the underlying VPN transport, and the code is written in Go and released under GPL-3.0.

What it solves is dependence on a single, company-operated VPN gateway. In a distributed VPN network the exit points are nodes run by independent participants, and this repository is the software that turns a machine into one of those nodes, or into a client of one. Because the server, the client API and the console client ship together, an operator does not have to assemble a protocol implementation from separate projects, and traffic is carried over WireGuard rather than a bespoke tunnel.

Key capabilities

  • Offers the whole node in one package: the Mysterium server (node), the tequila API client interface and the client-cli console client.
  • Carries VPN traffic over WireGuard, currently the only underlying transport the node supports.
  • Installs on Debian, Ubuntu and Raspbian with a single command through install.sh, with a SNAPSHOT=true variant for development builds.
  • Runs as the systemd unit mysterium-node.service, with logs in journalctl -u mysterium-node.service and status from systemctl status mysterium-node.service.
  • Ships a Docker image, mysteriumnetwork/myst, started with --cap-add NET_ADMIN, --net host and service --agreed-terms-and-conditions.
  • Adds myst-updater.timer to DEB installs, polling the stable Mysterium Launchpad PPA every 6–12 hours and rejecting downgrades, held packages, unexpected repositories, architectures, package paths and artifact hashes.
  • Confirms an upgrade against both the installed package version and the running node's /healthcheck version; myst-updater --check-only checks without installing and MYST_UPDATER_ENABLED=false disables updates.

Who uses it and how

  • Operators contributing an exit node on small always-on hardware: the installer is tested on Raspbian 10, Debian 9 and 10, and Ubuntu 18.04 and 20.04.
  • Container-first operators on any Docker-capable OS; tested hosts include Debian 9 and 10, Ubuntu 18.04, 20.04 and 22.04, and Yocto Linux (BalenaOS), which points at edge and IoT deployments.
  • Operators who want unattended upgrades, served on DEB installations by the myst-updater timer, which can be checked manually or switched off.
  • Developers driving a node through the tequila API or interactively through client-cli, and early adopters tracking the snapshot builds published in the node-builds repository, which the project labels as bleeding edge.

Getting started

On Debian, Ubuntu or Raspbian the node is installed by piping install.sh to a shell with sudo -E bash -c "$(curl -s https://raw.githubusercontent.com/mysteriumnetwork/node/master/install.sh)"; on Docker it starts with docker run --cap-add NET_ADMIN --net host --name myst -d mysteriumnetwork/myst service --agreed-terms-and-conditions. Further options, plus troubleshooting guidance, live in the linked installation and help centre documentation.

How it compares

No competing or comparable products are named in the facts for this entry, so Mysterium Node stands alone in this registry. Within its own ecosystem it is positioned as the official implementation of the Mysterium Network dVPN protocol, published under GPL-3.0 and accompanied by hosted documentation and a help centre at mysterium.network.

When to use it — and when not to

A self-hoster must operate a Linux host with privileged networking: the Docker route needs --cap-add NET_ADMIN and --net host, the Debian route installs a systemd service, and every node operator has to accept the project's terms and conditions before the service will run. Teams that cannot take on GPL-3.0 obligations, or that need a fully self-contained operator manual, should look elsewhere, since the README excerpt is largely an installation guide and defers operational detail to an external help centre. The tested-OS list is also dated — Raspbian 10 alongside Ubuntu 18.04 and 20.04 — and the repository carries 80 open issues.

project readme (upstream, from github) — read inline

Mysterium Node - decentralized VPN built on blockchain

Go Report Card pipeline status codecov GoDoc

Cross-platform software to run a node in Mysterium Network. It contains Mysterium server (node), client API (tequila API) and client-cli (console client) for Mysterium Network.

Currently node supports WireGuard as its underlying VPN transport.

Getting Started

Installation options

Debian / Ubuntu / Raspbian

Install latest stable release:

sudo -E bash -c "$(curl -s https://raw.githubusercontent.com/mysteriumnetwork/node/master/install.sh)"

Or install latest snapshot (development build):

SNAPSHOT=true sudo -E bash -c "$(curl -s https://raw.githubusercontent.com/mysteriumnetwork/node/master/install.sh)"

Service logs:

sudo journalctl -u mysterium-node.service

Service status:

sudo systemctl status mysterium-node.service

Installation script tested on these OSes so far: Raspbian 10, Debian 9, Debian 10, Ubuntu 18.04 and Ubuntu 20.04.

Docker

Our docker images can be found in Docker hub.

To run a node in a docker container you will need docker. On Linux, to manage docker as a non-root user (execute commands without sudo), follow postinstall guide. You should be able to run a node on any OS that supports docker. We have tested it on these OSes so far:

  • Debian 9
  • Debian 10
  • Ubuntu 18.04
  • Ubuntu 20.04
  • Ubuntu 22.04
  • Yocto Linux (BalenaOS)

Run node:

docker run \
  --cap-add NET_ADMIN \
  --net host \
  --name myst -d \
  mysteriumnetwork/myst service --agreed-terms-and-conditions

Access service logs:

docker logs -f myst

Debian package automatic updates

New myst DEB installations include myst-updater.timer. The timer checks the stable Mysterium Launchpad PPA every 6–12 hours and installs a newer authenticated package when one is available. The updater rejects downgrades, held packages, unexpected repositories, architectures, package paths, and artifact hashes. After installation it verifies both the installed package version and the running node's /healthcheck version.

Check the updater manually without installing anything:

sudo /usr/lib/mysterium-node/myst-updater --check-only

Inspect its schedule and logs:

systemctl list-timers myst-updater.timer
journalctl -u myst-updater.service

Automatic updates can be disabled by setting MYST_UPDATER_ENABLED=false in /etc/default/myst-updater. APT continues to perform the repository signature and package-index hash verification; the updater never enables insecure or unauthenticated repository modes.

Further information

More installation options are described in the installation guides. For possible issues while running a node refer to our Troubleshooting guides.

Built With

  • go - The Go Programming Language
  • gitlab - GitLab CI/CD
  • docker - Containerize applications
  • openvpn - Solid VPN solution
  • wireguard - Extremely simple yet fast and modern VPN
  • geth - Official Go implementation of the Ethereum protocol

Contributing

For a detailed guide, please visit our developer docs.

Core contributors

  • Valdas Petrulis - Lead developer, go evangelist, node bootstrapper - Waldz
  • Tadas Valiukas - Senior developer, experienced bug maker - tadovas
  • Donatas Kučinskas - Senior developer, clean code savvy - donce
  • Antanas Masevičius - Network engineer / developer, net guru - zolia
  • Ignas Bernotas - Senior developer, open source enthusiast - ignasbernotas
  • Dmitry Shihovtsev - Senior developer, devops ninja - soffokl
  • Viktoras Kuznecovas - Senior developer, supersonic typing specialist vkuznecovas
  • Tadas Krivickas - Senior fullstack engineer, CI boss, refactoring fairy tadaskay
  • Jaro Šatkevič - Senior developer, micro-payments researcher, crypto maniac chompomonim
  • Andzej Maciusovič - Senior developer, disciplined world changer anjmao
  • Mantas Domaševičius - Senior fullstack engineer, always ready for pair programming mdomasevicius
  • Tomas Mikalauskas - Backend developer, golang lover, payment guru tomasmik
  • Vlad Iarmak - Protocol architect, networking guru, inexhaustible RFC writer Snawoot

See also full list of contributors who participated in this project.

License

This project is licensed under the terms of the GNU General Public License v3.0 (see details).

Frequently asked questions

Is node free to use?

node is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does node do?

Mysterium Network Node - official implementation of distributed VPN network (dVPN) protocol

What is node written in?

node is primarily written in Go. Its source is publicly available at https://github.com/mysteriumnetwork/node, and it has 1,354 GitHub stars.