Deploy OpenVPN server or client under 10 second.
1.9K
Run OpenVPN service on docker container. You can deploy own VPN service under 60 seconds. Just single container with create certificates and run server and client modes.
/etc/openvpn/server/ directory./etc/openvpn/server/oneconfig/server.conf .oneserverconfig file to move server configuration to other server or easily deploy with less store./etc/openvpn/server/.All environment variables has a default define. Some variables (like IPv4 and IPv6 address) is cannot be pre defined in script. Script has a function to determine your IPv4 only, IPv6 only or DualStack (IPv4 and IPv6) connection address. If you want to change default environment variables, you can just define in your system.
docker run -it -e ip_block="192.168.3.0/24" ahmetozer/openvpn
Environment variables with predefined default values which is used in this system.
## ! entrypoint ; Used for more than one functions
mode="" # Function try to determine your mode. Looks client certificate and server conf.
fast_install="" # No user input, everything is read from environment variable
## ! Client
client_config="/etc/openvpn/client/client1.ovpn" # Client configuration file location.
# If you just give a file name like client_config="example.ovpn" system looks /etc/openvpn/client/example.ovpn
# If you give only directory name client_config="/myvpns/" system looks ovpn and conf files and select only first result.
## ! Used for server-generate - server and client
ip_block=10.0.1.0/24 # Address block for IPv4 to clients
ip6_block=fdac:900d:c0ff:ee::/64 # Address block for IPv6 to clients
ip_nat=yes # Nat on client`s IPv4 addresses
ip6_nat=yes # Nat on client`s IPv6 addresses
server_ip="2001:db8:900d:c0de::2 203.0.113.2" # Clients are use for remote addr Detected by auto
protocol=tcp # Server listen protocol
port=443 # Server listen port
dns1=1.1.1.1 # Primary DNS address for Clients
dns2=8.8.4.4 # Secondary DNS address for Clients
dev_type=tun # Device type. For bridge and L2 transit use tap but tap is not support on phones.
verb=0 # Verbose detail. 0 is no verbose
cipher=AES-256-CBC # Used cipher
auth=SHA512 # Used auth mechanism
EASYRSA_CERT_EXPIRE=3650 #
EASYRSA_CRL_DAYS=3650 #
VPN service require privilege to create VPN and manage vpn files.
Files are stored under /etc/openvpn by default.
If you run in terminal mode, the program ask about configurations then generate server configuration files.
docker run -it --rm -v/data/vpn:/etc/openvpn -e mode="server-generate" -p 443 --privileged ahmetozer/openvpn
Also you can define environment variables in docker run and bypass questions with enabling fast mode.
Non defined variables are use default configurations which are shown in begin of this document.
If you run in not terminal mode, program set fast_install=true by default.
docker run -it --rm -v/data/vpn:/etc/openvpn -e mode="server-generate" -e port=53 -e protocol=udp -p 53/udp -e fast_install=true --privileged ahmetozer/openvpn
#or
docker run -i --rm -v/data/vpn:/etc/openvpn -e mode="server-generate" -e port=53 -e protocol=udp --privileged ahmetozer/openvpn
You can run container without defining mode, system firstly create server configuration files then create first client configuration and finally start the openvpn server.
docker run -it --rm -v/data/vpn:/etc/openvpn -e port=70 -e protocol=tcp -p 70:70 --privileged ahmetozer/openvpn
You have to require all files in /etc/openvpn/server which is created while generating server configuration files. The output in your server will be on /data/vpn/servers/clients/$client.ovpn
docker run -it --rm -v/data/vpn:/etc/openvpn -e mode="client-generate" ahmetozer/openvpn
You can also set client name without reading from terminal
docker run -i --rm -v/data/vpn:/etc/openvpn -e mode="client-generate" -e client=john ahmetozer/openvpn
NOTE: "--privileged" argument is required for managing VPN interface and firewall rules.
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn -e mode="server" ahmetozer/openvpn
#or
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn -e ahmetozer/openvpn server
NOTE: "--privileged" argument is required for managing VPN interface and firewall rules.
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn -e mode="client" ahmetozer/openvpn
#or
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn -e ahmetozer/openvpn client
docker run -it --rm --privileged -v/data/vpn:/etc/openvpn ahmetozer/openvpn
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn ahmetozer/openvpn
docker run -it --rm --privileged -v/data/vpn:/etc/openvpn ahmetozer/openvpn client-generate
docker run -i --rm --privileged -v /data/vpn:/etc/openvpn ahmetozer/openvpn client-generate
#or
docker run -i --rm --privileged -e client="john" -e mode="client-generate" -v/data/vpn:/etc/openvpn ahmetozer/openvpn
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn ahmetozer/openvpn server
#If your IPv6 block is not routed, server as neighbor discovery, you have to reply neighbor discovery questions generated from router. Mostly required on all VPS providers
docker run -it --restart always --cap-add NET_ADMIN --cap-add NET_RAW --network host ahmetozer/ndppd
# Generate OpenVPN server configuration with dedicated IPV6 addr. Replace 2001:900d:c0ff:ee:1 with your range
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn --network host -e ip6_block="2001:900d:c0ff:ee:1::/80" -e ip6_nat=no ahmetozer/openvpn server-generate
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn --network host ahmetozer/openvpn server
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn --network host ahmetozer/openvpn server-generate
docker run -i --rm --privileged -v/data/vpn:/etc/openvpn --network host ahmetozer/openvpn server
Content type
Image
Digest
Size
8.6 MB
Last updated
over 5 years ago
docker pull ahmetozer/openvpn