One-Click CADDY & NGINX Installer

auto one click caddy, nginx installer

#!/bin/bash
###############################################################################
# 📦 One-Click caddy Installer Script is based on,
# wget https://raw.githubusercontent.com/hosteons/lamp-lemp-oneclick-installer/main/lamp_lemp_installer.sh
# nano caddy-installer.sh  //Paste this script
# chmod +x caddy-installer.sh
# bash ./caddy-installer.sh
###############################################################################
set -e
echo "============================================"
echo " One-Click LAMP/LEMP/Caddy Installer Script"
echo " by JangSeo | MIT Licensed"
echo "============================================"
if [[ "$EUID" -ne 0 ]]; then
  echo "❌ Please run this script as root"
  exit 1
fi

if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
    VER=$VERSION_ID
else
    echo "❌ Unsupported OS"
    exit 1
fi

if [[ "$OS" != "ubuntu" && "$OS" != "debian" ]]; then
    echo "❌ Only Ubuntu and Debian are supported."
    exit 1
fi

echo "Choose stack to install:"
echo "1. Caddy (Caddy + MariaDB + PHP)"
echo "2. LEMP (Nginx + MariaDB + PHP-FPM)"
read -rp "Enter your choice (1 or 2): " choice

apt update && apt upgrade -y
apt-get install nano wget perl sudo -y
PHP_PACKAGES="php php-mysql php-cli php-curl php-gd php-mbstring php-xml libmcrypt-dev libreadline-dev mcrypt php-common php-mysql php-imagick php-json php-opcache php-soap php-dev php-cgi php-zip php-intl php-bcmath php-pear unzip"
if [[ "$choice" == "1" ]]; then
  echo "🔧 Installing Caddy stack..."
  apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
  curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
  chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
  chmod o+r /etc/apt/sources.list.d/caddy-stable.list
  apt -y update
  apt -y install caddy
  apt install -y mariadb-server $PHP_PACKAGES
  systemctl enable --now caddy
  systemctl start caddy mariadb
  echo "" > /usr/share/caddy/info.php
  echo "✅ Caddy installed successfully!"
  echo "🔗 Visit http://YOUR_SERVER_IP/info.php to verify PHP is working."
elif [[ "$choice" == "2" ]]; then
  echo "🔧 Installing LEMP stack..."
  apt install -y nginx mariadb-server $PHP_PACKAGES php-fpm 
  PHP_VER=$(php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
  PHP_SOCK="/run/php/php${PHP_VER}-fpm.sock"
  cat < /etc/nginx/sites-available/default
server {
    listen 80 default_server;
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files \$uri \$uri/ =404;
    }

    location ~ \.php\$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:${PHP_SOCK};
    }

    location ~ /\.ht {
        deny all;
    }
}
EOF
  systemctl enable nginx mariadb "php${PHP_VER}-fpm"
  systemctl start nginx mariadb "php${PHP_VER}-fpm"
  apt -y purge Apache2* bind* exim* ufw* firewalld* libapache2-mod-php*
  mkdir -p /var/www/html
  echo "" > /var/www/html/info.php
  nginx -t && systemctl reload nginx
  echo "✅ LEMP stack installed successfully!"
  echo "🔗 Visit http://YOUR_SERVER_IP/info.php to verify PHP is working."
else
  echo "❌ Invalid selection. Exiting."
  exit 1
fi

curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sh setup-repos.sh
apt -y install webmin --install-recommends
echo "✅ Webmin configured."

# Prompt for domain name
read -rp "Enter your domain name (e.g. example.com): " DOMAIN
# Setup web root
sudo mkdir -p /var/www/$DOMAIN
sudo chown -R $USER:$USER /var/www/$DOMAIN
# Create sample PHP file
echo "hello" | sudo tee /var/www/$DOMAIN/index.php
sudo chown -R $USER:$USER /var/www/$DOMAIN
cat < /etc/nginx/sites-available/$DOMAIN.conf
server {
listen 80;
server_name $DOMAIN;
root /var/www/$DOMAIN;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/$DOMAIN.conf /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
cd /var/www/$DOMAIN
sudo wget http://storage.skydance.cc/uptime.php


Posted : Friday 15th of May 2026 @ 04:27 AM— Tags : one-click-caddy