2023-04-08 14:21:14 -07:00
#!/usr/bin/env bash
2023-08-04 01:30:15 -07:00
trap 'exit 130' INT
2023-03-31 18:39:13 -07:00
while true
do
read -r -p "Would you like to install Caddy Server? [Y/n] " input
case $input in
[ yY] [ eE] [ sS] | [ yY] )
break
; ;
[ nN] [ oO] | [ nN] )
break
; ;
*)
echo "That wasn't an option..."
; ;
esac
done
2023-08-04 01:30:15 -07:00
2023-08-04 01:06:24 -07:00
# Check if curl is installed
if [ ! -x /usr/bin/curl ] ; then
CURL_NOT_EXIST = 1
apt install -y curl
else
CURL_NOT_EXIST = 0
fi
apt remove golang -y
rm -rf /tmp/go/
mkdir /tmp/go/
cd /tmp/go/
VER = "1.20.7"
if [ -n " $( uname -a | grep x86_64) " ] ; then
curl -fsSL -o "/tmp/go/go" $VER ".linux-amd64.tar.gz" "https://go.dev/dl/go" $VER ".linux-amd64.tar.gz"
fi
if [ -n " $( uname -a | grep armv6l) " ] ; then
curl -fsSL -o "/tmp/go/go" $VER ".linux-armv6l.tar.gz" "https://go.dev/dl/go" $VER ".linux-armv6l.tar.gz"
fi
if [ -n " $( uname -a | grep i386) " ] ; then
curl -fsSL -o "/tmp/go/go" $VER ".linux-386.tar.gz" "https://go.dev/dl/go" $VER ".linux-386.tar.gz"
fi
rm -rf /usr/local/go && tar -C /usr/local -xzf *.tar.gz
chmod +x /usr/local/go/bin/go
export PATH = $PATH :/usr/local/go/bin
cd ~
rm -rf /tmp/caddy
mkdir /tmp/caddy
cd /tmp/caddy
VER = $( curl --silent "https://api.github.com/repos/caddyserver/xcaddy/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's|[v,]||g' )
if [ -n " $( uname -a | grep x86_64) " ] ; then
curl -fsSL -o "/tmp/caddy/xcaddy_" $VER "_linux_amd64.tar.gz" "https://github.com/caddyserver/xcaddy/releases/download/v" $VER "/xcaddy_" $VER "_linux_amd64.tar.gz"
fi
if [ -n " $( uname -a | grep armv6l) " ] ; then
curl -fsSL -o "/tmp/caddy/xcaddy_" $VER "_armv6.tar.gz" "https://github.com/caddyserver/xcaddy/releases/download/v" $VER "/xcaddy_v" $VER "_armv6.tar.gz"
fi
if [ -n " $( uname -a | grep armv7l) " ] ; then
curl -fsSL -o "/tmp/caddy/xcaddy_" $VER "_linux_armv7.tar.gz" "https://github.com/caddyserver/xcaddy/releases/download/v" $VER "/xcaddy_v" $VER "_linux_armv7.tar.gz"
fi
if [ -n " $( uname -a | grep armv5l) " ] ; then
curl -fsSL -o "/tmp/caddy/xcaddy_" $VER "_linux_armv5.tar.gz" "https://github.com/caddyserver/xcaddy/releases/download/v" $VER "/xcaddy_v" $VER "_linux_armv5.tar.gz"
fi
tar xvf *.tar.gz xcaddy
2023-03-31 18:39:13 -07:00
sudo mv xcaddy /usr/bin
mkdir ~/caddy
cd ~/caddy
xcaddy build
sudo mv caddy /usr/bin
sudo groupadd --system caddy
sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
sudo chown root:root /usr/bin/caddy
sudo chmod 755 /usr/bin/caddy
sudo mkdir /etc/caddy
sudo chown -R root:caddy /etc/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R root:caddy /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy
sudo mkdir /var/www
sudo chown caddy:caddy /var/www
sudo sh -c 'curl https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service > /etc/systemd/system/caddy.service'
sudo systemctl daemon-reload
sudo systemctl status caddy
sudo ufw allow proto tcp from any to any port 80,443