How-to guides

Task-oriented recipes for a specific job — expose a service, proxy HTTP through an egress node, lock a network down.

Each guide assumes you already have a working network. If you don’t, start with your first network.


Run as a VPN

Join a network as a VPN peer and route traffic between nodes.

Addressing and DHCP

Assign virtual addresses by hand, let peers negotiate them, or pin a static peer table.

IPv6

Run the VPN over IPv6 with static addresses. Experimental, single-stack only.

Enable the DNS server

Resolve names from the shared ledger with the embedded DNS server.

Send and receive files

Transfer files directly between peers, without bringing up a VPN interface.

Tunnel TCP services

Expose a local or remote TCP service to the network and connect to it from another peer.

HTTP egress and the proxy

Let one node make HTTP requests on behalf of the network, and reach it through a local HTTP proxy.

Relays and hop nodes

Run a node that carries no VPN traffic of its own but helps everyone else connect.

Ledger ownership

Sign and authorise ledger writes — and change the mode on a live network without splitting it.

Trusted networks

Restrict a network to authorized peers with PeerGuardian and peergating.

Use EdgeVPN as a library

Embed a node in your own Go program — join a network from a token, or bring up the VPN.

Run with Docker

Run a VPN node in a container — why it needs host networking, NET_ADMIN and /dev/net/tun, and what the repository’s compose file actually does.

Persist node identity and state

Placeholder — keeping a node’s peer ID and ledger across restarts. Not written yet.

Run with systemd

Placeholder — running EdgeVPN as a systemd service, including API socket activation. Not written yet.

Tune for low-end devices

Placeholder — cutting memory, connection and file-descriptor usage on small hardware. Not written yet.

Last modified August 4, 2026: Fix/proxy egress ownership (#1066) (cfb9c39)