A machine dedicated to an OpenVPN gateway needs a supported server install and the software for the jobs it actually performs. An installer menu that offers SSH, web hosting and other server roles is not a list of OpenVPN prerequisites. A headless deployment is entirely reasonable. What matters is separating three jobs: carrying the tunnel, administering the host, and issuing credentials.

Here is the inventory order I use, with the check that closes each step.

1. Give the tunnel service its own package and profile

Ubuntu's OpenVPN server guide uses the distribution's openvpn package with a command-line and service configuration. The same package serves as a Linux client, and the configuration selects the role.

That means installing a client GUI is not what turns the host into a server, and removing one is not what makes it headless. Record which profile the running instance reads, because a second configuration file in the same directory can be loaded without anyone noticing, and the daemon reports success either way. When two profiles exist, the service manager decides which one wins, and that decision belongs in your notes rather than in a guess.

2. Decide the administration path before the tunnel

OpenSSH comes from a separate openssh-server package and runs as its own service. It is useful when an administrator should reach the machine over SSH, but OpenVPN does not need an SSH server to exchange VPN packets. A local console or an approved platform management channel is another valid path. Decide which one you rely on before you change routing or filtering, because a new tunnel should never be the only untested way to repair itself.

3. Issue credentials from the approved owner

The Ubuntu example installs easy-rsa alongside OpenVPN to build a small PKI, which is a credential-issuance role rather than a running tunnel service. If the organization already has an approved issuance process, use it instead of creating an unrelated CA because a tutorial includes one. Keep the gateway's own private key and certificate distinct from the CA signing key, and choose the signing and backup location deliberately. Copying every PKI file onto every host is not a software requirement.

4. Leave desktop plugins to desktops

A NetworkManager editor or import plugin has a purpose on a machine that uses that workflow. It is not an extra server feature needed because the gateway speaks OpenVPN.

Pick one owner for the connection, and do not start a second, desktop-managed copy of the same profile.

5. Accept the gateway with a real client

Fewer packages is not a finished gateway. The server still needs an approved listener, identities, routes, forwarding where required, a narrow firewall policy and the intended return path. Write down where its logs appear and how updates are applied, because those two answers decide how a failure gets diagnosed later.

An internet-exit design and a private-network-access design have different forwarding requirements, so decide which one you are building before you open anything. Bring up one approved client and check the intended resource rather than the tunnel indicator. Then restart the service in a controlled way and confirm the unattended startup path, because a gateway that only comes up while somebody is watching is not deployed yet.

Related articles