New Caddy Installer, final

##!/bin/bash

###############################################################################
# 📦 One-Click Caddy Installer Script
# ---------------------------------------
# wget https://service.sodam.co/caddy.sh
# nano caddy.sh
# chmod +x caddy.sh
# bash ./caddy.sh
###############################################################################
set -e

echo "====================================="
echo " One-Click caddy Installer Script"
echo " by Hosteons.com | 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

apt-get update -y
apt-get install nano wget curl perl sudo -y
sudo apt -y update && sudo apt upgrade -y
sudo apt install -y caddy php php-mysql php-curl php-gd php-imagick php-cli php-fpm php-mbstring php-opcache php-cgi php-zip php-xml 
systemctl enable --now caddy
systemctl start caddy
sudo apt install mariadb-server mariadb-client -y
echo "✅ Caddy installed successfully!"
echo "🔗 Visit http://YOUR_SERVER_IP/ to verify PHP is working."
echo "✅ all configured."
apt -y purge Apache2* bind* exim* ufw dovecot postfix firewalld libapache2-mod-php*
sudo service caddy restart
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."
###################################################################################
echo "✅ Let's setup Website"   
read -rp "Enter your domain name (e.g. example.com): " DOMAIN 
  
sudo mkdir /usr/share/caddy/$DOMAIN
sudo chown -R caddy:caddy /usr/share/caddy/$DOMAIN
sudo chmod -R 755 /usr/share/caddy/$DOMAIN
true | sudo tee /etc/caddy/Caddyfile > /dev/null
nano /etc/caddy/Caddyfile  
$DOMAIN { 
    tls jangseo@hotmail.com   
    root * /usr/share/caddy/$DOMAIN
    file_server
    encode zstd gzip
    php_fastcgi unix//run/php/php8.4-fpm.sock
    log {
        output file /var/log/caddy/access.log
        format console
    }
}
echo "Hello $DOMAIN, this is Caddy!" | sudo tee /usr/share/caddy/$DOMAIN/index.php
sudo systemctl restart caddy
================MySql==========================================
$ mariadb-secure-installation (for Debian 13)
$ mysql -u root -p
--Enter password:
Maria DB [(none)]>
> CREATE DATABASE rome;
> CREATE USER 'user_name'@localhost IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON *.* TO 'db_name'@localhost IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> SHOW GRANTS FOR 'db_name'@localhost;
> SHOW DATABASES;
> Exit;



nano /usr/share/caddy/home.sodam.co/uptime.php
 function sec2human($time) {
  $seconds = $time%60;
    $mins = floor($time/60)%60;
    $hours = floor($time/60/60)%24;
    $days = floor($time/60/60/24);
    return $days > 0 ? "$days day".($days > 1 ? 's' : '') : "$hours:$mins:$seconds";
}

$array = array();
$fh = fopen('/proc/uptime', 'r');
$uptime = fgets($fh);
fclose($fh);
$uptime = explode('.', $uptime, 2);
$array['uptime'] = sec2human($uptime[0]);

$fh = fopen('/proc/meminfo', 'r');
  $mem = 0;
  while ($line = fgets($fh)) {
    $pieces = array();
    if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
      $memtotal = $pieces[1];
    }
    if (preg_match('/^MemFree:\s+(\d+)\skB$/', $line, $pieces)) {
      $memfree = $pieces[1];
    }
    if (preg_match('/^Cached:\s+(\d+)\skB$/', $line, $pieces)) {
      $memcache = $pieces[1];
      break;
    }
  }
fclose($fh);

$memmath = $memcache + $memfree;
$memmath1 = ($memcache + $memfree) /1000;
$memmath2 = $memmath / $memtotal * 100;
$memmath3 = $memtotal /1000;
$memmath4 = ($memtotal - ($memcache + $memfree))/1000;
$memmath5 = ($memtotal - $memfree)/1000;
$memmath6 = $memcache/1000;

$memory = round($memmath2) . '%';
$memory1 = round($memmath1) . 'mb ';
$memory3 = round($memmath3) . ' ';
$memory4 = round($memmath4) . ' ';
$memory5 = round($memmath5) . ' ';
$memory6 = round($memmath6) . ' ';

$memlevel = "success";
if ($memory <= 50) { $memlevel = "warning"; }
if ($memory <= 35) { $memlevel = "danger"; }

$array['memory'] ="

$memory3 / $memory4

";

$hddtotal = disk_total_space("/");
$hddfree = disk_free_space("/");
$hddmath = $hddfree / $hddtotal * 100;

$hddmath1 = $hddtotal /1000000000;
$hddmath2 = $hddfree /1000000000;
$hddmath3 = ($hddtotal-$hddfree) /1000000000;

$hdd = round($hddmath) . '%';
$hdd1 = round($hddmath1) . '';
$hdd2 = round($hddmath2) . '';
$hdd3 = round($hddmath3) . '';
$hdd = round($hddmath);

$hddlevel = "success";
if ($hdd <= 50) { $hddlevel = "warning"; }
if ($hdd <= 35) { $hddlevel = "danger"; }

$array['hdd'] = "

$hdd1 / $hdd3

";

$load = sys_getloadavg();
$array['load'] = $load[0];

$array['online'] = '

▲

';
echo json_encode($array);

 



Posted : Friday 15th of May 2026 @ 05:13 AM— Tags : new-caddy