Source Code
Using Development Versions of OpenVPN Community Edition
Getting OpenVPN snapshot builds (binaries)
We offer several different kinds of development builds and snapshots:
- FreeBSD openvpn-devel port — also usable as a standalone source snapshot on other platforms.
- Fedora Copr repositories with selected development builds for Fedora and Red Hat Enterprise Linux.
- Windows installers built from every commit.
Note: These snapshots are either entirely untested or tested only briefly; there are no guarantees they always work correctly.
Where to find the source code
You can find a download of a "source ball" on the main download page for OpenVPN. This is a compressed archive containing the source code for a specific release. All our open source projects are also available via git repositories, the preferred development method.
OpenVPN 2 (server and client library)
We keep three independent git repositories for OpenVPN 2.x, where they should always be in sync:
- GitHub — https://github.com/OpenVPN/openvpn/
- GitLab — https://gitlab.com/openvpn/openvpn
- SourceForge.net — https://sourceforge.net/p/openvpn/openvpn/
OpenVPN 3 Core Library
The OpenVPN 3 core library is a C++11 (and newer) source code library used by OpenVPN 3 Linux, OpenVPN Connect, and OpenVPN for Android. This library contains the lower-level interfaces to implement the OpenVPN wire protocol.
- GitHub — https://github.com/OpenVPN/openvpn3/
OpenVPN 2 GUI for Windows
OpenVPN for Android
OpenVPN 3 Linux
OpenVPN 3 Linux is a new, OpenVPN-3-based implementation focusing on Linux with a completely different approach and user interface compared to the classic OpenVPN 2.x generation. You can find more information here:
We keep three independent git repositories for OpenVPN 3 Linux in sync
- Codeberg — https://codeberg.org/OpenVPN/openvpn3-linux (primary)
- GitLab — https://gitlab.com/openvpn/openvpn3-linux
- GitHub — https://github.com/OpenVPN/openvpn3-linux
OpenVPN Connect v3
OpenVPN Inc. develops the VPN client OpenVPN Connect. It’s included with OpenVPN Access Server, a self-hosted business VPN. It’s also used to connect to CloudConnexa, our OpenVPN-as-a-Service solution. OpenVPN Connect is not open source, but you can download it free from our website and select App Stores. With it, you can connect to any OpenVPN server. We built it on the open-source OpenVPN 3 client library listed above.
Building OpenVPN
Each of these OpenVPN projects should contain a README file in the git repository or their corresponding source archive. This file should describe the needed steps to build the project yourself. As each of these OpenVPN projects is quite different and available on various platforms, the build process is specific to each project and platform.
Reporting Bugs
If you're unsure if your problem is a bug, you can ask about it on OpenVPN support channels. The community developer support section contains various channels to reach the OpenVPN community and developers:
If you've genuinely found a bug, check on the bug report sites below if the same issue has been reported and possibly fixed already. If you've found a new, unfixed bug, report it with as many relevant details as possible; good bug reports help resolve the problem quickly. In each bug report, you should document a few things as outlined below.
To report bugs for OpenVPN 2.x — https://github.com/OpenVPN/openvpn/issues
To report bugs for OpenVPN 3.x Core — https://github.com/OpenVPN/openvpn3/issues
To report bugs for OpenVPN3 Linux — https://codeberg.org/OpenVPN/openvpn3-linux/issues
Make sure to include in your bug report as much details as possible:
- Operating system (e.g., OpenBSD 4.3, Fedora 36, Ubuntu 22.04 LTS, Windows 11, Android 12).
- Report as much information about the OpenVPN version you're running as you can.
- Relevant parts of OpenVPN client and/or server logs (when available).
- OpenVPN 2.x logs should use --verb 4.
- OpenVPN 3 Linux should set openvpn3-admin log-service --log-level 6 and the configuration profile should also use --verb 6. See openvpn3-admin-log-service(8), openvpn3-config-import(1) and openvpn3-config-manage(1) man pages for details.
- If you built OpenVPN yourself, include the ten first lines of config.log, where this file is available.
- Finally, describe the problem to the best of your ability. It is helpful to understand the background a bit.