2025-04-30 19:43:45 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
2025-05-19 09:46:12 +00:00
|
|
|
. ./env_peer.sh
|
2025-05-19 09:44:02 +00:00
|
|
|
|
2025-04-30 19:43:45 +02:00
|
|
|
WG_CONF="/etc/wireguard"
|
|
|
|
|
PRIV_KEY_FILE="wg${WG_NUM}_privatekey"
|
|
|
|
|
PUB_KEY_FILE="wg${WG_NUM}_publickey"
|
|
|
|
|
CONF_FILE="wg${WG_NUM}.conf"
|
|
|
|
|
|
2025-05-19 09:44:02 +00:00
|
|
|
if [ -z "$WG_NUM" ]; then
|
2025-04-30 19:43:45 +02:00
|
|
|
echo "Wireguard interface number not provided."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2025-05-19 09:44:02 +00:00
|
|
|
if ! [[ "$WG_NUM" =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then
|
2025-04-30 19:43:45 +02:00
|
|
|
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
|
|
|
|
|
|
2025-05-19 09:44:02 +00:00
|
|
|
CONF_INTERFACE="[Interface]
|
2025-04-30 19:43:45 +02:00
|
|
|
PrivateKey = $PRIVATE_KEY
|
2025-05-19 09:44:02 +00:00
|
|
|
Address = $PEER_IP
|
|
|
|
|
DNS = $DNS_SERVER
|
|
|
|
|
"
|
|
|
|
|
echo "$CONF_INTERFACE" > "$CONF_FILE"
|
|
|
|
|
|
|
|
|
|
CONF_PEER="[Peer]
|
|
|
|
|
PublicKey = $PEER_PUBLIC_KEY
|
|
|
|
|
AllowedIPs = $ALLOWED_IPS
|
|
|
|
|
Endpoint = $PEER_ENDPOINT
|
|
|
|
|
PersistentKeepalive = 25
|
2025-04-30 19:43:45 +02:00
|
|
|
"
|
2025-05-19 09:44:02 +00:00
|
|
|
echo "$CONF_PEER" >> "$CONF_FILE"
|
2025-04-30 19:43:45 +02:00
|
|
|
|
|
|
|
|
sudo mv "$CONF_FILE" "$WG_CONF"
|
|
|
|
|
|
2025-05-19 09:44:02 +00:00
|
|
|
echo "Config saved to: $WG_CONF/$CONF_FILE"
|
|
|
|
|
echo "Add the following to the server config:"
|
|
|
|
|
echo "[Peer]
|
|
|
|
|
PublicKey = $(cat $WG_CONF/$PUB_KEY_FILE)
|
|
|
|
|
AllowedIPs = $PEER_IP
|
|
|
|
|
"
|