Installing the server software is the shortest part of a self-hosted VPN, and it is the step people start with. Whether the deployment works depends on whether a client can reach the endpoint, what that client may reach afterwards, and how you get back in when the tunnel is the thing that broke. Settle all three before the package manager runs.

Two of them are design decisions and the third is an operational habit. All three are cheaper to fix on paper than during an outage.

Decide What Clients Should Reach

A remote-access server needs a route to the private network it advertises and a return path for the replies, which makes it a router for that network rather than only a listener. An internet-exit server needs forwarding plus an addressing or translation arrangement, and a completed handshake supplies neither. Pick the job before the topology, because the two designs differ in routing, firewall rules and in what the client sends through the tunnel. A server asked to do both needs both rule sets and a matching split of the client's default route.

Choose tunnel and LAN ranges that cannot collide with networks your clients already use, since a laptop already holding 192.168.1.0/24 will keep using that route instead of a tunnel handing out the same prefix. Check IPv4 and IPv6 separately, because many people get the first right and never notice the second. Where the server sits behind another router, confirm inbound reachability from outside rather than trusting one port-forward to describe every layer.

Identities, Keys and a Way Back In

Issue a separate identity per device wherever the software supports it, so a lost laptop means revoking one peer instead of rebuilding the server. Private keys belong in protected storage and never in a profile pasted into a chat message. The recovery path is the part people skip: console access, a serial console, or an out-of-band management interface that does not depend on the tunnel. Without one, a bad firewall rule turns a small change into a site visit.

Write the removal procedure at the same time as the enrolment procedure. Revoking a device is an operation you will need eventually, and it is easier to describe while the setup is still fresh.

Home Endpoint or Rented One?

Three conditions decide between hosting at home and renting a small instance. The first is whether inbound connections can reach your network at all, since a carrier-grade translated uplink or a restrictive building network removes the option. The second is whether the exit must appear somewhere other than your own city, because only a rented endpoint changes that. The third is appetite for a second trust relationship, since a hosting provider joins the model and can observe the endpoint even when it cannot read the traffic.

If the first condition passes and the second is irrelevant, hosting at home is the shorter path. A rented endpoint buys location and availability rather than privacy on its own.

Prove It With One Client and a Restart

Bring one client up, confirm the resource it should reach, and confirm that it stops reaching what it should not. The commands below show peer state, the routes the server installed, and whether forwarding is enabled. Run them before enrolling anyone else.

wg show
sysctl net.ipv4.ip_forward
ip route get 10.8.0.2
ss -lunp | grep -E ':(51820|1194)'

A peer with a recent handshake is connected, while a peer with no handshake never negotiated, and those are different failures. Forwarding disabled explains a tunnel that comes up and carries nothing, so check the server before blaming the client. A missing listener means the service did not start with the configuration you think it did. Then restart the server deliberately and repeat the whole set, because a tunnel that works only until reboot is a common result of testing the happy path.

Record the endpoint, the peers, the ranges and the recovery method on one page. That page is the runbook you will read at the least convenient moment available.

Sɛbɛn minnu bɛ tali kɛ