OpenVPN is an open-source virtual private network (VPN) solution that establishes secure point-to-point or site-to-site connections using SSL/TLS. It offers three primary deployment options:
- OpenVPN Community Edition: A free, command-line-driven implementation requiring manual configuration of both server and client components across Linux, Windows, macOS, Android, and iOS.
- OpenVPN Access Server (openvpn-as): A commercial offering with a web-based management interface, simplified client provisioning, and support for cloud deployments. It inclueds two complimentary concurrent user licenses for evaluation.
- CloudConnexa: A fully managed cloud-native service enabling zero-trust networking without self-hosted infrastructure. It provides three free user slots and features like content filtering and dynamic routing.
This guide focuses on installing OpenVPN Access Server via three methods.
Method 1: Docker Deployment
Create a persistent configuration directory and launch the container:
mkdir -p /opt/openvpn-as/config
docker run -d \
--name=openvpn-as \
--restart=always \
-v /opt/openvpn-as/config:/config \
-e INTERFACE=eth0 \
-e PGID=1001 \
-e PUID=1001 \
-e TZ=UTC \
-p 1194:1194/udp \
-p 443:443/tcp \
-p 943:943/tcp \
--net=host \
--privileged \
linuxserver/openvpn-as
After initialization (monitor with docker logs -f openvpn-as), access the admin portal at https://<server-ip>:943/admin. Default credentials are admin / password. Client profiles can be downloaded from the web UI.
Method 2: APT Repository Installation
Add the officail repository and install:
apt update
apt install -y ca-certificates wget net-tools gnupg
wget -qO /etc/apt/trusted.gpg.d/openvpn.asc https://as-repository.openvpn.net/as-repo-public.asc
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/openvpn.asc] http://as-repository.openvpn.net/as/debian jammy main" > /etc/apt/sources.list.d/openvpn-as.list
apt update
apt install -y openvpn-as
The service (openvpnas) starts automatically. Check status with systemctl status openvpnas. Initial credentials appear in /usr/local/openvpn_as/init.log.
Method 3: Offline DEB Package Installation
Download required packages:
wget https://swupdate.openvpn.net/as/openvpn-as_2.13.1-d8cdeb9c-Ubuntu22_amd64.deb
wget https://swupdate.openvpn.net/as/clients/openvpn-as-bundled-clients-29.deb
Install dependencies:
apt install -y bridge-utils dmidecode iptables iproute2 libc6 libffi7 libgcc-s1 liblz4-1 \
liblzo2-2 libmariadb3 libpcap0.8 libssl3 libstdc++6 libsasl2-2 libsqlite3-0 net-tools \
python3-pkg-resources python3-migrate python3-sqlalchemy python3-mysqldb python3-ldap3 \
sqlite3 zlib1g python3-netaddr python3-arrow python3-lxml python3-constantly \
python3-hyperlink python3-automat python3-service-identity python3-cffi \
python3-defusedxml libcap-ng0 libnl-3-200 libnl-genl-3-200 python3-typing-extensions
Install the packages:
dpkg -i openvpn-as-bundled-clients-29.deb openvpn-as_2.13.1-d8cdeb9c-Ubuntu22_amd64.deb
The service behaves identically to the APT installation, with files located under /usr/local/openvpn_as.
Comparison of Methods
- Docker: Fastest setup but uses an outdated image (last updated ~3 years ago).
- APT: Installs the latest version but may require proxy access for repository connectivity.
- Offline DEB: Bypasses network constraints during installation while providing current software versions, assuming packages are pre-downloaded.