64 lines
1.8 KiB
Bash
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
|
|
|