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:
https://github.com/furlongm/openvpn-monitor
# apt-get install gcc libgeoip-dev python-virtualenv python-dev geoip-database-extra # (debian/ubuntu)
# yum install gcc geoip-devel python-virtualenv python-devel GeoIP-data GeoIP-update # (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 0.0.0.0:80
See configuration for details on configuring openvpn-monitor.
apt-get -y install python-geoip python-ipaddr python-humanize python-bottle python-semantic-version apache2 libapache2-mod-wsgi git wget geoip-database-extra
echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" > /etc/apache2/conf-available/openvpn-monitor.conf
a2enconf openvpn-monitor
systemctl restart apache2
yum install -y epel-release
yum install -y python-GeoIP python-ipaddr python-humanize python-bottle python-semantic_version httpd mod_wsgi git wget GeoIP-data GeoIP-update
echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" > /etc/httpd/conf.d/openvpn-monitor.conf
systemctl restart httpd
cd /var/www/html
git clone https://github.com/furlongm/openvpn-monitor.git
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.
# apt-get install gcc libgeoip-dev python-virtualenv python-dev geoip-database-extra nginx uwsgi uwsgi-plugin-python # (debian/ubuntu)
# yum install gcc geoip-devel python-virtualenv python-devel GeoIP-data GeoIP-update nginx uwsgi uwsgi-plugin-python # (centos/rhel)
cd /srv
git clone https://github.com/furlongm/openvpn-monitor.git
cd openvpn-monitor
virtualenv .
. bin/activate
pip install -r requirements.txt
Create a uWSGI config in /etc/uwsgi/apps-available/openvpn-monitor.ini
[uwsgi]
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
mount=/openvpn-monitor=openvpn-monitor.py
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;
}
}
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.
TBD
Add the following line to your OpenVPN server configuration to run the management console on 127.0.0.1 port 5555:
management 127.0.0.1 5555
Refer to the OpenVPN documentation for further information on how to secure access to the management interface.
Copy the example configuration file openvpn-monitor.conf.example
to the same
directory as openvpn-monitor.py.
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
python openvpn-monitor.py
Further debugging can be enabled by specifying the --debug
flag:
cd /var/www/html/openvpn-monitor
python openvpn-monitor.py -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 ([email protected]) and are licensed under Creative Commons License Deed Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0). See http://flags.blogpotato.de/ for more details.