宝塔面板 常用运维指令手册

运维指令手册 26.3 KB 原文

宝塔面板 常用运维指令手册

适用版本:Linux 面板 9.x / 10.x / 11.x / 12.x / 13.x(当前 13.1.0 正式版) 宿主系统:CentOS 7/8、RHEL 8/9、Rocky/Alma、Ubuntu 20.04/22.04/24.04、Debian 11/12/13、openEuler、麒麟、统信、龙芯 loongarch64 约定:# root 或 sudo,$ 普通用户,<xxx> 为占位符,面板根目录固定为 /www(不可改)。 差异标注:> **版本差异** 标注 13.x 新增/迁移的菜单与行为,> **坑** 标注高频误操作。 更新时间:2026-11(版本事实核对至 2026-11-05)


目录

  1. 版本与产品形态
  2. 安装部署
  3. 目录结构与运行机制
  4. bt 命令全集
  5. 面板配置与登录救援
  6. 软件商店与运行环境
  7. 网站管理
  8. 数据库管理
  9. FTP、文件与终端
  10. 计划任务与日志切割
  11. Docker 模块
  12. 防火墙与系统安全
  13. 备份、恢复与迁移
  14. 监控、日志与进程
  15. 升级、降级与修复
  16. 多机与节点管理
  17. AI 助手与 MCP
  18. 卸载与残留清理
  19. 故障速查
  20. 安全基线与危险操作红线
  21. 附录

1. 版本与产品形态

1.1 产品族

名称 定位 备注
宝塔 Linux 面板 国内主力,Python 后端 本手册主体
宝塔 Windows 面板 Windows Server 版 目录与服务体系完全不同,勿混用命令
aaPanel 国际版 同一血脉,无强制绑定账号,界面/命令大体互通
堡塔应用管理器 / 插件 WAF、防篡改、负载均衡、一键迁移等 部分为付费插件
专业版 / 企业版 插件与多机能力 功能边界随版本变化

1.2 版本线(2026-11)

版本 关键事实
9.x / 10.x 存量机器仍多,Python 虚拟环境在 /www/server/panel/pyenv
11.x 大量在跑;论坛里 11.7.0 升 13 失败是常见工单
12.0 2026-09 起稳定版公测,仅对公测用户开放;官方明确"正式版用户暂勿升级,优先全新安装,跨版本升级必须先做完整服务器快照"
13.0.0 正式版 AI 工具接入面板 MCP;Python 可稳定升级至 3.13;手机号一键注册绑定;一键导入其他面板的备份文件;证书申请支持选算法;面板空闲休眠自动释放资源;节点管理页面重构;优化龙芯等国产系统;修复 Docker 日志切割、免费证书列表、终端 Ctrl+C 等;下架「安全 → 恶意 IP 自动封禁」功能
13.1.0 正式版 企业级安全中心(多台服务器风险一屏掌握);网站快速拨测;AI 模块支持聊天生成文档块 / md+html 实时预览 / 网页检查;AI 终端可选模型;文件管理器 Markdown 实时预览;邮局兼容 Dovecot 2.4;兼容 Tomcat 11;左侧栏新增「系统」,SSH 管理与系统防火墙迁移至此;BT-Task 深度优化;修复 Docker 反向代理状态与配置文件不同步、面板 SSL 续签、Node.js 项目启动方案等

版本差异:13.1.0 之后找「系统防火墙」和「SSH 管理」要去左侧新的**「系统」**菜单,不在原来的「安全」里。照老截图找菜单会以为功能被删了。

1.3 与 1Panel 的根本差别

宝塔是原生安装:nginx、PHP、MySQL 直接装到 /www/server/<软件>/<版本>/,多版本靠目录区分;1Panel 是容器化:一应用一个 Compose 项目。由此带来:

维度 宝塔 1Panel
服务管理 systemctl / /etc/init.d/* docker compose
配置文件 /www/server/nginx/conf/、/www/server/panel/vhost/ /opt/1panel/www/ + OpenResty 容器
升级风险 编译安装升级可能覆盖自定义模块 换镜像 tag,数据目录不变
排障工具 直接 ps/strace/lsof 宿主进程 要进容器
卸载 面板删了,软件与服务还在跑 面板删了,容器还在跑
资源占用 低(无 Docker 开销) 略高

选型的实质是"要不要 Docker 这层抽象"。已有大量传统 PHP 站点、需要精细调 nginx 模块的团队用宝塔更顺;需要多版本隔离、应用批量交付、和 K8s 生态对齐的用 1Panel。


2. 安装部署

2.1 前置条件(比 1Panel 更苛刻)

宝塔官方强调纯净系统:装过 nginx / MySQL / PHP / 其他面板的机器容易冲突。

# 1) 系统与架构
cat /etc/os-release
uname -m

# 2) 是否已有 Web/DB 服务
ss -tunlp | grep -E ':80 |:443 |:3306|:888 '
rpm -qa | grep -E 'nginx|httpd|mysql|mariadb|php' | head -20     # RHEL 系
dpkg -l | grep -E 'nginx|apache2|mysql|php' | head -20            # Debian 系

# 3) 是否已有其他面板
ls -d /www /opt/1panel /etc/init.d/bt 2>/dev/null

# 4) 分区:/www 会吃掉绝大多数空间
df -h / /www

坑:/www 是硬编码路径,安装脚本不会问你装到哪。/ 只给 40 GB、数据盘挂在 /data 的机器,装完 MySQL 数据目录仍在 /www/server/data,很快撑爆根分区。上生产前先做 LVM 或把 /www 挂到独立数据盘,装完再改要停服迁移。

2.2 在线安装

# CentOS / RHEL 系(官方通用脚本)
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh

# Ubuntu / Debian
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

# 通用国际入口
curl -sSO https://download.bt.cn/install/install_panel.sh && bash install_panel.sh

12.0 公测专用(仅公测用户,正式版勿用):

# 全新安装 12.0 公测
curl -sSO http://download.bt.cn/install/install12.sh && bash install12.sh
# 跨版本升级到 12.0 公测
curl -sSO http://download.bt.cn/install/update12.sh && bash update12.sh

官方在 2026-09-21 用 311 个节点对 install12.sh 做过拨测,309 个成功、平均 112.6 ms。脚本卡在下载环节时,问题多半在服务器自身 DNS/网络,先写公共 DNS 再重试,不要急着判定"宝塔挂了"。

安装结束后终端打印:

外网面板地址: http://<IP>:8888/<安全入口>
内网面板地址: http://<内网IP>:8888/<安全入口>
username: xxxxxxxx
password: xxxxxxxx

立刻把这三行存进密码库。忘了用 bt 14 取回。

2.3 安装后第一轮检查

/etc/init.d/bt status
bt 14
cat /www/server/panel/data/port.pl
cat /www/server/panel/data/admin_path.pl 2>/dev/null    # 安全入口
ss -tunlp | grep <面板端口>
systemctl status bt
journalctl -u bt -n 50 --no-pager 2>/dev/null

云服务器还要在控制台安全组放行面板端口(默认 8888,部分版本随机)。国内云厂商的安全组是独立于系统防火墙的一层。

2.4 离线 / 内网模式

# 开启面板离线模式(不再请求云端,内网/涉密环境用)
echo "True" > /www/server/panel/data/not_network.pl
bt restart

# 关闭离线模式
rm -f /www/server/panel/data/not_network.pl
bt restart

# 关闭面板静态文件加速(CDN 不可达时,界面加载慢/白屏)
rm -rf /www/server/panel/plugin/static_cdn/ && bt restart

离线模式下软件商店、在线升级、License 校验、云端备份都不可用,需要提前准备离线安装包与本地插件包。

2.5 国产系统适配

13.0.0 起专门优化了龙芯 / loongarch64 等国产系统,移除了部分无效依赖。麒麟、统信、openEuler 上注意:

  • 先确认自带防火墙与 SELinux/kysec 状态,安装脚本会关掉一些东西,等保场景要复核。
  • 部分编译安装组件在 ARM/龙芯上需要源码编译,时间很长,优先用"极速安装"(预编译包)。
  • Python 3.13 是 13.0 起的可选升级项,内存占用更高,2 GB 以下机器别升。

3. 目录结构与运行机制

3.1 路径速查

路径 内容 备份优先级
/www/server/panel/ 面板程序本体(Python) 中
/www/server/panel/pyenv/ 面板自带 Python 虚拟环境 中
/www/server/panel/data/ 面板 DB、端口、安全入口、SSL、白名单 最高
/www/server/panel/vhost/ nginx/apache 站点配置、重写、证书引用 最高
/www/server/panel/logs/ 面板日志 低
/www/server/panel/plugin/ 插件目录 高(付费插件授权)
/www/server/nginx/ nginx 程序与 conf/ 高
/www/server/<php版本>/ PHP 各版本(如 php/74/) 中
/www/server/mysql/ MySQL 程序 中
/www/server/data/ MySQL 数据目录 最高
/www/wwwroot/<站点>/ 网站文件 最高
/www/wwwlogs/<站点>.log 网站访问/错误日志 低(但要留审计)
/www/backup/ 面板备份(site / database / panel) 最高(需异地)
/www/server/panel/data/port.pl 面板端口 高
/www/server/panel/data/admin_path.pl 安全入口 高
/www/server/panel/data/default.db 等 面板 SQLite 库 最高
/etc/init.d/bt 面板服务脚本 中
/tmp/panelBoot.pl 面板启动日志 排障
~/.bt_panel / /root/.bt_panel 部分版本凭据 高

3.2 进程模型

ps -ef | grep -E 'BT-Panel|BT-Task|bt-' | grep -v grep
进程 作用
BT-Panel 面板 Web 服务(Python + gunicorn/自实现)
BT-Task 后台任务队列(安装软件、备份、计划任务、证书续签)
nginx / mysqld / php-fpm 业务服务,与面板进程独立

坑:面板打不开 ≠ 网站挂了。BT-Panel 挂掉时 nginx 照常提供页面,只是没法管理。重启面板不会影响网站;但重启 nginx 会。13.1.0 深度优化了 BT-Task 的资源占用,老版本上 BT-Task 卡死会表现为"面板能开,但装软件/备份一直转圈"。

3.3 服务管理(两套入口)

# 新版本
systemctl status|start|stop|restart bt

# 全版本通用(老版本 5.x 只有这个)
/etc/init.d/bt status|start|stop|restart

# 业务服务
/etc/init.d/nginx restart
/etc/init.d/mysqld restart
/etc/init.d/php-fpm-74 restart
systemctl restart nginx mysqld

4. bt 命令全集

SSH 里敲 bt 出交互菜单,输入编号执行;也可以 bt <编号> 一步到位(非交互脚本里很好用)。

4.1 编号对照表(13.x 菜单)

编号 功能 类别 典型场景
bt 1 重启面板服务 服务 面板打不开第一步
bt 2 停止面板服务 服务 维护、下线
bt 3 启动面板服务 服务 面板被关掉
bt 4 重载面板服务(不中断) 服务 改配置后
bt 5 修改面板密码 账号 忘记密码
bt 6 修改面板用户名 账号 账号泄露
bt 7 强制修改 MySQL root 密码 账号 数据库密码丢失
bt 8 修改面板端口 访问 改端口
bt 9 清除面板缓存 维护 界面异常、改配置不生效
bt 10 清除登录限制 救援 登录失败次数锁定
bt 11 设置是否开启 IP + User-Agent 验证 安全 收紧/放松登录校验
bt 12 取消域名绑定限制 救援 换域名后进不去
bt 13 取消 IP 访问限制 救援 白名单把自己挡了
bt 14 查看面板默认信息 救援 忘记地址/账号/密码/安全入口
bt 15 清理系统垃圾 维护 磁盘告警
bt 16 修复面板(装当前版本最新 bug 修复包) 救援 升级中断、面板异常
bt 17 设置日志切割是否压缩(开关,默认开) 维护 日志磁盘治理
bt 18 设置是否自动备份面板(开关,默认开) 维护 关闭/开启面板自备份
bt 19 关闭面板登录地区限制 救援 出差/换线路进不去
bt 22 显示面板错误日志 排障 定位启动失败
bt 23 关闭 BasicAuth 认证 救援 反代加过 BasicAuth 导致双层认证
bt 24 关闭动态口令认证(2FA) 救援 手机丢失 / MFA 码不对
bt 25 设置是否保存文件历史副本(开关) 维护 控制 /www 占用
bt 26 关闭面板 SSL 救援 自签证书/协议用错进不去
bt 28 修改面板安全入口 访问 安全入口泄露
bt 29 取消访问设备验证 救援 换设备被挡
bt 30 取消访问 UA 验证 救援 换浏览器被挡
bt 32 开启/关闭 80、443 端口访问面板 访问 想用域名直接访问面板
bt 34 更新面板到最新版本 升级 面板登不上时升级
bt 35 btcli 命令行管理工具 扩展 进入另一套 CLI
bt 36 磁盘空间清理工具 维护 精细清理
bt 99 切换英文界面 其他 国际版
bt 0 取消 — —

版本差异 / 坑:官网 bt.cn/btcode.html 那张老命令表把"重启/停止/启动"和编号 1/2/3 错位排版了(bt 被写成重启、bt 1 被写成停止)。以 bt 交互菜单和 docs.bt.cn 为准:bt 不带参数是打开菜单,bt 1 是重启、bt 2 停止、bt 3 启动。写自动化脚本前先 bt 看一眼当前版本的菜单。

4.2 高频组合

# 场景 A:完全进不去面板
bt 14                 # 先拿完整地址
bt 1                  # 重启
bt 22                 # 还不行看错误日志
bt 16                 # 修复(重装当前版本修复包)
cat /tmp/panelBoot.pl # 看启动日志

# 场景 B:忘记密码 + 用户名 + 安全入口
bt 5                  # 改密码
bt 6                  # 改用户名
bt 14                 # 打印全部

# 场景 C:SSL 配置错,浏览器进不去
bt 26                 # 关面板 SSL,回 http

# 场景 D:安全入口 / 白名单 / 2FA / 设备验证连环锁
bt 28                 # 重设安全入口
bt 13                 # 取消 IP 限制
bt 24                 # 关动态口令
bt 29                 # 取消设备验证
bt 30                 # 取消 UA 验证
bt 10                 # 清登录限制

# 场景 E:升级失败/面板文件异常
bt 16
bt 34                 # 更新到最新

安全提醒:场景 D 是把自己一层层解锁,用完必须进面板重新逐项开启,并在操作记录里留痕。bt 13 尤其危险——等于把 IP 白名单整条删掉。

4.3 老版本 / 无编号环境

/etc/init.d/bt stop|start|restart
cat /www/server/panel/data/port.pl

# 关闭面板静态加速 / 离线模式(见 2.4)
rm -rf /www/server/panel/plugin/static_cdn/ && bt restart

5. 面板配置与登录救援

5.1 访问控制的八道闸门

宝塔的登录保护是叠加式的,出问题时先判断卡在哪一道:

层 配置项 命令行兜底
1 端口 bt 8
2 安全入口(URL 路径) bt 28
3 面板 SSL / 协议 bt 26
4 用户名 / 密码 bt 5 bt 6
5 登录失败次数锁定 bt 10
6 IP 白名单 / 地区限制 bt 13 bt 19
7 动态口令 / BasicAuth bt 24 bt 23
8 设备验证 / UA 验证 bt 29 bt 30
9 域名绑定 bt 12

面板默认 SSL 用自签证书。浏览器提示"连接不安全"说明服务是通的,不是故障;要么下载并信任该证书,要么 bt 26 关掉。开了 SSL 就必须用 https 访问,关了就必须用 http,协议写错是最常见的"面板打不开"。

5.2 面板打不开的四层排查

# 第一层:端口与地址
bt 14
cat /www/server/panel/data/port.pl
ss -tunlp | grep <面板端口>

# 第二层:防火墙 + 云安全组
firewall-cmd --list-ports ; ufw status
# 云控制台:安全组入站规则

# 第三层:服务
/etc/init.d/bt status
bt 1
bt 22
bt 16

# 第四层:SSL 与协议
bt 26
curl -k -I http://127.0.0.1:<端口>/<安全入口>
curl -k -I https://127.0.0.1:<端口>/<安全入口>

5.3 反向代理面板

location / {
    proxy_pass http://127.0.0.1:<面板端口>;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_read_timeout 600s;
    client_max_body_size 512m;
}

反代时不要重写掉安全入口路径;缺 WebSocket 头会导致终端、日志实时刷新失效。bt 32 可以开 80/443 访问面板,但生产上更推荐保持面板独立高位端口 + 反代 + IP 白名单。


6. 软件商店与运行环境

6.1 安装方式的区别

方式 原理 速度 适用
极速安装 下载厂商预编译二进制 快 绝大多数场景
编译安装 现场 ./configure && make 慢(数十分钟) 需要自定义模块、特殊 CPU 架构
插件安装 装到 /www/server/panel/plugin/ 快 WAF、防篡改、监控等
# 软件安装后的位置与版本
ls /www/server/
ls /www/server/php/                    # 多版本 PHP 共存
/www/server/nginx/sbin/nginx -v
/www/server/mysql/bin/mysql -V
/usr/bin/php -v ; /www/server/php/74/bin/php -v

坑:PHP 多版本是"每站点选版本",命令行 php -v 指向的可能不是站点用的那个。排障一定用完整路径 /www/server/php/<版本>/bin/php -v,或看站点配置里的 fastcgi_pass。

6.2 服务脚本

ls /etc/init.d/ | grep -E 'nginx|httpd|mysql|php|redis|memcached|pure-ftpd'
/etc/init.d/nginx {start|stop|restart|reload|configtest}
/etc/init.d/mysqld {start|stop|restart}
/etc/init.d/php-fpm-74 {start|stop|restart|reload}
/etc/init.d/redis {start|stop|restart}

6.3 软件商店装不上 / 卡住的排查

# 1) 面板到下载节点通不通
curl -I --connect-timeout 5 https://download.bt.cn/
# 2) BT-Task 是否卡死
ps -ef | grep BT-Task | grep -v grep
bt 1
# 3) 磁盘与内存
df -h /www /tmp
free -m
# 4) 安装日志
ls -lt /tmp/ | head -20
tail -f /www/server/panel/logs/install.log 2>/dev/null

官方给的顺序是:点更新没反应、商店装不上 → 先 bt 16 修复面板 → 再 bt 34 更新。不要一上来就重装系统。


7. 网站管理

7.1 配置文件落点

ls -la /www/server/panel/vhost/nginx/          # 每站点一个 .conf
ls -la /www/server/panel/vhost/rewrite/        # 伪静态规则
ls -la /www/server/panel/vhost/cert/           # 站点证书
cat /www/server/panel/vhost/nginx/<站点>.conf
/www/server/nginx/sbin/nginx -t                 # 改完必测
/etc/init.d/nginx reload

坑:面板生成的 vhost 文件里带"请勿手工修改"的注释不是摆设,面板后续操作会重写。要加自定义配置,用面板的「配置文件」编辑器或放进 include 的独立文件,别直接改主 vhost。

7.2 站点常见操作

# 站点根目录与权限
ls -la /www/wwwroot/<站点>/
chown -R www:www /www/wwwroot/<站点>/
find /www/wwwroot/<站点>/ -type d -exec chmod 755 {} \;
find /www/wwwroot/<站点>/ -type f -exec chmod 644 {} \;

# 日志
tail -f /www/wwwlogs/<站点>.log
tail -f /www/wwwlogs/<站点>.error.log
# 大日志排查
du -sh /www/wwwlogs/* | sort -h | tail -10

7.3 502 / 504 的定位链

# 1) PHP-FPM 活着吗
ps -ef | grep php-fpm | grep -v grep
ss -lxp | grep php-cgi.sock
# 2) nginx 错误日志
tail -100 /www/wwwlogs/<站点>.error.log
# 3) 反代目标通不通
curl -I http://127.0.0.1:<后端端口>/
# 4) 防火墙 / SELinux
getenforce

常见原因:PHP-FPM 挂了或进程数打满(pm.max_children)、socket 路径不匹配、反代目标端口错、SELinux 拦截、后端超时。

7.4 SSL 证书

# 面板「网站 → SSL → Let's Encrypt」,13.0 起支持选择证书算法
# 手动校验
openssl x509 -in /www/server/panel/vhost/cert/<站点>/fullchain.pem -noout -dates
curl -vI https://<域名> 2>&1 | grep -A5 'SSL connection'

13.0.0 修复了"证书部分签发异常"和"免费证书列表异常",13.1.0 修复了"面板 SSL 续签异常"。证书续签依赖 80 端口(http-01)或 DNS API;别为了安全把 80 全关了,否则三个月后证书集体过期。


8. 数据库管理

8.1 数据与配置

ls -la /www/server/data/                 # MySQL 数据目录
cat /etc/my.cnf
/www/server/mysql/bin/mysql -uroot -p -e "SELECT VERSION();"

8.2 忘记 root 密码

bt 7        # 官方一键强制修改 MySQL root 密码

如果 bt 7 不生效(不同 MySQL 版本行为不同),走标准 skip-grant-tables 流程:

systemctl stop mysqld 2>/dev/null || /etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables --user=mysql &
mysql -uroot
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '<新强密码>';
-- MySQL 5.7 用:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('<新强密码>');
FLUSH PRIVILEGES;
mysqladmin -uroot -p shutdown
systemctl start mysqld 2>/dev/null || /etc/init.d/mysqld start

bt 7 会同步更新面板里登记的 root 密码。手工改库之后要回面板「数据库 → root 密码」同步,否则面板的备份、phpMyAdmin 会连不上。

8.3 备份与恢复

# 逻辑备份(推荐,与面板备份互补)
/www/server/mysql/bin/mysqldump -uroot -p'<pwd>' --all-databases \
  --single-transaction --routines --triggers | gzip > /root/db-$(date +%F).sql.gz

# 恢复
zcat /root/db-2026-11-05.sql.gz | /www/server/mysql/bin/mysql -uroot -p'<pwd>'

# 面板自动备份位置
ls -lh /www/backup/database/

更细的复制、binlog PITR、参数调优见 MySQL / MariaDB 分册。面板只是包了一层 UI 与定时备份。

8.4 远程访问

四处都要改:MySQL 用户 host 授权、面板「数据库 → 权限」设所有人/指定 IP、系统防火墙放行 3306、云安全组放行。生产环境不要开 root@% 到公网。


9. FTP、文件与终端

# FTP 服务(pure-ftpd)
/etc/init.d/pure-ftpd status|restart
cat /www/server/pure-ftpd/etc/pure-ftpd.conf | grep -E 'PassivePortRange|ForcePassiveIP'

# 文件管理器改动落点就是 /www/wwwroot,命令行完全等价
# 面板终端依赖 WebSocket,反代配置见 5.3

13.0.0 修复了"终端无法通过 Ctrl+C 退出及部分命令无法使用"的问题;13.1.0 的 AI 终端支持模型选择。长期任务仍建议 SSH + tmux,别依赖面板终端。


10. 计划任务与日志切割

10.1 面板计划任务

# 面板任务最终落在 root 的 crontab
crontab -l
# 任务日志
ls -lt /www/server/panel/logs/ | head

任务类型:备份网站 / 备份数据库 / 日志切割 / 释放内存 / 访问 URL / 执行 Shell 脚本 / 同步时间。

坑:面板里的 Shell 脚本任务以 root 执行,而且很多人把脚本写在 /www 下、面板升级或站点删除时会被一起清掉。脚本放 /usr/local/sbin/ 并在任务里用绝对路径。

10.2 日志切割

bt 17           # 开关"日志切割是否压缩"(执行一次翻转状态)
ls -lh /www/wwwlogs/*.log | sort -k5 -h | tail -10
# 面板的切割脚本
ls -la /www/server/panel/script/ | grep -i log

磁盘 100% 时先切日志而不是先删数据:bt 15 清垃圾 + bt 36 磁盘清理工具。MySQL 在数据目录满时会直接拒写。


11. Docker 模块

宝塔从 7.x 起内置 Docker 管理(容器/镜像/网络/卷/Compose/编排模板),但它只是 Docker API 的一层 UI,与 1Panel 的"一切皆容器"是两回事。

11.1 命令行等价操作

docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
docker images
docker network ls
docker volume ls
docker stats --no-stream
docker system df -v
docker compose ls

11.2 与面板相关的已知问题(13.x 修复项)

现象 版本 说明
Docker 日志切割异常 13.0.0 已修复 旧版本切割后容器日志为空或继续膨胀
Docker 反向代理状态与配置文件不同步 13.1.0 已修复 面板显示"已启用",nginx 配置里其实没有
容器端口与防火墙规则冲突 长期 Docker 走 DOCKER 链,面板防火墙放行/关闭不一定生效
网站反代到容器写成 127.0.0.1 用户配置问题 宝塔的 nginx 是宿主进程,127.0.0.1:<映射端口> 在这里是对的(与 1Panel 容器化 OpenResty 相反!)

这是两套面板最容易混淆的一点:宝塔 nginx 在宿主机上,反代容器写 http://127.0.0.1:8080 没问题;1Panel 的 OpenResty 在容器里,127.0.0.1 指它自己,必须写宿主 IP。迁移站点时这条不改就是全站 502。

11.3 Compose 项目位置

find /www -name docker-compose.yml 2>/dev/null | head -20
# 面板「Docker → 容器编排」创建的项目通常在
ls -la /www/server/panel/data/compose/ 2>/dev/null

面板创建的 Compose 项目,命令行 docker compose down -v 删掉卷后面板状态可能残留;删除优先在面板里操作。


12. 防火墙与系统安全

12.1 菜单位置变化

版本差异:13.1.0 起左侧栏新增「系统」,SSH 管理和系统防火墙从「安全」迁移到「系统」。13.0.0 起「安全 → 恶意 IP 自动封禁」功能已下架,别再按老文档找它。

12.2 命令行

# RHEL 系
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --permanent --add-port=8888/tcp && firewall-cmd --reload

# Debian 系
ufw status verbose
ufw allow 8888/tcp

# 端口实测
ss -tunlp | grep <port>
iptables -L DOCKER-USER -n -v
nmap -Pn -p <port> <公网IP>

12.3 SSH 管理

面板「系统 → SSH 管理」可改端口、禁密码登录、改 root 登录策略。改之前:

# 保留一个当前 SSH 会话不要断,另开一个验证
cp /etc/ssh/sshd_config /root/sshd_config.bak
sshd -t
# 改端口后同步:firewalld 放行 + SELinux 端口标签
semanage port -a -t ssh_port_t -p tcp <新端口>   # SELinux 环境
firewall-cmd --permanent --add-port=<新端口>/tcp && firewall-cmd --reload
systemctl restart sshd

坑:改 SSH 端口漏了 SELinux 标签或防火墙,重启 sshd 的那一刻就是失联。远程操作必须有带外/云控制台兜底。

12.4 面板自身安全

  • 改默认端口(bt 8)+ 安全入口(bt 28)
  • 面板 SSL 换成受信任证书(自签仅应急)
  • 开 IP 白名单 / 地区限制 / 双因素
  • 定期检查「面板操作日志」
  • 不要开启 bt 32(用 80/443 访问面板)暴露在公网,除非有 WAF 与白名单

13. 备份、恢复与迁移

13.1 面板备份体系

类型 位置 内容
网站备份 /www/backup/site/ 站点文件 + 关联数据库(可选)
数据库备份 /www/backup/database/ SQL 导出
面板备份 /www/backup/panel/ 面板配置(bt 18 控制自动备份开关)
计划任务备份 可配第三方存储 对象存储 / FTP / 远程
ls -lh /www/backup/site/ | tail -10
ls -lh /www/backup/database/ | tail -10

/www/backup 在本机,机器故障/被入侵时一起没。必须配异地备份(对象存储、FTP、rsync 到另一台机器),并定期做一次真实恢复演练。

13.2 命令行全量兜底

tar czf /root/bt-wwwroot-$(date +%F).tgz /www/wwwroot
tar czf /root/bt-vhost-$(date +%F).tgz /www/server/panel/vhost
tar czf /root/bt-paneldata-$(date +%F).tgz /www/server/panel/data
/www/server/mysql/bin/mysqldump -uroot -p'<pwd>' --all-databases \
  --single-transaction --routines --triggers | gzip > /root/bt-db-$(date +%F).sql.gz
crontab -l > /root/bt-crontab-$(date +%F).txt

13.3 迁移到新服务器

# 方式一:官方「一键迁移」插件(面板 → 软件商店),按插件指引填新旧服务器
# 方式二:手工迁移(更可控)
# 新机:装同版本宝塔(务必同版本,跨大版本配置格式可能变)
# 传文件
scp /root/bt-*.tgz root@<新机>:/root/

# 新机解包(注意先停 nginx/mysql,避免数据目录被写)
tar xzf /root/bt-wwwroot-*.tgz -C /
tar xzf /root/bt-vhost-*.tgz -C /
zcat /root/bt-db-*.sql.gz | /www/server/mysql/bin/mysql -uroot -p'<pwd>'
/www/server/nginx/sbin/nginx -t && /etc/init.d/nginx reload

# 重新申请/导入证书、核对伪静态与反代、恢复 crontab

版本差异:13.0.0 起支持一键导入其他面板的备份文件(如从 1Panel / aaPanel 迁过来)。导入前仍要核对站点配置里的路径、PHP 版本、反代目标,跨面板的目录体系不一样,不能指望 100% 自动适配。

13.4 迁移检查清单

  • 新机 /www 分区容量 ≥ 旧机已用量 × 1.5
  • 同版本面板、同版本 nginx / PHP / MySQL
  • 数据库备份在测试机还原验证过
  • 站点文件权限 www:www
  • 证书重新申请或完整导入(含私钥)
  • 伪静态 / 反代 / 防盗链 / WAF 规则
  • crontab、计划任务、日志切割
  • 防火墙规则与云安全组
  • DNS TTL 提前调 300,切换后旧机保留 72 小时

14. 监控、日志与进程

# 面板日志
tail -f /www/server/panel/logs/error.log 2>/dev/null
tail -f /www/server/panel/logs/request.log 2>/dev/null
cat /tmp/panelBoot.pl

# bt 22 输出的是面板错误日志摘要
bt 22

# 系统层
top -bn1 | head -20
free -m
df -h /www /tmp
iostat -x 1 3

# 磁盘大文件
du -sh /www/* 2>/dev/null | sort -h | tail -10
du -sh /www/wwwlogs/* | sort -h | tail -10

13.1.0 上了「企业级安全中心」与「网站快速拨测」,适合多机风险汇总与站点可用性排查;单机排障仍以命令行日志为准。


15. 升级、降级与修复

15.1 两条升级路径

# 方式一(推荐):登录面板 → 首页右上角「更新」→ 立即更新
# 方式二(面板登不上):
bt 34        # 按提示选择更新源

官方说明:升级面板不影响网站与数据库数据,面板故障时数据也仍在。但这句话不等于"不需要备份"。

15.2 升级前必做

# 1) 完整服务器快照(云平台)—— 跨大版本升级的硬性要求
# 2) 面板配置 + 站点 + 数据库备份(见 13.2)
# 3) 记录当前版本与自定义改动
cat /www/server/panel/data/version.pl 2>/dev/null
/www/server/nginx/sbin/nginx -V 2>&1 | tail -3          # 编译参数 / 自定义模块
ls /www/server/panel/plugin/                           # 已装插件

15.3 稳定版 vs 正式版

  • 宝塔用版本号奇偶区分发布通道(偶数稳定、奇数正式,具体以面板内显示为准)。
  • 12.0 曾长期处于"稳定版公测",官方明确正式版用户暂勿升级、优先全新安装、跨版本升级必须快照。看到新版本号先确认发布通道再动。
  • 升级到一半失败 → bt 16 修复 → 仍不行 → 在面板首页「更新」里选之前的稳定版重装/降级。

15.4 Python 3.13

13.0.0 起支持把面板运行环境稳定升级到 Python 3.13,运行更快但内存占用更高。2 GB 及以下机器不要升;升之前确认所有第三方插件兼容,否则插件会静默失效。

15.5 升级失败排查

curl -I --connect-timeout 5 https://download.bt.cn/    # 常见报错:获取最新版本失败
cat /etc/resolv.conf
bt 16
bt 34
bt 22
cat /tmp/panelBoot.pl

论坛里 11.7.0 升 13 失败的典型报错是 ERROR:获取最新版本失败,请检查网络连接,根因多为服务器 DNS 解析到不可达节点。改公共 DNS 后重试,不是面板 bug。


16. 多机与节点管理

  • 13.0.0 重构了节点管理页面,优化交互与展示。
  • 13.1.0 的「企业级安全中心」把多台服务器风险汇总到一屏。
  • 多机能力通常需要专业版/企业版授权,节点与被控端之间要保证时间同步与端口可达。
timedatectl
chronyc sources 2>/dev/null
ss -tunlp | grep <节点端口>

17. AI 助手与 MCP

版本 能力
13.0.0 AI 工具接入面板 MCP,服务器管理更规范;AI 助手超大粘贴文本自动转附件;面板专属客服
13.1.0 AI 助手深度升级;聊天内容生成文档块、md/html 实时预览、文件预览下载、网页检查能力;AI 终端可选模型
13.0.0 起 加强高风险操作拦截、优化上下文压缩

安全红线:把 MCP / AI 助手接到面板,等于给了一个能用自然语言触发 root 级操作的入口。生产环境应当:限制可调用工具集、只对特定账号开放、保留完整操作审计、把 rm / 服务重启 / 防火墙变更列为需人工二次确认。别把 AI 助手的 API Key 和面板管理员密码放同一台可公网访问的管理机上。


18. 卸载与残留清理

18.1 官方卸载脚本(推荐)

# 先备份!见 13.2
wget -O bt-uninstall.sh http://download.bt.cn/install/bt-uninstall.sh
sh bt-uninstall.sh

18.2 手工卸载(老版本 / 脚本不可用)

# ★ 下面只删面板,不动网站与数据库数据
/etc/init.d/bt stop
chkconfig --del bt 2>/dev/null
systemctl disable bt 2>/dev/null
rm -f /etc/init.d/bt
rm -f /usr/bin/bt
rm -rf /www/server/panel
systemctl daemon-reload

官网 bt.cn/btcode.html 给的就是这一串。它只删 /www/server/panel,nginx / MySQL / PHP / /www/wwwroot / /www/backup 全都还在,这正是"卸载面板不丢数据"的含义。别用 rm -rf /www,那会把业务一起清掉。

18.3 彻底清理(确认整机不再使用)

# ★★ 不可逆,逐条确认
/etc/init.d/nginx stop ; /etc/init.d/mysqld stop ; /etc/init.d/php-fpm-* stop
systemctl stop bt 2>/dev/null

# 面板相关残留
rm -f /etc/init.d/bt /usr/bin/bt
rm -rf /www/server/panel /www/server/panel/pyenv

# 业务软件(确认数据已迁走)
# rm -rf /www/server /www/wwwroot /www/wwwlogs /www/backup

# 计划任务、防火墙规则、SSH 改动
crontab -l | grep -i -E 'bt|panel'
firewall-cmd --list-all
ufw status

18.4 残留验证

ps -ef | grep -E 'BT-Panel|BT-Task' | grep -v grep
ls -d /www/server/panel 2>/dev/null
ls -l /etc/init.d/bt /usr/bin/bt 2>/dev/null
crontab -l | grep -i -E 'bt|panel'
ss -tunlp | grep <原面板端口>
systemctl list-units --all | grep -i bt

19. 故障速查

现象 优先排查 动作
面板 404 安全入口 bt 14 拿完整地址;bt 28 重设入口
面板打不开 端口→防火墙→服务→SSL bt 14 → ss -tunlp → bt 1 → bt 22 → bt 16
提示连接不安全 自签证书 / 协议错 信任证书或 bt 26;https/http 对齐
忘记密码 账号 bt 5、bt 6、bt 14
登录次数锁定 登录限制 bt 10
换 IP/地区后进不去 白名单/地区 bt 13、bt 19、bt 29、bt 30
2FA 码不对 动态口令 bt 24
界面白屏/改配置不生效 缓存 / CDN bt 9;离线删 static_cdn/ 后 bt restart
装软件一直转圈 BT-Task 卡死 / 网络 bt 1;curl -I download.bt.cn;查 /tmp 安装日志
升级报"获取最新版本失败" DNS / 网络 改公共 DNS;bt 16 → bt 34
升级后功能异常 面板文件损坏 bt 16 修复;必要时面板内降级
网站 502 PHP-FPM / 反代 看 /www/wwwlogs/*.error.log;`ps -ef
网站 403 权限 / SELinux chown -R www:www;getenforce
SSL 续签失败 80 端口 / DNS API 13.1.0 已修面板 SSL 续签;确认 80 可达
MySQL 连不上 数据目录满 / root 密码 df -h /www;bt 7
磁盘 100% 日志 / 备份 bt 15、bt 36、du -sh /www/wwwlogs/*
Docker 面板状态与实际不符 13.1.0 前 bug 升级到 13.1.0+,以 docker ps 为准
反代容器 502(从 1Panel 迁来) 反代目标写成宿主 IP 宝塔 nginx 在宿主机,应写 127.0.0.1

19.1 五分钟定位脚本

#!/usr/bin/env bash
echo "===== 面板信息 ====="; bt 14 2>/dev/null || cat /www/server/panel/data/port.pl
echo "===== 服务 ====="; /etc/init.d/bt status 2>/dev/null
ps -ef | grep -E 'BT-Panel|BT-Task' | grep -v grep
echo "===== 磁盘 ====="; df -h / /www /tmp
echo "===== 内存 ====="; free -m
echo "===== 监听 ====="; ss -tunlp | grep -E ':80 |:443 |:3306'
echo "===== 业务进程 ====="; ps -ef | grep -E 'nginx|mysqld|php-fpm' | grep -v grep | head
echo "===== 站点错误日志 ====="; tail -n 30 /www/wwwlogs/*.error.log 2>/dev/null | tail -40
echo "===== 大日志 ====="; du -sh /www/wwwlogs/* 2>/dev/null | sort -h | tail -5
echo "===== 面板错误 ====="; bt 22 2>/dev/null | tail -30

20. 安全基线与危险操作红线

20.1 基线清单

  • 面板端口非默认、安全入口启用、面板 SSL 用受信任证书
  • 面板仅对管理网段开放(云安全组 + 系统防火墙双层)
  • 开双因素、登录失败锁定、IP 白名单
  • 面板操作日志与网站访问日志保留 ≥ 180 天
  • /www 挂在独立分区/数据盘,磁盘告警阈值 80%
  • 异地备份已配,恢复演练通过
  • MySQL 不开 root@% 公网;FTP 用被动模式 + 端口范围限制
  • 第三方插件来源可信、授权与版本记录在册
  • 定期升级面板与运行环境(PHP / nginx / MySQL 的 CVE 同样致命)
  • AI/MCP 入口限账号、留审计、高风险操作需二次确认
  • SSH 改端口时同步 SELinux + 防火墙 + 保留带外通道

20.2 危险命令红线

命令 后果
rm -rf /www 网站、数据库、备份、日志全没了
rm -rf /www/server/data MySQL 数据目录
bt 26 / bt 13 / bt 24 用完不恢复 面板失去防护,公网裸奔
bt 32 无白名单开 80/443 访问面板 面板直接暴露公网
bt 7 后不回面板同步密码 面板备份 / phpMyAdmin 连不上
直接改 /www/server/panel/vhost/nginx/*.conf 面板重写,改动丢失
关 80 端口"为了安全" Let's Encrypt 续签全失败
docker compose down -v(在宝塔 Docker 模块下) 删业务卷
远程重启 sshd 未验证新端口 失联

20.3 权限本质

面板以 root 运行,文件管理器、终端、Shell 计划任务都是 root。面板账号泄露 = 服务器失守。历史上宝塔多次出现过高危漏洞(未授权访问、数据库泄露类),所以:

  1. 面板不暴露公网,用 VPN / 跳板机 / 云堡垒机访问。
  2. 关注官方安全公告,补丁版本第一时间升。
  3. 定期检查 /www/server/panel/data/ 下是否有异常文件、计划任务里是否有陌生脚本。

21. 附录

21.1 bt 编号速查(打印版)

bt       交互菜单        bt 1   重启面板      bt 2   停止面板
bt 3     启动面板        bt 4   重载面板      bt 5   改密码
bt 6     改用户名        bt 7   改 MySQL 密码  bt 8   改端口
bt 9     清缓存          bt 10  清登录限制    bt 11  IP+UA 验证
bt 12    取消域名绑定    bt 13  取消 IP 限制  bt 14  ★默认信息
bt 15    清系统垃圾      bt 16  ★修复面板    bt 17  日志压缩开关
bt 18    面板自备份开关  bt 19  关地区限制    bt 22  ★错误日志
bt 23    关 BasicAuth    bt 24  关动态口令    bt 25  文件副本开关
bt 26    关面板 SSL      bt 28  改安全入口    bt 29  取消设备验证
bt 30    取消 UA 验证    bt 32  80/443 访问面板 bt 34 ★更新面板
bt 35    btcli CLI       bt 36  磁盘清理      bt 99  切英文

21.2 路径速查

需求 路径 / 命令
面板端口 /www/server/panel/data/port.pl
安全入口 /www/server/panel/data/admin_path.pl
站点配置 /www/server/panel/vhost/nginx/<站点>.conf
伪静态 /www/server/panel/vhost/rewrite/
站点证书 /www/server/panel/vhost/cert/
网站文件 /www/wwwroot/<站点>/
网站日志 /www/wwwlogs/<站点>.log
MySQL 数据 /www/server/data/
备份 /www/backup/
面板日志 /www/server/panel/logs/、/tmp/panelBoot.pl
面板服务 /etc/init.d/bt、systemctl status bt

21.3 与其他手册的配合

遇到这类问题 翻哪份
Docker 原理、Compose、镜像加速 Docker 常用运维指令手册
MySQL 复制/PITR、Redis、PG 对应数据库分册
nginx 配置语法、反代与 WebSocket 运维工具手册 12-隧道与高可用/nginx.md
firewalld / SELinux / sshd CentOS 手册、国产操作系统手册
1Panel 的容器化路径与目录体系 1Panel 常用运维指令手册
两套面板选型与迁移对照 国内容器平台与运维面板总览
容器平台整体分层 容器平台常规运维指令手册

维护建议:宝塔的编号菜单、插件功能边界、付费能力随版本变化较快,本文以 13.1.0 菜单为基准。落地时把面板端口、安全入口、备份目标、SSH 端口替换为团队实际值并写入 CMDB;所有救援类 bt 命令执行后必须补一轮安全配置复核。

宝塔面板 常用运维指令手册 - 知识库 - 起航社区