ELXSoftware

ELX-VNetwork

Documentation

From an empty VPS to a working network, and what to do when one machine refuses to join.

Raising the server

The server needs a machine with a public address and a domain name pointing at it. The install script does the rest: it registers the systemd unit, configures nginx and obtains a certificate.

On a server with a domain, as root
sudo DOMAIN=vnet.example.com sh install.sh
# then open https://vnet.example.com/admin
# sign in as admin / admin and change the password
The domain must resolve firstThe certificate is issued by proving control of the name, so the DNS record has to point at the server before the script runs. If it does not, the script will fail at exactly that step and nothing else will be broken.

Resources are modest: a single core and 512 MB of memory carry dozens of connected machines, because the server forwards frames rather than processing them.

Installing the client

The client needs two things: the address of your server and an invitation code from it. Everything else — the adapter, the service, the address — is arranged for it.

Linux
sudo dpkg -i elx-vnetwork_*.deb
sudo elxvnet join -server https://vnet.example.com -invite ELX-XXXX-XXXX-XXXX
sudo systemctl enable --now elxvnet
elxvnet status
Windows, from an administrator prompt
cd "C:\Program Files\ELX-VNetwork"
elxvnet join -server https://vnet.example.com -invite ELX-XXXX-XXXX-XXXX
elxvnet -service restart
Start every investigation hereelxvnet status prints the connection state, the address that was issued and every neighbour in the segment. Most questions are answered by that one line before anything else is opened.

Segments and invitations

A segment is an independent network. Machines inside one see each other; machines in different segments do not, even though they share a server. A site, a customer or a test bench each gets its own.

  1. Create a segment in the panel and give it a name you will still recognise in a year.
  2. Generate an invitation code — it can be limited to one use or left open for a batch of machines.
  3. Install the client with that code.
  4. Approve the machine in the panel: until you do, it is waiting rather than connected.
Approval is the pointA code that has leaked is not enough to get into the network. The machine appears in the pending list, and it stays there until a human lets it in.

Reading the member table

ColumnWhat it tells you
AddressThe permanent address in the segment, unchanged across reconnections
VersionThe client version — an old one here is what the update button is for
OnlineHow long this session has lasted; a number that keeps resetting means an unstable link
SpeedCurrent throughput in both directions
TrafficTotals for the session
SystemThe operating system, memory in use and processor load, refreshed every half minute

The system column comes from what the kernel already knows; nothing extra is installed on the remote machine to produce it.

The browser terminal

Any Linux machine in the segment can be opened as a terminal from the panel. This is an ordinary SSH session: the remote machine authenticates you itself, with its own accounts and its own password policy. The panel does not store those credentials and cannot bypass them.

What it does not doIt gives you a console, not a way around the machine's own security. If SSH is disabled there, or the account is locked, the terminal will fail in exactly the same way as any other SSH client.

Updating the clients

  • Windows. The client updates itself, without asking.
  • Linux. A machine running an old version can be updated from the member table: the panel opens an SSH session and performs the package update for you.
  • By hand. Download the new package and install it as before; the invitation and the address survive the upgrade.

Notifications

The server can tell you when a machine disappears or comes back, when somebody is waiting for approval, and when somebody has failed to authenticate. Delivery is by Telegram, by e-mail, or both, with timestamps in your own time zone.

What to switch on first“Machine went offline” for the equipment that matters, and “waiting for approval”. The rest is useful once the network is large enough that you no longer look at the panel every day.

When a machine will not connect

SymptomWhere to look
elxvnet status shows no connectionThe server address, the certificate, or an outbound proxy that intercepts TLS
Connected, but no address issuedThe machine is still waiting for approval in the panel
Address issued, neighbours do not answerThe local firewall is blocking the virtual adapter — allow it as a private network
Windows sees the adapter but no network neighbourhoodNetwork discovery and file sharing are off for that adapter's profile
The connection drops every few minutesA mobile link with an aggressive idle timeout, or two clients installed with the same identity
Everything works except one protocolThat protocol is bound to a different adapter — check the interface order and metrics
The fastest testPing a neighbour by address. If that answers and a name does not, the problem is name resolution, not the network — and that is a much smaller problem.

Frequently asked questions

Does the traffic pass through the server?
Yes — frames travel between machines through your server. That is deliberate: it is what makes the connection come up instantly and stay up on links where peer-to-peer negotiation fails.
How much bandwidth does the server need?
As much as the machines exchange, since it carries their traffic. For remote administration and shared folders this is small; for continuous file transfer between sites, size the VPS accordingly.
Can one machine be in two segments?
One client instance belongs to one segment. Two segments on one machine means two installations, which is rarely what you want — usually it is simpler to put the shared machine in one segment and route what it needs.
What happens when the server restarts?
Clients reconnect on their own and keep their addresses. The interruption lasts as long as the restart.

Nearby programs