UI web simple para administrar usuarios de OpenVPN, sus certificados y rutas en Linux. Mientras que el backend está escrito en GO, Frontend se basa en Vue.js.
¡DESCARGO DE RESPONSABILIDAD! Este proyecto fue creado para usuarios experimentados (administradores de sistemas) y entornos privados (por ejemplo, protegidos por políticas de red) solamente. Por lo tanto, no se implementa con seguridad en mente (por ejemplo, no verifica estrictamente todos los parámetros pasados por los usuarios, etc.). También depende en gran medida de los archivos y falla si los archivos requeridos no están disponibles.
client-config-dir
) para cada usuario;remote
automáticamente definido en la plantilla client.conf.tpl
).Administrar usuarios en OVPN-Admin:
Un ejemplo de tablero hecho con métricas OVPN-Admin:
Hay un Docker-Compose.yaml listo para usar, por lo que puede cambiar/agregar los valores que necesita e iniciarlo con Start.sh.
Requisitos: necesita instalados Docker y Docker-Compose.
Comandos para ejecutar:
git clone https://github.com/palark/ovpn-admin.git
cd ovpn-admin
./start.sh
Imágenes de Docker listas disponibles en Docker Hub. Las etiquetas son simples: $VERSION
o latest
para OVPN-Admin y openvpn-$VERSION
o openvpn-latest
para OpenVPN-server
Requisitos. Necesita Linux con los siguientes componentes instalados:
Comandos para ejecutar:
git clone https://github.com/palark/ovpn-admin.git
cd ovpn-admin
./bootstrap.sh
./build.sh
./ovpn-admin
(No olvide configurar todos los parámetros necesarios por adelantado).
También puede descargar y usar binarios prebuilt de la página de versiones; solo elija un archivo Tar.gz relevante.
bash
, coreutils
y easy-rsa
, por lo que los sistemas Linux solo son compatibles en este momento.--auth
y --auth.db="/etc/easyrsa/pki/users.db
" e instale OpenVPN-user. Esta herramienta debe estar disponible en su $PATH
y su binario debe ser ejecutable ( +x
).--storage.backend=kubernetes.secrets
-WIP--storage.backend=kubernetes.secrets
-WIP--ccd
y --ccd.path="/etc/openvpn/ccd"
plan para usar la configuración de direcciones estáticas para los usuarios no olvida proporcionar --ovpn.network="172.16.100.0/24"
con válida Network OpenVPN-Server usage: ovpn-admin [<flags>]
Flags:
--help show context-sensitive help (try also --help-long and --help-man)
--listen.host="0.0.0.0" host for ovpn-admin
(or OVPN_LISTEN_HOST)
--listen.port="8080" port for ovpn-admin
(or OVPN_LISTEN_PORT)
--listen.base-url="/" base URL for ovpn-admin web files
(or $OVPN_LISTEN_BASE_URL)
--role="master" server role, master or slave
(or OVPN_ROLE)
--master.host="http://127.0.0.1"
(or OVPN_MASTER_HOST) URL for the master server
--master.basic-auth.user="" user for master server's Basic Auth
(or OVPN_MASTER_USER)
--master.basic-auth.password=""
(or OVPN_MASTER_PASSWORD) password for master server's Basic Auth
--master.sync-frequency=600 master host data sync frequency in seconds
(or OVPN_MASTER_SYNC_FREQUENCY)
--master.sync-token=TOKEN master host data sync security token
(or OVPN_MASTER_TOKEN)
--ovpn.network="172.16.100.0/24"
(or OVPN_NETWORK) NETWORK/MASK_PREFIX for OpenVPN server
--ovpn.server=HOST:PORT:PROTOCOL ...
(or OVPN_SERVER) HOST:PORT:PROTOCOL for OpenVPN server
can have multiple values
--ovpn.server.behindLB enable if your OpenVPN server is behind Kubernetes
(or OVPN_LB) Service having the LoadBalancer type
--ovpn.service="openvpn-external"
(or OVPN_LB_SERVICE) the name of Kubernetes Service having the LoadBalancer
type if your OpenVPN server is behind it
--mgmt=main=127.0.0.1:8989 ...
(or OVPN_MGMT) ALIAS=HOST:PORT for OpenVPN server mgmt interface;
can have multiple values
--metrics.path="/metrics" URL path for exposing collected metrics
(or OVPN_METRICS_PATH)
--easyrsa.path="./easyrsa/" path to easyrsa dir
(or EASYRSA_PATH)
--easyrsa.index-path="./easyrsa/pki/index.txt"
(or OVPN_INDEX_PATH) path to easyrsa index file
--ccd enable client-config-dir
(or OVPN_CCD)
--ccd.path="./ccd" path to client-config-dir
(or OVPN_CCD_PATH)
--templates.clientconfig-path=""
(or OVPN_TEMPLATES_CC_PATH) path to custom client.conf.tpl
--templates.ccd-path="" path to custom ccd.tpl
(or OVPN_TEMPLATES_CCD_PATH)
--auth.password enable additional password authorization
(or OVPN_AUTH)
--auth.db="./easyrsa/pki/users.db"
(or OVPN_AUTH_DB_PATH) database path for password authorization
--log.level set log level: trace, debug, info, warn, error (default info)
(or LOG_LEVEL)
--log.format set log format: text, json (default text)
(or LOG_FORMAT)
--storage.backend storage backend: filesystem, kubernetes.secrets (default filesystem)
(or STORAGE_BACKEND)
--version show application version
OVPN-Admin se creó originalmente en Flant y se usó internamente durante años.
En marzo de 2021, se hizo público y todavía se desarrolló en Flant. A saber, @vitaliy-sn creó su primera versión en Python, y @pashcovich lo reescribió en Go.
En noviembre de 2024, este proyecto fue trasladado a Palark, que actualmente es responsable de su mantenimiento y desarrollo.