diff --git a/ovpnCreate.sh b/ovpnCreate.sh
new file mode 100644
index 0000000..fb201a5
--- /dev/null
+++ b/ovpnCreate.sh
@@ -0,0 +1,219 @@
+#!/bin/bash
+
+# Функция вывода помощи
+usage() {
+ echo "Использовать: $0 protocol username [ip_address]"
+ echo " protocol - udp, tcp и guest(для стронних пользователей TCP)"
+ echo " username - Имя для сертификата"
+ echo " ip_address - Статический IP для клиента в ccd"
+ echo " udp - 10.15.0.0/24"
+ echo " tcp - 100.100.100.0/24"
+ echo " guest - 200.200.200.0/24"
+ exit 1
+}
+
+# Проверка аргументов
+if [[ $# -lt 3 ]]; then
+ usage
+fi
+
+PROTOCOL=$1
+USERNAME=$2
+STATIC_IP=$3
+
+EASYRSA_DIR="/etc/openvpn/$PROTOCOL/easy-rsa"
+CCD_DIR="/etc/openvpn/$PROTOCOL/ccd"
+OUTPUT_DIR="/etc/openvpn/$PROTOCOL/client-configs" # куда складывать .ovpn файлы
+
+# Пути к файлам сертификата и ключа клиента
+CLIENT_KEY="$EASYRSA_DIR/pki/private/$USERNAME.key"
+CLIENT_CERT="$EASYRSA_DIR/pki/issued/$USERNAME.crt"
+CA_CERT="$EASYRSA_DIR/pki/ca.crt"
+
+# Функция проверки, существует ли уже пользователь
+check_user_exists() {
+ local EASYRSA_DIR="$1"
+ local USERNAME="$2"
+
+ if [[ -f "$EASYRSA_DIR/pki/issued/${USERNAME}.crt" ]] || [[ -f "$EASYRSA_DIR/pki/private/${USERNAME}.key" ]]; then
+ echo "Ошибка: пользователь '$USERNAME' уже существует. Удалите его перед повторным созданием."
+ exit 1
+ fi
+}
+
+# Генерация сертификата
+build_client_cert() {
+ local USERNAME="$1"
+
+ ./easyrsa build-client-full "$USERNAME" nopass
+ if [[ $? -ne 0 ]]; then
+ echo "Ошибка подписи сертификата для $USERNAME"
+ exit 1
+ fi
+}
+
+# Создаем файл для ccd если задан IP
+create_ccd_file() {
+ local CCD_DIR="$1"
+ local USERNAME="$2"
+ local STATIC_IP="$3"
+
+ if [[ -n "$STATIC_IP" ]]; then
+ local CCD_FILE="$CCD_DIR/$USERNAME"
+ echo "ifconfig-push $STATIC_IP 255.255.255.0" > "$CCD_FILE"
+ echo "Файл $CCD_FILE создан с IP-адресом $STATIC_IP"
+ fi
+}
+
+# Проверяем, что все нужные файлы есть
+check_files_exist() {
+ for f in "$@"; do
+ if [[ ! -f "$f" ]]; then
+ echo "Файл $f не найден. Прервать."
+ exit 1
+ fi
+ done
+}
+
+# Основной код программы
+case "$PROTOCOL" in
+ udp)
+ check_user_exists "$EASYRSA_DIR" "$USERNAME"
+ cd "$EASYRSA_DIR" || { echo "Не удалось перейти в каталог $EASYRSA_DIR"; exit 1; }
+ build_client_cert "$USERNAME"
+ echo "Сертификат для пользователя '$USERNAME' успешно создан."
+ create_ccd_file "$CCD_DIR" "$USERNAME" "$STATIC_IP"
+ check_files_exist "$CLIENT_KEY" "$CLIENT_CERT" "$CA_CERT"
+ OVPN_FILE="$OUTPUT_DIR/$USERNAME.ovpn"
+{
+cat << EOF
+client
+dev tun
+proto udp
+remote v.maverik.ru 1194
+resolv-retry infinite
+nobind
+persist-key
+persist-tun
+# tls-client
+data-ciphers-fallback AES-256-CBC
+auth SHA512
+# tun-mtu 1500
+# mssfix
+key-direction 1
+
+EOF
+# cat "$BASE_CONFIG"
+# echo
+ echo ""
+ cat "$CA_CERT"
+ echo ""
+ echo ""
+ # В сертификате убирать строки BEGIN/END, иначе дублируем - лучше так:
+ awk '/-----BEGIN CERTIFICATE-----/{flag=1} flag; /-----END CERTIFICATE-----/{flag=0}' "$CLIENT_CERT"
+ echo ""
+ echo ""
+ cat "$CLIENT_KEY"
+ echo ""
+ echo ""
+ cat /etc/openvpn/udp/server/ta.key
+ echo ""
+} > "$OVPN_FILE"
+
+ python3.9 /root/scripts/rocketchat.py $OVPN_FILE
+ echo "Файл клиента $(basename $OVPN_FILE) успешно создан и отпавлен в RocketChat."
+ ;;
+ tcp)
+ check_user_exists "$EASYRSA_DIR" "$USERNAME"
+ cd "$EASYRSA_DIR" || { echo "Не удалось перейти в каталог $EASYRSA_DIR"; exit 1; }
+ build_client_cert "$USERNAME"
+ echo "Сертификат для пользователя '$USERNAME' успешно создан."
+ create_ccd_file "$CCD_DIR" "$USERNAME" "$STATIC_IP"
+ check_files_exist "$CLIENT_KEY" "$CLIENT_CERT" "$CA_CERT"
+ OVPN_FILE="$OUTPUT_DIR/$USERNAME.ovpn"
+{
+cat << EOF
+client
+dev tun
+proto tcp
+remote v.maverik.ru 1114
+resolv-retry infinite
+nobind
+persist-key
+persist-tun
+#tls-client
+data-ciphers-fallback AES-256-CBC
+auth SHA1
+#tun-mtu 1500
+# mssfix 1620
+#key-direction 1
+
+EOF
+ echo ""
+ cat "$CA_CERT"
+ echo ""
+ echo ""
+ # В сертификате убирать строки BEGIN/END, иначе дублируем - лучше так:
+ awk '/-----BEGIN CERTIFICATE-----/{flag=1} flag; /-----END CERTIFICATE-----/{flag=0}' "$CLIENT_CERT"
+ echo ""
+ echo ""
+ cat "$CLIENT_KEY"
+ echo ""
+} > "$OVPN_FILE"
+
+ zip -j $OUTPUT_DIR/$USERNAME.zip \
+ $CA_CERT $CLIENT_CERT $CLIENT_KEY $OVPN_FILE
+
+ python3.9 /root/scripts/rocketchat.py $OUTPUT_DIR/$USERNAME.zip
+ echo "Архив для клиента $USERNAME.zip успешно создан и отпавлен в RocketChat."
+ ;;
+ guest)
+ check_user_exists "$EASYRSA_DIR" "$USERNAME"
+ cd "$EASYRSA_DIR" || { echo "Не удалось перейти в каталог $EASYRSA_DIR"; exit 1; }
+ build_client_cert "$USERNAME"
+ echo "Сертификат для пользователя '$USERNAME' успешно создан."
+ create_ccd_file "$CCD_DIR" "$USERNAME" "$STATIC_IP"
+ check_files_exist "$CLIENT_KEY" "$CLIENT_CERT" "$CA_CERT"
+ OVPN_FILE="$OUTPUT_DIR/$USERNAME.ovpn"
+{
+cat << EOF
+client
+dev tun
+proto tcp
+remote v.maverik.ru 1194
+resolv-retry infinite
+remote-cert-tls server
+persist-key
+persist-tun
+#cipher AES-128-CBC
+comp-lzo
+verb 3
+sndbuf 0
+rcvbuf 0
+#status /var/log/openvpn/openvpn-status.log 1
+#status-version 3
+#log-append /var/log/openvpn/openvpn-client.log
+;mute 20
+
+EOF
+# cat "$BASE_CONFIG"
+ echo
+ echo ""
+ cat "$CA_CERT"
+ echo ""
+ echo ""
+ # В сертификате убирать строки BEGIN/END, иначе дублируем - лучше так:
+ awk '/-----BEGIN CERTIFICATE-----/{flag=1} flag; /-----END CERTIFICATE-----/{flag=0}' "$CLIENT_CERT"
+ echo ""
+ echo ""
+ cat "$CLIENT_KEY"
+ echo ""
+} > "$OVPN_FILE"
+
+ python3.9 /root/scripts/rocketchat.py $OVPN_FILE
+ echo "Файл клиента $(basename $OVPN_FILE) успешно создан и отпавлен в RocketChat."
+ ;;
+ *)
+ usage
+ ;;
+esac
\ No newline at end of file