هيسٽيا سي پي ايڊمنر اسڪرپٽ جي هڪ ڪلڪ خودڪار ترتيب فراهم ڪري ٿو (جنهن ۾ Nginx تصديق + Fail2Ban ٻٽي تحفظ شامل آهي).

ايڊمنر کي دستي طور تي انسٽال ڪرڻ بند ڪريو! هڪ اسڪرپٽ پوري سيڪيورٽي ڪنفيگريشن کي سنڀالي سگهي ٿو.

ڪجهه ڏينهن اڳ، منهنجو هڪ دوست، جيڪو سسٽم ايڊمنسٽريشن ۾ پڻ ڪم ڪري ٿو، مون کي شڪايت ڪئي ته هن کي پنهنجي سرور تي ايڊمنر انسٽال ڪرڻ ۾ ڏينهن جو گهڻو وقت لڳندو آهي. اهو ناهي ته ايڊمنر پاڻ انسٽال ڪرڻ ڏکيو آهي؛ اهو صرف هڪ PHP فائل آهي، توهان صرف ان کي اڇلائي سگهو ٿا ۽ اهو ڪم ڪندو. پر مسئلو اهو آهي ته، توهان صرف هڪ PHP فائل اڇلائي نه ٿا سگهو ۽ ان کي هڪ ڏينهن ڪال ڪري سگهو ٿا.

توهان کي بروٽ فورس حملن کي روڪڻ لاءِ سب ڊومينز ترتيب ڏيڻ، پلگ ان لوڊ ڪرڻ، Nginx تصديق قائم ڪرڻ، ۽ Fail2Ban ترتيب ڏيڻ جي ضرورت آهي . هر قدم پيچيده ناهي، پر گڏجي اهي ٽڪرا ٽڪرا ٿيل حڪمن ۽ ترتيب فائلن جو هڪ گروپ ٺاهيندا آهن.

وڌيڪ پريشان ڪندڙ ڳالهه اها آهي ته سيڪيورٽي سان لاڳاپيل ترتيبون جهڙوڪ تصديق ۽ فائر وال خاص طور تي غلطين جو شڪار آهن. ٿوري به نگراني ڊيٽابيس مئنيجمينٽ انٽرفيس کي عوامي انٽرنيٽ تي بي نقاب ڪري سگهي ٿي، ان کي هر ڪنهن لاءِ رسائي لائق بڻائي ٿي.

مون کي ان وقت کل آئي ڇاڪاڻ ته مان اڳ ۾ به ساڳيو ڪم ڪري رهيو هوس. بعد ۾، مان وڌيڪ برداشت نه ڪري سگهيس، تنهن ڪري مون انهن سڀني مرحلن کي خودڪار ڪرڻ لاءِ هڪ ڪلڪ ڊيپلائيمينٽ اسڪرپٽ لکيو.

هيسٽيا سي پي ايڊمنر اسڪرپٽ جي هڪ ڪلڪ خودڪار ترتيب فراهم ڪري ٿو (جنهن ۾ Nginx تصديق + Fail2Ban ٻٽي تحفظ شامل آهي).

ڇو نه استعمال ڪجي؟phpMyAdmin

توهان شايد پڇو، ڇو نه phpMyAdmin استعمال ڪيو وڃي، جيڪو وڌيڪ عام آهي؟

يقيناً، phpMyAdmin جا وڌيڪ استعمال ڪندڙ ۽ هڪ وڏي برادري آهي. پر مون کي لڳي ٿو ته ايڊمنر ڪجهه علائقن ۾ بهتر ڪم ڪري ٿو.

پهرين، اهو هلڪو وزن آهي؛ ايڊمنر صرف هڪ پي ايڇ پي فائل آهي، جڏهن ته phpMyAdmin فائلن جو هڪ پورو گروپ آهي. ٻيو، اهو محفوظ آهي؛ ايڊمنر جو ڊيزائن فلسفو "ڊفالٽ طور تي ناقابل اعتبار" آهي، جنهن جو مطلب آهي ته توهان کي ڊيٽابيس کي هلائڻ لاءِ ڪنيڪشن جي معلومات کي واضح طور تي ترتيب ڏيڻ جي ضرورت آهي.

ٻيو پهلو ڪارڪردگي آهي؛ وڏن ڊيٽابيس کي سنڀالڻ وقت ايڊمنر phpMyAdmin کان گهڻو تيز آهي.

يقيناً، انهن مان ڪا به سڀ کان اهم شيءِ ناهي. سڀ کان اهم ڳالهه اها آهي ته هن اسڪرپٽ جو مطلب آهي ته مون کي هاڻي انهن سيڪيورٽي سان لاڳاپيل شين کي دستي طور تي ترتيب ڏيڻ جي ضرورت ناهي.

اسڪرپٽ اصل ۾ ڇا ڪيو؟

هن اسڪرپٽ جي پويان خيال اصل ۾ بلڪل سادو آهي: انهن سڀني قدمن کي خودڪار ڪرڻ لاءِ جيڪي توهان عام طور تي دستي طور تي ڪندا آهيو.

انٽرايڪٽو ان پٽ لاءِ، اسڪرپٽ توهان کان ڪجھ سوال پڇندي: HestiaCP يوزرنيم، ڊومين نالو، تصديق يوزرنيم، ۽ پاسورڊ. توهان کي صرف اهي داخل ڪرڻ جي ضرورت آهي، ۽ اسڪرپٽ باقي سنڀاليندي.

اسڪرپٽ خودڪار طريقي سان ويب روٽ ڊاريڪٽري ٺاهي ٿي، چيڪ ڪري ٿي ته ڇا apache2-utils (پاسورڊ فائلون ٺاهڻ لاءِ استعمال ٿيندڙ) ۽ PHP ماحول انسٽال ٿيل آهن، ۽ ڊاريڪٽري ٺاهڻ ۽ انحصار جي انسٽاليشن کي سنڀالي ٿي.

ايڊمنر ڊائون لوڊ ڪرڻ وقت، اسڪرپٽ پهريان سرڪاري مخزن مان جديد نسخو ڊائون لوڊ ڪرڻ جي ڪوشش ڪندو آهي. جيڪڏهن سرڪاري مخزن دستياب نه هجي، ته اهو خودڪار طريقي سان مستحڪم GitHub Releases مخزن ڏانهن سوئچ ڪري ٿو. مون کي لڳي ٿو ته هي ڪافي اهم آهي، ڇاڪاڻ ته سرڪاري مخزن ڪڏهن ڪڏهن غير مستحڪم ٿي سگهي ٿو؛ مون اڳ ۾ ڪنيڪشن ٽائم آئوٽ جو سامنا ڪيو آهي.

پلگ ان ڊائون لوڊ جي حوالي سان، اسڪرپٽ ٽي بنيادي پلگ ان ڊائون لوڊ ڪندو: plugin.php پلگ ان لوڊ ڪندڙ آهي، fc-sqlite-connection-without-credentials.php پاسورڊ کان سواءِ ڪنيڪشن کي سنڀالڻ لاءِ استعمال ٿيندو آهي، ۽ login-password-less.php پاسورڊ هيش لاگ ان کي سپورٽ ڪندو آهي.

پاسورڊ هيش جنريشن ۽ index.php جي حوالي سان، هڪ ننڍڙي تفصيل آهي: اسڪرپٽ سڌو سنئون $_ENV استعمال ڪرڻ بدران پاسورڊ حاصل ڪرڻ لاءِ getenv() استعمال ڪري ٿي. هي php.ini ترتيب جي مسئلي کان بچي ٿو جنهن جي ڪري هيش حساب ڪتاب خالي ٿي ويندو آهي. مون پاڻ هن خرابي جو سامنا ڪيو ۽ اهو معلوم ڪرڻ ۾ گهڻو وقت گذاريو ته php.ini ۾ 'E' اسڪوپ فعال نه هو.

Nginx جي تصديق کي ترتيب ڏيڻ لاءِ، اسڪرپٽ Nginx جي مکيه ترتيب واري فائل کي سڌو سنئون تبديل ڪرڻ جي بدران HestiaCP جي اصلي شامل ڪرڻ واري ميڪانيزم کي استعمال ڪري ٿي. هن طريقي جو فائدو اهو آهي ته تصديق ناڪام نه ٿيندي جيتوڻيڪ توهان ڊومين ترتيب کي ٻيهر ٺاهيو.

Fail2Ban ترتيب ۾، اسڪرپٽ 401 غلطين جي نگراني لاءِ فلٽرنگ قاعدو ٺاهي ٿي. جيڪڏهن ڪو IP 10 منٽن اندر 3 ڀيرا لاگ ان ٿيڻ ۾ ناڪام ٿئي ٿو، ته ان کي 1 ڪلاڪ لاءِ بلاڪ ڪيو ويندو.

اجازتن جي مرمت ۽ سروس ري لوڊنگ جي حوالي سان، اسڪرپٽ خودڪار طريقي سان صحيح فائل اجازتون سيٽ ڪندو ۽ PHP-FPM، Nginx، ۽ Fail2Ban کي ٻيهر لوڊ ڪندو.

مان حفاظت بابت سنجيده آهيان.

سچ پڇو ته، ڊيٽابيس مئنيجمينٽ ٽولز جي سيڪيورٽي اها شيءِ آهي جنهن جي مون کي سڀ کان وڌيڪ پرواهه آهي.

سوچيو، ايڊمن توهان جي سرور تي سڀني ڊيٽابيس کي سڌو سنئون هٿي ڏئي سگهي ٿو. جيڪڏهن اهو عوامي انٽرنيٽ جي سامهون اچي ٿو ۽ ڪو ان کي اسڪين ڪري ٿو، ته نتيجا ناقابل تصور هوندا.

هن اسڪرپٽ ۾ ٽي ڀيرا تحفظ آهي.

پهرين پرت Nginx جي HTTP بنيادي تصديق آهي. جڏهن توهان ايڊمنر تائين رسائي ڪندا، توهان جو برائوزر هڪ ڊائلاگ باڪس پاپ اپ ڪندو جيڪو توهان کي پنهنجو يوزر نالو ۽ پاسورڊ داخل ڪرڻ لاءِ چوندو. صحيح معلومات داخل ڪرڻ کان پوءِ ئي توهان ايڊمنر لاگ ان پيج ڏسي سگهو ٿا.

ٻيو پرت ايڊمن جو پنهنجو پاسورڊ هيش لاگ ان آهي. مون index.php ۾ پاسورڊ هيشنگ کي ترتيب ڏنو آهي، تنهن ڪري جيڪڏهن ڪو ماڻهو Nginx تصديق کي نظرانداز ڪري ٿو، ته به انهن کي ايڊمن جو لاگ ان پاسورڊ خبر نه هوندي.

ٽيون پرت Fail2Ban جو بروٽ فورس تحفظ آهي. جيڪڏهن ڪو توهان جي پاسورڊ کي بروٽ فورس ڪرڻ جي ڪوشش ڪندو، ته Fail2Ban خودڪار طريقي سان انهن جي IP ايڊريس کي بلاڪ ڪري ڇڏيندو.

تحفظ جي انهن ٽن پرتن کي گڏ ڪرڻ سان، توهان بنيادي طور تي ايڊمنسٽريٽر کي عوامي انٽرنيٽ تي ذهني سڪون سان رکي سگهو ٿا.

هڪ ڪلڪ آپريشن، اهو واقعي هڪ ڪلڪ آهي.

تعیناتي جو عمل انتهائي سادو آهي.

#!/bin/bash
# ==============================================================================
# Adminer + 插件 + Nginx Auth + Fail2Ban 一键自动化部署脚本 (HestiaCP 完美版)
# ==============================================================================

set -e

# 必须以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "❌ 错误:请使用 root 或 sudo 运行此脚本!"
exit 1
fi

# ------------------------------------------------------------------------------
# 1. 交互式输入配置参数
# ------------------------------------------------------------------------------
read -p "请输入 HestiaCP 用户名 [默认: admin]: " HESTIA_USER
HESTIA_USER=${HESTIA_USER:-admin}

read -p "请输入 Adminer 部署域名 [例如: adminer.example.com]: " DOMAIN
if [ -z "$DOMAIN" ]; then
echo "❌ 错误:域名不能为空!"
exit 1
fi

read -p "请输入 Nginx 网页认证用户名 [默认: adminuser]: " AUTH_USER
AUTH_USER=${AUTH_USER:-adminuser}

read -sp "请输入防护密码 (用于 Nginx 认证与 Adminer 登录): " AUTH_PASS
echo ""
if [ -z "$AUTH_PASS" ]; then
echo "❌ 错误:密码不能为空!"
exit 1
fi

# 核心路径变量定义
WEBROOT="/home/$HESTIA_USER/web/$DOMAIN/public_html"
ADMINER_FILE="$WEBROOT/adminer.php"
PLUGIN_DIR="$WEBROOT/plugins"
HTPASSWD_FILE="/etc/nginx/.htpasswd-$DOMAIN"

echo -e "\n🚀 开始部署 Adminer 到域名: $DOMAIN ..."

# ------------------------------------------------------------------------------
# 2. 创建目录与安装基础依赖
# ------------------------------------------------------------------------------
if [ ! -d "$WEBROOT" ]; then
echo "📁 创建 Web 根目录: $WEBROOT"
mkdir -p "$WEBROOT"
fi
mkdir -p "$PLUGIN_DIR"

echo "🔍 检查基础依赖环境..."
if ! command -v htpasswd >/dev/null 2>&1; then
echo "📦 安装 apache2-utils 工具包..."
apt-get update -qq && apt-get install -y -qq apache2-utils
fi

if ! command -v php >/dev/null 2>&1; then
echo "❌ 错误:未检测到系统的 PHP 环境!"
exit 1
fi

# ------------------------------------------------------------------------------
# 3. 安全下载 Adminer 核心程序
# ------------------------------------------------------------------------------
echo "📥 正在下载最新版 Adminer..."
curl -sL -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
-o "$ADMINER_FILE" "https://www.adminer.org/latest.php"

# 校验下载有效性
if ! grep -q "<?php" "$ADMINER_FILE"; then
echo "⚠️ 官方源连接异常,正在切换至 GitHub Releases 稳定源..."
curl -sL -o "$ADMINER_FILE" \
"https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php"
fi

# ------------------------------------------------------------------------------
# 4. 下载官方核心插件与加载器
# ------------------------------------------------------------------------------
echo "🧩 正在下载插件组件..."
curl -sL -o "$PLUGIN_DIR/plugin.php" \
https://raw.githubusercontent.com/vrana/adminer/master/plugins/plugin.php

curl -sL -o "$PLUGIN_DIR/fc-sqlite-connection-without-credentials.php" \
https://raw.githubusercontent.com/vrana/adminer/master/plugins/fc-sqlite-connection-without-credentials.php

curl -sL -o "$PLUGIN_DIR/login-password-less.php" \
https://raw.githubusercontent.com/vrana/adminer/master/plugins/login-password-less.php

# ------------------------------------------------------------------------------
# 5. 安全生成密码 Hash 并构建入口文件 index.php
# ------------------------------------------------------------------------------
echo "⚙️ 生成密码 Hash 与 index.php 配置..."
# 使用 getenv() 替代 $_ENV,防止 php.ini 未开启 E 作用域导致 Hash 计算为空
HASHED_PASSWORD=$(AUTH_PASS="$AUTH_PASS" php -r 'echo password_hash(getenv("AUTH_PASS"), PASSWORD_DEFAULT);')

cat > "$WEBROOT/index.php" <<EOF
<?php
function adminer_object() {
include_once "./plugins/plugin.php";
include_once "./plugins/fc-sqlite-connection-without-credentials.php";
include_once "./plugins/login-password-less.php";

return new AdminerPlugin([
new AdminerFCSqliteConnectionWithoutCredentials(),
new AdminerLoginPasswordLess('$HASHED_PASSWORD'),
]);
}
include "./adminer.php";
EOF

# ------------------------------------------------------------------------------
# 6. 配置 Nginx 基础认证 (完全依赖 HestiaCP 原生 Include 机制)
# ------------------------------------------------------------------------------
echo "🔒 配置 Nginx HTTP Basic Auth..."
htpasswd -b -c "$HTPASSWD_FILE" "$AUTH_USER" "$AUTH_PASS"
chmod 644 "$HTPASSWD_FILE"

HESTIA_CONF_DIR="/home/$HESTIA_USER/conf/web/$DOMAIN"
if [ -d "$HESTIA_CONF_DIR" ]; then
# HestiaCP 原生包含文件名格式:nginx.conf_* 与 nginx.ssl.conf_*
# 这样无需 sed 修改主配置文件,重建域名配置时也不会失效
cat > "$HESTIA_CONF_DIR/nginx.conf_adminer" <<EOF
auth_basic "Restricted Adminer Access";
auth_basic_user_file $HTPASSWD_FILE;
EOF

cat > "$HESTIA_CONF_DIR/nginx.ssl.conf_adminer" <<EOF
auth_basic "Restricted Adminer Access";
auth_basic_user_file $HTPASSWD_FILE;
EOF
fi

# ------------------------------------------------------------------------------
# 7. 配置 Fail2Ban 防护规则
# ------------------------------------------------------------------------------
echo "🛡️ 配置 Fail2Ban 规则..."
cat > /etc/fail2ban/filter.d/nginx-adminer.conf <<'EOF'
[Definition]
failregex = ^<HOST> - .* "GET /.* HTTP/.*" 401
ignoreregex =
EOF

cat > /etc/fail2ban/jail.d/nginx-adminer.conf <<EOF
[nginx-adminer]
enabled = true
filter = nginx-adminer
port = http,https
logpath = /var/log/nginx/domains/$DOMAIN.log
maxretry = 3
findtime = 600
bantime = 3600
EOF

# ------------------------------------------------------------------------------
# 8. 修复权限、刷新缓存与重载服务
# ------------------------------------------------------------------------------
echo "🧹 修复权限并重载服务..."
chown -R $HESTIA_USER:$HESTIA_USER "$WEBROOT"
find "$WEBROOT" -type d -exec chmod 755 {} +
find "$WEBROOT" -type f -exec chmod 644 {} +

# 平滑重载 PHP-FPM(兼容多版本 PHP 环境)
for service in $(systemctl list-units --type=service --state=running --no-legend | awk '{print $1}' | grep -E 'php.*fpm'); do
systemctl reload "$service" || true
done

# 重载 Web 与防护服务
nginx -t && systemctl reload nginx
if systemctl is-active --quiet fail2ban; then
systemctl restart fail2ban
fi

echo -e "\n=================================================="
echo -e "✅ Adminer 一键部署成功!"
echo -e "--------------------------------------------------"
echo -e "🌐 访问地址 : https://$DOMAIN/index.php"
echo -e "👤 Nginx 认证账号 : $AUTH_USER"
echo -e "🔑 Nginx 认证密码 : [你输入的防护密码]"
echo -e "--------------------------------------------------"
echo -e "💡 Adminer 登录说明:"
echo -e " 数据库用户名填写:root(或你的数据库账号)"
echo -e " 数据库密码填写:[你输入的防护密码]"
echo -e "=================================================="

اسڪرپٽ کي ڪيئن هلائجي: اسڪرپٽ کي عمل ڪرڻ جي اجازت ڏيو:

sudo chmod +x /usr/local/bin/deploy-adminer.sh 

سوڊو استعمال ڪندي اسڪرپٽ هلايو:

sudo /usr/local/bin/deploy-adminer.sh 

جيئن چيو ويو آهي، ترتيب جي معلومات داخل ڪريو:

  • پنهنجو HestiaCP يوزر نالو داخل ڪريو (مثال طور، ايڊمن).
  • تيار ڪيل مڪمل ذيلي ڊومين داخل ڪريو (مثال طور، adminer.example.com).
  • پنهنجو سيڪيورٽي پاسورڊ داخل ڪريو (مثال طور، MySuperPassword123)

اسڪرپٽ خودڪار طريقي سان پوري ترتيب جي عمل کي مڪمل ڪندي بغير ڪجهه به ڇڏڻ جي.

سڄي عمل ۾ هڪ يا ٻه منٽ لڳن ٿا. اسڪرپٽ هر شيءِ کي پاڻمرادو سنڀاليندو، ۽ توهان کي ڪنهن به حڪم کي دستي طور تي هلائڻ جي ضرورت ناهي.

جڏهن توهان مڪمل ڪيو، توهان https://yourdomain/index.php ذريعي ايڊمنر تائين رسائي ڪري سگهو ٿا.

ڪجھ سوال جيڪي توهان کي پريشان ڪري سگهن ٿا

ڪجھ دوست پڇي سگھن ٿا، ڇا هي اسڪرپٽ ڪيترن ئي PHP ورزن کي سپورٽ ڪري ٿو؟

ها، اهو سپورٽ ٿيل آهي. اسڪرپٽ خودڪار طريقي سان سسٽم تي هلندڙ سڀني PHP-FPM خدمتن کي ڳوليندو ۽ انهن کي هڪ هڪ ڪري ٻيهر لوڊ ڪندو. تنهنڪري اهو ٺيڪ ڪم ڪري ٿو ڇا توهان PHP 7.4 يا PHP 8.2 استعمال ڪري رهيا آهيو.

ڪجھ دوست پڇي سگھن ٿا ته جيڪڏهن مان پنهنجو پاسورڊ تبديل ڪرڻ چاهيان ته ڇا ٿيندو؟

اهو تمام سادو آهي؛ بس اسڪرپٽ کي ٻيهر هلايو. اسڪرپٽ پاسورڊ هيش کي ٻيهر پيدا ڪندي، Nginx تصديق کي ٻيهر ترتيب ڏيندي، ۽ Fail2Ban کي ٻيهر ترتيب ڏيندي. پراڻي ترتيب اوور رائٽ ڪئي ويندي.

جيڪڏهن مان ان کي انسٽال ڪرڻ چاهيان ته ڇا ڪجي؟

توهان صرف ويب روٽ ڊاريڪٽري، پاسورڊ فائل، ۽ Fail2Ban ترتيب کي دستي طور تي ختم ڪري سگهو ٿا. اسڪرپٽ سسٽم تي ٻيو ڪو به نشان نه ڇڏيندو.

آخر ۾ لکو

مون هميشه محسوس ڪيو آهي ته آپريشن ۽ سار سنڀال ايترو پيچيده نه هجڻ گهرجي.

ڪيترائي دستي ڪم اصل ۾ اسڪرپٽ استعمال ڪندي خودڪار ٿي سگهن ٿا. اهو توهان کي وڌيڪ اهم شين تي پنهنجو وقت خرچ ڪرڻ جي اجازت ڏئي ٿو، جهڙوڪ سرور جي ڪارڪردگي کي بهتر ڪرڻ، ايپليڪيشن جي حيثيت جي نگراني ڪرڻ، ۽ نئين ٽيڪنالاجي جي تحقيق ڪرڻ.

هي مون کي هڪ تاريخي ڪهاڻي ياد ڏياري ٿو. 1880 جي ڏهاڪي ۾، آمريڪا ۾ بجلي پکڙجڻ شروع ٿي. ڪيترن ئي ڪارخانن جي مالڪن جنريٽر ۽ برقي موٽر خريد ڪرڻ لاءِ تمام گهڻو پئسو خرچ ڪيو ۽ انهن کي پنهنجي ڪارخانن ۾ نصب ڪيو. جڏهن ته، انسٽاليشن کان پوءِ، ڪيترن ئي ڏٺو ته پيداوار جي ڪارڪردگي ۾ خاص طور تي بهتري نه آئي. اهو ان ڪري هو جو انهن صرف اسٽيم انجڻ کي برقي موٽرن سان تبديل ڪيو هو، پر ڪارخاني جي مجموعي ترتيب، عمل ۽ انتظام جا طريقا تبديل نه ٿيا.

بجلي جي عروج مان حقيقي طور تي فائدو حاصل ڪندڙ پهريان ماڻهو هئا جن بجلي جي اصل معنيٰ سمجهي. انهن پيداوار جون لائينون ٻيهر ڊزائين ڪيون، ورڪشاپن کي ٻيهر ترتيب ڏنو، ۽ مزدورن جي ڪم ڪرڻ جي طريقي کي ٻيهر منظم ڪيو.

ساڳيو ئي ڪم آپريشن ۽ سار سنڀال جي خودڪار طريقي تي لاڳو ٿئي ٿو. ڪيترائي ماڻهو ڄاڻن ٿا ته اسڪرپٽ استعمال ڪري سگهجن ٿا، پر اهي اڃا تائين دستي آپريشن کي ترجيح ڏين ٿا، بلڪل ماضي ۾ انهن ڪارخانن جي مالڪن وانگر جيڪي برقي موٽرن بابت ڄاڻندا هئا پر اڃا تائين انهن کي استعمال ڪرڻ لاءِ اسٽيم انجڻ جي ذهنيت استعمال ڪندا هئا. اسڪرپٽ توهان جي فيصلي کي تبديل ڪرڻ لاءِ نه آهن، پر بار بار ٿيندڙ، ميڪيڪل، ۽ غلطي جو شڪار ڪمن کي خودڪار ڪرڻ لاءِ آهن، توهان کي پنهنجي توانائي کي ان تي مرکوز ڪرڻ جي اجازت ڏين ٿا جيڪو واقعي سوچ جي ضرورت آهي.

هي اسڪرپٽ هن طرح وجود ۾ آئي. ان منهنجي لاءِ هڪ ڏکئي نقطي کي حل ڪيو، ۽ مون کي اميد آهي ته اهو توهان جي پڻ مدد ڪري سگهي ٿو.

جيڪڏهن توهان HestiaCP ۽ Adminer استعمال ڪري رهيا آهيو، ته پوءِ توهان شايد هن اسڪرپٽ کي آزمائڻ چاهيندا. اهو توهان جو گهڻو وقت بچائي سگهي ٿو.

جيئن ته توهان هن وقت تائين پڙهيو آهي، جيڪڏهن توهان کي اهو مددگار لڳو، مهرباني ڪري ان کي پسند ڪريو ۽ شيئر ڪريو. جيڪڏهن توهان پهرين اپڊيٽ حاصل ڪرڻ چاهيو ٿا، ته توهان مون کي فالو پڻ ڪري سگهو ٿا!

منهنجو مضمون پڙهڻ لاءِ مهرباني. ايندڙ ڀيري ملنداسين.

اميد آهي ته، چن ويليانگ جي بلاگ ( https://www.chenweiliang.com/ ) تي شيئر ڪيل مضمون "HestiaCP One-Click Automated Deployment Adminer Script (Including Nginx Authentication + Fail2Ban Dual Protection)" توهان لاءِ مددگار ثابت ٿيندو.

هن مضمون جي لنڪ شيئر ڪرڻ لاءِ آزاد محسوس ڪريو: https://www.chenweiliang.com/cwl-34395.html

وڌيڪ لڪيل چالون کولڻ لاءِ🔑، اسان جي ٽيليگرام چينل ۾ شامل ٿيڻ لاءِ ڀليڪار!

شئير ڪريو ۽ پسند ڪريو جيڪڏھن توھان کي پسند اچي! توهان جا حصا ۽ پسند اسان جي مسلسل حوصلا آهن!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

جي ويڙھيء وانگي امروٽي