#!/usr/bin/env bash trap 'exit 130' INT 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 # 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 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