mirror of
https://github.com/cmur2/openvpn-status-web.git
synced 2024-11-17 06:56:13 +01:00
93 lines
2.9 KiB
Markdown
93 lines
2.9 KiB
Markdown
# openvpn-status-web
|
|
|
|
![ci](https://github.com/cmur2/openvpn-status-web/workflows/ci/badge.svg) [![Depfu](https://badges.depfu.com/badges/c264e2f70f2a19c43f880ddcb4a12ba8/overview.svg)](https://depfu.com/github/cmur2/openvpn-status-web?project_id=6194)
|
|
|
|
## Description
|
|
|
|
Small (another word for naive in this case, it's simple and serves my needs) [Rack](http://rack.github.com/) application providing the information an [OpenVPN](http://openvpn.net/index.php/open-source.html) server collects in it's status file especially including a list of currently connected clients (common name, remote address, traffic, ...).
|
|
|
|
It lacks:
|
|
|
|
* caching (parses file on each request, page does auto-refresh every minute as OpenVPN updates the status file these often by default)
|
|
* management interface support
|
|
* *possibly more...*
|
|
|
|
## Usage
|
|
|
|
Install the gem:
|
|
|
|
gem install openvpn-status-web
|
|
|
|
Create a configuration file in YAML format somewhere:
|
|
|
|
```yaml
|
|
# listen address and port
|
|
host: "0.0.0.0"
|
|
port: "8080"
|
|
# optional: drop priviliges in case you want to but you should give this user at least read access on the log files
|
|
user: "nobody"
|
|
group: "nogroup"
|
|
# logfile is optional, logs to STDOUT else
|
|
logfile: "openvpn-status-web.log"
|
|
# hash with each VPNs display name for humans as key and further config as value
|
|
vpns:
|
|
My Small VPN:
|
|
# the status file path and status file format version are required
|
|
version: 1
|
|
status_file: "/var/log/openvpn-status.log"
|
|
My Other VPN:
|
|
version: 3
|
|
status_file: "/var/log/other-openvpn-status.log"
|
|
```
|
|
|
|
Your OpenVPN configuration should contain something like this:
|
|
|
|
```
|
|
# ...snip...
|
|
status /var/log/openvpn-status.log
|
|
status-version 1
|
|
# ...snip...
|
|
```
|
|
|
|
For more information about OpenVPN status file and version, see their [man page](https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage). openvpn-status-web is able to parse all versions from 1 to 3.
|
|
|
|
## Advanced topics
|
|
|
|
### Authentication
|
|
|
|
If the information exposed is important to you serve it via the VPN or use a webserver as a proxy to handle SSL and/or HTTP authentication.
|
|
|
|
### Startup
|
|
|
|
There is a [Dockerfile](docs/Dockerfile) that can be used to build a Docker image for running openvpn-status-web.
|
|
|
|
This can for example be used with `docker-compose` via:
|
|
|
|
```yaml
|
|
version: "2.4"
|
|
services:
|
|
openvpn-status-web:
|
|
image: your-selfbuilt-docker-image
|
|
user: root # needed since the default status files are chmod 600
|
|
volumes:
|
|
- /path/to/host/config.yml:/etc/openvpn-status-web/config.yml:ro
|
|
- /run/openvpn-server:/run/openvpn-server
|
|
ports:
|
|
- "8080:8080"
|
|
```
|
|
|
|
The `/path/to/host/config.yml` could be:
|
|
|
|
```yaml
|
|
host: "0.0.0.0"
|
|
port: "8080"
|
|
vpns:
|
|
my-cool-vpn: # the following depends on your setup
|
|
version: 2
|
|
status_file: "/run/openvpn-server/status-my-cool-vpn.log"
|
|
```
|
|
|
|
## License
|
|
|
|
openvpn-status-web is licensed under the Apache License, Version 2.0. See LICENSE for more information.
|