Scripts for deploying and managing OpenVPN servers with Caddy integration. Built on d3vilh/openvpn-server.
For detailed specifications and architecture, please refer to the documentation.
Overview
This system consists of three main components:
- Caddy Server (Reverse Proxy)
- OpenVPN Management
- Backup System
Prerequisites
- Linux system with sudo privileges
- Docker installed and running
- Python 3.9 or higher
Installation
There are two ways to install and use Peony:
Method 1: Via pip (Recommended)
- Create and activate a virtual environment:
python -m venv venv_peony
source venv_peony/bin/activate
- Install Peony:
pip install [projet-name]
Commands will be available as:
sudo peony-caddy init
sudo peony-vpn create vpn01
sudo peony-backup
Method 2: From Source
- Clone the repository:
git clone [repository-url] peony
cd peony
- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
When running from source, commands should be executed from the project root as:
sudo python3 src/peony/caddy.py init
sudo python3 src/peony/vpn.py create vpn01
sudo python3 src/peony/backup.py
Getting Started
Initialize Configuration Files:
# If installed with pip:
sudo peony-caddy init
# If running from source:
sudo python3 src/peony/caddy.py init
This will create the necessary configuration files in ~/.config/peony/.
Edit the Configuration Files:
Caddy Configuration (~/.config/peony/caddy_settings):
HOSTNAME= # Your server hostname or IP (e.g., serv.company.com) Required:
# Optional (default values shown):
CADDY_VOLUME_PATH=/opt/docker/volumes/${container_name}
VPN_PROXY_NETWORK=vpns-proxy
VPN_DOCKER_SUBNET=172.28.0.0/24
VPN Configuration (~/.config/peony/vpn_settings):
# Easy-RSA Certificate Configuration:
EASYRSA_REQ_COUNTRY= # Two-letter country code (e.g., "FR")
EASYRSA_REQ_PROVINCE= # State or province
EASYRSA_REQ_CITY= # City name
EASYRSA_REQ_ORG= # Organization name
EASYRSA_REQ_EMAIL= # Admin email address
EASYRSA_REQ_OU= # Organizational Unit (optional)
# Certificate Parameters (optional with defaults):
EASYRSA_KEY_SIZE= # Key size in bits (2048 or 4096 recommended)
EASYRSA_CA_EXPIRE= # CA certificate expiry in days
EASYRSA_CERT_EXPIRE= # Server certificate expiry in days
EASYRSA_CERT_RENEW= # Certificate renewal period in days
EASYRSA_CRL_DAYS= # Certificate validity period
# OpenVPN Configuration (optional with defaults):
OPENVPN_PROT=udp # Protocol (udp or tcp)
OPENVPN_GATEWAY=false # Route all client traffic through VPN
OPENVPN_DNS=false # Use VPN DNS servers
Usage
Commands below are shown for pip installation. If running from source, replace peony-command with python3 src/peony/command.py.
Caddy Management:
# Initialize configuration files (first time setup)
sudo peony-caddy init
# Create Caddy server
sudo peony-caddy create [caddy-name]
# Remove Caddy server
sudo peony-caddy remove [caddy-name]
VPN Management:
# Create a new VPN
sudo peony-vpn create [--homesubnet 192.168.0.0] [--caddy caddycontainer] vpn01
# Update existing VPN
sudo peony-vpn update vpn01
# Remove VPN
sudo peony-vpn remove vpn01
# List all VPNs
sudo peony-vpn list
Backup Management:
# Create backup with default settings
sudo peony-backup
# Available options:
--dest /path/to/backup # Custom backup location
--file backup-name.tgz # Custom backup filename
--caddy custom-caddy # Specify Caddy container name
Directory Structure and Path Management
Configuration Files:
- ~/.config/peony/caddy_settings
- ~/.config/peony/vpn_settings
Application Directories:
- /opt/docker/volumes/[caddy-name]: Caddy server files
- /opt/vpn/config/[vpn-name]: VPN configurations
- /opt/vpn/backup/: Backup files
Important Notes
Setup Order:
- Run init to create configuration files.
- Edit configuration files in ~/.config/peony/.
- Create Caddy server BEFORE creating any VPNs.
- Create VPNs after Caddy is running.
First VPN Creation:
- Initial setup may take time (key generation).
- Monitor initialization: docker logs -f [vpn-name].
- Wait for completion before attempting connections.
System Requirements:
- All commands require sudo privileges.
- Docker must be installed and running.
- Virtual environment recommended for installation.
Accessing Your VPNs
After setup is complete:
- Access the VPN selection page: https://[your-hostname]/vpn-select.html.
- Choose your VPN from the list.
- Log in to the management interface with provided Admin credentials.
Verify Settings:
- Click on Configuration → OpenVPN Server: Edit config.
- Click on Configuration → OpenVPN Client: View config.
- Click on Configuration → EasyRSA: View vars.
- Create certificates from the Certificates section.
Create Users:
Administrators can manage profiles and create new users from the Profile Configuration page. (Click on the user icon → Profile Configuration).
Troubleshooting:
Verify your .ovpn files if connections fail. Update the OpenVPN client configuration from the UI dashboard if needed.
Metadata
Release files for thewiw-peony-openvpn 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| thewiw_peony_openvpn-0.1.4.tar.gz | 18.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| thewiw_peony_openvpn-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.7 kB
Release files / thewiw_peony_openvpn-0.1.4.tar.gz
| Download URL | thewiw_peony_openvpn-0.1.4.tar.gz |
|---|---|
| Size | 18.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f21bb6c0e7625a1ee982e87fb825e8c03ee43da11a569af2db141eceb66ac033
|
|
BLAKE2b-256 checksum How to use checksums |
9218b9bcbed430acf8732f43e7f31a5a2d7bfc4f3f0953cf3bd10dcade4585ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.2
|
Release files / thewiw_peony_openvpn-0.1.4-py3-none-any.whl
| Download URL | thewiw_peony_openvpn-0.1.4-py3-none-any.whl |
|---|---|
| Size | 20.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f98e7b9751d6395824c962e618ef8c3bbf89d5eac044a745bbee4a53e480f6a
|
|
BLAKE2b-256 checksum How to use checksums |
12eb1a98c917be0d35cd2903cb3a73ac88e306027967999d5df0d06bfe98863a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.2
|