Skip to main content

A simple web based openvpn monitor

Project description



openvpn-monitor is a simple python program to generate html that displays the status of an OpenVPN server, including all current connections. It uses the OpenVPN management console. It typically runs on the same host as the OpenVPN server, however it does not necessarily need to.


The current source code is available on github:

Install Options

N.B. all CentOS/RHEL instructions assume the EPEL repository has been installed:

yum install -y epel-release

virtualenv + pip + gunicorn

# apt-get install python-virtualenv geoip-database-extra geoipupdate      # (debian/ubuntu)
# yum install python-virtualenv GeoIP-update geolite2-city python2-geoip2 # (centos/rhel)
mkdir /srv/openvpn-monitor
cd /srv/openvpn-monitor
virtualenv .
. bin/activate
pip install --upgrade pip
pip install openvpn-monitor gunicorn
gunicorn openvpn-monitor -b

See configuration for details on configuring openvpn-monitor.


Install dependencies and configure apache

Debian / Ubuntu
apt-get -y install git apache2 libapache2-mod-wsgi python-geoip2 python-ipaddr python-humanize python-bottle python-semantic-version geoip-database-extra geoipupdate
echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/" > /etc/apache2/conf-available/openvpn-monitor.conf
a2enconf openvpn-monitor
systemctl restart apache2
yum install -y git httpd mod_wsgi python2-geoip2 python-ipaddr python-humanize python-bottle python-semantic_version geolite2-city GeoIP-update
echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/" > /etc/httpd/conf.d/openvpn-monitor.conf
systemctl restart httpd

Checkout openvpn-monitor

cd /var/www/html
git clone

See configuration for details on configuring openvpn-monitor.


docker run -p 80:80 ruimarinho/openvpn-monitor

Read the docker installation instructions for details on how to generate a dynamic configuration using only environment variables.

nginx + uwsgi

Install dependencies

# apt-get install gcc libgeoip-dev python-virtualenv python-dev geoip-database-extra nginx uwsgi uwsgi-plugin-python geoipupdate                  # (debian/ubuntu)
# yum install gcc geoip-devel python-virtualenv python-devel GeoIP-data GeoIP-update nginx uwsgi uwsgi-plugin-python geolite2-city python2-geoip2 # (centos/rhel)

Checkout openvpn-monitor

cd /srv
git clone
cd openvpn-monitor
virtualenv .
. bin/activate
pip install -r requirements.txt

uWSGI app config

Create a uWSGI config in /etc/uwsgi/apps-available/openvpn-monitor.ini

base = /srv
project = openvpn-monitor
logto = /var/log/uwsgi/app/%(project).log
plugins = python
chdir = %(base)/%(project)
virtualenv = %(chdir)
module = openvpn-monitor:application
manage-script-name = true

Nginx site config

Create an Nginx config in /etc/nginx/sites-available/openvpn-monitor

server {
    listen 80;
    location /openvpn-monitor/ {
        uwsgi_pass unix:///run/uwsgi/app/openvpn-monitor/socket;
        include uwsgi_params;

Enable uWSGI app and Nginx site, and restart services

ln -s /etc/uwsgi/apps-available/openvpn-monitor.ini /etc/uwsgi/apps-enabled/
service uwsgi restart
ln -s /etc/nginx/sites-available/openvpn-monitor /etc/nginx/sites-enabled/
service nginx reload

See configuration for details on configuring openvpn-monitor.

deb / rpm



Configure OpenVPN

Add the following line to your OpenVPN server configuration to run the management console on port 5555, with the management password in /etc/openvpn/pw-file:

management 5555 pw-file

To run the management console on a socket, with the management password in /etc/openvpn/pw-file:

management socket-name unix pw-file

Refer to the OpenVPN documentation for further information on how to secure access to the management interface.

Configure openvpn-monitor

Copy the example configuration file openvpn-monitor.conf.example to the same directory as

cp openvpn-monitor.conf.example openvpn-monitor.conf

In this file you can set site name, add a logo, set the default map location (latitude and longitude). If not set, the default location is New York, USA.

Once configured, navigate to http://myipaddress/openvpn-monitor/

Note the trailing slash, the images may not appear without it.


openvpn-monitor can be run from the command line in order to test if the html generates correctly:

cd /var/www/html/openvpn-monitor

Further debugging can be enabled by specifying the --debug flag:

cd /var/www/html/openvpn-monitor
python -d


openvpn-monitor is licensed under the GPLv3, a copy of which can be found in the COPYING file.


Flags are created by Matthias Slovig ( and are licensed under Creative Commons License Deed Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0). See for more details.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openvpn-monitor-1.1.3.tar.gz (206.9 kB view hashes)

Uploaded source

Built Distribution

openvpn_monitor-1.1.3-py3-none-any.whl (301.7 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page