OpenVPN systemd use

This is only a brief summary of OpenVPN systemd usage.

OpenVPN must be compiled with systemd support.

Use the correct OpenVPN supported systemd .service files.

Build OpenVPN with systemd support

When you build the openvpn binary use the configure option --enable-systemd like so:

./configure --enable-systemd

Verify OpenVPN systemd support has been enabled like so:

$ openvpn --version

Look for enable-systemd=yes in the output.

Using OpenVPN with systemd support

In order to use OpenVPN with systemd please use the correct systemd .service file.


  • Place your server configuration file in /etc/openvpn/server
  • Use the openvpn-server@.service like so:
    $ sudo systemctl start openvpn-server@{Server-config}
    Replace {Server-config} with the name of your config file without the .conf


  • Place your client configuration file in /etc/openvpn/client (notice however that, due to an outdated version of openvpn, some distributions, like Ubuntu 20.10, look for configuration files under /etc/openvpn instead of /etc/openvpn/client. In case of doubt, check the specific error message in journalctl -xe)
  • The filename must end in .conf, so if your client config file is something like profile.ovpn rename it to somename.conf (where somename is meaningful to you, to describe where you are connecting.)
  • Use the openvpn-client@.service like so:
    $ sudo systemctl start openvpn-client@{Client-config}
    Replace {Client-config} with the name of your config file without the .conf

Start at boot:

Replace start with enable

Other systemd questions are probably best answered by reading man systemctl etc ..


  • openvpn@.service is deprecated.
  • openvpn.service is obsoleted. (This is only used for backward compatibility)

Known issues

Last modified 2 years ago Last modified on 04/26/22 14:14:58