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