From 2ccdfcfe4236d2330f4e34e0b0d2ad5ced723c35 Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 1 Aug 2026 16:32:11 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=B2=BE=E7=AE=80=20VPS=20=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=B7=A5=E5=85=B7=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除旧有的 LDNMP、面板、Docker 应用、甲骨文云和幻兽帕鲁功能 - 删除不再使用的部署脚本及相关配置文件 - 保留系统、Docker、网络、安全、监控、工作区和集群管理等核心功能 - 更新项目介绍并新增详细功能说明 --- CF-Under-Attack.sh | 67 - README.md | 2 +- app.md | 141 ++ auto_cert_renewal-1.sh | 66 - auto_cert_renewal.sh | 62 - beifen.sh | 10 - cloudflare.conf | 88 -- cn/kejilion.sh | 2927 +------------------------------------- custom_mysql_config.cnf | 36 - fail2ban-nginx-cc.conf | 5 - kejilion.sh | 2931 +-------------------------------------- ldnmp.sh | 59 - nginx.local | 62 - pal_backup.sh | 7 - pal_log.sh | 13 - palworld.sh | 445 ------ www-1.conf | 490 ------- www.conf | 490 ------- 18 files changed, 144 insertions(+), 7757 deletions(-) delete mode 100644 CF-Under-Attack.sh create mode 100644 app.md delete mode 100644 auto_cert_renewal-1.sh delete mode 100644 auto_cert_renewal.sh delete mode 100644 beifen.sh delete mode 100644 cloudflare.conf delete mode 100644 custom_mysql_config.cnf delete mode 100644 fail2ban-nginx-cc.conf delete mode 100644 ldnmp.sh delete mode 100644 nginx.local delete mode 100644 pal_backup.sh delete mode 100644 pal_log.sh delete mode 100644 palworld.sh delete mode 100644 www-1.conf delete mode 100644 www.conf diff --git a/CF-Under-Attack.sh b/CF-Under-Attack.sh deleted file mode 100644 index 42291e4..0000000 --- a/CF-Under-Attack.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -# 设置变量 -EMAIL="AAAA" -API_KEY="BBBB" -ZONE_ID="CCCC" -LOAD_THRESHOLD=5.0 # 设置高负载阈值 - -TELEGRAM_BOT_TOKEN="输入TG机器人API" -CHAT_ID="输入TG用户ID" - - -# 获取当前系统负载 -CURRENT_LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d, -f1 | awk '{print $1}') - -echo "当前系统负载: $CURRENT_LOAD" - - -send_tg_notification() { - local MESSAGE=$1 - curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MESSAGE" -} - - - -# 获取当前的“Under Attack”模式状态 -STATUS=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/security_level" \ - -H "X-Auth-Email: $EMAIL" \ - -H "X-Auth-Key: $API_KEY" \ - -H "Content-Type: application/json" | jq -r '.result.value') - -echo "当前的Under Attack模式状态: $STATUS" - -# 检查系统负载是否高于阈值 -if (( $(echo "$CURRENT_LOAD > $LOAD_THRESHOLD" | bc -l) )); then - if [ "$STATUS" != "under_attack" ]; then - echo "系统负载高于阈值,开启Under Attack模式" - # send_tg_notification "系统负载高于阈值,开启Under Attack模式" - NEW_STATUS="under_attack" - else - echo "系统负载高,但Under Attack模式已经开启" - exit 0 - fi -else - if [ "$STATUS" == "under_attack" ]; then - echo "系统负载低于阈值,关闭Under Attack模式" - # send_tg_notification "系统负载低于阈值,关闭Under Attack模式" - NEW_STATUS="high" - else - echo "系统负载低,Under Attack模式已经关闭" - exit 0 - fi -fi - -# 更新“Under Attack”模式状态 -RESPONSE=$(curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/security_level" \ - -H "X-Auth-Email: $EMAIL" \ - -H "X-Auth-Key: $API_KEY" \ - -H "Content-Type: application/json" \ - --data "{\"value\":\"$NEW_STATUS\"}") - -if [[ $(echo $RESPONSE | jq -r '.success') == "true" ]]; then - echo "成功更新Under Attack模式状态为: $NEW_STATUS" -else - echo "更新Under Attack模式状态失败" - echo "响应: $RESPONSE" -fi diff --git a/README.md b/README.md index bcbf47b..7f34954 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # 科技lion一键脚本工具 ## 介绍 -科技Lion 的 Shell 脚本工具是一款全能脚本工具箱,专为 VPS 监控、测试和管理而设计。无论您是初学者还是经验丰富的用户,该工具都能为您提供便捷的解决方案。集成了独创的 Docker 管理功能,让您轻松管理容器化应用;LNMP建站解决方案 能帮助您快速搭建网站,站点优化,防御,备份还原迁移一应俱全;并且整合了各类系统工具面板的安装及使用,使系统维护变得更加简单。我们的目标是成为全网最优秀的 VPS 一键脚本工具,为用户提供高效、便捷的科技支持。 +科技Lion 的 Shell 脚本工具是一款面向 Linux VPS 的交互式管理工具箱,聚焦系统信息与维护、Docker 基础管理、网络测试与调优、SSH 安全防护、Telegram 监控通知、tmux 后台工作区和 VPS 集群批量运维。无论您是初学者还是经验丰富的用户,都可以通过菜单快速执行常见服务器管理任务。 [视频介绍](https://www.youtube.com/watch?v=0o7oH3Dit70&t=211s) *** diff --git a/app.md b/app.md new file mode 100644 index 0000000..e95fef8 --- /dev/null +++ b/app.md @@ -0,0 +1,141 @@ +本项目是一套面向 **Linux VPS 的交互式服务器管理脚本工具箱**,核心程序是 `kejilion.sh`。当前功能聚焦于系统管理、Docker 基础管理、网络测试与调优、安全防护、监控通知、后台工作区和 VPS 集群运维。 + +## 1. VPS 系统管理 + +- 查看 CPU、内存、Swap、磁盘、流量和系统负载 +- 查看操作系统、内核、主机名、IP、运营商和地理位置 +- 查看 TCP 拥塞算法、系统时间及运行时长 +- 更新系统、清理系统垃圾 +- 修改主机名、时区、DNS、登录密码和 SSH 端口 +- 管理 Swap、用户、sudo 权限和 Root 登录方式 +- IPv4/IPv6 优先级切换 +- 查看端口占用 +- 管理 `/etc/hosts` +- 管理 Crontab 定时任务 +- 重启服务器 + +## 2. Docker 基础管理 + +- 安装、更新或卸载 Docker +- 查看 Docker、Compose 版本和资源占用 +- 创建、启动、停止、重启和删除容器 +- 批量管理全部容器 +- 进入容器终端、查看日志和容器网络 +- 拉取、更新及删除镜像 +- 创建和管理 Docker 网络 +- 创建和删除数据卷 +- 清理无用容器、镜像、网络和数据卷 +- 更换 Docker 软件源 +- 编辑 `daemon.json` +- 开启或关闭 Docker IPv6 + +## 3. 网络与 VPS 测试 + +- WARP 管理 +- ChatGPT 解锁测试 +- 流媒体解锁检测 +- IP 质量检测 +- 三网回程路由测试 +- MTR 线路测试 +- NextTrace 路由测试 +- SuperSpeed 和多功能测速 +- YABS 性能测试 +- Geekbench 5 CPU 测试 +- Bench 综合测试 +- 融合怪综合测评 + +## 4. 网络加速与系统调优 + +- 开启或关闭 BBR +- BBRv3/XanMod 内核管理 +- 设置 Swap +- 配置国内或国外 DNS +- 优化 SSH、时区和系统软件 +- 一键完成系统更新、清理、Docker 安装及常用配置 + +## 5. 安全防护 + +### SSH Fail2Ban + +- SSH 防暴力破解 +- 查看 SSH 封禁状态和拦截记录 +- 实时查看 Fail2Ban 日志 +- 安装或卸载 SSH 防护 + +相关配置文件:`sshd.local` + +### iptables 与账户安全 + +- iptables 端口开放和关闭 +- IP 黑名单和白名单 +- 禁用 Root 并创建管理员用户 +- Root 密码或私钥登录管理 +- SSH 端口调整 +- OpenSSH 风险版本检测与升级 + +相关脚本:`upgrade_openssh9.8p1.sh` + +## 6. 服务器监控与通知 + +通过 Telegram Bot 发送: + +- CPU 使用率告警 +- 内存使用率告警 +- 磁盘使用率告警 +- 入站和出站流量告警 +- SSH 登录用户、来源 IP、地区和时间通知 + +相关文件: + +- `TG-check-notify.sh` +- `TG-SSH-check-notify.sh` + +## 7. 流量限额自动关机 + +- 设置每月流量额度 +- 定期统计接收和发送流量 +- 达到阈值后自动关机 +- 每月重新开始统计 +- 支持启用和停用 + +相关文件:`Limiting_Shut_down.sh` + +## 8. 常用工具与后台工作区 + +可安装或管理: + +- curl、wget、sudo、socat +- htop、iftop、btop +- unzip、tar +- tmux +- ffmpeg +- ranger、gdu、fzf +- 一些终端小游戏 + +同时基于 tmux 提供: + +- 多个持久化后台工作区 +- 自定义工作区 +- 查看和删除工作区 +- SSH 断开后继续运行任务 + +## 9. VPS 集群批量管理 + +可以维护多台服务器列表,并批量执行: + +- 安装本项目脚本 +- 更新或清理系统 +- 安装 Docker +- 安装 BBR3 +- 设置 Swap 和时区 +- 开放端口 +- 执行自定义命令 +- 导入或导出服务器列表 + +--- + +总体而言,这个项目可以概括为: + +> **VPS 系统管理 + Docker 基础管理 + 网络测试与调优 + SSH 安全防护 + 监控通知 + tmux 工作区 + 集群运维。** + +部分功能会在运行时从 GitHub、Docker Hub 或第三方站点下载脚本、配置和镜像,因此实际可用性取决于外部资源和目标 Linux 发行版。 \ No newline at end of file diff --git a/auto_cert_renewal-1.sh b/auto_cert_renewal-1.sh deleted file mode 100644 index bf1a90c..0000000 --- a/auto_cert_renewal-1.sh +++ /dev/null @@ -1,66 +0,0 @@ -# 定义证书存储目录 -certs_directory="/etc/letsencrypt/live/" - -days_before_expiry=5 # 设置在证书到期前几天触发续签 - -# 遍历所有证书文件 -for cert_dir in $certs_directory*; do - # 获取域名 - domain=$(basename "$cert_dir") - - # 忽略 README 目录 - if [ "$domain" = "README" ]; then - continue - fi - - # 输出正在检查的证书信息 - echo "检查证书过期日期: ${domain}" - - # 获取fullchain.pem文件路径 - cert_file="${cert_dir}/fullchain.pem" - - # 获取证书过期日期 - expiration_date=$(openssl x509 -enddate -noout -in "${cert_file}" | cut -d "=" -f 2-) - - # 输出证书过期日期 - echo "过期日期: ${expiration_date}" - - # 将日期转换为时间戳 - expiration_timestamp=$(date -d "${expiration_date}" +%s) - current_timestamp=$(date +%s) - - # 计算距离过期还有几天 - days_until_expiry=$(( ($expiration_timestamp - $current_timestamp) / 86400 )) - - # 检查是否需要续签(在满足续签条件的情况下) - if [ $days_until_expiry -le $days_before_expiry ]; then - echo "证书将在${days_before_expiry}天内过期,正在进行自动续签。" - - # 停止 Nginx - docker stop nginx - - iptables -P INPUT ACCEPT - iptables -P FORWARD ACCEPT - iptables -P OUTPUT ACCEPT - iptables -F - - ip6tables -P INPUT ACCEPT - ip6tables -P FORWARD ACCEPT - ip6tables -P OUTPUT ACCEPT - ip6tables -F - - # 续签证书 - certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal - - # 启动 Nginx - docker start nginx - - echo "证书已成功续签。" - else - # 若未满足续签条件,则输出证书仍然有效 - echo "证书仍然有效,距离过期还有 ${days_until_expiry} 天。" - fi - - # 输出分隔线 - echo "--------------------------" -done diff --git a/auto_cert_renewal.sh b/auto_cert_renewal.sh deleted file mode 100644 index b7198a3..0000000 --- a/auto_cert_renewal.sh +++ /dev/null @@ -1,62 +0,0 @@ -# 定义证书存储目录 -certs_directory="/home/web/certs/" -days_before_expiry=5 # 设置在证书到期前几天触发续签 - -# 遍历所有证书文件 -for cert_file in $certs_directory*_cert.pem; do - # 获取域名 - domain=$(basename "$cert_file" "_cert.pem") - - # 输出正在检查的证书信息 - echo "检查证书过期日期: ${domain}" - - # 获取证书过期日期 - expiration_date=$(openssl x509 -enddate -noout -in "${certs_directory}${domain}_cert.pem" | cut -d "=" -f 2-) - - # 输出证书过期日期 - echo "过期日期: ${expiration_date}" - - # 将日期转换为时间戳 - expiration_timestamp=$(date -d "${expiration_date}" +%s) - current_timestamp=$(date +%s) - - # 计算距离过期还有几天 - days_until_expiry=$(( ($expiration_timestamp - $current_timestamp) / 86400 )) - - # 检查是否需要续签(在满足续签条件的情况下) - if [ $days_until_expiry -le $days_before_expiry ]; then - echo "证书将在${days_before_expiry}天内过期,正在进行自动续签。" - - # 停止 Nginx - docker stop nginx - - iptables -P INPUT ACCEPT - iptables -P FORWARD ACCEPT - iptables -P OUTPUT ACCEPT - iptables -F - - ip6tables -P INPUT ACCEPT - ip6tables -P FORWARD ACCEPT - ip6tables -P OUTPUT ACCEPT - ip6tables -F - - # 续签证书 - # certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal - certbot certonly --standalone -d $domain --email your@email.com --agree-tos --no-eff-email --force-renewal --key-type ecdsa - - # 复制续签后的证书和私钥 - cp /etc/letsencrypt/live/$domain/fullchain.pem ${certs_directory}${domain}_cert.pem - cp /etc/letsencrypt/live/$domain/privkey.pem ${certs_directory}${domain}_key.pem - - # 启动 Nginx - docker start nginx - - echo "证书已成功续签。" - else - # 若未满足续签条件,则输出证书仍然有效 - echo "证书仍然有效,距离过期还有 ${days_until_expiry} 天。" - fi - - # 输出分隔线 - echo "--------------------------" -done diff --git a/beifen.sh b/beifen.sh deleted file mode 100644 index d54de85..0000000 --- a/beifen.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# Create a tar archive of the web directory -cd /home/ && tar czvf web_$(date +"%Y%m%d%H%M%S").tar.gz web - -# Transfer the tar archive to another VPS -cd /home/ && ls -t /home/*.tar.gz | head -1 | xargs -I {} sshpass -p 123456 scp -o StrictHostKeyChecking=no -P 22 {} root@0.0.0.0:/home/ - -# Keep only 5 tar archives and delete the rest -cd /home/ && ls -t /home/*.tar.gz | tail -n +4 | xargs -I {} rm {} diff --git a/cloudflare.conf b/cloudflare.conf deleted file mode 100644 index 633bb83..0000000 --- a/cloudflare.conf +++ /dev/null @@ -1,88 +0,0 @@ -# -# Author: Mike Rushton -# -# IMPORTANT -# -# Please set jail.local's permission to 640 because it contains your CF API key. -# -# This action depends on curl (and optionally jq). -# Referenced from http://www.normyee.net/blog/2012/02/02/adding-cloudflare-support-to-fail2ban by NORM YEE -# -# To get your CloudFlare API Key: https://www.cloudflare.com/a/account/my-account -# -# CloudFlare API error codes: https://www.cloudflare.com/docs/host-api.html#s4.2 - -[Definition] - -# Option: actionstart -# Notes.: command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false). -# Values: CMD -# -actionstart = - -# Option: actionstop -# Notes.: command executed at the stop of jail (or at the end of Fail2Ban) -# Values: CMD -# -actionstop = - -# Option: actioncheck -# Notes.: command executed once before each actionban command -# Values: CMD -# -actioncheck = - -# Option: actionban -# Notes.: command executed when banning an IP. Take care that the -# command is executed with Fail2Ban user rights. -# Tags: IP address -# number of failures -#