Skip to content

Instantly share code, notes, and snippets.

@ibraheem-ghazi
Created December 5, 2019 12:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ibraheem-ghazi/a8845fb9c4355a8a99b819c2bc1eaf71 to your computer and use it in GitHub Desktop.
Save ibraheem-ghazi/a8845fb9c4355a8a99b819c2bc1eaf71 to your computer and use it in GitHub Desktop.
Bash script to install Redis on Ubuntu server protected with OpenSSL password
#!/bin/bash
clear
#color the output of echo
COLOR='\033[1;32m'
RED='\033[0;31m'
WHITE='\033[1;37m'
NC='\033[0m' # No Color
echo -e "${COLOR}>>>>>>>>> UPDATE UBUNTU${NC}"
apt update
echo -e "${COLOR}>>>>>>>>> BACKUP ALREADY INSTALLED REDIS SERVER CONFIG${NC}"
cp /etc/redis/redis.conf /etc/redis/redis.conf.$(date +%y%b%d-%H%M%S) &> /dev/null
echo -e "${COLOR}>>>>>>>>> REMOVE ALREADY INSTALLED REDIS SERVER${NC}"
apt remove -y redis-server && apt purge -y redis-server && apt autoremove -y
rm -rf /etc/redis
sleep 1
echo -e "${COLOR}>>>>>>>>> FRESH INSTALL REDIS SERVER${NC}"
apt install -y curl build-essential tcl redis-server
sleep 1
echo -e ">>>>>>>>> STOP REDIS SERVER IF RUNNING (just in case)${NC}"
systemctl stop redis &> /dev/null
echo -e "${COLOR}>>>>>>>>> BACKUP DEFAULT CONFIGURE ${NC}"
cp /etc/redis/redis.conf /etc/redis/redis.conf.default
RDS_CFG=$(cat /etc/redis/redis.conf)
echo -e "${COLOR}>>>>>>>>> CONFIGURE SUPERVISED${NC}"
RDS_CFG=$(echo "$RDS_CFG" | sed -e 's/^supervised no/supervised systemd/')
[[ -z "$RDS_CFG" ]] && echo -e "${RED}Unable to configure supervised${NC}" && exit 1
echo -e "${COLOR}>>>>>>>>> CONFIGURE BIND IP${NC}"
RDS_CFG=$(echo "$RDS_CFG" | sed -e 's/^\# *bind 127\.0\.0\.1 ::1/bind 127.0.0.1 ::1/')
[[ -z "$RDS_CFG" ]] && echo -e "${RED}Unable to configure bind ip${NC}" && exit 1
echo -e "${COLOR}>>>>>>>>> CONFIGURE SECURITY KEY${NC}"
REDIS_PASSWORD=$(openssl rand 60 | openssl base64 -A)
echo "${REDIS_PASSWORD}" > /tmp/redis-password
echo -e "${COLOR}>>>>>>>>> PASSWORD BACKED UP AT /tmp/redis-password${NC}"
sleep 1
RDS_CFG=$(echo "$RDS_CFG" | sed -e "s/^# requirepass foobared/requirepass $(echo $REDIS_PASSWORD | sed -e 's/\//\\\//g')/")
[[ -z "$RDS_CFG" ]] && echo -e "${RED}Unable to authentication${NC}" && exit 1
echo "$RDS_CFG" > /etc/redis/redis.conf
echo -e "${COLOR}>>>>>>>>> THE GENERATED SECURITY KEY IS: ${WHITE} ${REDIS_PASSWORD} ${NC}"
echo -e "${COLOR}>>>>>>>>> ENABLE AND START REDIS SERVER ${NC}"
systemctl start redis && systemctl enable redis
sleep 2
echo -e "${COLOR}>>>>>>>>> TESTING CONNECTION ${NC}"
if [[ "$(echo "auth $REDIS_PASSWORD" | /usr/bin/redis-cli)" == "OK" ]] ; then
echo -e "${COLOR}>>>>>>>>> AUTHENTICATED TO REDIS ${NC}"
echo -e "${COLOR}>>>>>>>>> REDIS SERVER SUCCESSFULLY INSTALLED AND STARTED ${NC}"
exit 0
else
echo -e "${RED}>>>>>>>>> REDIS SERVER AUTHENTICATION ERROR, CHECK SERVER IS RUNNING AND AUTHENTICATION WORKS MANUALLY ${NC}"
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment