#!/bin/bash . ./env_peer.sh WG_CONF="/etc/wireguard" PRIV_KEY_FILE="wg${WG_NUM}_privatekey" PUB_KEY_FILE="wg${WG_NUM}_publickey" CONF_FILE="wg${WG_NUM}.conf" if [ -z "$WG_NUM" ]; then echo "Wireguard interface number not provided." exit 1 fi if ! [[ "$WG_NUM" =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then echo "Wireguard interface number has to be a number." exit 2 fi wg genkey | tee wg"$WG_NUM"_privatekey | wg pubkey > wg"$WG_NUM"_publickey PRIVATE_KEY=$(cat $PRIV_KEY_FILE) sudo mkdir -p $WG_CONF sudo mv ./$PRIV_KEY_FILE $WG_CONF sudo mv ./$PUB_KEY_FILE $WG_CONF CONF_INTERFACE="[Interface] PrivateKey = $PRIVATE_KEY Address = $MY_IP/32 DNS = $DNS_SERVER " echo "$CONF_INTERFACE" > "$CONF_FILE" CONF_PEER="[Peer] PublicKey = $PEER_PUBLIC_KEY AllowedIPs = $ALLOWED_IPS Endpoint = $PEER_ENDPOINT PersistentKeepalive = 25 " echo "$CONF_PEER" >> "$CONF_FILE" sudo mv "$CONF_FILE" "$WG_CONF" echo "Config saved to: $WG_CONF/$CONF_FILE" echo "Add the following to the server config:" echo "[Peer] PublicKey = $(sudo cat $WG_CONF/$PUB_KEY_FILE) AllowedIPs = $MY_IP/32 " sudo systemctl enable wg-quick@"wg$WG_NUM" sudo systemctl start wg-quick@"wg$WG_NUM"