Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cad/ovpm

OpenVPN Management Server - Effortless and free OpenVPN server administration tool
https://github.com/cad/ovpm

cli golang golang-application grpc grpc-gateway iptables network openvpn openvpn-client openvpn-server rest-api route vpn vpn-server

Last synced: 2 months ago
JSON representation

OpenVPN Management Server - Effortless and free OpenVPN server administration tool

Awesome Lists containing this project

README

        

# OVPM - OpenVPN Management Server

![Build Status](https://github.com/cad/ovpm/workflows/Go/badge.svg)
[![GitHub version](https://badge.fury.io/gh/cad%2Fovpm.svg)](https://badge.fury.io/gh/cad%2Fovpm)
[![codecov](https://codecov.io/gh/cad/ovpm/branch/master/graph/badge.svg)](https://codecov.io/gh/cad/ovpm)
[![GoDoc](https://godoc.org/github.com/cad/ovpm?status.svg)](https://godoc.org/github.com/cad/ovpm)

*OVPM* allows you to administrate an **OpenVPN** server on linux easily via command line and web interface.

With OVPM you can create and run an OpenVPN server, add/remove VPN users, generate client .ovpn files for your users etc.

*This software is not stable yet. We recommend against using it for anything serious until, version 1.0 is released.*

**NOTICE: Version 0.2.8 comes with `comp-lzo` option disabled by default as it is deprecated by OpenVPN.**

**Roadmap**

- [x] OpenVPN management functionality
- [x] User management functionality
- [x] Network management functionality
- [x] Command Line Interface (CLI)
- [x] API (REST and gRPC)
- [x] Web User Interface (WebUI)
- [ ] Import/Export/Backup OVPM config
- [ ] Effortless client profile (.ovpn file) delivery over Web
- [ ] Monitoring and Quota functionality

**Demo**
Here is a little demo of what it looks on terminal to init the server, create a vpn user and generate **.ovpn** file for the created user.

[![asciicast](https://asciinema.org/a/136016.png)](https://asciinema.org/a/136016)


## Installation
**from RPM (CentOS/Fedora):**

```bash
# Add YUM Repo
$ sudo yum install yum-utils -y
$ sudo yum install epel-release -y
$ sudo yum-config-manager --add-repo https://cad.github.io/ovpm/rpm/ovpm.repo

# Install OVPM
$ sudo yum install ovpm

# Enable and start ovpmd service
$ systemctl start ovpmd
$ systemctl enable ovpmd
```

**from DEB (Ubuntu/Debian):**

This is tested only on Ubuntu >=16.04.3 LTS

```bash
# Add APT Repo
$ sudo sh -c 'echo "deb [trusted=yes] https://cad.github.io/ovpm/deb/ ovpm main" >> /etc/apt/sources.list'
$ sudo apt update

# Install OVPM
$ sudo apt install ovpm

# Enable and start ovpmd service
$ systemctl start ovpmd
$ systemctl enable ovpmd
```

**from Source (go get):**

Only dependency for ovpm is **OpenVPN>=2.3.3**.

```bash
$ go get -u github.com/cad/ovpm/...

# Make sure user nobody and group nogroup is available
# on the system
$ sudo useradd nobody
$ sudo groupadd nogroup

# Start ovpmd on a seperate terminal
$ sudo ovpmd
```

Now ovpmd should be running.

## Quickstart
Create a vpn user and export vpn profile for the created user.

```bash
# We should init the server after fresh install
$ ovpm vpn init --hostname
INFO[0004] ovpm server initialized

# Now, lets create a new vpn user
$ ovpm user create -u joe -p verySecretPassword
INFO[0000] user created: joe

# Finally export the vpn profile for, the created user, joe
$ ovpm user genconfig -u joe
INFO[0000] exported to joe.ovpn
```

OpenVPN profile for user joe is exported to joe.ovpn file.
You can simply use this file with OpenVPN to connect to the vpn server from
another computer.

# Next Steps

* [User Management](https://github.com/cad/ovpm/wiki/User-Management)
* [Network Management](https://github.com/cad/ovpm/wiki/Network-Management)
* [Web Interface](https://github.com/cad/ovpm/wiki/Web-Interface)

# Troubleshooting

## Q: My clients cannot connect to VPN after updating OVPM to v0.2.8

Since `comp-lzo` is disabled by default in OVPM v0.2.8, existing clients' .ovpn profiles became invalid.

In order to solve this you have the options below:

* Generate new .ovpn profile for existing clients
* Or manually remove `comp-lzo` line from clients .ovpn profiles yourself.
* Or you can upgrade to v0.2.9 and enable lzo option back by invoking the following command.
```bash
$ ovpm vpn update --enable-use-lzo
```
But please note that this is not recommended as lzo option is [deprecated](https://community.openvpn.net/openvpn/wiki/DeprecatedOptions?__cf_chl_jschl_tk__=0468cbb180cdf21ca5119b591d260538cf788d30-1595873970-0-AY1Yn79gf57uYv2hrAKPwvzk-xuDvhY79eHrxJqWw1hpbapF-XgOJSsglI70HxmV78LDzJSz7m_A7eDhvzo_hCM-tx4UB7PfccKTtoHATGrOBqq4mHDhggN_EwJ7yee3fIzLgc9kvhL9pOCiISlE3NpbC0SOX21tYwFs1njdpOVGG4dHLMyudNKRGexapsQxiD2i23r30i_dzqS12QobGvPe96CuWS84ARjIRAUlutT6t5SxkccyOBunduDnbgYoB7RN8x7ab8y8Paim9ypizKiEHbxwP0Z2Y3lXByKdzHUUZSJzjzolHyRyQx-nSBuZQQ#Option:--comp-lzo) in OpenVPN.