ccyunchina-deploy/roles/openvpn/files/install.sh

64 lines
1.8 KiB
Bash

#!/bin/bash
WORK_DIR="$PWD"
IMAGE="y2ghost/openvpn"
CONTAINER_NAME="openvpn"
SRV_NAME="docker-openvpn.service"
HOST_OVPN_CONF_DIR="/opt/openvpn/etc"
MOUNT_OVPN_CONF_DIR="${HOST_OVPN_CONF_DIR}:/etc/openvpn"
usage() {
echo "用法: $0 <VPN Server IP> <router>"
echo "示例: $0 10.2.1.224 10.2.0.0/16"
}
OVPN_SERVER_HOST="$1"
if [ -z "${OVPN_SERVER_HOST:-}" ]; then
usage
exit 1
fi
OVPN_ROUTER="$2"
if [ -z "${OVPN_ROUTER:-}" ]; then
usage
exit 1
fi
# 尝试导入当前目录下的openvpn环境变量文件
VARS_ENV=""
LOCAL_VARS_FILE="${WORK_DIR}/ovpn_vars"
OVPN_VARS_FILE="${HOST_OVPN_CONF_DIR}/vars"
[ -r "$LOCAL_VARS_FILE" ] && {
if ! source "$LOCAL_VARS_FILE"; then
echo "无法导入$LOCAL_VARS_FILE文件中的变量,请确认变量格式是否正常!"
exit 1
fi
VARS_ENV="-e EASYRSA_VARS_FILE=/etc/openvpn/vars"
}
echo "开始安装openvpn docker服务"
echo "尝试卸载已安装的openvpn docker服务"
systemctl stop --now ${SRV_NAME}
echo "生成新的服务配置数据"
rm -rf ${HOST_OVPN_CONF_DIR}
mkdir -p ${HOST_OVPN_CONF_DIR}
cp ${LOCAL_VARS_FILE} ${OVPN_VARS_FILE}
docker=/opt/k8s/bin/docker
$docker load -i ${WORK_DIR}/openvpn-docker-image.tar
$docker run -v ${MOUNT_OVPN_CONF_DIR} --rm ${IMAGE} ovpn_genconfig -N -u tcp://${OVPN_SERVER_HOST} -r ${OVPN_ROUTER}
echo "初始化PKI数据"
$docker run ${VARS_ENV} -v ${MOUNT_OVPN_CONF_DIR} --rm -it ${IMAGE} ovpn_initpki
echo "安装和启动服务"
cp -af ${WORK_DIR}/${SRV_NAME} /etc/systemd/system/${SRV_NAME}
systemctl enable --now ${SRV_NAME}
install ${WORK_DIR}/genovpnuser /usr/local/bin/genovpnuser
install ${WORK_DIR}/delovpnuser /usr/local/bin/delovpnuser
install ${WORK_DIR}/output.sh /usr/local/bin/output.sh
cp -af ${WORK_DIR}/stream.txt /usr/local/bin/stream.txt