76 lines
2.9 KiB
Bash
Executable File
76 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ ! -f .env ]; then
|
|
echo "Please create a .env file"
|
|
exit 1
|
|
fi
|
|
source .env
|
|
|
|
# User / Group ID will be determined automagically
|
|
id_output=$(id)
|
|
PUID=$(echo "$id_output" | awk -F'[=|(]' '{print $2}')
|
|
PGID=$(echo "$id_output" | awk -F'[=|(]' '{print $4}')
|
|
# Hack for synology...
|
|
PGID=101
|
|
|
|
# Create the necessary folders
|
|
mkdir -p $PATH_TO_DOWNLOADS/{complete,incomplete,sonarr,radarr,readarr_audio,readarr_book,torrents}
|
|
mkdir -p "$PATH_TO_TV" "$PATH_TO_MOVIES" "$PATH_TO_AUDIOBOOKS" "$PATH_TO_BOOKS"
|
|
mkdir -p $PATH_TO_CONFIG/{deluge,gluetun,overseer,prowlarr,radarr,readarr_audiobooks,readarr_books,sabnzbd,sonarr}
|
|
mkdir -p $PATH_TO_CONFIG/plex/{tmp,config,transcode}
|
|
|
|
# Use the correct sed command depending on host system
|
|
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
SED="sed -i"
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
SED="sed -i ''"
|
|
else
|
|
echo "Unsupported operating system"
|
|
exit 1
|
|
fi
|
|
|
|
cp docker-compose.yaml.tmpl docker-compose.yaml
|
|
|
|
# Preserve ownership between host and containers
|
|
eval "$SED \"s/{{PUID}}/$PUID/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PGID}}/$PGID/g\" docker-compose.yaml"
|
|
|
|
# Network Config
|
|
eval "$SED \"s/{{GLUETUN_SUBNET}}/$(echo "$GLUETUN_SUBNET" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{GLUETUN_IP}}/$GLUETUN_IP/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PLEX_IP}}/$PLEX_IP/g\" docker-compose.yaml"
|
|
|
|
# Path Config
|
|
eval "$SED \"s/{{PATH_TO_DOWNLOADS}}/$(echo "$PATH_TO_DOWNLOADS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PATH_TO_CONFIG}}/$(echo "$PATH_TO_CONFIG" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PATH_TO_TV}}/$(echo "$PATH_TO_TV" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PATH_TO_MOVIES}}/$(echo "$PATH_TO_MOVIES" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PATH_TO_BOOKS}}/$(echo "$PATH_TO_BOOKS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
eval "$SED \"s/{{PATH_TO_AUDIOBOOKS}}/$(echo "$PATH_TO_AUDIOBOOKS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
|
|
|
|
|
|
if [[ "$VPN_SERVICE_PROVIDER" == "mullvad" ]]; then
|
|
VPN_CONFIG=$(cat <<EOF
|
|
- VPN_TYPE=$VPN_TYPE
|
|
- VPN_SERVICE_PROVIDER=$VPN_SERVICE_PROVIDER
|
|
- WIREGUARD_PRIVATE_KEY=$WIREGUARD_PRIVATE_KEY
|
|
- WIREGUARD_ADDRESSES=$WIREGUARD_ADDRESSES
|
|
- SERVER_CITIES=$SERVER_CITIES
|
|
EOF
|
|
)
|
|
elif [[ "$VPN_SERVICE_PROVIDER" == "custom" ]]; then
|
|
VPN_CONFIG=$(cat <<EOF
|
|
- VPN_TYPE=$VPN_TYPE
|
|
- VPN_SERVICE_PROVIDER=$VPN_SERVICE_PROVIDER
|
|
- VPN_ENDPOINT_IP=$VPN_ENDPOINT_IP
|
|
- VPN_ENDPOINT_PORT=$VPN_ENDPOINT_PORT
|
|
- WIREGUARD_PRIVATE_KEY=$WIREGUARD_PRIVATE_KEY
|
|
- WIREGUARD_PUBLIC_KEY=$WIREGUARD_PUBLIC_KEY
|
|
- WIREGUARD_ADDRESSES=$WIREGUARD_ADDRESSES
|
|
EOF
|
|
)
|
|
fi
|
|
|
|
# Perform the substitution using awk with suppressed warning
|
|
awk -v new_config="$VPN_CONFIG" '{ sub(/{{VPN_CONFIG}}/, new_config) }1' docker-compose.yaml > docker-compose.tmp
|
|
mv docker-compose.tmp docker-compose.yaml |