Create an on demand VPN Server running with OpenVPN using AWS EC2
Project description
~~
Platform Supported
Repo Stats
Deployments
VPN Server
- You need a VPN but don't want to pay for it?
- OpenVPN is the solution, but configuring it manually can be a lengthy process.
- Once configured, keeping the instance up all the time costs $$.
- Scaling up/down a VPN server on demand can make that lengthy process an absolute nightmare.
- This module allows you to create your own on demand VPN server in under 2 minutes.
- The solution is fully automated and runs with
OpenVPN
usingAWS EC2
.
How it works
- Create an AWS EC2 instance using a pre-built OpenVPN AMI.
- Create a security group with the necessary ports allowed.
- Configure the vpn server using SSH.
- Download the OpenVPN client and connect using the public DNS of the ec2 instance.
- All set! Now the internet traffic will be routed through the VPN. Verify it using an IP Lookup
To take it a step further, if you have a registered domain in AWS, vpn-server can be accessed with an alias record in route53 pointing to the public IP of the ec2 instance.
- All the above steps are performed automatically when creating a new VPN server.
- This module can also be used to clean up all the AWS resources spun up for creating a vpn server.
ENV Variables
Environment variables are loaded from any env
file if present.
More on Environment variables
-
VPN_USERNAME - Username to access
OpenVPN Connect
client. -
VPN_PASSWORD - Password to access
OpenVPN Connect
client. -
VPN_PORT - Port number for web interfaces. Defaults to
943
-
IMAGE_ID - AMI ID to be used. Defaults to a pre-built AMI from SSM parameter for OpenVPN Access Server AMI Alias
-
INSTANCE_TYPE - Instance type to use for the VPN server. Defaults to
t2.micro
(minimum memory requirement is 1 GiB) -
KEY_PAIR - Name of the key pair file to connect to ec2. Defaults to
OpenVPN
-
SECURITY_GROUP - Name of the security group. Defaults to
OpenVPN Access Server
-
VPN_INFO - Name of the JSON file to dump the server information. Defaults to
vpn_info.json
-
HOSTED_ZONE - Domain name for the hosted zone.
-
SUBDOMAIN - Alias record name using which the VPN server has to be accessed.
Optionally env vars
for AWS config (AWS_PROFILE_NAME
, AWS_ACCESS_KEY
, AWS_SECRET_KEY
, AWS_REGION_NAME
) can be setup.
Install
python -m pip install vpn-server
Usage
import vpn
# Instantiates the object
vpn_server = vpn.VPNServer()
# Create a VPN Server
vpn_server.create_vpn_server()
# Test an existing VPN Server
# vpn_server.test_vpn()
# Deletes the VPN Server
vpn_server.delete_vpn_server()
:bulb: Please refer to the wiki page for more usage instructions.
Coding Standards
Docstring format: Google
Styling conventions: PEP 8
Clean code with pre-commit hooks: flake8
and
isort
Release Notes
Requirement
python -m pip install gitverse
Usage
gitverse-release reverse -f release_notes.rst -t 'Release Notes'
Linting
PreCommit
will ensure linting, and the doc creation are run on every commit.
Requirement
pip install sphinx==5.1.1 pre-commit recommonmark
Usage
pre-commit run --all-files
Links
License & copyright
© Vignesh Rao
Licensed under the MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for vpn_server-1.4a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7133e0157c2ecd2b3d37f7797d89dcecb94f69f8e1de26b200e9597025627320 |
|
MD5 | 5b2c0b9e29d91dfceb35a7f094a1187b |
|
BLAKE2b-256 | 046a3018de3d6ad690090cf7ca58053dc0922822d5601af358598fd2f76e54cb |