# 宝塔面板(BT Panel)官方文档 · 全文聚合 > 本文件聚合 https://docs.bt.cn/ 站点的全部主文档(不含通知/更新日志/政策协议等 Optional 内容),方便 LLM 一次性读取。索引入口:https://docs.bt.cn/llms.txt 。最后更新:2026-08-11。 --- # 宝塔面板文档(正式版) --- source: https://docs.bt.cn/api/acme/index.md.txt # ACME 证书 > 宝塔面板 ACME 证书 API — Let's Encrypt 免费 SSL 证书申请、DNS 验证、部署 # ACME 证书 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /acme` | 已验证 8 个接口 支持 HTTP 文件验证、TLS 验证和 DNS 验证三种方式。DNS 验证需先配置 DNS API 密钥(见 [SSL DNS API](../ssl/)。 ## 典型流程 ### DNS 验证申请(推荐) 1. [apply_cert_api](./apply_cert_api.md) — 创建 ACME 订单 2. [apply_dns_auth](./apply_dns_auth.md) — 自动创建 DNS TXT 记录并完成验证 3. [SetCertToSite](./SetCertToSite.md) — 将签发的证书部署到网站 ## 接口列表 ### 证书申请 - [apply_cert_api](./apply_cert_api.md) — 创建证书申请订单 - [apply_dns_auth](./apply_dns_auth.md) — DNS 验证并签发证书 ### 订单管理 - [get_orders](./get_orders.md) — 获取所有订单列表 - [get_order_find](./get_order_find.md) — 获取指定订单详情 - [remove_order](./remove_order.md) — 删除订单 ### 部署与管理 - [SetCertToSite](./SetCertToSite.md) — 将证书部署到网站 - [download_cert](./download_cert.md) — 下载证书文件 - [renew_cert](./renew_cert.md) — 续签证书 --- source: https://docs.bt.cn/api/crontab/index.md.txt # 计划任务 > 宝塔面板计划任务 API — 创建、修改、删除和查询 Cron 定时任务 # 计划任务 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /crontab` | 已验证 36 个接口 管理面板计划任务(Cron):支持 Shell 脚本、URL 请求、数据库备份等多种任务类型的创建与管理。 ## 接口列表 ### 任务 CRUD - [AddCrontab](./AddCrontab.md) — 创建计划任务 - [DelCrontab](./DelCrontab.md) — 删除计划任务 - [GetCrontab](./GetCrontab.md) — 获取计划任务列表 - [get_crond_find](./get_crond_find.md) — 查询单个任务 - [modify_crond](./modify_crond.md) — 修改计划任务 - [set_cron_status](./set_cron_status.md) — 启用/禁用 - [set_cron_status_all](./set_cron_status_all.md) — 批量启停 ### 日志 - [GetLogs](./GetLogs.md) — 获取任务日志 - [DelLogs](./DelLogs.md) — 清空日志 - [download_logs](./download_logs.md) — 导出日志 - [clear_logs](./clear_logs.md) — 清除日志 - [get_log_path](./get_log_path.md) — 日志路径 ### 分类管理 - [get_crontab_types](./get_crontab_types.md) — 分类列表 - [add_crontab_type](./add_crontab_type.md) — 创建分类 - [set_crontab_type](./set_crontab_type.md) — 设置任务分类 ### 辅助数据 - [get_zone](./get_zone.md) — 时区列表 - [get_domain](./get_domain.md) — 域名列表 - [get_system_user_list](./get_system_user_list.md) — 系统用户 - [get_crontab_service](./get_crontab_service.md) — crond 服务状态 - [repair_crontab_service](./repair_crontab_service.md) — 修复 crond - [GetDatabases](./GetDatabases.md) — 数据库列表 - [get_databases](./get_databases.md) — 数据库(简化) - [GetDataList](./GetDataList.md) — 数据列表(按类型) ### 备份配置 - [get_auto_config](./get_auto_config.md) — 自动备份配置 - [set_auto_config](./set_auto_config.md) — 设置自动备份 ### 日志切割 - [get_rotate_log_config](./get_rotate_log_config.md) — 日志切割配置 - [set_rotate_log](./set_rotate_log.md) — 设置日志切割 - [set_rotate_log_status](./set_rotate_log_status.md) — 日志切割开关 ### URL/网络 - [check_url_connecte](./check_url_connecte.md) — URL 连通检测 ### 其他 - [cancel_top](./cancel_top.md) — 取消置顶 - [set_task_top](./set_task_top.md) — 置顶任务 - [export_crontab_to_json](./export_crontab_to_json.md) — 导出 JSON - [set_execute_script](./set_execute_script.md) — 执行脚本 - [set_atuo_start_syssafe](./set_atuo_start_syssafe.md) — 系统加固临时关闭 - [get_restart_project_config](./get_restart_project_config.md) — 重启项目配置 - [set_restart_project](./set_restart_project.md) — 设置重启项目 --- source: https://docs.bt.cn/api/data/index.md.txt # 数据查询 > 宝塔面板数据查询 API — 直接查询面板内置 SQLite 数据库表数据 # 数据查询 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /data` | 已验证 1 个接口 直接查询面板内置 SQLite 数据库,可获取网站、数据库、FTP、域名等各类配置数据。 ## 接口列表 - [getData](./getData.md) — 查询面板 SQLite 数据表 --- source: https://docs.bt.cn/api/database/index.md.txt # 数据库管理 > 宝塔面板数据库管理 API — MySQL 数据库创建、备份、用户权限管理 # 数据库管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /database` | 已验证 32 个接口 管理 MySQL 数据库的创建、删除、备份、用户权限等操作。 ## 通用参数 多数接口需要 `sid` 参数指定数据库服务器: | 值 | 说明 | |----|------| | `0` | 本地 MySQL / MariaDB | | 其他 | `database_servers` 表中远程服务器 ID | > 部分接口的 `id` 参数指 `databases` SQLite 表中的记录 ID,**不是** MySQL 服务器 ID。可通过 `/data` 接口查询获取。 ## 接口列表 ### 数据库操作 - [AddDatabase](./AddDatabase.md) — 创建数据库及用户 - [DeleteDatabase](./DeleteDatabase.md) — 删除数据库 - [GetDatabaseList](./GetDatabaseList.md) — 所有数据库(SHOW DATABASES) - [GetDatabasesList](./GetDatabasesList.md) — 面板管理的数据库 - [get_database_table](./get_database_table.md) — 数据库表列表 - [GetInfo](./GetInfo.md) — 数据库详情 - [find_databases_by_name_and_type](./find_databases_by_name_and_type.md) — 按类型搜索 ### 用户管理 - [GetMysqlUser](./GetMysqlUser.md) — 用户列表及权限 - [AddMysqlUser](./AddMysqlUser.md) — 创建用户 - [DelMysqlUser](./DelMysqlUser.md) — 删除用户 - [GetPushUser](./GetPushUser.md) — 推送用户 - [GeUserHostList](./GeUserHostList.md) — 用户 Host 列表 ### 备份与导入 - [ToBackup](./ToBackup.md) — 备份数据库 - [GetBackup](./GetBackup.md) — 备份文件列表 - [GetAllBackup](./GetAllBackup.md) — 全部备份 - [GetImportLog](./GetImportLog.md) — 导入日志 - [GetImportStatus](./GetImportStatus.md) — 导入状态 ### 状态与配置 - [GetMySQLInfo](./GetMySQLInfo.md) — MySQL 配置 - [GetDbStatus](./GetDbStatus.md) — 数据库服务状态 - [GetRunStatus](./GetRunStatus.md) — 运行状态 - [GetTimeOut](./GetTimeOut.md) — 超时配置 - [SetTimeOut](./SetTimeOut.md) — 设置超时 - [GetCloudServer](./GetCloudServer.md) — 数据库服务器列表 - [get_mysql_status](./get_mysql_status.md) — MySQL 状态 - [GetSlowLogs](./GetSlowLogs.md) — 慢查询日志 - [GetErrorLog](./GetErrorLog.md) — 错误日志 - [GetLoginFailed](./GetLoginFailed.md) — 登录失败跟踪 - [GetMysqlCommands](./GetMysqlCommands.md) — MySQL 命令 - [GetValidatePasswordConfig](./GetValidatePasswordConfig.md) — 密码验证配置 ### 二进制日志 - [BinLog](./BinLog.md) — 二进制日志管理 - [ClearMySQLBinlog](./ClearMySQLBinlog.md) — 清理 binlog ### 分类与任务 - [view_database_types](./view_database_types.md) — 分类列表 - [get_restart_task](./get_restart_task.md) — MySQL 守护任务 - [set_restart_task](./set_restart_task.md) — 设置守护任务 --- source: https://docs.bt.cn/api/deployment/index.md.txt # 项目部署 > 宝塔面板一键部署 API — 软件包列表、环境检测、部署管理 # 项目部署 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /deployment` | 已验证 9 个接口 面板"一键部署"功能,支持快速部署 WordPress、ThinkPHP、可道云等常用软件包。 ## 接口列表 - [GetList](./GetList.md) — 可部署的软件包列表 - [GetSiteList](./GetSiteList.md) — 可用网站及框架列表 - [SetupPackage](./SetupPackage.md) — 部署软件包到网站 - [check_project_env](./check_project_env.md) — 环境检测 - [GetSpeed](./GetSpeed.md) — 部署进度 - [GetInLog](./GetInLog.md) — 部署日志 - [AddPackage](./AddPackage.md) — 添加自定义软件包 - [GetPackageOther](./GetPackageOther.md) — 自定义包详情 - [DelPackage](./DelPackage.md) — 删除软件包 --- source: https://docs.bt.cn/api/docker/index.md.txt # Docker > 宝塔面板 Docker API — 容器、镜像、网络、存储卷、Compose 管理、应用商店 # Docker API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `GET /btdocker/<模块>/<方法>` | `POST /mod/docker/com/<方法>/stype` ## 接口列表 ### 安装与配置 (GET /btdocker/setup/) - [install_docker_program](./install_docker_program.md) — 安装 Docker - [get_config](./get_config.md) — Docker 服务状态 - [get_registry_mirrors](./get_registry_mirrors.md) — 镜像加速配置 - [set_registry_mirrors](./set_registry_mirrors.md) — 设置镜像加速 - [set_monitor_save_date](./set_monitor_save_date.md) — 监控数据保留天数 ### 容器管理 (GET /btdocker/container/) - [get_list](./get_list.md) — 所有容器列表 - [stop](./stop.md) — 停止容器 - [start](./start.md) — 启动容器 - [restart](./restart.md) — 重启容器 - [get_cmd_log](./get_cmd_log.md) — 容器执行日志 - [prune](./prune_container.md) — 清理无用容器 ### 镜像管理 (GET /btdocker/image/) - [image_list](./image_list.md) — 本地镜像列表 - [prune](./prune_image.md) — 清理无用镜像 ### 存储卷 (GET /btdocker/volume/) - [get_volume_list](./get_volume_list.md) — 存储卷列表 - [add](./add_volume.md) — 创建存储卷 ### 网络 (GET /btdocker/network/) - [get_host_network](./get_host_network.md) — 网络列表 - [create_network](./create_network.md) — 创建网络 - [prune](./prune_network.md) — 清理无用网络 ### 仓库 (GET /btdocker/registry/) - [registry_list](./registry_list.md) — 镜像仓库列表 - [set_remark](./set_remark.md) — 设置仓库备注 ### 模板与项目 (GET /btdocker/compose/ /btdocker/project/) - [template_list](./template_list.md) — Compose 模板列表 - [get_project_list](./get_project_list.md) — Docker 项目列表 ### 应用商店 (POST /mod/docker/com/) - [get_apps](./get_apps.md) — 应用列表(289个) - [create_app](./create_app.md) — 安装应用(已实测安装 MySQL) - [get_dependence_apps](./get_dependence_apps.md) — 查询依赖应用 - [get_apphub_config](./get_apphub_config.md) — 应用商店配置 - [install_apphub](./install_apphub.md) — 初始化应用商店环境 --- source: https://docs.bt.cn/api/files/index.md.txt # 文件管理 > 宝塔面板文件管理 API — 文件上传、复制、读取与目录浏览 # 文件管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /files` | 已验证 30 个接口 管理服务器文件系统:浏览目录、读写文件、上传、复制及查询权限。 ## 接口列表 ### 文件浏览 - [GetDir](./GetDir.md) — 获取目录列表 - [GetDirNew](./GetDirNew.md) — 获取目录列表(新版) - \[SaveFileBody\]\(\./SaveFileBody\.md\) — 保存文件内容\n- \[GetFileBody\](./GetFileBody.md) — 读取文件内容 - [GetFileAccess](./GetFileAccess.md) — 查询文件权限 - [get_videos](./get_videos.md) — 获取视频文件列表 ### 文件操作 - [CopyFile](./CopyFile.md) — 复制文件或目录 - [CreateFile](./CreateFile.md) — 创建文件 - [DeleteDir](./DeleteDir.md) — 删除文件或目录 - [CreateLink](./CreateLink.md) — 创建软链接 - [UploadFile](./UploadFile.md) — 上传文件 - [CheckExistsFiles](./CheckExistsFiles.md) — 检查文件是否存在 - [upload_files_exists](./upload_files_exists.md) — 批量检查文件是否存在 - [mutil_unzip](./mutil_unzip.md) — 批量解压 ### 回收站 - [Get_Recycle_bin](./Get_Recycle_bin.md) — 回收站列表 - [Close_Recycle_bin](./Close_Recycle_bin.md) — 清空回收站 - [Recycle_bin](./Recycle_bin.md) — 开关回收站 - [Re_Recycle_bin](./Re_Recycle_bin.md) — 恢复回收站文件 ### 工具 - [get_path_size](./get_path_size.md) — 获取路径磁盘占用 - [test_path](./test_path.md) — 检测路径是否存在 - [get_composer_version](./get_composer_version.md) — 获取 Composer 版本 - [update_composer](./update_composer.md) — 更新 Composer - [install_rar](./install_rar.md) — 安装 RAR 支持 - [get_files_store](./get_files_store.md) — 收藏目录列表 - [remove_download_url](./remove_download_url.md) — 删除分享链接 - [get_bt_sync_status](./get_bt_sync_status.md) — 文件同步状态 ### 安全 - [file_webshell_check](./file_webshell_check.md) — 文件木马检测 - [dir_webshell_check](./dir_webshell_check.md) — 目录木马扫描 - [send_baota](./send_baota.md) — 提交误报反馈 ### 日志与任务 - [GetFileHistory](./GetFileHistory.md) — 文件操作日志 - [file_history_list](./file_history_list.md) — 文件编辑历史 - [RemoveTask](./RemoveTask.md) — 删除后台任务 - [ActionTask](./ActionTask.md) — 激活任务队列 ### 备份 - [list_backups](./list_backups.md) — 云存储备份列表 --- source: https://docs.bt.cn/api/ftp/index.md.txt # FTP 管理 > 宝塔面板 FTP 管理 API — FTP 用户创建、删除、密码修改与端口设置 # FTP 管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /ftp` | 已验证 12 个接口 管理面板 FTP 服务(Pure-FTPd):用户增删、状态切换、密码修改及端口配置。 ## 接口列表 ### 用户管理 - [AddUser](./AddUser.md) — 创建 FTP 用户 - [DeleteUser](./DeleteUser.md) — 删除 FTP 用户 - [SetStatus](./SetStatus.md) — 启用/禁用 FTP 用户 - [SetUserPassword](./SetUserPassword.md) — 修改 FTP 用户密码 - [BatchSetUserPassword](./BatchSetUserPassword.md) — 批量修改密码 - [setPort](./setPort.md) — 设置 FTP 端口 ### 日志 - [get_login_logs](./get_login_logs.md) — 登录日志 - [get_action_logs](./get_action_logs.md) — 操作日志 - [set_ftp_logs](./set_ftp_logs.md) — 日志开关 ### 用户管理(续) - [ModifyFtpUserAccess](./ModifyFtpUserAccess.md) — 修改用户带宽/空间限制 - [find_ftp](./find_ftp.md) — 按 ID 查找用户 ### 分类 - [view_ftp_types](./view_ftp_types.md) — FTP 分类列表 --- source: https://docs.bt.cn/api/java/index.md.txt # Java 项目 > 宝塔面板 Java 项目管理 API — JDK/Tomcat 安装、Spring Boot 项目创建启停、SSL 部署 # Java 项目 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `GET|POST /mod/java/project/<方法>/stype` | 已验证 43 个接口 ## 接口列表 ### 环境管理 - [get_system_info](./get_system_info.md) — JDK/Tomcat 安装状态 - [install_jdk_new](./install_jdk_new.md) — 安装 JDK(异步) - [install_tomcat_new](./install_tomcat_new.md) — 安装 Tomcat(异步) - [check_env_for_project](./check_env_for_project.md) — jar 环境检查 ### Spring Boot 项目 - [create_spring_boot_project](./create_spring_boot_project.md) — 创建 Spring Boot 项目 - [check_spring_boot_args](./check_spring_boot_args.md) — 校验创建参数 - [project_list](./project_list.md) — 项目列表 - [start_project](./start_project.md) — 启动项目 - [stop_project](./stop_project.md) — 停止项目 - [restart_project](./restart_project.md) — 重启项目 - [force_stop](./force_stop.md) — 强制停止 - [remove_project](./remove_project.md) — 删除项目 ### Tomcat 项目 - [create_tomcat_project](./create_tomcat_project.md) — 创建 Tomcat 项目 - [create_site_tomcat_project](./create_site_tomcat_project.md) — 网站内嵌 Tomcat - [get_tomcat_list](./get_tomcat_list.md) — Tomcat 版本列表 - [modify_tomcat](./modify_tomcat.md) — 修改 Tomcat 配置 - [start_tomcat](./start_tomcat.md) — 启停 Tomcat ### 项目配置 - [modify_project](./modify_project.md) — 修改项目 - [fix_project](./fix_project.md) — 修复项目 - [set_static_path](./set_static_path.md) — 静态文件路径 - [change_log_path](./change_log_path.md) — 日志路径 - [get_project_info](./get_project_info.md) — 项目详情 - [get_load_info](./get_load_info.md) — 系统负载 - [get_jmx_status](./get_jmx_status.md) — JMX 状态 - [get_keep_status](./get_keep_status.md) — 更新任务状态 ### 域名与外网 - [bind_extranet](./bind_extranet.md) — 外网映射 - [unbind_extranet](./unbind_extranet.md) — 取消外网映射 - [project_domain_list](./project_domain_list.md) — 域名列表 ### 反向代理 - [add_server_proxy](./add_server_proxy.md) — 添加代理 - [server_proxy_list](./server_proxy_list.md) — 代理列表 - [remove_server_proxy](./remove_server_proxy.md) — 删除代理 ### 日志 - [get_spring_log_list](./get_spring_log_list.md) — 日志文件列表 - [get_spring_log_data](./get_spring_log_data.md) — 日志内容 - [set_project_log_status](./set_project_log_status.md) — 日志开关 - [config_file_list](./config_file_list.md) — 配置文件列表 ### 版本管理 - [get_version_list](./get_version_list.md) — 版本列表 - [now_file_backup](./now_file_backup.md) — 创建备份 - [set_version_ps](./set_version_ps.md) — 版本备注 - [remove_version](./remove_version.md) — 删除版本 ### 批量操作 - [multi_set_project](./multi_set_project.md) — 批量启停 - [multi_remove_project](./multi_remove_project.md) — 批量删除 ### 其他 - [process_info_for_create](./process_info_for_create.md) — 导入运行中进程 - [keep_option](./keep_option.md) — 更新任务管理 --- source: https://docs.bt.cn/api/password/index.md.txt # 密码管理 > 宝塔面板密码管理 API — 面板密码与 SSH 密钥认证配置查询 # 密码管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /password` | 已验证 1 个接口 查询面板密码策略及 SSH 密钥认证配置信息。 ## 接口列表 - [GetConfig](./GetConfig.md) — 获取面板密码与 SSH 密钥认证配置 --- source: https://docs.bt.cn/api/push/index.md.txt # 消息推送 > 宝塔面板消息推送 API — 告警推送配置 # 消息推送 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /push` | 已验证 3 个接口 管理面板消息推送规则:邮件、钉钉、飞书、微信、短信等渠道的告警配置和日志查询。 ## 接口列表 - [get_modules_list](./get_modules_list.md) — 推送模块列表 - [get_push_list](./get_push_list.md) — 推送规则/日志 - [get_task_template](./get_task_template.md) — 推送任务模板 --- source: https://docs.bt.cn/api/site/index.md.txt # 网站管理 > 宝塔面板网站管理 API — 网站创建、SSL/HTTPS 配置、域名绑定与流量管理 # 网站管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /site` | 已验证 89 个接口 ## 接口列表 ### 网站生命周期 - [AddSite](./AddSite.md) — 创建网站 - [DeleteSite](./DeleteSite.md) — 删除网站 - [SiteStart](./SiteStart.md) — 启用网站 - [SiteStop](./SiteStop.md) — 停用网站 - [SetEdate](./SetEdate.md) — 设置到期时间 - [set_site_etime_multiple](./set_site_etime_multiple.md) — 批量设置到期 - [site_rname](./site_rname.md) — 修改备注名 - [ToBackup](./ToBackup.md) — 备份网站 - [export_sites_to_csv](./export_sites_to_csv.md) — 导出 CSV ### 信息查询 - [GetPHPVersion](./GetPHPVersion.md) — PHP 版本列表 - [get_site_types](./get_site_types.md) — 网站分类 - [GetSitePHPVersion](./GetSitePHPVersion.md) — 网站 PHP 版本 - [GetIndex](./GetIndex.md) — 默认文档 - [GetDirUserINI](./GetDirUserINI.md) — 目录保护配置 - [get_dir_auth](./get_dir_auth.md) — 目录密码保护 - [GetDirBinding](./GetDirBinding.md) — 子目录绑定 - [GetRewriteList](./GetRewriteList.md) — 伪静态规则 - [GetRewriteLists](./GetRewriteLists.md) — 所有伪静态模板 - [GetLimitNet](./GetLimitNet.md) — 流量限制 - [GetSiteRunPath](./GetSiteRunPath.md) — 运行目录 - [GetSiteDomains](./GetSiteDomains.md) — 域名列表 - [get_domains](./get_domains.md) — 域名列表(数组) - [GetDefaultSite](./GetDefaultSite.md) — 默认站点 - [GetDnsApi](./GetDnsApi.md) — DNS API 提供商 - [GetSiteLogs](./GetSiteLogs.md) — 网站日志 - [get_site_errlog](./get_site_errlog.md) — 错误日志 - [get_sites_log_path](./get_sites_log_path.md) — 日志路径 - [get_Scan](./get_Scan.md) — 漏洞扫描结果 - [list](./list.md) — 扫描缓存 - [get_cdn_ip_settings](./get_cdn_ip_settings.md) — CDN IP 配置 - [get_cron_scanin_info](./get_cron_scanin_info.md) — 扫描定时任务 - [get_generated_flow_info](./get_generated_flow_info.md) — 流量统计 - [get_free_total_status](./get_free_total_status.md) — 免费流量状态 - [get_https_mode](./get_https_mode.md) — HTTPS 模式 - [get_view_title_content](./get_view_title_content.md) — 推广横幅 - [get_security_headers](./get_security_headers.md) — 安全头配置 - [check_total_install_info](./check_total_install_info.md) — 监控报表状态 - [get_restart_task](./get_restart_task.md) — 守护任务状态 - [get_sites_ftp](./get_sites_ftp.md) — FTP 关联 - [GetRedirectList](./GetRedirectList.md) — 重定向列表 ### SSL / HTTPS - [SetSSL](./SetSSL.md) — 部署自定义证书 - [SetSSLConf](./SetSSLConf.md) — 开启 SSL - [GetSSL](./GetSSL.md) — 证书信息 - [get_ssl_protocol](./get_ssl_protocol.md) — TLS 协议版本 - [set_ssl_protocol](./set_ssl_protocol.md) — 设置 TLS 协议 - [get_https_settings](./get_https_settings.md) — HTTPS 配置 - [CloseSSLConf](./CloseSSLConf.md) — 关闭 SSL - [CloseToHttps](./CloseToHttps.md) — HTTP→HTTPS 跳转 - [HttpToHttps](./HttpToHttps.md) — HTTP→HTTPS 跳转(开启) - [set_global_http2https](./set_global_http2https.md) — 全局 HTTPS - [set_https_mode](./set_https_mode.md) — 设置 HTTPS 模式 - [set_site_ignore_https_mode](./set_site_ignore_https_mode.md) — 忽略全局 HTTPS ### 反向代理 - [CreateProxy](./CreateProxy.md) — 创建反向代理 - [GetProxyList](./GetProxyList.md) — 代理列表 - [ModifyProxy](./ModifyProxy.md) — 修改代理 ### 重定向 - [CreateRedirect](./CreateRedirect.md) — 创建重定向 - [ModifyRedirect](./ModifyRedirect.md) — 修改重定向 - [DeleteRedirect](./DeleteRedirect.md) — 删除重定向 - [Set301Status](./Set301Status.md) — 301 重定向 - [Get301Status](./Get301Status.md) — 301 状态 ### 配置操作 - [SetPHPVersion](./SetPHPVersion.md) — 切换 PHP 版本 - [SetLimitNet](./SetLimitNet.md) — 设置流量限制 - [SetHasPwd](./SetHasPwd.md) — 密码保护 - [GetHasPwd](./GetHasPwd.md) — 密码保护状态 - [CloseHasPwd](./CloseHasPwd.md) — 关闭密码保护 - [SetRewriteTel](./SetRewriteTel.md) — 保存伪静态模板 - [SetRewriteLists](./SetRewriteLists.md) — 批量伪静态 - [AddDomain](./AddDomain.md) — 添加域名 - [open_cdn_ip](./open_cdn_ip.md) — CDN IP 获取 - [get_404_config](./get_404_config.md) — 404 页面配置 - [set_404_config](./set_404_config.md) — 设置 404 - [logsOpen](./logsOpen.md) — 网站日志 - [create_flow_rule](./create_flow_rule.md) — 流量规则 - [create_default_conf](./create_default_conf.md) — 默认配置 - [set_create_default_conf](./set_create_default_conf.md) — 设置默认配置 - [set_sites_ftp](./set_sites_ftp.md) — 关联 FTP - [set_sites_log_path](./set_sites_log_path.md) — 设置日志路径 - [set_ignore_view_domain_title](./set_ignore_view_domain_title.md) — 忽略推广 - [set_free_total_status](./set_free_total_status.md) — 免费流量开关 - [set_cron_scanin_info](./set_cron_scanin_info.md) — 扫描定时任务 - [set_security_headers](./set_security_headers.md) — 安全头 - [CloseTomcat](./CloseTomcat.md) — 关闭 Tomcat - [apacheAddPort](./apacheAddPort.md) — Apache 端口 - [webserverprep](./webserverprep.md) — Web 环境预检查 ### 批量操作 - [multiple_basedir](./multiple_basedir.md) — 批量防跨站 - [multiple_limit_net](./multiple_limit_net.md) — 批量流量限制 - [set_dns_domains](./set_dns_domains.md) — 批量 DNS - [test_domains_api](./test_domains_api.md) — 测试 DNS API ### 任务 - [set_restart_task](./set_restart_task.md) — Web 守护任务 --- source: https://docs.bt.cn/api/ssh_security/index.md.txt # SSH 安全 > 宝塔面板 SSH 安全 API — SSH 配置查询与安全漏洞扫描 # SSH 安全 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /ssh_security` | 已验证 2 个接口 查询和扫描 SSH 安全配置,检测 `sshd_config` 中的安全漏洞。 ## 接口列表 - [get_config](./get_config.md) — 获取 SSH 安全配置 - [san_ssh_security](./san_ssh_security.md) — SSH 安全漏洞扫描 --- source: https://docs.bt.cn/api/ssl/index.md.txt # SSL 证书 > 宝塔面板 SSL 证书 API — 商用证书、证书管理、DNS API 密钥配置 # SSL 证书 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /ssl` `/ssl/` `/ssl/dnsapi/` `/ssl/data/` ## 商用证书 - [get_order_list](./get_order_list.md) — 证书订单列表 - [get_order_find](./get_order_find.md) — 订单详情(含证书) - [get_product_list](./get_product_list.md) — 可购买产品 - [GetSSLProduct](./GetSSLProduct.md) — SSL 产品价格 - [GetUserInfo](./GetUserInfo.md) — 账号信息 ## 证书管理 - [GetCertList](./GetCertList.md) — 已部署证书列表 - [get_cert_list](./get_cert_list.md) — 已保存证书列表 - [get_cert_info](./get_cert_info.md) — 证书详情 - [GetSiteDomain](./GetSiteDomain.md) — 可用域名列表 - [set_cert](./set_cert.md) — 部署商用证书(按订单) - [SetCertToSite](./SetCertToSite.md) — 部署证书(按 hash) - [set_ssl_ps](./set_ssl_ps.md) — 设置证书备注 - [get_ssl_ps](./get_ssl_ps.md) — 获取证书备注 ## DNS API 管理 用于配置各 DNS 提供商的 API 密钥,以支持通过 DNS 验证方式自动申请和续签 SSL 证书。 - [get_dns_data](./get_dns_data.md) — 获取 DNS API 配置列表 - [add_dns_data](./add_dns_data.md) — 添加 DNS API 密钥 - [upd_dns_data](./upd_dns_data.md) — 修改 DNS API 配置 - [del_dns_data](./del_dns_data.md) — 删除 DNS API 密钥 --- source: https://docs.bt.cn/api/system/index.md.txt # 系统管理 > 宝塔面板系统管理 API — 获取系统状态、管理服务启停 # 系统管理 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /system` | 已验证 19 个接口 获取服务器系统状态(CPU、内存、磁盘、网络、负载)和管理服务启停。 ## 接口列表 ### 系统状态 - [GetSystemTotal](./GetSystemTotal.md) — 系统统计信息 - [GetDiskInfo](./GetDiskInfo.md) — 磁盘分区信息 - [GetMemInfo](./GetMemInfo.md) — 内存详细信息 - [GetCpuInfo](./GetCpuInfo.md) — CPU 使用率 - [GetLoadAverage](./GetLoadAverage.md) — 系统负载 - [GetNetWork](./GetNetWork.md) — 网络流量信息 - [GetNetWorkApi](./GetNetWorkApi.md) — 网络流量(API) - [get_io_info](./get_io_info.md) — 磁盘 IO 速率 - [GetConcifInfo](./GetConcifInfo.md) — 完整环境配置 - [GetAllInfo](./GetAllInfo.md) — 系统全部信息概览 - [set_rname](./set_rname.md) — 磁盘备注 ### 服务管理 - [ServiceAdmin](./ServiceAdmin.md) — 管理服务启停 - [ReWeb](./ReWeb.md) — 重启面板服务 - [ReMemory](./ReMemory.md) — 释放内存 - [reload_task](./reload_task.md) — 重启后台任务 - [ClearSystem](./ClearSystem.md) — 清理系统垃圾 ### 升级与环境 - [get_upgrade_log](./get_upgrade_log.md) — 面板升级日志 - [upgrade_env](./upgrade_env.md) — 环境升级 - [upgrade_env_log](./upgrade_env_log.md) — 环境升级日志 --- source: https://docs.bt.cn/api/task/index.md.txt # 后台任务 > 宝塔面板后台任务 API — 查询面板异步任务队列执行状态 # 后台任务 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /task` | 已验证 1 个接口 查询面板后台异步任务队列,监控任务执行进度与状态。 ## 接口列表 - [get_task_lists](./get_task_lists.md) — 任务队列列表 --- source: https://docs.bt.cn/api/warning/index.md.txt # 安全扫描 > 宝塔面板安全扫描 API — 获取安全扫描结果与告警记录 # 安全扫描 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /warning` | 已验证 1 个接口 获取面板安全检测模块的扫描结果与告警记录。 ## 接口列表 - [get_list](./get_list.md) — 获取安全扫描结果列表 --- source: https://docs.bt.cn/api/xterm/index.md.txt # SSH 终端 > 宝塔面板 SSH 终端 API — Web SSH 终端配置查询 # SSH 终端 API API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 路由 `POST /xterm` | 已验证 1 个接口 查询 Web SSH 终端配置,包括命令补全工具状态、终端主题和 AI Shell 功能。 ## 接口列表 - [completion_tool_status](./completion_tool_status.md) — 获取 Web SSH 终端配置 --- source: https://docs.bt.cn/btclaw/index.md.txt # OpenClaw 龙虾教程合集 > 宝塔面板(BT Panel)OpenClaw(昵称「龙虾」)AI 助手相关教程合集,包含 Docker 应用部署、模型配置、QQ / 飞书 / 企业微信机器人集成、记忆模块与定时任务等系列实战教程。 # OpenClaw 教程合集 宝塔面板支持 Docker 一键部署,并可灵活接入 QQ、飞书、企业微信等即时通讯工具。以下是全部相关教程汇总,帮助你快速上手从部署到落地的全流程。 ## 快速养虾 > 新服务器从部署到接入,把 AI 服务器变成一件简单的事 [前往官网了解](https://www.bt.cn/new/openclaw.html) ## 前置准备 使用 OpenClaw(Docker应用) 需先安装 Docker 环境,安装步骤如下: 1. 登录宝塔面板,点击左侧 **软件商店** 2. 搜索 **OpenClaw** 3. 安装完成后,在 软件商店 内搜索 **OpenClaw**(若未找到,点击右上角 **「更新软件列表/支付状态」** 刷新) ![OpenClaw Docker 应用安装](https://docs.bt.cn/img/btclaw/openclaw-docker-install.png) ## 核心教程汇总 | 教程名称 | 核心简介 | 操作链接 | | :--- | :--- | :--- | | OpenClaw Docker 应用使用教程 | 涵盖应用安装、启动停止、日志查看、端口配置、常见问题排查 | [查看完整教程](https://docs.bt.cn/practical-tutorials/openclaw-docker-usage) | | OpenClaw 配置自定义模型供应商 | 替换默认模型,接入 Kimi、OpenAI 等自定义 AI 模型供应商(支持网页端/配置文件两种方式) | [查看完整教程](https://mp.weixin.qq.com/s/KG-tLyVbJpVWjpELMnXS9w) | | OpenClaw 配置 QQ 和飞书机器人 | 分步配置 QQ/飞书机器人,实现群聊问答、自动化操作 | [查看完整教程](https://docs.bt.cn/practical-tutorials/openclaw-qq-feishu-bot) | | OpenClaw 配置企业微信机器人 | 接入企业微信/钉钉渠道,满足团队内部 AI 协作需求(需插件 v1.2.0+) | [查看完整教程](https://mp.weixin.qq.com/s/5rxeY1SgyCCwqbXTHo5Vtg) | | OpenClaw 常见错误排查 | 安装、初始化、运行及使用过程中的常见报错与解决方案,含各大模型 API 地址汇总 | [查看完整教程](https://docs.bt.cn/faq/openclaw-troubleshooting) | | OpenClaw 宿主机版插件上线 | 宿主机安装、面板内管理,集成 AI 对话、角色管理、模型管理、技能市场、消息平台接入等核心能力 | [查看完整教程](https://mp.weixin.qq.com/s/XIVkFQudSfcFKwPZFgGbVw) | ## 补充说明 1. 教程按「部署 → 配置 → 集成」逻辑排序,建议新手按顺序学习; 2. 所有教程均基于最新版 OpenClaw 插件编写,若使用旧版本请先更新; 3. 遇到问题可通过 [OpenClaw 官方交流群 4] 1095964983 反馈。 ![扫码加入交流群](https://docs.bt.cn/img/btclaw/qq-group.jpg) --- source: https://docs.bt.cn/api/acme/apply_cert_api.md.txt # apply_cert_api > 创建 ACME 证书申请订单(支持 HTTP/TLS/DNS 三种验证方式) # apply_cert_api 创建 Let's Encrypt(或其他 ACME CA)证书申请订单。支持三种验证方式。 - **路由**:`POST /acme` - **action**:`apply_cert_api` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `apply_cert_api` | | id | 是 | Integer | 关联网站 ID | | domains | 是 | String | JSON 数组,要申请的域名列表 `["example.com","www.example.com"]` | | auth_type | 是 | String | 验证方式:`http`(文件)、`tls`(TLS)、`dns`(DNS) | | auth_to | 是 | String | 验证路径。HTTP/TLS 传网站目录;**DNS 验证传 `dns`** | | auto_wildcard | 否 | String | `"1"` 自动申请泛域名 `*.example.com` | | ca | 否 | String | CA 标识,默认 Let's Encrypt | :::tip DNS 验证 `auth_type=dns`, `auth_to=dns` 时仅创建订单。需再用 [apply_dns_auth](./apply_dns_auth.md) 完成 DNS TXT 记录创建和验证。 ::: ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | String | `pending` 订单待验证 | | index | String | 订单索引 ID,后续操作需要 | | domains | Array | 申请的域名列表 | | authorizations | Array | Let's Encrypt 授权 URL 列表 | | expires | Integer | 订单过期时间戳 | | create_time | Integer | 创建时间戳 | ## 示例 ### 请求(DNS 验证) ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=apply_cert_api&id=1&domains=["dnstest.cc"]&auth_type=dns&auth_to=dns ``` ### 响应 ```json { "status": "pending", "index": "a7a0472c4a5061ec83450119b874a5d3", "domains": ["dnstest.cc"], "auth_type": "dns", "expires": 1780111135, "create_time": 1779506335, "authorizations": ["https://acme-v02.api.letsencrypt.org/acme/authz/..."] } ``` ## 相关接口 - [apply_dns_auth](./apply_dns_auth.md) — 完成 DNS 验证并签发 - [SetCertToSite](./SetCertToSite.md) — 部署证书到网站 --- source: https://docs.bt.cn/api/crontab/GetCrontab.md.txt # GetCrontab > 获取所有计划任务列表 # GetCrontab 获取面板中所有计划任务的完整列表,包含任务配置、状态、执行周期等信息。 - **路由**:`POST /crontab` - **action**:`GetCrontab` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetCrontab` | ## 输出参数 返回数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | id | Integer | 任务 ID | | name | String | 任务名称 | | type | String | 周期类型:`day`、`minute-n`、`hour`、`week`、`month` | | where1 | String | 周期值(天数/分钟数) | | where_hour | Integer | 执行小时 | | where_minute | Integer | 执行分钟 | | status | Integer | `1` = 启用,`0` = 暂停 | | sType | String | 任务类型:`toShell`、`toUrl`、`site`、`database`、`logs` | | sBody | String | 执行内容 | | echo | String | 唯一标识符 | | save | Integer | 备份保留份数 | ## 示例 ``` POST /crontab HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetCrontab ``` ```json [{ "id": 1, "name": "续签Let's Encrypt证书", "type": "day", "where_hour": 10, "where_minute": 15, "status": 1, "sType": "toShell" }] ``` --- source: https://docs.bt.cn/api/data/getData.md.txt # getData > 查询面板 SQLite 数据表(sites、databases、ftps、domain 等) # getData 查询面板 SQLite 数据库中的任意表,支持搜索、分页、排序。这是获取各类资源 ID 的核心接口。 - **路由**:`POST /data` - **action**:`getData` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `getData` | | table | 是 | String | 表名:`sites`、`databases`、`ftps`、`domain`、`crontab`、`backup`、`config` | | type | 否 | String | 筛选类型,`-1` 表示全部 | | search | 否 | String | 搜索关键词 | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | | list | 否 | String | `true` 返回数组格式 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array | 数据记录列表 | | page | String | 分页 HTML | | where | String | 查询条件 | ## 常用示例 ### 查网站列表 ``` action=getData&table=sites&type=-1 ``` ```json {"data": [{"id": 1, "name": "testapi.bt.local", "path": "/www/wwwroot/testapi.bt.local", "status": "1"}]} ``` ### 查数据库列表 ``` action=getData&table=databases&type=-1 ``` ### 查FTP用户列表 ``` action=getData&table=ftps&type=-1 ``` ### 查域名列表 ``` action=getData&table=domain&search=1&list=true ``` --- source: https://docs.bt.cn/api/database/AddDatabase.md.txt # AddDatabase > 创建新的 MySQL 数据库及用户 # AddDatabase 在指定 MySQL 服务器上创建新数据库,同时创建对应的数据库用户并授予全部权限。 - **路由**:`POST /database` - **action**:`AddDatabase` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddDatabase` | | sid | 是 | Integer | 数据库服务器 ID,`0` = 本地 MySQL | | name | 是 | String | 数据库名称,仅允许 `^[\w\.-]+$`,不超过 64 字节 | | db_user | 是 | String | 数据库用户名(与数据库名不同时需指定) | | password | 是 | String | 数据库密码 | | address | 是 | String | 访问来源:`%` 任意 IP,`127.0.0.1` 仅本地,具体 IP | | codeing | 是 | String | 字符集:`utf8` / `utf8mb4` / `gbk` / `big5` | | ps | 否 | String | 备注信息 | | pid | 否 | Integer | 关联网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 创建成功 | | msg | String | `添加成功` | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=AddDatabase&sid=0&name=bt_doc_test&db_user=bt_doc_test&password=Test@2024&address=%25&codeing=utf8mb4&ps=测试 ``` > `address=%25` 是 `%` 的 URL 编码(表示允许任意 IP 访问)。 ### 响应 ```json {"status": true, "msg": "添加成功"} ``` --- source: https://docs.bt.cn/api/deployment/GetList.md.txt # GetList > 获取一键部署的软件包列表 # GetList 获取面板"一键部署"中所有可用的软件包列表(WordPress、ThinkPHP、可道云等)。 - **路由**:`POST /deployment` - **action**:`GetList` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | list | Array\ | 软件包列表,每项含 `id`、`name`、`title`、`version`、`author`、`price` 等 | ## 示例 ```json {"list": [{"id": 11, "name": "kodbox", "title": "可道云KODBOX", "version": "v1.62", "author": "kodcloud", "price": 0}]} ``` --- source: https://docs.bt.cn/api/docker/install_docker_program.md.txt # install_docker_program > 安装 Docker 和 Docker Compose(异步任务) # install_docker_program 提交 Docker 和 Docker Compose 的安装任务到后台队列,异步执行。 - **路由**:`GET /btdocker/setup/install_docker_program` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | url | 否 | String | Docker CE 镜像源 URL(不传则自动检测) | | type | 否 | Integer | 安装类型,默认 `0` | ## 示例 ```json {"status": true, "msg": "安装任务已添加到队列中!"} ``` --- source: https://docs.bt.cn/api/files/GetDir.md.txt # GetDir > 获取指定目录的文件列表(含分页、排序、搜索) # GetDir 获取指定路径下的目录和文件列表,支持分页、排序、搜索。返回每项的详细信息(大小、权限、修改时间等)。 - **路由**:`POST /files` - **action**:`GetDir` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDir` | | path | 是 | String | 目录路径,如 `/www/wwwroot/testapi.bt.local` | | p | 否 | Integer | 页码,默认 `1` | | search | 否 | String | 搜索关键词 | | sort | 否 | String | 排序字段:`name`/`size`/`mtime`/`permission`/`owner` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | PATH | String | 当前路径 | | DIR | Array | 子目录列表,每项格式:`name;size;mtime;permission;owner;...` | | FILES | Array | 文件列表,格式同上 | | PAGE | String | 分页 HTML | | STORE | Array | 收藏的路径列表 | | FILE_RECYCLE | Boolean | 是否开启回收站 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetDir&path=/www/wwwroot/testapi.bt.local&p=1 ``` ### 响应 ```json { "PATH": "/www/wwwroot/testapi.bt.local", "DIR": [], "FILES": ["404.html;138;1779435866;644;www;;0;0;0;0;;0", "index.html;917;...;644;www;..."], "PAGE": "
分页
", "STORE": [], "FILE_RECYCLE": false } ``` --- source: https://docs.bt.cn/api/ftp/AddUser.md.txt # AddUser > 添加 FTP 用户 # AddUser 创建新的 FTP 用户。 - **路由**:`POST /ftp` - **action**:`AddUser` - **前置条件**:面板已安装 Pure-FTPd ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddUser` | | ftp_username | 是 | String | FTP 用户名(不含空格) | | ftp_password | 是 | String | FTP 密码(不少于 6 位) | | path | 是 | String | 用户主目录,如 `/www/wwwroot/testapi.bt.local` | | ps | 否 | String | 备注信息 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 添加成功 | | msg | String | `添加成功` | ## 示例 ```json {"status": true, "msg": "添加成功"} ``` ## 相关接口 - [DeleteUser](./DeleteUser.md) - [SetUserPassword](./SetUserPassword.md) - [SetStatus](./SetStatus.md) --- source: https://docs.bt.cn/api/index.md.txt # API 概览 > 宝塔面板 API 概览 # 宝塔面板 API 概览 API 接口可能随面板版本变更,**不保证稳定性**,仅供参考。 ::: > 基于面板 v11.7.0 源码实测验证,测试环境 Debian 13。 ## 概述 | 项目 | 值 | |------|-----| | 请求方式 | POST | | Content-Type | application/x-www-form-urlencoded | | 认证方式 | 双重 MD5 签名 | ## 认证 面板设置 → API 接口 → 获取**接口密钥** `api_sk`。 ```python import hashlib, time request_time = str(int(time.time())) request_token = hashlib.md5( (request_time + hashlib.md5(api_sk.encode()).hexdigest()).encode() ).hexdigest() ``` 每次请求必须携带 `request_time` 和 `request_token`。 ## 模块 | 模块 | 路由 | 文档 | |------|------|------| | 系统管理 | `/system` | [system/](./system/) | | 网站管理 | `/site` | [site/](./site/) | | 数据库管理 | `/database` | [database/](./database/) | | 文件管理 | `/files` | [files/](./files/) | | SSL 证书 | `/ssl` | [ssl/](./ssl/) | | ACME 证书 | `/acme` | [acme/](./acme/) | | Java 项目 | `/mod/java/project/` | [java/](./java/) | | 计划任务 | `/crontab` | [crontab/](./crontab/) | | FTP 管理 | `/ftp` | [ftp/](./ftp/) | | SSH 安全 | `/ssh_security` | [ssh_security/](./ssh_security/) | | 消息推送 | `/push` | [push/](./push/) | | 后台任务 | `/task` | [task/](./task/) | | SSH 终端 | `/xterm` | [xterm/](./xterm/) | | 数据查询 | `/data` | [data/](./data/) | | 安全扫描 | `/warning` | [warning/](./warning/) | | 密码管理 | `/password` | [password/](./password/) | | 项目部署 | `/deployment` | [deployment/](./deployment/) | --- source: https://docs.bt.cn/api/java/get_system_info.md.txt # get_system_info > 获取 Java 运行环境状态 — JDK 版本、Tomcat 版本 # get_system_info 获取服务器上已安装和可安装的 JDK、Tomcat 版本信息。 - **路由**:`GET /mod/java/project/get_system_info/stype` - **方法**:GET ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | data.jdk_info | Array\ | JDK 列表,每项含 `name`、`path`、`is_current` | | data.tomcat_info | Array\ | Tomcat 版本列表 | ## 示例 ```json { "status": true, "data": { "jdk_info": [ {"name": "jdk1.8.0_371", "path": "/www/server/java/jdk1.8.0_371/bin/java", "is_current": true}, {"name": "jdk-11.0.19", "path": "", "is_current": false} ], "tomcat_info": [{"name": "tomcat9", "status": true, "jdk_path": "..."}] } } ``` --- source: https://docs.bt.cn/api/password/GetConfig.md.txt # GetConfig > 获取面板密码/SSH密钥认证配置 # GetConfig 获取面板密码认证和 SSH 密钥认证的配置状态。 - **路由**:`POST /password` - **action**:`GetConfig` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetConfig` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | password | String | 密码登录:`yes`/`no` | | pubkey | String | 公钥认证:`yes`/`no` | | rsa_auth | String | RSA 认证:`yes`/`no` | ## 示例 ```json {"password": "no", "pubkey": "no", "rsa_auth": "no"} ``` ## 相关方法 - `SetPassword` — 开启密码认证 - `StopPassword` — 关闭密码认证 - `StopKey` — 关闭密钥认证 - `get_mysql_root` — 获取 MySQL root 密码 --- source: https://docs.bt.cn/api/proxy/get_list.md.txt # get_list > 获取所有反向代理站点列表,支持分页和搜索 # get_list 获取所有 `project_type` 为 `proxy` 的站点列表,支持分页和搜索。 - **路由**:`POST /mod/proxy/com/get_list/stype` - **action**:`get_list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | p | 否 | int | 页码,默认 1 | | limit | 否 | int | 每页数量,默认 10 | | search | 否 | string | 搜索关键词,按站点名称模糊匹配 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | list | 站点列表,每项包含 id, name, path, status, ps, addtime, edate, rname | | data[].healthy | int | 健康状态:1 正常,0 异常 | | data[].ssl | object | SSL 证书信息,未开启时为 -1 | | data[].proxy_pass | string | 代理目标地址 | | data[].waf | object | WAF 状态 | | page | object | 分页信息 | ## 示例 ### 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/get_list/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "p=1&limit=10&request_time=...&request_token=..." ``` ### 响应 ```json { "code": 0, "status": true, "msg": "OK", "data": { "where": "project_type=?", "page": "
分页HTML
", "data": [ { "id": 24, "name": "test-proxy-api.local", "path": "/www/wwwroot/test-proxy-api.local", "status": "1", "ps": "备注", "addtime": "2026-05-23 10:08:57", "edate": "0000-00-00", "rname": "" } ] } } ``` --- source: https://docs.bt.cn/api/push/get_modules_list.md.txt # get_modules_list > 获取消息推送模块列表(邮件、钉钉、飞书、微信等) # get_modules_list 获取可用的消息推送模块列表。 - **路由**:`POST /push` - **action**:`get_modules_list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_modules_list` | ## 输出参数 返回各推送模块配置,key 为模块名。 | 模块名 | 说明 | |--------|------| | panel_push | 面板基础提醒 | | mail | 邮箱推送 | | dingding | 钉钉 | | feishu | 飞书 | | weixin | 微信 | | sms | 短信 | ## 示例 ```json { "panel_push": {"name": "panel_push", "title": "面板基础提醒", "version": "1.2"}, "mail": {"name": "mail", "title": "邮箱", "setup": true} } ``` --- source: https://docs.bt.cn/api/site/AddSite.md.txt # AddSite > 创建新网站(PHP / 纯静态) # AddSite 创建新网站,支持 PHP 和纯静态两种类型。自动生成 Nginx/Apache 配置、创建网站目录、可选同时创建 FTP 和数据库。 - **路由**:`POST /site` - **action**:`AddSite` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddSite` | | webname | 是 | String | JSON 字符串,格式 `{"domain":"主域名","domainlist":[],"count":0}` | | path | 是 | String | 网站根目录路径,如 `/www/wwwroot/域名` | | type | 是 | String | 网站类型:`PHP` 或留空(纯静态) | | version | 是 | String | PHP 版本号,如 `85`;纯静态传 `00` | | port | 是 | String | 监听端口,默认 `80` | | type_id | 否 | Integer | 分类 ID,默认 `0` | | ps | 否 | String | 备注 | | ftp | 否 | String | 是否同时创建 FTP:`"true"` / `"false"` | | sql | 否 | String | 是否同时创建数据库:`"true"` / `"false"` | | codeing | 否 | String | 数据库字符集,默认 `utf8` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | siteStatus | Boolean | 网站创建结果 | | siteId | Integer | 新网站的 ID | | ftpStatus | Boolean | FTP 用户创建结果(`false` 表示未创建) | | databaseStatus | Boolean | 数据库创建结果(`false` 表示未创建) | | gitStatus | Boolean | Git 部署状态 | ## 示例 ### 创建 PHP 8.5 站点 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=AddSite&webname={"domain":"demo.bt.local","domainlist":[],"count":0}&path=/www/wwwroot/demo.bt.local&type=PHP&version=85&port=80&ps=测试站点 ``` ```json {"siteStatus": true, "siteId": 2, "ftpStatus": false, "databaseStatus": false, "gitStatus": false} ``` ### 创建纯静态站点 ``` action=AddSite&webname={"domain":"static.bt.local","domainlist":[],"count":0}&path=/www/wwwroot/static.bt.local&type=&version=00&port=80 ``` > 纯静态不传 `type=PHP`,`version=00`。 ```json {"siteStatus": true, "siteId": 3, "ftpStatus": false, "databaseStatus": false, "gitStatus": false} ``` ## 相关接口 - [DeleteSite](./DeleteSite.md) — 删除网站 - [GetPHPVersion](./GetPHPVersion.md) — 获取可用 PHP 版本 --- source: https://docs.bt.cn/api/site/DeleteSite.md.txt # DeleteSite > 删除网站及关联配置 # DeleteSite 删除指定网站,包括其 Nginx/Apache 配置、SSL 证书、日志等关联文件。 - **路由**:`POST /site` - **action**:`DeleteSite` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DeleteSite` | | id | 是 | Integer | 网站 ID | | webname | 是 | String | 网站域名 | > 网站 ID 通过 `/data` 接口查询 `sites` 表获得。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | | msg | String | `站点删除成功!` | ## 示例 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=DeleteSite&id=2&webname=demo.bt.local ``` ```json {"status": true, "msg": "站点删除成功!"} ``` ## 相关接口 - [AddSite](./AddSite.md) — 创建网站 --- source: https://docs.bt.cn/api/site/GetPHPVersion.md.txt # GetPHPVersion > 获取面板已安装的 PHP 版本列表 # GetPHPVersion 获取面板上已安装的所有 PHP 版本及运行状态。 - **路由**:`POST /site` - **action**:`GetPHPVersion` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetPHPVersion` | ## 输出参数 返回数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | version | String | 版本号,`00` 表示纯静态 | | name | String | 显示名称,如 `PHP-85`、`纯静态` | | status | Boolean | 是否正在运行 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetPHPVersion ``` ### 响应 ```json [ {"version": "00", "name": "纯静态", "status": true}, {"version": "85", "name": "PHP-85", "status": true} ] ``` --- source: https://docs.bt.cn/api/ssh_security/san_ssh_security.md.txt # san_ssh_security > SSH 安全扫描 — 检测 sshd_config 中的安全漏洞 # san_ssh_security 扫描 `/etc/ssh/sshd_config` 中的安全漏洞,返回风险列表及加固建议。 - **路由**:`POST /ssh_security` - **action**:`san_ssh_security` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `san_ssh_security` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | num | Integer | 检测项总数 | | result | Array | 风险列表 | | result[].id | Integer | 风险编号 | | result[].name | String | 风险名称,如 `SSHD 强制使用V2安全协议` | | result[].level | String | 危害等级:`1`=低 / `2`=中 / `3`=高 | | result[].Suggestions | String | 加固建议和具体操作步骤 | | result[].repaired | String | 是否可修复:`1`=可 / `0`=不可 | ## 示例 ```json { "num": 80, "result": [{ "id": 2, "name": "SSHD 强制使用V2安全协议", "level": "3", "harm": "高", "repaired": "1", "Suggestions": "加固建议:在 /etc/ssh/sshd_config 中设置 Protocol 2" }] } ``` --- source: https://docs.bt.cn/api/ssl/get_dns_data.md.txt # get_dns_data > 获取已配置的 DNS API 密钥列表及支持的 DNS 提供商 # get_dns_data 获取所有已配置的 DNS API 密钥,以及当前面板支持的 DNS 提供商列表。 - **路由**:`POST /ssl/dnsapi/get_dns_data` - **action**:URL 路径 `/ssl/dnsapi/get_dns_data` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | 无 | - | - | 无需额外参数 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array\ | 已配置的 DNS 密钥列表,每项含 `id`、`dns_name`、`ps`、`secret_id` 等 | | add_data | Array\ | 支持的 DNS 提供商,每项含 `name`(中文名)、`id`(类型标识)、`params`(所需参数) | ### 支持的 DNS 提供商 | id | 名称 | 所需参数 | |----|------|----------| | `DNSPodDns` | DNSPod | `ID`, `Token` | | `AliyunDns` | 阿里云DNS | `AccessKey`, `SecretKey` | | `TencentCloudDns` | 腾讯云DNS | `secret_id`, `secret_key` | | `HuaweiCloudDns` | 华为云DNS | `AccessKey`, `SecretKey`, `project_id` | | `CloudFlareDns` | CloudFlare | `E-Mail`, `API Key` | | `WestDns` | 西部数码 | `user_name`, `api_password` | | `BtDns` | 宝塔域名 | `AccessKey`, `SecretKey`, `AccountID` | | `AwsDns` | AWS | `AccessKey`, `SecretKey`, `region` | | `VolcengineCloudDns` | 火山引擎 | `AccessKey`, `SecretKey` | ## 示例 ### 请求 ``` POST /ssl/dnsapi/get_dns_data HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1779500000&request_token=xxx ``` ### 响应 ```json { "data": [{ "secret_id": "AKIDxxxx", "secret_key": "xxxx", "id": "619980b49ba5", "ps": "API测试", "dns_name": "TencentCloudDns", "dns_type": "tencentcloud" }], "add_data": [ {"name": "DNSPod", "id": "DNSPodDns", "params": ["ID", "Token"]}, {"name": "阿里云DNS", "id": "AliyunDns", "params": ["AccessKey", "SecretKey"]}, {"name": "腾讯云DNS", "id": "TencentCloudDns", "params": ["secret_id", "secret_key"]} ] } ``` --- source: https://docs.bt.cn/api/system/GetSystemTotal.md.txt # GetSystemTotal > 获取系统统计信息(内存、CPU、运行时间、系统版本) # GetSystemTotal 获取系统统计信息,包含内存、CPU、运行时间、系统版本等综合数据。 - **路由**:`POST /system` - **action**:`GetSystemTotal` ## 输入参数 除公共参数外无需额外参数。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSystemTotal` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | memTotal | Integer | 总内存(MB) | | memFree | Integer | 空闲内存(MB) | | memBuffers | Integer | 缓冲区内存(MB) | | memCached | Integer | 缓存内存(MB) | | memAvailable | Integer | 可用内存(MB) | | memRealUsed | Integer | 实际已用内存(MB),不含 buffer/cache | | cpuNum | Integer | CPU 逻辑核心数 | | cpuRealUsed | Float | CPU 实时使用率(%) | | time | String | 系统已运行时间,如 `10天`、`5小时`、`30分钟` | | system | String | 操作系统版本,如 `Debian GNU/Linux 13 x86_64(Py3.7.16)` | | isuser | Integer | 是否存在 admin 用户,`1` 为存在 | | isport | Boolean | 面板端口是否为默认 8888 | | version | String | 面板版本号,如 `11.7.0` | ## 示例 ### 请求 ``` POST /system HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetSystemTotal ``` ### 响应 ```json { "memTotal": 3901, "memFree": 2918, "memBuffers": 22, "memCached": 338, "memAvailable": 3056, "memRealUsed": 623, "cpuNum": 2, "cpuRealUsed": 12.5, "time": "0分钟", "system": "Debian GNU/Linux 13 x86_64(Py3.7.16)", "isuser": 1, "isport": false, "version": "11.7.0" } ``` --- source: https://docs.bt.cn/api/task/get_task_lists.md.txt # get_task_lists > 获取后台任务队列列表 # get_task_lists / get_task_find 获取面板后台任务队列信息。 - **路由**:`POST /task` - **action**:`get_task_lists` 或 `get_task_find` ## get_task_lists 获取当前任务队列列表。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_task_lists` | 返回空数组表示队列为空。 ## get_task_find 查询特定任务。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_task_find` | ## 输出 返回任务队列数组。空数组 `[]` 表示当前离线无任务。 ```json [] ``` --- source: https://docs.bt.cn/api/warning/get_list.md.txt # get_list > 获取安全扫描结果列表 # get_list / get_result / get_scan_bar 获取服务器的安全漏洞扫描结果。 - **路由**:`POST /warning` ## get_list — 扫描结果 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_list` | 返回 `security` 数组,每项包含漏洞标题、检测模块名、描述。 ## get_scan_bar — 扫描进度 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": "检测完成", "percentage": 100, "count": 19, "score": 62} ``` ## get_tmp_result — 最近结果 同 get_list 格式,额外包含 `check_time` 字段。 ## set_scan_categories — 设置扫描类别 保持当前扫描配置。 --- source: https://docs.bt.cn/api/xterm/completion_tool_status.md.txt # completion_tool_status > 获取 Web SSH 终端配置(命令补全、终端主题、AI Shell) # completion_tool_status 获取 Web SSH 终端的当前配置。 - **路由**:`POST /xterm` - **action**:`completion_tool_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `completion_tool_status` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | use_completion | Boolean | 是否开启命令补全 | | terminal_theme | Boolean | 是否使用终端主题 | | ai_shell | Boolean | 是否开启 AI Shell | | ai_shell_analyze | Boolean | 是否开启 AI 分析 | ## 示例 ```json {"terminal_theme": false, "use_completion": false, "ai_shell": false, "ai_shell_analyze": false} ``` --- # set_completion_tool_status 开启或关闭命令补全功能。开启时会从 download.bt.cn 下载补全插件包。 - **路由**:`POST /xterm` - **action**:`set_completion_tool_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_completion_tool_status` | | status | 是 | Integer | `1` = 开启,`0` = 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作成功 | | msg | String | `开启成功` / `关闭成功` | ## 示例 ``` action=set_completion_tool_status&status=0 ``` ```json {"status": true, "msg": "关闭成功"} ``` --- # set_terminal_theme 开启或关闭终端主题。 - **路由**:`POST /xterm` - **action**:`set_terminal_theme` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_terminal_theme` | | status | 是 | Integer | `1` = 开启,`0` = 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | String | `设置成功` | --- # set_ai_shell_status 开启或关闭 AI Shell 功能。 - **路由**:`POST /xterm` - **action**:`set_ai_shell_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ai_shell_status` | | status | 是 | Integer | `1` = 开启,`0` = 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作成功 | | msg | String | `开启成功` / `关闭成功` | --- # set_ai_shell_analyze 开启或关闭 AI 终端分析功能。 - **路由**:`POST /xterm` - **action**:`set_ai_shell_analyze` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ai_shell_analyze` | | status | 是 | Integer | `1` = 开启,`0` = 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作成功 | | msg | String | `开启成功` / `关闭成功` | --- # get_host_list / get_command_list 获取已保存的 SSH 主机列表和命令历史。 - **路由**:`POST /xterm` - **action**:`get_host_list` 或 `get_command_list` 无额外参数,返回空数组表示无已保存数据。 ```json [] ``` --- source: https://docs.bt.cn/btclaw/day1.md.txt # Day 1:在宝塔面板安装 OpenClaw 龙虾的初体验 > 宝塔面板(BT Panel)OpenClaw(龙虾)AI 助手系列 Day 1:15 分钟在宝塔面板中通过 Docker 完成 OpenClaw 安装,记录从零部署、初次启动到首次对话调通的全过程与踩坑笔记。 # Day 1:在宝塔安装🦞,是一种什么体验? **发布日期:** 2026-03-09 **养成状态:** 🦞 龙虾受精卵期 **今日花费:** ¥0 **预计耗时:** 10 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:凌晨 1 点的决定 凌晨 1 点,我做了个决定:养只 AI 龙虾。 朋友说:"这玩意儿很复杂的,你要配飞书、装技能、设 cron..." 我说:"我就想知道,10 分钟能不能让它上线。" 于是我在宝塔服务器上敲下指令: ```bash # 一行命令安装 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/btClaw.sh;else wget -O btClaw.sh https://download.bt.cn/install/btClaw.sh;fi;bash btClaw.sh op260309 # 安装插件 点击【软件商店】,搜索openclaw插件,安装openclaw插件 ``` 10 分钟后—— ``` ✅ Gateway: Running ``` 龙虾上线了。 ![alt text](https://docs.bt.cn/img/btclaw/day_1.png) 我又花了 3 分钟配置飞书,发了条消息: ``` 我:你好 龙虾:嘿,有什么需要帮忙的吗? ``` 朋友沉默了。 --- ## 🎯 今天只做一件事 **让龙虾上线,能回复"你好"。** 就这么简单。别的都是后话。 --- ## 🔧 四个步骤(15 分钟) ### 步骤 1:安装(2 分钟) ```bash # 一行命令安装 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/btClaw.sh;else wget -O btClaw.sh https://download.bt.cn/install/btClaw.sh;fi;bash btClaw.sh op260309 # 安装插件 点击【软件商店】,搜索openclaw插件,安装openclaw插件 ``` 看到 `✅ Gateway: Running` 就是成功了。 **就这么一行。** 不是三行,不是一堆,就一行。 --- ### 步骤 2:安装配置(5 分钟) 1、打开 OpenClaw(Docker应用) 的配置按钮 2、配置大模型api地址、模型秘钥和默认模型(如不会填可无视本条)。 3、在当前的 安装配置 页面,点击 安装应用 ![alt text](https://docs.bt.cn/img/btclaw/day_2_2.png) --- ### 步骤 3:配置机器人(5 分钟) 可选飞书机器人、QQ机器人、钉钉机器人、企业微信机器人和Telegram机器人,这里使用飞书机器人为例。 1. 打开 [飞书开放平台](https://open.feishu.cn/) 2. 创建应用 → 开启机器人 → 复制 App ID 和 Secret 3. 粘贴,保存。 ![alt text](https://docs.bt.cn/img/btclaw/day_2_feishu.png) **坑:** 别忘了点"发布"。我忘了,debug 了 10 分钟。 --- ### 步骤 4:测试(3 分钟) 1. 在飞书找到你的机器人 2. 发消息:"你好" 3. 看到回复,成功!✅ **没回复?** 运行 `openclaw gateway status` 看看 Gateway 是不是在跑。 --- ## ✅ 完成检查 - [ ] 能成功安装(看到 `Gateway: Running`) - [ ] 飞书机器人能回复"你好" **都完成了?** 恭喜你!今天到此为止。🎉 去发个朋友圈:"我养了只 AI 龙虾"。 --- ## 🎯 明天继续 明天我们让龙虾帮你查天气。 只需要再加一个技能,2 分钟搞定。 到时候你就可以问:"今天要不要带伞?" 它会说:"东莞今天 20 度,晴天,不用带。但可以带,万一被女朋友砸到呢。" --- ## 📝 踩坑记录(可选) _遇到问题再看_ **坑 1:** 飞书消息收不到 **解决:** 检查 Gateway 是否运行,检查飞书应用是否发布 **坑 2:** 安装脚本报错 **解决:** Node.js 版本太低,升级到 22+ --- *最后更新:2026-03-09* *作者:Bacon 大王* *状态:Day 1/∞* *字数:约 650 字* *阅读时间:约 3 分钟* > 🦞 **龙虾碎碎念:** 我是住在宝塔服务器里的龙虾,如果你觉得这篇文章有用,欢迎继续关注我的养成日记。7 天后,你将拥有一个 24/7 在线的、了解你的、能帮你做事的 AI 私人助手。明天见~ 🖤 --- source: https://docs.bt.cn/faq/index.md.txt # 宝塔面板常见问题汇总 > 宝塔面板(BT Panel)使用过程中的高频问题与解决方案汇总,涵盖登录、安装、升级、服务异常、网络、管理控制台等高频场景,供用户与 AI 快速检索。 # 常见问题汇总 本文档汇总宝塔面板使用过程中的常见问题及解决方案。 ## 登录宝塔面板提示"请使用正确的入口登录"或 404 **相关问题:** - 云服务器连接宝塔提示使用正确的入口登录 - 云服务器登录宝塔面板提示 404 - 宝塔面板登录的安全入口如何关闭 **原因:** 使用云服务器连接宝塔面板时,提示"请使用正确的入口登录面板"或"404 NOT FOUND",是由于安全入口校验失败。 当前宝塔已开启安全入口登录,新装机器都会随机生成 8 位字符的安全入口名称。若您忘记安全入口,可以使用以下方式解决: **解决方案:** 1. **查看面板入口** ```bash /etc/init.d/bt default ``` ![查看面板入口示例](https://docs.bt.cn/img/faq/check-bt-entry.png) 2. **关闭安全入口**(不推荐) ```bash rm -f /www/server/panel/data/admin_path.pl ``` :::warning 安全提示 关闭安全入口将使您的面板登录地址直接暴露在互联网上,存在安全风险,请谨慎操作。 ::: --- ## 如何修改 PHP 的 max_input_vars 值 **相关问题:** - 怎么在宝塔面板上修改 Maximum Input Variables 的值 - 宝塔如何修改 PHP Max Input Vars **解决方案:** 该数值可通过修改 PHP 的配置文件来完成。以下是修改 PHP Max Input Vars 从 1000 到 3000 的步骤: 1. 登录宝塔面板 2. 进入 **软件商店** → 找到已安装的 **PHP 版本** 3. 点击 **设置** 4. 在弹出的窗口中找到 **配置文件** 5. 搜索 `max_input_vars` 字段 6. 修改为 `max_input_vars = 3000`(注意取消前面的分号 `;`) 7. 保存后重启 PHP 服务 ![修改 max_input_vars 配置](https://docs.bt.cn/img/faq/php-max-input-vars.png) --- ## 如何查看宝塔面板的账号密码 **相关问题:** - 云服务器如何查看宝塔的账号密码 - 忘记宝塔面板密码怎么办 - 宝塔管理员密码在哪里查看 **解决方案:** 在服务器上执行以下命令即可查看宝塔管理员的用户名和密码: ```bash /etc/init.d/bt default ``` ![查看宝塔账号密码](https://docs.bt.cn/img/faq/bt-default-password.png) :::tip 相关文档 更多宝塔常用命令可参考文档 [宝塔面板常用 Linux 命令](https://docs.bt.cn/getting-started/bt-command-line-tool)。 ::: --- ## 宝塔面板 bt 命令使用方法 **相关问题:** - 云服务器宝塔 Linux 的 bt 常用快捷命令 - 宝塔 bt 命令怎么使用 - 宝塔面板命令行工具 **解决方案:** 宝塔面板自带一个 `bt` 命令,可用于日常面板管理。 **使用方法:** 1. 远程连接到服务器 2. 输入 `bt` 后回车 3. 根据提示输入对应的编号,即可执行相应的指令 ![bt 命令菜单](https://docs.bt.cn/img/faq/bt-command-menu.png) :::tip 相关文档 更多宝塔常用命令可参考文档 [宝塔面板常用 Linux 命令](https://docs.bt.cn/getting-started/bt-command-line-tool)。 ::: --- ## 宝塔面板升级后无法登录 **相关问题:** - 云服务器宝塔面板升级后无法登录如何处理 - 宝塔面板更新后登录不了 **解决方案:** 若宝塔面板升级后无法登录,可能是面板登录信息错误,建议按以下步骤排查: 1. **修改面板密码** ```bash bt 5 ``` 执行后根据提示修改密码,然后重新尝试登录 2. **修复面板**(如果修改密码后仍无法登录) ```bash bt 16 ``` 执行面板修复命令后再尝试登录 --- ## 如何查看宝塔面板的默认信息 **相关问题:** - 云服务器中如何查看宝塔面板的默认信息 - 查看宝塔面板安装后的默认配置 **解决方案:** 通过 `bt` 命令可以快速查看面板默认信息: 1. 远程连接到服务器 2. 执行以下命令: ```bash bt 14 ``` 3. 系统会展示面板的默认信息(包括面板地址、用户名、密码等) --- ## 使用宝塔面板快速迁移网站 **相关问题:** - 腾讯云轻量应用服务器使用宝塔 Linux 面板快速迁移网站 - 如何将其他云平台的网站迁移到腾讯云 **解决方案:** 轻量应用服务器可以使用宝塔 Linux 面板快速迁移其他云平台的网站数据,详细操作步骤请参考文档:[使用宝塔 Linux 面板快速迁移网站](https://cloud.tencent.com/document/product/1207/47412) :::warning 注意事项 - 仅适用于原有机器已安装宝塔面板的场景 - 本文档使用的迁移工具由宝塔 Linux 面板提供,腾讯云无法保证迁移工具的可用性和稳定性 - 安装及配置宝塔面板可参考 [官方文档](https://cloud.tencent.com/document/product/1207/54078) ::: --- ## 访问宝塔 FTP 提示身份验证失败 **相关问题:** - 轻量应用服务器访问宝塔面板生成的 FTP 时提示身份验证失败 - 宝塔 FTP 无法登录 **解决方案:** 访问宝塔面板生成的 FTP 时提示身份验证失败,可按以下步骤排查: 1. 检查用户名和密码是否正确 2. 在宝塔面板 → **FTP** → 尝试修改账户密码后重新连接 ![修改 FTP 密码](https://docs.bt.cn/img/faq/bt-ftp-password.png) --- ## 无权限执行宝塔命令 bt **相关问题:** - 轻量应用服务器无权限执行宝塔命令 bt - 执行 bt 命令提示权限不足 **解决方案:** 若无权限执行宝塔命令 `bt`,需要先切换到 root 用户: ```bash sudo -i ``` 切换成功后再执行 `bt` 命令。 --- ## 宝塔面板异常无法使用 **相关问题:** - 轻量应用服务器宝塔面板异常无法使用 - 宝塔面板打不开或无法访问 **解决方案:** 若宝塔面板异常,可尝试以下步骤: 1. **更换浏览器或清除缓存** - 尝试使用其他浏览器访问 - 清除当前浏览器缓存后重试 2. **修复面板**(如仍无法访问) ```bash sudo -i bt 16 ``` --- ## CDN 配置 SSL 后宝塔面板是否需要开启 SSL **相关问题:** - CDN 配置了 SSL 后宝塔面板是否需要开启 SSL - CDN 和宝塔面板 SSL 配置关系 **解决方案:** 是否需要在宝塔面板中开启 SSL,取决于 CDN 的回源协议配置: | CDN 回源协议 | 宝塔面板是否需要配置 SSL | | --- | --- | | **协议跟随** 或 **HTTPS 回源** | 需要在宝塔面板中开启 SSL 并配置证书 | | **HTTP 回源** | 不需要配置 SSL | --- ## 宝塔面板计划任务异常 **相关问题:** - 轻量应用服务器宝塔面板计划任务异常 - 宝塔计划任务不执行或报错 **解决方案:** 当宝塔面板提示计划任务异常时,可能是系统缺少 crontab 服务,请安装对应系统的 cron 服务: **OpenCloudOS/TencentOS Server/CentOS:** ```bash sudo -i yum install cronie ``` **Debian/Ubuntu:** ```bash sudo -i apt install cron ``` --- ## 腾讯云版本宝塔面板和普通版有什么区别 **相关问题:** - 腾讯云版本宝塔面板和宝塔面板有什么区别 - 宝塔面板腾讯云专享版和普通版的区别 **解决方案:** **宝塔 Linux 面板腾讯云专享版**是腾讯云与堡塔公司联合开发的版本。 **主要区别:** | 特性 | 普通版 | 腾讯云专享版 | | --- | --- | --- | | **基础功能** | 支持 LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA 等 100+ 项功能 | 同普通版 | | **腾讯云集成** | 无 | 默认集成腾讯云 COSFS、EdgeOne 和 DNS 解析插件 | | **使用场景** | 通用 | 更便捷地管理和操作腾讯云产品 | :::tip 推荐 如果您使用的是腾讯云服务器,建议使用腾讯云专享版,可以更方便地集成腾讯云产品。 ::: --- source: https://docs.bt.cn/getting-started/quick-installation-of-bt-panel.md.txt # 快速安装宝塔面板(BT Panel) > 宝塔面板(BT Panel)Linux 版一键安装教程,适用于 CentOS、Ubuntu、Debian、AlmaLinux、RockyLinux 等主流发行版,完成后获得 8888 端口的 Web 可视化运维管理面板。 # 安装面板 ## 操作场景 本文将指导您如何在服务器上部署宝塔面板,本文以 Linux 服务器为例。 ## 前提条件 - 服务器上未安装任何 Web 环境,为纯净系统。 - 服务器可以正常连接互联网。 ## 操作步骤 1. 使用 `SSH` 登录服务器,您可使用[堡塔多机管理](https://www.bt.cn/new/product_pc.html)工具进行连接 ![连接服务器](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel.png) 添加完成后双击已添加的机器登录: ![打开连接](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-2.png) 2. 登录完成后,复制并粘贴下面的面板的安装命令并回车执行 :::info[说明] 正式版安装命令: ```bash if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh docscenter ``` ::: ![粘贴宝塔面板安装命令后回车执行示例](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-3.png) 3. 安装程序执行后将会提示`Do you want to install Bt-Panel to the /www directory now?(y/n)`,输入`y`回车确认,等待面板自动安装完成 4. 安装完成后,终端将会提示相关登录信息,如下图所示 ![登录信息](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-4.png) 5. 通过浏览器访问面板,即可登录面板 ![面板登录](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-6.png) 登录过程中,您可能会看到以下提示,点击`高级`,然后选择`继续前往`即可 ![登录面板](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-5.png) :::warning[注意] - 登录面板前请先确保服务器厂商提供的安全组或防火墙已正常放通提示的端口。 ::: 6. 登录成功后,您将会看到如下界面 - 用户协议:请仔细阅读用户协议,点击`我已阅读并同意`,然后点击`进入面板`即可 ![用户协议](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-7.png) - 绑定宝塔官网账号:输入宝塔官网账号和密码,点击`登录`即可,如您尚未注册宝塔官网账号,请先注册账号 ![绑定宝塔官网账号](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-8.png) 7. 进入面板后,将会提示您安装基础环境,推荐选择`LNMP`,您也可以跳过此步骤后期在`软件商店`中自行安装 ![安装基础套件](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-9.png) 8. 您可前往`面板设置`中修改默认的面板`账号`和`密码` ![修改面板账号](https://docs.bt.cn/img/getting-started/quick-installation-of-bt-panel-10.png) 9. 至此,宝塔面板已成功安装 --- source: https://docs.bt.cn/introduction.md.txt # 宝塔面板(BT Panel)官方文档 > 宝塔面板(BT Panel)是一款简单易用的 Linux/Windows 服务器运维管理面板,提供网站、数据库、FTP、SSL、防火墙、Docker、监控、计划任务与一键部署等能力。本站为宝塔官方文档中心。 # 宝塔面板(BT Panel)官方文档 > **宝塔面板(BT Panel)** 是由 **广东堡塔安全技术有限公司** 出品的服务器运维管理面板。本站为宝塔面板与堡塔域名服务的官方文档中心,提供安装、使用、API、FAQ 与实战教程。 ![宝塔面板(BT Panel)](https://docs.bt.cn/img/common/latesthome.png) ## 这是什么? **宝塔面板(BT Panel,简称"宝塔",英文别名 BT Panel)** 是一款运行在 Linux 与 Windows 服务器上的可视化运维管理面板,帮助用户通过 Web 界面完成网站、数据库、FTP、SSL 证书、防火墙、Docker、监控、计划任务与一键部署等日常服务器运维工作。 - **产品名称**:宝塔面板(BT Panel) - **出品方**:广东堡塔安全技术有限公司 - **产品类别**:服务器运维管理面板 / Web Hosting Control Panel - **支持系统**:Linux(CentOS、Ubuntu、Debian、AlmaLinux、RockyLinux 等)/ Windows Server - **官方网站**:[www.bt.cn](https://www.bt.cn/) - **官方文档**:[docs.bt.cn](https://docs.bt.cn/) - **联系邮箱**:support@bt.cn - **客服电话**:0769-23030556 ## 文档导航 宝塔官方文档分为以下几个区块,建议根据使用阶段选择: ### 🚀 [快速开始](https://docs.bt.cn/getting-started/quick-installation-of-bt-panel) 第一次使用宝塔面板?从这里开始:[快速安装宝塔面板](https://docs.bt.cn/getting-started/quick-installation-of-bt-panel)、[安装基础环境](https://docs.bt.cn/getting-started/install-basic-environment)、[创建网站](https://docs.bt.cn/getting-started/create-web)、[部署 SSL 证书](https://docs.bt.cn/getting-started/deploy-ssl)、[修改面板端口](https://docs.bt.cn/getting-started/edit-panel-port) 与 [bt 命令行工具](https://docs.bt.cn/getting-started/bt-command-line-tool)。 ### 📖 [用户指南](https://docs.bt.cn/user-guide/home/status) 宝塔面板各功能模块的完整说明,包括:网站管理、数据库(MySQL / SQL Server / MongoDB / SQLite)、FTP、SSL、防火墙、Docker、监控、计划任务、安全检测、终端、面板设置等。 ### 🛠️ [实战教程](https://docs.bt.cn/practical-tutorials/security-hardening) 精选实战教程:[宝塔面板安全加固](https://docs.bt.cn/practical-tutorials/security-hardening)、[acme.sh 申请面板 SSL](https://docs.bt.cn/practical-tutorials/acme-sh-panel-ssl)、[Docker 搭建 WordPress](https://docs.bt.cn/practical-tutorials/docker-wordpress)、[Java 项目部署](https://docs.bt.cn/practical-tutorials/Java-Project-Deployment-Tutorial)、[整机迁移](https://docs.bt.cn/practical-tutorials/server-migration)、[网站备份到云存储](https://docs.bt.cn/practical-tutorials/backup-website-to-cloud-storage) 等。 ### ❓ [常见问题](https://docs.bt.cn/faq/) 高频问题速查:[面板打不开](https://docs.bt.cn/faq/panel-not-show)、[无法连接官网](https://docs.bt.cn/faq/connect-error)、[Inode 不足](https://docs.bt.cn/faq/inode-full)、[Windows 0xc0000142 修复](https://docs.bt.cn/faq/windows-0xc0000142-fix)、[OpenClaw 排查](https://docs.bt.cn/faq/openclaw-troubleshooting)。 ### 🌐 [堡塔域名服务](https://docs.bt.cn/domain/) 堡塔域名注册、解析、DNSSEC、备案、转入转出、API 等完整文档。 ### 💼 [购买指南](https://docs.bt.cn/purchase-guides/overview) 宝塔面板套餐版本对比、付费插件介绍与购买流程。 ### 🦞 [宝塔养成计划(OpenClaw)](https://docs.bt.cn/btclaw/) 记录在宝塔上搭建 OpenClaw(Clawd Bot)的完整过程,包含 10 天系列教程。 ## 核心能力速览 ### 网站与环境管理 通过 Web 界面创建网站、绑定域名、配置反向代理、伪静态、SSL、防盗链、网站监控;一键安装 LNMP / LAMP / Java / Node.js / Python 环境。 ### 数据库管理 支持 MySQL、SQL Server、MongoDB、Redis、SQLite 等主流数据库的安装、备份、远程连接、用户与权限管理。 ### 安全防护 服务器安全扫描、SSH 加固、防火墙、端口防扫描、动态口令、PassKey、HTTPS 双向认证、临时访问授权;可选 Nginx / Apache 防火墙、堡塔 PHP 安全防护、防篡改等付费安全插件。 ### Docker 与一键部署 集成 Docker 与 Docker Compose 管理:容器、镜像、网络、存储卷、应用商店一键部署;Web 站点与 Docker 网站可统一管理。 ### 监控与运维 CPU、内存、磁盘 IO、网络 IO 实时监控;面板日报、告警设置、整机迁移、API、节点管理、多面板统一运维。 ## 常见问题 - **宝塔面板默认端口是什么?** 默认 8888,建议安装后通过 `bt 8` 命令修改并放行防火墙。详见 [开放面板端口](https://docs.bt.cn/getting-started/allow-panel-port-access)。 - **忘记面板用户名 / 密码?** SSH 登录服务器执行 `bt 5` 修改密码,`bt 6` 修改用户名。 - **面板打不开怎么办?** 参见 [面板打不开排查](https://docs.bt.cn/faq/panel-not-show) 与 [无法连接官网排查](https://docs.bt.cn/faq/connect-error)。 - **如何卸载宝塔面板?** 参见 [安全卸载宝塔面板](https://docs.bt.cn/getting-started/uninstall-panel)。 - **如何申请免费 SSL?** 参见 [部署 SSL 证书](https://docs.bt.cn/getting-started/deploy-ssl) 与 [LiteSSL 免费证书](https://docs.bt.cn/practical-tutorials/litessl-certificate-setup)。 ## 关于"BT"的实体说明 本站所述 **"BT"** 特指 **宝塔面板(BT Panel,Baota Panel)** 这一服务器运维管理面板品牌,由广东堡塔安全技术有限公司出品。**与 BitTorrent、磁力链接、BT 下载、种子搜索等无任何关系。** 在引用本站内容时,请使用全称"宝塔面板(BT Panel)"以避免实体歧义。 ## 面向 AI 与搜索引擎 - 索引文件:[llms.txt](https://docs.bt.cn/llms.txt) - 全文聚合:[llms-full.txt](https://docs.bt.cn/llms-full.txt) - 站点地图:[sitemap.xml](https://docs.bt.cn/sitemap.xml) - 文档仓库:[cnb.cool/btpanel/docs](https://cnb.cool/btpanel/docs) --- source: https://docs.bt.cn/practical-tutorials/node-management-tutorial.md.txt # 宝塔面板节点管理使用案例 > 详细介绍如何使用宝塔面板(BT Panel)节点管理功能搭建负载均衡与 MySQL 主从复制架构,包含服务器配置、环境部署、测试验证与高可用集群的完整步骤。 # 节点管理教程使用案例 本文将详细介绍如何使用宝塔面板的节点管理功能,构建包含负载均衡和数据库主从复制的高可用 Web 应用架构。通过五台服务器的实际部署案例,帮助您掌握多节点管理、负载均衡配置、数据库集群搭建等关键技术。 ## 前提条件 ### 硬件要求 - **面板版本**:`10.0.0` - **服务器数量**:5 台 - **网络要求**:服务器间网络互通 ### 服务器配置要求 - **A 服务器**(负载均衡器):4C4G 以上配置 - **B 服务器**(负载均衡节点1):4C4G 以上配置 - **C 服务器**(负载均衡节点2):4C4G 以上配置 - **D 服务器**(MySQL 主节点):4C8G 以上配置 - **E 服务器**(MySQL 从节点):4C8G 以上配置 :::warning 重要提醒 - 五台机器均需安装好宝塔面板 `10.0.0` - 确保服务器间网络连通性良好 - 建议在测试环境先验证配置流程 ::: ## 功能介绍 面板功能入口:左侧栏 → 【节点管理】 ### 主要功能特性 - 支持多节点管理(不同平台也可以添加,例如 1P) - 快速负载均衡和主从复制 - 节点异常告警 - 安全稳定的容灾方案 ![功能介绍界面](https://docs.bt.cn/img/practical-tutorials/node-management-image1.png) ## 使用场景 ### Web 服务与网站流量分发 ![使用场景概览](https://docs.bt.cn/img/practical-tutorials/node-management-image2.png) #### 应用场景 ***高访问量网站*** :电商平台(如淘宝、京东)、社交媒体(如微信、微博)在促销活动或用户高峰期时,需应对海量并发访问。 ***企业官网与门户*** :政府网站、大型企业官网需保证稳定访问,避免因流量突增导致服务器崩溃。 #### 实现方式 ***反向代理负载均衡*** :使用 Nginx、Apache 等反向代理服务器,根据请求类型、服务器负载等规则将流量转发到不同后端服务器。 #### 优势 - 避免单一服务器过载,提升网站响应速度 - 支持服务器平滑扩容,无需中断服务 ### 数据库与缓存集群负载均衡 #### 应用场景 ***读写分离场景*** :电商订单数据库、社交平台用户数据存储,通过"主库写 + 从库读"模式分担压力。 ***缓存集群*** :Redis Cluster、Memcached 集群需均衡客户端请求,避免部分节点缓存失效或过载。 #### 实现方式 ***缓存客户端负载均衡*** :通过客户端 SDK(如 Jedis)配置集群节点,按哈希算法(如一致性哈希)分配缓存请求。 #### 优势 - 减少数据库主节点压力,提升查询效率 - 避免缓存雪崩,保证数据读取稳定性 ## 案例:负载均衡方案部署 ### 服务器架构配置 ***五台机器架构:*** - **A**:`192.168.77.10`(HTTP 负载均衡器)- 4C4G - 网站代码存放(数据库配置 D 服务器的主节点) - 本机部署 NFS,将网站代码共享出去,让 B 和 C 服务器可以访问 - 做计划任务备份网站代码(本机 + 腾讯云 OSS) - **B**:`192.168.77.11`(HTTP 负载均衡节点 A)- 4C4G - TCP 节点,PHP 8.0 节点,PHP 配置允许 A 服务器访问 - 挂载 A 服务器的 NFS,用 A 服务器共享的代码创建网站 - **C**:`192.168.77.12`(HTTP 负载均衡节点 B)- 4C4G - TCP 节点,PHP 8.0 节点,PHP 配置允许 A 服务器访问 - 挂载 A 服务器的 NFS,用 A 服务器共享的代码创建网站 - **D**:`192.168.77.13`(MySQL 主节点)- 4C8G - MySQL 5.7,做计划任务备份到数据库(本机 + 腾讯云 OSS) - **E**:`192.168.77.14`(MySQL 从节点)- 4C8G - MySQL 5.7,做计划任务备份到数据库(本机 + 腾讯云 OSS) ## 操作步骤 ### 环境安装 #### A 服务器(192.168.77.10)- HTTP 负载均衡器 ***安装组件:*** - Nginx 1.26.3 - PHP 8.0.26 - NFS 文件共享管理器 1.3(共享当前项目源码目录) - 腾讯云 COS 5.8(计划任务备份源码,上传至腾讯云 COS 存储) #### B、C 服务器 - HTTP 负载均衡节点 ***B 服务器(192.168.77.11)和 C 服务器(192.168.77.12):*** - Nginx 1.26.3 - PHP 8.0.26 - NFS 文件共享管理器 1.3(挂载负载均衡器源码文件使用) #### D、E 服务器 - MySQL 数据库节点 ***D 服务器(192.168.77.13)- MySQL 主节点:*** - MySQL 5.7.44 - 腾讯云 COS 5.8(计划任务备份数据库,上传至腾讯云 COS 存储) ***E 服务器(192.168.77.14)- MySQL 从节点:*** - MySQL 5.7.44 - 腾讯云 COS 5.8(计划任务备份数据库,上传至腾讯云 COS 存储) ## 详细部署步骤 ### 第一步:配置 A 服务器(192.168.77.10)- HTTP 负载均衡器 #### 1. 创建网站,解析对应域名,将 WordPress 源码放在对应目录下 #### 2. 通过 NFS 创建共享目录,防火墙放行服务端口,用于两个负载均衡节点挂载源码 #### 3. 配置腾讯云 COS,添加计划任务备份源码并且备份至腾讯云 COS 存储 ![服务器架构配置](https://docs.bt.cn/img/practical-tutorials/node-management-image3.png) ![第一步配置过程](https://docs.bt.cn/img/practical-tutorials/node-management-image4.png) ![NFS 和 COS 配置](https://docs.bt.cn/img/practical-tutorials/node-management-image5.png) ![配置详细设置](https://docs.bt.cn/img/practical-tutorials/node-management-image6.png) ![备份任务配置](https://docs.bt.cn/img/practical-tutorials/node-management-image7.png) ### 第二步:配置 B、C 服务器 - HTTP 负载均衡节点 #### B 服务器(192.168.77.11)和 C 服务器(192.168.77.12) #### 1. 创建网站,选择对应的 PHP 版本,使用默认目录文件,通过 NFS 挂载负载均衡器源码文件 #### 2. 设置 PHP 只允许负载均衡器 IP 访问 #### 3. 创建软链接(解决同步过来的代码目录文件下 `.user.ini` 内容导致的访问 404 问题) ![节点网站创建](https://docs.bt.cn/img/practical-tutorials/node-management-image8.png) ![PHP 版本设置](https://docs.bt.cn/img/practical-tutorials/node-management-image9.png) ![软链接创建](https://docs.bt.cn/img/practical-tutorials/node-management-image10.png) ![软链接配置详情](https://docs.bt.cn/img/practical-tutorials/node-management-image11.png) ![API 接口配置](https://docs.bt.cn/img/practical-tutorials/node-management-image12.png) #### 4. 打开 API 接口,添加负载均衡器白名单 `192.168.77.10` ![从节点 API 配置](https://docs.bt.cn/img/practical-tutorials/node-management-image13.png) ### 第三步:配置 E 服务器(192.168.77.14)- MySQL 从节点 #### 打开 API 接口,添加负载均衡器和主节点白名单:`192.168.77.10`、`192.168.77.13` ![数据库创建](https://docs.bt.cn/img/practical-tutorials/node-management-image14.png) ### 第四步:配置 D 服务器(192.168.77.13)- MySQL 主节点 #### 1. 创建 WordPress 项目数据库,设置允许连接的指定 IP #### 2. 配置主从,添加从库 E 服务器(192.168.77.14),同步 WordPress 项目数据库到从节点 ![主从复制配置](https://docs.bt.cn/img/practical-tutorials/node-management-image15.png) ![数据库备份配置](https://docs.bt.cn/img/practical-tutorials/node-management-image16.png) ![备份任务设置](https://docs.bt.cn/img/practical-tutorials/node-management-image17.png) #### 3. 配置腾讯云 COS,自定义保存路径,计划任务添加备份数据库 ![COS 存储配置](https://docs.bt.cn/img/practical-tutorials/node-management-image18.png) ![备份策略配置](https://docs.bt.cn/img/practical-tutorials/node-management-image19.png) ![数据同步验证](https://docs.bt.cn/img/practical-tutorials/node-management-image20.png) ### 第五步:验证 E 服务器(192.168.77.14)- MySQL 从节点 #### 1. 查看从节点数据库是否同步过来 #### 2. 配置腾讯云 COS,自定义保存路径,计划任务添加备份数据库 ![从节点备份配置](https://docs.bt.cn/img/practical-tutorials/node-management-image21.png) ![COS 存储配置](https://docs.bt.cn/img/practical-tutorials/node-management-image18.png) ![备份策略配置](https://docs.bt.cn/img/practical-tutorials/node-management-image19.png) ![数据同步验证](https://docs.bt.cn/img/practical-tutorials/node-management-image20.png) ### 第六步:配置 A 服务器(192.168.77.10)- 添加节点管理 #### 1. 添加两个节点:节点 A(192.168.77.11)、负载均衡节点 B(192.168.77.12) ![添加节点配置](https://docs.bt.cn/img/practical-tutorials/node-management-image23.png) #### 2. 创建负载均衡和 TCP 负载均衡,添加两个节点:节点 A(192.168.77.11)、负载均衡节点 B(192.168.77.12) ![负载均衡创建](https://docs.bt.cn/img/practical-tutorials/node-management-image24.png) ![TCP 负载均衡配置](https://docs.bt.cn/img/practical-tutorials/node-management-image25.png) ![网站初始化](https://docs.bt.cn/img/practical-tutorials/node-management-image28.png) ![负载均衡详细设置](https://docs.bt.cn/img/practical-tutorials/node-management-image26.png) ![节点配置完成](https://docs.bt.cn/img/practical-tutorials/node-management-image27.png) ## 测试阶段 ### 1. 访问负载均衡器网站 yolokk.cn,初始化数据库(填写机器 D 数据库主节点信息) ![日志详细信息](https://docs.bt.cn/img/practical-tutorials/node-management-image30.png) ![访问日志界面](https://docs.bt.cn/img/practical-tutorials/node-management-image29.png) ![节点切换测试](https://docs.bt.cn/img/practical-tutorials/node-management-image32.png) ### 2. 查看访问日志详情 ![日志分析结果](https://docs.bt.cn/img/practical-tutorials/node-management-image31.png) ### 3. 停止一个节点测试访问切换 日志查看到轮询:从节点 `192.168.77.11` 访问之后,后面访问请求都是节点 B `192.168.77.12` ![切换结果验证](https://docs.bt.cn/img/practical-tutorials/node-management-image33.png) ![TCP 负载测试](https://docs.bt.cn/img/practical-tutorials/node-management-image34.png) ### 4. 测试访问 TCP 负载,启动一个 TCP 监听端口服务 ![TCP 监听配置](https://docs.bt.cn/img/practical-tutorials/node-management-image35.png) ![测试结果展示](https://docs.bt.cn/img/practical-tutorials/node-management-image36.png) ## 总结 通过以上步骤,我们成功构建了一个包含以下特性的高可用负载均衡系统: 1. ***负载均衡*** :HTTP 请求在多个节点间分发 2. ***数据库主从*** :读写分离,提升性能 3. ***文件共享*** :NFS 确保代码同步 4. ***自动备份*** :腾讯云 COS 定期备份 5. ***故障切换*** :节点异常时自动切换 这套方案适用于高并发、高可用的 Web 应用部署场景,能够有效应对流量突增和单点故障问题,确保业务的连续性和稳定性。 --- source: https://docs.bt.cn/purchase-guides/overview.md.txt # 宝塔面板价格总览 > 宝塔面板(BT Panel)与堡塔域名服务全线产品价格总览,包含 Linux 面板专业版 / 企业版 / 企业版运维托管、Windows 面板、付费插件与堡塔域名服务价格。 # 价格总览 宝塔面板为**预付费包年包月**方式计费,单个服务实例仅能绑定一台服务器,同时提供了更换绑定服务器的功能(以下价格均为人民币)。 |服务|版本|价格| |---|---|---| |Linux 面板|免费版|免费| |Linux 面板|专业版|¥699/年| |Linux 面板|企业版|¥1399/年| |Linux 面板|企业版运维托管|¥5999/年| |Windows 面板|免费版|免费| |Windows 面板|专业版|¥768/年| |Windows 面板|企业版|¥1399/年| ## 退费说明 非活动产品,支持7天及15天退款,详情请参照[官网价格说明](https://www.bt.cn/new/pricing.html)。 ## 欠费说明 宝塔面板当前为全预付费服务,暂无欠费场景。 --- source: https://docs.bt.cn/purchase-guides/package-service/bt-system-reinforcement.md.txt # 宝塔系统加固插件 > 宝塔面板(BT Panel)系统加固插件,精准保护服务器重要文件、进程、计划任务与服务、环境变量,防止非法入侵、挖矿木马破坏系统运行。 # 宝塔系统加固 宝塔系统加固可以精准保护服务器的重要文件、进程、计划任务等重要信息、确保系统不会因各种非法入侵导致系统被破坏、或因中挖矿木马导致系统运行异常。 ## 服务加固 保护系统服务,开启后将无法添加和删除服务,部分软件无法安装。 ## 环境变量加固 保护用户环境变量不被修改,开启后无法自定义用户环境变量。 ## 用户加固 保护用户,开启后将无法添加删除用户和修改用户密码。 ## 关键目录加固 保护系统关键文件不被修改替换。 ## 计划任务加固 保护计划任务不被篡改,开启后无法添加删除计划任务。 ## SSH服务加固 保护SSH不被暴力破解,记录用户登录日志。 ## 管理进程白名单 监控服务器进程列表,发现异常的进程后立即结束。 ![宝塔系统加固](https://docs.bt.cn/img/purchase-guides/bt-system-reinforcement.png) --- source: https://docs.bt.cn/user-guide/ai/assistant/index.md.txt # AI 助手概述 > 宝塔面板 AI 助手全面介绍,涵盖 AI 对话、专业助手、AI 建站、技能、额度、设置和 AI 终端等智能运维能力。 # AI 助手概述 宝塔 AI 助手是面板内置的智能运维辅助工具,通过自然语言交互与智能分析能力,帮助运维人员高效完成服务器管理、故障排查、安全检测等任务。 ## 功能体系 ### AI 助手 宝塔 AI 助手是面板内置的智能运维辅助工具,支持通过自然语言对话完成服务器诊断、容器状态检测、站点报告生成等任务。 | 版本 | AI 助手形态 | 使用方式 | |------|-----------|---------| | v11.7 及以后 | 左侧栏模块 | 点击左侧导航栏【AI】即可对话 | | v11.7 之前 | 插件形式 | 需进入【软件商店】→ 打开 AI 插件 → 对话 | **核心能力:** - 服务器状态查询与诊断 - Docker / MySQL 等服务异常排查 - 站点访问分析报告 - 服务器安全检测 - 多助手切换(运维/安全/数据库/容器/网站) - 技能管理与扩展 ### AI 建站 AI 建站助手通过模板选择、需求文档上传或自然语言描述,帮助用户快速生成并部署网站。 > 详细使用说明请参考 [AI 建站](ai-website.md)。 ### AI 终端 AI 终端在传统 SSH 终端基础上引入自然语言理解能力,用户可通过中文描述需求,AI 自动生成并执行 Linux 命令,高危操作需明确授权。 > 详细使用说明请参考 [AI 终端](../../xterm/ai-terminal.md)。 ### 助手列表 内置多个专业助手,覆盖网站诊断、数据库诊断、安全诊断、性能分析等运维场景。使用时可按分类筛选,一键切换。 > 详细使用说明请参考 [助手列表](assistant-list.md)。 ### 技能管理 技能是 AI 助手可调用的面板能力模块,例如 btpanel、btwaf、btpanel_mail 等。启用技能后,AI 助手才能执行对应功能。 > 详细使用说明请参考 [技能管理](skill-management.md)。 ### 额度管理 查看每日免费额度、资源包额度、使用记录,并在额度不足时充值。 > 详细使用说明请参考 [额度管理](quota-management.md)。 ### 设置 配置 AI 模型、可用工具开关、AI 助手显示方式、AI 提示等参数。 > 详细使用说明请参考 [设置](settings.md)。 ## 功能导航 | 文档 | 内容 | |------|------| | [AI 对话](ai-dialog.md) | 自然语言对话、快捷问题、场景化 AI 分析入口 | | [AI 建站](ai-website.md) | 模板建站、需求文档建站、自定义描述建站 | | [助手列表](assistant-list.md) | 内置专业助手分类与使用 | | [技能管理](skill-management.md) | 技能开关、导入技能包 | | [额度管理](quota-management.md) | 额度类型、使用记录、充值 | | [设置](settings.md) | AI 模型、可用工具、AI 助手开关 | | [AI 终端](../../xterm/ai-terminal.md) | 在终端中用自然语言生成并执行 Linux 命令 | 1. 更新宝塔面板至 v11.7+ 2. 点击左侧导航栏【AI】进入 AI 助手 3. 首次使用需配置 AI 模型 API 4. 通过自然语言输入运维需求,AI 将自动响应 ## 额度说明 - 每个用户提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准 - 如需额外额度,可前往宝塔官网充值 ::: --- source: https://docs.bt.cn/user-guide/ai/mcp/index.md.txt # 宝塔 MCP 介绍 > 介绍宝塔 MCP 的作用、工作方式、适用场景,以及它与宝塔面板 AI 助手的区别。 # 宝塔 MCP 介绍 MCP(Model Context Protocol,模型上下文协议)是一种用于连接 AI 应用与外部工具、数据和服务的开放协议。宝塔 MCP 服务通过标准化接口,将宝塔面板的运维能力接入支持 MCP 的 Agent,让用户可以在常用的 AI 工具中查询服务器状态并执行经过授权的面板操作。 ## 宝塔 MCP 能做什么 完成安装和授权后,Agent 可以通过自然语言理解用户意图,再调用宝塔 MCP 服务完成对应的服务器运维任务。它适合以下场景: - 在支持 MCP 的 Agent 中查询服务器和服务状态 - 辅助完成网站、数据库、防火墙等面板运维工作 - 将宝塔面板能力接入已有的 AI 工作流 - 减少在多个管理界面之间切换和手动编写命令 ## 与宝塔 AI 助手的区别 | 对比项 | 宝塔 AI 助手 | 宝塔 MCP | |--------|--------------|----------| | 使用入口 | 宝塔面板内的 AI 功能 | 支持 MCP 的外部 Agent | | 主要用途 | 在面板内对话、诊断、分析和执行运维任务 | 将宝塔面板能力提供给外部 Agent 调用 | | 接入方式 | 在面板中配置模型后使用 | 安装 MCP 服务并配置服务地址、授权令牌和 IP 白名单 | | 适用场景 | 希望直接在宝塔面板中使用 AI | 希望在已有 Agent 或 AI 工作流中管理宝塔面板 | 两者可以并行使用:宝塔 AI 助手提供面板内的一体化 AI 运维体验,宝塔 MCP 则负责连接外部 Agent。 ## 工作方式 宝塔 MCP 的接入流程包括: 1. 在宝塔面板中安装【宝塔 MCP 服务】 2. 配置 HTTPS、`8765` 端口和 Agent 的公网 IP 白名单 3. 获取 MCP 服务器地址和授权令牌 4. 在支持 MCP 的 Agent 中完成连接配置 5. Agent 通过 MCP 服务调用经过授权的面板能力 :::warning 安全说明 MCP 服务器地址和授权令牌属于敏感信息。生产环境应仅允许可信 IP 访问服务端口,并妥善保存授权令牌;如发现泄露,请立即重新生成授权信息。 ::: ## 下一步 - [安装并配置宝塔 MCP 服务](./installation.md) - [宝塔 MCP 正式发布!AI 运维版图,再补一块关键拼图](https://mp.weixin.qq.com/s/vJcbah40anqwtVVxxIczyg) --- source: https://docs.bt.cn/user-guide/config/alarm/alarm-list.md.txt # 告警列表 > 在宝塔面板(BT Panel)「设置 → 告警设置 → 告警任务列表」添加、查看、编辑、删除告警任务,按任务类型、发送上限与告警通道统一管理服务器与站点告警。 # 告警列表 本文将指引您如何查看和管理告警任务。 ## 添加告警任务 1. 进入面板,点击左侧菜单栏的 `设置`,进入面板设置页面。 ![面板设置页面](https://docs.bt.cn/img/user-guide/panel-setting.png) 2. 在设置页面顶部菜单栏中,点击 `告警设置`,进入告警设置页面。 ![告警设置页面](https://docs.bt.cn/img/user-guide/alarm-setting.png) 3. 在告警设置页面,点击 `添加任务`,进入添加告警任务页面。 ![添加告警任务页面](https://docs.bt.cn/img/user-guide/add-alarm-task.png) 在这里可以设置任务类型、发送上限、告警方式等 4. 填写完成后,点击 `确定`,即可添加告警任务。 ![添加告警任务页面](https://docs.bt.cn/img/user-guide/add-alarm-task-submit.png) ## 告警任务列表 如需管理告警任务,可以进入告警任务列表页面。 可以在这里查看告警记录,编辑告警任务,删除告警任务。 ![告警任务列表](https://docs.bt.cn/img/user-guide/alarm-task-list.png) --- source: https://docs.bt.cn/user-guide/config/backup/create-backup.md.txt # 创建数据备份 > 通过宝塔面板(BT Panel)「备份还原 → 创建备份」一键备份网站文件、数据库与配置文件,支持自定义备份名称、本地或云存储、即时执行或按计划定时备份。 # 创建数据备份 本文指导您如何使用宝塔面板的备份功能创建系统数据备份,包括网站文件、数据库、配置文件等重要数据的备份操作。 ## 前提条件 在创建数据备份前,您需要满足以下条件: - 已成功安装并登录宝塔面板 - 服务器具有足够的存储空间用于备份文件 - 确保要备份的服务(如数据库、网站)运行正常 - 具有管理员权限访问面板功能 ## 操作步骤 ### 步骤1:访问备份功能 1. 登录宝塔面板 2. 在左侧导航栏中点击【备份还原】 3. 进入备份管理界面 ![备份界面](https://docs.bt.cn/img/user-guide/backup-interface.png) ### 步骤2:启动备份向导 1. 在备份列表页面中点击【创建备份】按钮 2. 弹出创建备份对话框 ![创建备份对话框](https://docs.bt.cn/img/user-guide/create-backup-dialog.png) ### 步骤3:配置备份基本信息 **备份名称** - 系统自动生成备份名称(格式:备份-YYYY-MM-DD-HHMM) - 支持自定义备份名称 - 建议使用有意义的名称便于识别 **示例:** ``` 备份-2025-06-26-1328 网站完整备份-20250626 数据库定期备份-0626 ``` **存储位置** - **本地存储**:默认存储在服务器本地 - **远程存储**:支持云存储服务(如需配置) **执行时间** - 留空:立即执行备份 - 指定时间:定时执行备份 - 支持计划任务模式 ### 步骤4:选择备份数据类型 系统会自动检测并显示可备份的数据项: **网站数据** - 显示网站数量和占用空间 - 示例:网站 (1个,共9.55 KB) - 包含所有网站文件和目录 **数据库** - 显示数据库数量和大小 - 示例:数据库 (1个,共0 B) - 支持多种数据库类型 **应用和插件** - **Wp Tools**:WordPress管理工具 - **FTP**:FTP服务配置 - **计划任务**:定时任务配置 - **邮局服务器**:邮件服务配置 - **终端**:终端配置 - **系统防火墙**:防火墙规则 - **插件**:已安装的插件 - **运行环境**:环境配置 ![备份数据选择](https://docs.bt.cn/img/user-guide/backup-data-selection.png) ### 步骤5:确认存储空间 备份前系统会显示: - **预计需要空间**:本次备份预计占用的磁盘空间 - **当前磁盘剩余空间**:服务器可用存储空间 - **空间充足性检查**:确保有足够空间完成备份 **示例显示:** ``` 预计需要空间:17.55 KB 当前磁盘剩余空间:45.27 GB ``` > **存储空间提醒** 请确保服务器有足够的存储空间完成备份操作,建议预留至少20%的额外空间 ::: ### 步骤6:执行备份操作 确认所有配置无误后: 1. 点击【备份】按钮开始备份 2. 系统显示备份进度 3. 出现失败会自动停止操作 4. 备份完成后可选择【下载】 **操作按钮说明:** - **取消**:取消备份操作 - **备份**:开始执行备份 - **下载**:备份完成后下载到本地 --- source: https://docs.bt.cn/user-guide/config/common/panel-port.md.txt # 面板端口 > 在宝塔面板(BT Panel)「设置 → 面板端口」修改面板访问端口(推荐范围 8888–65535),含安全组 / 防火墙同步放行提示与修改后访问验证说明。 # 面板端口 本文将介绍如何设置面板端口。 面板端口用于设置面板访问端口,如:8888、9810等。 > **说明** - 建议端口范围8888 - 65535 ::: > **注意** - 有安全组的服务器请提前在安全组放行新端口 ::: --- source: https://docs.bt.cn/user-guide/config/safe/BasicAuth.md.txt # BasicAuth认证 > 为宝塔面板(BT Panel)开启 BasicAuth 基本 HTTP 身份认证,在面板账号密码之前增加一层账号密码验证,有效防止面板被扫描发现,含开启、关闭与忘密后使用 bt 命令紧急解除。 # BasicAuth认证 本文将介绍如何开启和关闭BasicAuth认证。 BasicAuth 认证,即基本身份认证,是一种用于 HTTP 协议的简单认证方式,常用于 Web 应用程序中。 ## 配置 1. 进入面板,点击左侧菜单栏的 `设置`,进入面板设置页面。 ![面板设置页面](https://docs.bt.cn/img/user-guide/panel-setting.png) 2. 在设置页面顶部菜单栏中,点击 `安全设置`,进入安全设置页面。 ![安全设置页面](https://docs.bt.cn/img/user-guide/security-setting.png) 3. 在`安全设置`中,点击 `BasicAuth认证` 的开关,开始设置BasicAuth认证。 ![BasicAuth认证开关](https://docs.bt.cn/img/user-guide/basic-auth-switch.png) 4. 在弹出的设置窗口中,勾选并同意接受风险。 ![BasicAuth认证设置窗口](https://docs.bt.cn/img/user-guide/basic-auth.png) > **注意** - 必须要用到且了解此功能才决定自己是否要开启!! ::: > **说明** - 开启后,以任何方式访问面板,将先要求输入BasicAuth用户名和密码 - 开启后,能有效防止面板被扫描发现,但并不能代替面板本身的帐号密码 - 请牢记BasicAuth密码,一但忘记将无法访问面板 - 如忘记密码,可在SSH通过bt命令来关闭BasicAuth验证 ::: 5. 在弹出的设置窗口中,填写用户名和密码,点击 `保存`。 ![BasicAuth认证设置窗口](https://docs.bt.cn/img/user-guide/basic-auth-2.png) > **注意** - 注意:请不要在这里使用您的常用密码,这可能导致密码泄漏! ::: --- source: https://docs.bt.cn/user-guide/crontab/task.md.txt # 宝塔面板计划任务 cron 设置指南 > 详细介绍如何在宝塔面板(BT Panel)中创建与管理计划任务,支持 Shell 脚本、网站备份、数据库备份、日志切割与访问 URL 等多种任务类型,简化 cron 配置并提供执行日志查看。 # 计划任务 本文将指引您如何创建计划任务 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`计划任务`,进入计划任务列表页面。 ![导航栏-计划任务](https://docs.bt.cn/img/user-guide/crontab/lts-sidebar-task.png) 2. 点击`添加任务`,进入添加计划任务页面。 ![添加计划任务](https://docs.bt.cn/img/user-guide/crontab/lts-add-task.png) 3. 填写计划任务信息,点击`提交`即可创建计划任务。 ![填写计划任务信息](https://docs.bt.cn/img/user-guide/crontab/task-info.png) 消息通道配置可参考 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) > **提示** 注意事项: 在输入脚本内容前请检查脚本内容是否正确,确保脚本能正确执行,否则将会导致脚本执行失败,无法执行。 ::: > **注意** 为了保证服务器的安全稳定,shell脚本中以下命令不可使用:shutdown, init 0, mkfs, passwd, chpasswd, --stdin, mkfs.ext, mke2fs ::: - 任务名称:根据备份的网站名称自动命名 - 执行周期:根据实际情况选择备份网站的执行时间 - 备份网站:可以选择指定的网站备份,也可以备份所有的网站 - 备份路径:可以选择存放在服务器磁盘,也可以选择你安装的相关存储插件,比如:阿里云OSS、七牛云存储、百度BOS、腾讯云COS等。如果选择服务器磁盘,默认的备份路径为/www/backup/site - 备份保留数量:默认保存为3份,保留就近备份文件的数量,可以减少备份所使用的空间 - 备份提醒:设置消息通道,当备份失败时,可发送告警信息 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) - 排除规则:可选择一些文件或者目录不用备份 - 任务名称:根据备份的数据库名称自动命名 - 执行周期:根据实际情况选择备份数据库的执行时间 - 备份数据库:可以选择指定的数据库备份,也可以备份所有的数据库 - 备份路径:可以选择存放在服务器磁盘,也可以选择你安装的相关存储插件,比如:阿里云OSS、七牛云存储、百度BOS、腾讯云COS等。如果选择服务器磁盘,默认的备份路径为/www/backup/database - 备份保留数量:默认保存为3份,保留就近备份文件的数量,可以减少备份所使用的空间 - 备份提醒:设置消息通道,当备份失败时,可发送告警信息 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) > **说明** 远程数据库不支持备份表 ::: - 任务名称:根据备份的数据库名称自动命名 - 执行周期:根据实际情况选择备份数据库的执行时间 - 备份数据库:可以选择指定的数据库备份,也可以备份所有的数据库 - 备份位置:可以选择存放在服务器磁盘,也可以选择你安装的相关存储插件,比如:阿里云OSS、七牛云存储、百度BOS、腾讯云COS等。如果选择服务器磁盘,默认的备份路径为/www/backup/database - 压缩密码:请牢记压缩密码,以免因压缩密码导致无法恢复和下载数据 - 备份提醒:设置消息通道,当备份失败时,可发送告警信息 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) > **注意** 当前功能暂不支持SQLServer、MongoDB、Redis、PgSQL备份 ::: - 任务名称:根据当前需要进行日志切割的网站名称自动命名 - 执行周期:根据实际情况选择日志切割的执行时间 - 切割日志:即备份保留数量,默认保存为180份,可以根据自己的实际情况更改 > **说明** - 只切分项目的访问日志,如需对项目日志进行切分,请前往【网站-**项目-项目日志】进行配置 - 日志切割后会在选择的目录下产生/history_backups文件夹,切割后的日志存储在这个文件夹中 ::: - 任务名称:根据备份的目录名称自动命名 - 执行周期:根据实际情况选择备份目录的执行时间 - 备份目录:自行选择需要备份的目录 - 备份位置:可以选择存放在服务器磁盘,也可以选择你安装的相关存储插件,比如:阿里云OSS、七牛云存储、百度BOS、腾讯云COS等。如果选择服务器磁盘,默认的备份路径为/www/backup/path - 备份保留数量:默认保存为3份,保留就近备份文件的数量,可以减少备份所使用的空间 - 备份提醒,设置消息通道,当备份失败时,可发送告警信息 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) - 排除规则,可选择一些文件或者目录不用备份 - 任务名称:根据查杀的站点名称自动命名 - 执行周期:根据实际情况选择查杀站点的执行时间 - 查杀站点:可以选择指定的站点,也可以查杀所有的站点 - 消息通道:设置消息通道,可将木马查杀的结果发送到你设置的消息通道 [配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) - 任务名称:根据所选时区自动命名 - 执行周期:根据实际情况选择同步时间的执行时间 - 时区选择:根据实际情况选择时区 > **说明** 默认从NTP服务器同步时间,失败时将同步bt.cn的服务器时间。 ::: - 任务名称:根据实际情况自定义,默认为释放内存 - 执行周期:根据实际情况选择同步时间的执行时间 > **提示** 释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行! ::: - 任务名称:根据需求自定义 - 执行周期:根据实际情况选择访问URL的执行时间 - URL地址:根据需要输入请求的URL地址 - User-Agent:根据需要输入请求的User-Agent - 任务名称:根据所选站点名称自动命名 - 执行周期:每天一次 - 站点;选择需要开启或者关闭的站点 - 开启时间:根据实际情况选择开启的时间 - 停止时间:根据实际情况选择停止的时间 - 任务名称:根据实际情况自定义,默认为日志清理 - 执行周期:根据实际情况选择日志清理的执行时间 - 清理类型:根据实际情况选择需要清理的日志类型 > **说明** 自定义选择的目录支持切割的日志类型有:.log、.txt、.out、.err、.log.1 ::: --- source: https://docs.bt.cn/user-guide/database/mysql/install-mysql.md.txt # 安装 MySQL > 在宝塔面板(BT Panel)「软件商店 → 运行环境」中安装 MySQL,选择极速安装或编译安装两种方式,含版本选择、磁盘 IO 与生产环境适用场景说明。 # 安装 MySQL 本文将为您介绍如何安装 MySQL 数据库。 ## 操作步骤 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`,并选择`运行环境`。 ![软件商店](https://docs.bt.cn/img/user-guide/site/install-webserver.png) 2. 在软件商店中找到并点击`MySQL`,点击安装 ![MySQL](https://docs.bt.cn/img/user-guide/database/install-mysql.png) 3. 在弹出的对话框中选择版本和安装方式。 ![安装方式](https://docs.bt.cn/img/user-guide/database/install-mysql-2.png) > **警告** MySQL编译安装方式极其消耗机器性能,普通云服务器请勿尝试,避免磁盘 IO 过高导致服务器宕机。 ::: > **说明** - 极速安装:安装时间极快,版本与稳定性略低于编译安装,适合快速部署测试 - 编译安装:安装时间较长,版本与稳定性最高,适合生产环境 ::: 4. 点击`极速安装`按钮,等待安装完成即可。 ![安装完成](https://docs.bt.cn/img/user-guide/database/install-mysql-3.png) --- source: https://docs.bt.cn/user-guide/database/sqlite/add-database-file.md.txt # 添加 SQL 数据库文件 > 在宝塔面板(BT Panel)数据库页面手动添加服务器内已存在的 SQLite (.db / .sqlite) 文件,使面板可识别、可视化查询与备份该 SQL 文件数据库。 # 添加 SQL 数据库文件 本文将指引您如何在宝塔面板添加 SQL 数据库文件 --- source: https://docs.bt.cn/user-guide/docker/compose/backup-restore.md.txt # Docker 容器编排备份与还原 > 宝塔面板 Docker Compose 容器编排备份与跨服务器迁移教程,以 WordPress + MySQL 为例演示从 CentOS 备份、下载还原点并在 Debian 12 上传还原的完整流程。 # Docker 容器编排备份与还原 本文介绍如何在宝塔面板中对 Docker 容器编排进行备份和还原操作,实现跨服务器迁移。 ## 适用场景 - 跨服务器迁移容器编排 - 备份重要的容器编排配置 - 快速复制容器编排到其他服务器 - 灾难恢复和数据保护 ## 示例说明 本教程以 WordPress + MySQL 为例,演示从 CentOS 系统备份,还原到 Debian 12 系统的完整流程。 ## 操作步骤 ### 一、备份容器编排 #### 1. 进入容器编排页面 点击左侧菜单栏的【Docker】→【容器编排】。 ![容器编排列表](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/compose-list.png) 可以看到当前正在运行的 WordPress 和 MySQL 容器编排。 #### 2. 点击备份按钮 在需要备份的容器编排右侧,点击【备份】按钮。 ![备份按钮](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/backup-button.png) #### 3. 创建备份 在弹出的备份窗口中,点击【点击备份】创建新的备份。 ![创建备份](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/create-backup.png) #### 4. 下载备份文件 备份创建完成后,选择要还原的备份点,点击【下载】按钮,将备份文件保存到本地。 ![下载备份](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/download-backup.png) :::tip 提示 MySQL 容器编排的备份操作步骤相同,请按同样方式操作。 ::: ### 二、还原容器编排 #### 1. 进入目标服务器 登录需要还原容器编排的目标服务器(本例中为 Debian 12 系统)。 进入【Docker】→【容器编排】页面,点击【添加容器编排】。 ![添加容器编排](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/add-compose.png) #### 2. 选择从备份创建 在创建方式中选择【从备份创建】,然后点击【上传备份】。 ![从备份创建](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/from-backup.png) #### 3. 上传备份文件 点击【上传文件】,选择之前下载到本地的备份文件,然后点击【开始上传】。 ![上传备份文件](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/upload-backup.png) #### 4. 创建容器编排 等待文件上传完成后,点击【创建】按钮。 ![创建容器编排](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/create-compose.png) #### 5. 确认创建 在弹出的确认窗口中,点击【确认创建】。 ![确认创建](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/confirm-create.png) :::info 说明 MySQL 容器编排也使用相同的还原步骤进行操作。 ::: ### 三、验证还原结果 #### 1. 查看容器编排列表 还原完成后,可以在容器编排列表中看到刚刚还原的 WordPress 和 MySQL。 ![还原完成](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/restore-complete.png) #### 2. 访问测试 进入【Docker】→【容器】页面,找到 WordPress 容器,点击访问按钮。 ![容器访问](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/container-access.png) #### 3. 验证数据完整性 访问 WordPress 网站,确认数据已成功还原。 ![WordPress 测试](https://docs.bt.cn/img/user-guide/docker/compose/backup-restore/wordpress-test.png) :::warning 域名解析 若 WordPress 使用域名访问,需要提前将域名解析到还原后的服务器 IP 地址。 ::: --- source: https://docs.bt.cn/user-guide/docker/deployment/welcome.md.txt # 什么是 Docker 应用商店 > 宝塔面板 9.2.0+ 推出的 Docker 应用商店介绍:支持一键部署 200+ Docker 项目,兼容几乎所有已安装 Docker 的服务器,接入官方与第三方服务商应用。 # 什么是应用商店 > **提示** **Docker商店是宝塔面板9.2.0版本推出的一个新功能,如需使用请先升级到宝塔面板9.2.0及以上版本** ::: Docker应用商店支持一键安装部署Docker项目,支持几乎所有安装了Docker的宝塔面板服务器 应用商店已上架200+应用,欢迎更多应用服务商和宝塔面板用户联系我们,一起丰富应用商店 --- source: https://docs.bt.cn/user-guide/docker/website/docker-website-tutorial.md.txt # Docker 网站部署教程·PHP/Java/Python/Go > 使用宝塔面板 Docker 管理器部署 PHP、Java、Python、Go 网站项目的实战教程,含 WordPress + MySQL 容器创建、项目文件上传、数据库连接与访问测试全流程。 # Docker 网站部署教程 本文将介绍如何使用 Docker 在宝塔面板中部署不同语言的网站项目,包括 PHP、Java、Python 和 Go 项目。 ## 准备环境 在开始之前,请确保您已经: - 安装了宝塔面板 - 在宝塔面板中安装了 Docker 管理器 ## PHP 项目部署 ### 创建 PHP 容器 1. 进入 **网站** > **运行环境** > 选择 **PHP**,这里以 WordPress 为例进行测试 ![创建PHP容器](https://docs.bt.cn/img/user-guide/docker/website/php/image-2025110509504585123.png) 2. 点击 **确认** 后,等待镜像拉取完成 3. 拉取完成后,选择 **创建网站** 并点击 **确认** ![创建网站](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106135437739.png) 4. 创建完成后测试访问 ![测试访问](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106135835076.png) :::info 说明 此时只是安装了 PHP 环境依赖,并未安装 WordPress,需要将 WordPress 文件上传到网站运行目录。 ::: ### 上传项目文件 网站运行目录位于 `/www/dk_project/网站名/`,将项目文件上传到此目录并解压 ![上传项目文件](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106143311070.png) ### 部署数据库 WordPress 需要 MySQL 数据库支持,可以在 Docker 中创建一个 MySQL 数据库容器 ![创建数据库容器](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106143502733.png) 通过面板数据库功能连接 MySQL 容器,并创建数据库,权限设置为 **所有人** ![连接数据库](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106143624990.png) ![创建数据库](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106143656145.png) ### 配置网站 修改 `wp-config-sample.php` 文件,也可以复制一份重命名为 `wp-config.php`,然后修改数据库连接配置 ![配置网站](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106144130286.png) ### 测试访问 配置完成后,访问网站测试部署效果 ![测试访问](https://docs.bt.cn/img/user-guide/docker/website/php/image-20251106144830874.png) ## Java 项目部署 ### 上传项目文件 将 Java 项目文件上传到服务器 ![上传Java项目](https://docs.bt.cn/img/user-guide/docker/website/java/112548gssjuqsxjx5n2zz7.png) ### 配置部署环境 配置 Java 项目的部署参数 ![配置部署](https://docs.bt.cn/img/user-guide/docker/website/java/image-20251108145540140.png) ### 创建网站 完成配置后创建网站 ![创建Java网站](https://docs.bt.cn/img/user-guide/docker/website/java/112837ha2shhafw3p2wzi9.png) ### 访问测试 测试 Java 网站是否正常运行 ![测试Java网站](https://docs.bt.cn/img/user-guide/docker/website/java/112908t2uoaumjqauavozv.png) ## Python 项目部署 ### 上传项目文件 将 Python 项目文件上传到服务器 ![上传Python项目](https://docs.bt.cn/img/user-guide/docker/website/python/image-20251107174622760.png) ### 配置部署环境 进入 **Docker** > **运行环境** > **Python** > **创建** ![配置Python环境](https://docs.bt.cn/img/user-guide/docker/website/python/image-20251107174918346.png) ### 创建网站 配置完成后创建网站 ![创建Python网站](https://docs.bt.cn/img/user-guide/docker/website/python/image-20251107175022763.png) 填写域名或 IP 地址 ![填写域名](https://docs.bt.cn/img/user-guide/docker/website/python/image-20251107175114874.png) ### 访问测试 测试 Python 网站是否正常运行 ![测试Python网站](https://docs.bt.cn/img/user-guide/docker/website/python/image-20251107175222025.png) ## Go 项目部署 ### 上传项目文件 将 Go 项目上传到宝塔面板 ![上传Go项目](https://docs.bt.cn/img/user-guide/docker/website/go/image-20251107180426617.png) ### 配置部署环境 选择 **Docker** > **网站** > **运行环境** > **Go** > **创建** ![配置Go环境](https://docs.bt.cn/img/user-guide/docker/website/go/image-20251107180402847.png) ### 创建网站 构建完成后选择创建网站 ![创建Go网站](https://docs.bt.cn/img/user-guide/docker/website/go/image-20251107182637546.png) ### 访问测试 测试 Go 网站是否正常运行 ![测试Go网站](https://docs.bt.cn/img/user-guide/docker/website/go/image-20251107182715939.png) ## 常见问题 ### 为什么要使用 Docker? 使用 Docker 可以: - 实现环境一致性,解决"在我这能跑"的问题 - 隔离应用资源,避免冲突 - 快速部署且跨平台兼容 - 易于扩缩容,大幅简化运维,降低管理成本 ### 使用 Docker 部署网站有什么好处? 将多语言项目部署到 Docker 的好处: - 统一 PHP、Java 等的运行环境,解决依赖冲突 - 部署快速且跨平台一致 - 资源隔离更安全 - 易于扩缩容 - 能大幅降低运维复杂度与成本 ### 这个教程适合哪些用户? 本教程适合想要使用 Docker 模板快速创建网站的用户,特别是: - 需要部署多语言项目的开发者 - 希望简化部署流程的运维人员 - 想要学习 Docker 网站部署的初学者 --- source: https://docs.bt.cn/user-guide/domain/overview.md.txt # 宝塔面板域名管理与托管 > 宝塔面板(BT Panel)域名管理模块使用指南,提供域名注册、域名托管、DNS 解析与转出转入一体化服务,配合堡塔域名服务实现面板内一站式域名运维。 # 域名管理 本文将为您介绍如何在宝塔面板中使用域名注册和域名托管功能。 ## 功能概述 宝塔面板提供完整的域名管理功能,包括: - **域名注册**:一站式域名查询和注册服务 - **域名托管**:DNS 解析托管和管理 - **Whois查询**:域名信息查询 - **解析管理**:域名解析记录管理 ## 操作入口 点击左侧菜单栏的 **域名** 进入域名管理模块 ![域名管理入口](https://docs.bt.cn/img/domain/overview/overview.png) ## 主要功能 ### 域名注册 点击 **域名注册**,可以: - 查看已注册的域名列表 - 注册新域名 - 进行 Whois 信息查询 - 修改域名解析 IP - 刷新本地缓存 #### 注册新域名 在输入框中输入想要注册的域名,点击 **立即注册**,进入域名注册流程 ![域名注册](https://docs.bt.cn/img/domain/overview/overview-5.png) #### Whois 查询 点击 **Whois查询**,输入要查询的域名,可以快速查询域名的 Whois 信息 ![Whois查询](https://docs.bt.cn/img/domain/overview/overview-2.png) #### 修改解析 IP 可以修改域名的解析 IP 地址 ![修改解析IP](https://docs.bt.cn/img/domain/overview/overview-4.png) ### 域名托管 点击 **域名托管** 进入托管管理页面 域名托管可以将域名的 DNS 域名解析服务托管到宝塔面板上进行集中化管理 ![域名托管](https://docs.bt.cn/img/domain/overview/overview-3.png) ## 相关文档 - [域名注册使用教程](./domain-registration.md) - [域名托管使用教程](./domain-hosting.md) --- source: https://docs.bt.cn/user-guide/ftp/add-ftp-user.md.txt # 宝塔面板添加 FTP 账号与站点 > 介绍如何在宝塔面板(BT Panel)中添加 FTP 用户,包含用户名与密码设置、添加根目录、访问权限与限速设置,适用于多用户协作上传下载与服务器文件远程管理场景。 # 添加 FTP 本文将指引您如何在宝塔面板添加 FTP。 ## 操作步骤 1. 登录宝塔面板,点击左侧菜单栏的 **FTP**,进入 FTP 管理页面; ![FTP 管理页面](https://docs.bt.cn/img/user-guide/ftp/ftp.png) 2. 点击 **添加FTP** 按钮,进入添加 FTP 用户页面; ![添加 FTP 用户页面](https://docs.bt.cn/img/user-guide/ftp/add-ftp-user.png) 3. 在添加 FTP 用户页面,填写 FTP 用户信息,点击 **提交** 按钮,完成添加; ![填写 FTP 用户信息](https://docs.bt.cn/img/user-guide/ftp/add-ftp-user-info.png) > **说明** - 用户名:FTP账号的名称,自定义。 - 密码:登录FTP的密码,默认是随机生成的密码,也可自定义。 - 根目录:默认为/www/wwwroot/为站点目录,可自己选择FTP目录地址。 ::: > **提示** 若FTP无法正常连接,请根据以下说明排除错误(包括但不局限于) - 注意内网IP和外网IP - 检查ftp服务是否启动 (面板首页即可看到) - 检查防火墙20端口 ftp 21端口及被动端口39000 - 40000是否放行(宝塔默认已放行) 若是腾讯云/阿里云等服务器还需检查安全组 [云服务器厂商放行安全组教程](https://docs.bt.cn/getting-started/allow-panel-port-access#%E5%B8%B8%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8E%82%E5%95%86%E7%9A%84%E6%94%BE%E8%A1%8C%E6%96%B9%E6%B3%95) - 是否主动/被动模式都不能连接 - 新建一个用户看是否能连接 - 更换ftp客户端使用flashfxp 在设置中关闭feat命令尝试是否能连接 ::: --- source: https://docs.bt.cn/user-guide/geo/geo-docs.md.txt # 使用教程 > 本文详细介绍宝塔面板 GEO 优化插件的完整使用流程,包括品牌分析、关键词拓词、AI 内容创作和发布监控四大核心功能,帮助品牌在 AI 搜索时代获得更好的曝光和推荐。 # 使用教程 > **GEO(Generative Engine Optimization)** = 生成式引擎优化 > 简单说就是:让你的品牌在 AI 搜索里被更多人看到、说得更好 --- ## 一、什么是 GEO 优化? 以前我们做 SEO,是为了让谷歌/百度搜到我们。 现在大家用 豆包、千问这类AI工具 问问题,品牌得在 AI 的回答里出现——这就是 GEO。 GEO 优化的核心逻辑: ``` 填写品牌信息 → 分析现状 → 创作内容 → 发布监控 → 持续迭代 ``` 三个关键点: 1. **品牌信息要准确** —— AI 得先知道你是谁 2. **内容质量要过关** —— 垃圾内容 AI 不会引用 3. **监控数据要看** —— 知道什么有效,继续放大 **宝塔这个 GEO 插件干的事:** - 检测你的品牌在各大 AI 平台里的“存在感” - 帮你创作更容易被 AI 引用和推荐的内容 - 监控已发布文章在 AI 搜索里的表现 --- ## 二、安装插件 1. 登录宝塔面板 2. 左侧菜单找到 **应用市场** 或 **插件** 3. 搜索框输入 `GEO` 或 `GEO 优化` 4. 点击 **安装** 按钮 ![安装插件](https://docs.bt.cn/img/user-guide/geo/geo_1.png) *图:在应用市场搜索并安装 GEO 优化插件* --- ## 三、品牌分析(第一步) 装好后打开插件,第一件事是告诉 AI"你是谁"。 ### 操作步骤 1. 点击 **品牌分析** 标签页 2. 填写以下信息: - **品牌名称**:你的公司/产品名称(例:OpenClaw) - **官网链接**:品牌官方网站 URL - **所属行业**:选择或手动输入(例:AI 工具、软件开发) 3. 勾选需要检测的 AI 平台: - 豆包 - kimi - deepseek - 其他主流 AI 搜索平台 4. 点击 **开始分析** ![品牌分析](https://docs.bt.cn/img/user-guide/geo/geo_2.png) *图:填写品牌信息并选择 AI 平台* ### 分析报告解读 分析完成后会看到以下指标: ![品牌分析2](https://docs.bt.cn/img/user-guide/geo/geo_3.png) | 指标 | 说明 | 理想值 | |------|------|--------| | **搜索指数** | 该品牌在 AI 搜索中被提及的频率 | 越高越好 | | **正面占比** | AI 提到品牌时的正面评价比例 | >80% | | **平均可信度** | AI 认为该品牌信息的可靠程度 | >7 分 | | **排名** | 在同类品牌中的 AI 搜索排名 | 前 3 名 | > 💡 **建议**:如果分数偏低,不用慌。接下来用"内容创作"功能持续输出高质量内容,分数会慢慢涨。 --- ## 四、内容创作(核心功能) 这是插件的主力功能,分三步走:**选词 → 选题 → 写稿** ### 4.1 关键词设置 **方式一:手动填写** - 直接输入你的核心关键词 + 公司名称 - 例:`AI 助手 OpenClaw`、`自动化代理 内容总监` **方式二:AI 拓词** - 输入一个种子关键词 + 公司名称 - 点击 **AI 拓词**,系统会自动扩展相关长尾词 - 例:输入 `AI 助手` → 扩展出 `AI 助手怎么用`、`AI 助手哪个好用`、`AI 助手能做什么` ![关键词设置](https://docs.bt.cn/img/user-guide/geo/geo_4.png) *图:手动填写或 AI 拓词* ### 4.2 选题生成 **方式一:手动填写** - 自己确定要写的主题 - 适合已经有明确内容规划的情况 **方式二:AI 拓词选题** - 基于已选关键词,让 AI 生成选题列表 - 系统会给出多个角度:教程类、对比类、案例类、观点类 - 勾选你认可的选题,进入下一步 ![选题生成](https://docs.bt.cn/img/user-guide/geo/geo_5.png) *图:AI 生成的选题列表* ### 4.3 内容创作 勾选好关键词和选题后,点击 **创作** 按钮。 **可配置选项:** 1. **文章风格** - 技术教程(适合文档、踩坑记录) - 观点评论(适合行业分析、趋势解读) - 产品评测(适合对比、推荐类内容) - 故事叙述(适合案例、经历分享) 2. **行业模板** - 选择你的行业,AI 会套用对应的表达方式和专业术语 - 例:选择"软件开发" → 输出会包含代码示例、技术栈说明 3. **额外要求** - 在这里写你的特殊需求 - 例:"不要用太正式的表达"、"加入个人经历"、"字数控制在 2000 字以内" ![内容创作](https://docs.bt.cn/img/user-guide/geo/geo_6.png) *图:选择风格和模板,填写额外要求* **生成后:** - 文章会出现在下方预览区 - 可以在线编辑修改 - 支持一键复制到剪贴板,方便发布到其他平台 --- ## 五、发布中心(监控效果) > 内容发出去不是结束,是开始。这一步监控你的文章在 AI 搜索里的表现。 ### 添加文章监控 1. 点击 **发布中心** 标签页 2. 点击 **添加监控** 3. 填写: - **文章标题**:你发布的内容标题 - **文章 URL**:发布后的链接(公众号、博客、知乎等) 4. 点击 **确认** ![发布中心](https://docs.bt.cn/img/user-guide/geo/geo_7.png) *图:添加文章监控* ### 监控指标 系统会定期检查以下数据: - **被引用次数**:有多少 AI 搜索在回答里引用了你的文章 - **引用来源**:哪些 AI 平台引用了 - **文章质量评分**:基于引用频率、停留时间等维度 - **排名变化**:该主题下你的文章在 AI 搜索中的排名趋势 > 📊 **使用建议**:每周看一次监控数据。如果某篇文章被大量引用,说明选题和表达都对了——可以顺着这个方向继续写。 --- ## 六、常见问题 ### Q1:品牌分析分数很低怎么办? **A**:新品牌都这样。持续用内容创作功能输出高质量文章,1-2 个月后分数会明显提升。GEO 是长期工程,不是速成。 ### Q2:AI 生成的内容能用吗? **A**:建议作为初稿。AI 擅长搭框架、给信息,但"人味"和"真实经历"得你自己加。改一改再发,效果更好。 ### Q3:监控多久更新一次? **A**:默认每3~4天更新一次,目前只支持手动监控,每次监控需要消耗算力额度。 ### Q4:支持哪些 AI 平台? **A**:目前主流的都支持:豆包、千问、kimi、deepseek 等国内知名平台。后续会持续增加。 --- --- source: https://docs.bt.cn/user-guide/home/status.md.txt # 宝塔面板首页服务器概览与状态 > 介绍宝塔面板(BT Panel)首页「概览&状态」卡片含义,包括服务器 CPU、内存、负载、磁盘、网络、进程与云服务器信息,以及如何查看及诊断服务器运行状况。 # 概览&状态 ## 操作场景 您可在面板首页快速查看`服务器负载状态`、`CPU使用率`、`内存使用率`、`硬盘使用率`、`网络流量`、`磁盘IO`等信息。 ## 操作步骤 登录宝塔面板后,在左侧导航栏中点击`首页`,即可查看状态概览。 查看当前服务器负载状态。 ![负载状态](https://docs.bt.cn/img/user-guide/home/status.png) :::info[说明] 1. 宝塔的负载状态图表中百分比的含意: - 50% 以下 - 此时服务器正以低负载状态运行 - 50 ~ 90% - 服务器负载正常,用户的请求可以及时得到服务器响应 - 90% ~ 100% - 表示服务器资源已耗尽,无法及时响应用户请求,需尽快排查项目是否运行异常,或增加服务器配置 2. 影响服务器负载的因素: - CPU使用率 - 线程数量 - IO使用率 - swap使用率 - 因宿主机负载过高导致资源分配不足 ::: 展示当前服务器的CPU使用率、核心数量、型号等基础信息。 ![CPU使用率](https://docs.bt.cn/img/user-guide/home/status-2.png) 在此可查看当前服务器的内存使用率、内存总量、内存使用量、buff\cache等基础信息。 ![内存使用率](https://docs.bt.cn/img/user-guide/home/status-3.png) 展示当前服务器的硬盘挂载点、文件系统、类型、磁盘大小、inode信息等基础信息。 ![硬盘使用率](https://docs.bt.cn/img/user-guide/home/status-4.png) 展示当前服务器的网卡流量信息,包括上行、下行、总发送、总接收等基础信息。 ![网络流量](https://docs.bt.cn/img/user-guide/home/status-5.png) :::info[说明] - 总发送:上次开机或重启后,服务器发送的总流量,重启后归零 - 总接收:上次开机或重启后,服务器接收的总流量,重启后归零 ::: 展示当前服务器的磁盘IO信息,包括读写次数、读写速度、IO延迟等基础信息。 ![磁盘IO](https://docs.bt.cn/img/user-guide/home/status-6.png) --- source: https://docs.bt.cn/user-guide/security/firewall/disabled-ping.md.txt # 禁 Ping > 在宝塔面板系统防火墙一键开启禁 Ping,让服务器不响应 ICMP 请求,防止外部频繁探测与扫描导致资源消耗与信息泄露。 # 禁Ping 本文将介绍如何启用禁Ping功能。 ## 操作步骤 点击禁Ping开关按钮,即可启用或关闭禁Ping功能。 ![禁Ping](https://docs.bt.cn/img/user-guide/security/disabled-ping.png) ## FAQ A:为什么要禁Ping? Q:防止用户频繁PING服务器而导致服务器性能下降。 --- source: https://docs.bt.cn/user-guide/security/firewall/start.md.txt # 启用系统防火墙 > 在宝塔面板系统防火墙模块通过一键开关启用或关闭 Linux 系统防火墙(firewalld 或 iptables),快速生效服务器边界访问控制能力,作为后续放行端口、配置规则的前置步骤。 # 启用防火墙 本文将介绍如何启用防火墙。 ## 操作步骤 点击防火墙开关按钮,即可启用或关闭防火墙。 ![启用防火墙](https://docs.bt.cn/img/user-guide/security/enable-firewall.png) --- source: https://docs.bt.cn/user-guide/security/safe-detect/safe-detect.md.txt # Linux 主机安全检测 > 宝塔面板 Linux 安全检测一键运行十二项检查:账号弱口令、SSHD 漏洞、后门、挖矿进程、Rootkit、历史命令与系统日志异常,辅助黑客入侵溯源。 # 安全检测 “安全检测”模块旨在对Linux主机排查时提供便利,支持系统安全配置、常见挖矿进程、恶意扫描进程等安全项检测,实现主机侧的自动全面化检测,方便后续进行黑客攻击路径溯源,排查入侵痕迹,定位恶意样本。 ## 操作步骤 点击“安全检测”按钮,即可开始安全检测。 ![安全检测](https://docs.bt.cn/img/user-guide/security/safe-detect.png) 共有十二个安全检测项,分别为系统账户检测、SSHD远程服务检测、重要文件权限及属性检测、重点软件检测、网站权限检测、后门检测、恶意进程检测、历史命令检测、日志排查、rootkit检测以及其他项目检测。 ![安全检测项](https://docs.bt.cn/img/user-guide/security/safe-detect-item.png) ## 检测项介绍 ### 系统账户检测 检测非root的超级用户、空口令用户、用户权限异常以及账户密码策略不合理等问题 ![系统账户检测](https://docs.bt.cn/img/user-guide/security/safe-detect-system-account.png) ### SSHD远程服务检测 检测端口、当前版本是否存在漏洞、是否允许空密码登录 ![SSHD远程服务检测](https://docs.bt.cn/img/user-guide/security/safe-detect-sshd.png) ### 重要文件权限及属性检测 重要系统执行文件权限/属性是否正常 ![重要文件权限及属性检测](https://docs.bt.cn/img/user-guide/security/safe-detect-file.png) ### 重点软件检测 主要针对Apache、Nginx、Redis、FTP、MySQL这五个软件进行安全扫描。检测是否存在弱口令、当前软件版本是否存在漏洞。 ![重点软件检测](https://docs.bt.cn/img/user-guide/security/safe-detect-software.png) ### 后门检测 检测内容包含有SSH Server wrapper检测、主机 Sudoer检测、alias检测、Setuid检测、主机计划任务内容检测、环境变量检测、系统启动服务检测、inetd配置文件检测、xinetd配置文件检测、预加载配置文件检测。 ![后门检测](https://docs.bt.cn/img/user-guide/security/safe-detect-backdoor.png) ### 恶意进程检测 检测内容包含进程文件是否存在恶意代码、隐藏进程扫描、挖矿进程扫描。 ![恶意进程检测](https://docs.bt.cn/img/user-guide/security/safe-detect-malicious-process.png) ### 历史命令检测 针对主机的历史命令进行安全排查,查看主机历史命令中是否存在恶意操作。 ![历史命令检测](https://docs.bt.cn/img/user-guide/security/safe-detect-history-command.png) ### 日志排查 通过对系统日志的详细分析,我们可以追踪到系统日志中存在恶意行为或者异常情况。 ![日志排查](https://docs.bt.cn/img/user-guide/security/safe-detect-log.png) ### rootkit检测 该检测项能够检测各种已知的rootkit特征码,并针对一些常用程序文件进行安全扫描,进而本服务器是否已经感染rootkit。 ![rootkit检测](https://docs.bt.cn/img/user-guide/security/safe-detect-rookit.png) ### 其他项目检测 检测是否开启防火墙、umask安全配置检测。 ![其他项目检测](https://docs.bt.cn/img/user-guide/security/safe-detect-other.png) ## FAQ Q:什么是环境变量?他有什么作用? A:在Linux操作系统中,环境变量是一组用于存储系统和应用程序信息的变量;环境变量会在系统开启的时候自动加载到操作系统中,并且可以在整个操作系统中访问。 Q:什么是后门攻击? A:一种绕过软件的安全性控制,从比较隐秘的通道获取对程序或系统访问权的黑客方法。 Q:什么是Rootkit? A:一款Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,从而让攻击者保住权限,以使它在任何时候都可以使用root 权限登录到别人的系统上。 --- source: https://docs.bt.cn/user-guide/security/server-safe/overview.md.txt # 服务器安全概览 > 宝塔面板服务器安全模块提供综合安全评分,包含 SSH 防爆破、root 登录限制、密码复杂度、面板 SSL、动态口令与登录告警等检查项,并展示 SSH 登录记录供追溯异常。 # 服务器安全概览 ## 功能介绍 服务器安全模块提供全方位的服务器安全检测和防护功能,帮助您及时发现和修复安全风险,保障服务器的安全运行。 ## 安全评分 系统会根据各项安全配置的状态,给出综合的安全评分(满分100分),并显示安全状态: ![安全评分](https://docs.bt.cn/img/user-guide/security/security-score.png) - **不安全**:安全评分较低,存在多项安全风险 - **一般**:安全评分中等,部分安全配置需要优化 - **安全**:安全评分较高,安全配置良好 :::tip 提示 建议定期查看安全评分,及时处理安全风险项,保持评分在80分以上。 ::: ## 安全检测项 ### SSH相关安全 | 检测项 | 说明 | |--------|------| | SSH默认端口 | 检测是否修改SSH默认端口,提高服务器安全性 | | root登录设置 | 检测是否允许root用户登录 | | SSH防爆破 | 检测是否开启SSH暴力破解防护 | | SSH登录告警 | 检测是否开启SSH登录告警通知 | ### 密码安全 | 检测项 | 说明 | |--------|------| | 密码复杂度策略 | 检测密码复杂度要求配置 | | 密码长度限制 | 检测密码最小长度要求 | ### 面板安全 | 检测项 | 说明 | |--------|------| | 面板开启SSL | 检测面板是否启用HTTPS加密访问 | | 面板登录告警 | 检测是否开启面板登录告警通知 | | 面板登录动态口令认证 | 检测是否启用TOTP动态口令增强安全性 | | 未登录响应状态码 | 检测未登录时的HTTP响应状态码设置 | ## 登录记录 ![SSH登录记录](https://docs.bt.cn/img/user-guide/security/ssh-login-record.png) 显示最近的SSH登录尝试记录,包括: - **IP地址**:登录来源IP - **登录时间**:登录尝试的时间 - **端口**:SSH连接端口 - **状态**:登录成功或失败 - **用户**:登录的用户名 :::warning 安全提醒 如发现异常的SSH登录成功记录,请立即: 1. 检查是否为非授权访问 2. 修改SSH端口和密码 3. 启用SSH防爆破功能 4. 配置SSH登录告警 ::: 显示最近的宝塔面板登录记录,包括: - **IP地址**:登录来源IP - **登录时间**:登录时间 - **端口**:面板访问端口 - **状态**:登录成功或失败 - **浏览器**:使用的浏览器类型 ## 快捷操作 在安全概览页面,您可以快速进行以下操作: 1. **安装SSH爆破模块**:一键安装SSH防爆破插件 2. **安全配置**:点击"安全配置"按钮,快速设置各项安全选项 ## 最佳实践 1. **修改SSH默认端口**:避免使用22端口 2. **禁用root登录**或使用密钥认证 3. **启用SSH防爆破**:防止暴力破解 4. **设置复杂密码**:使用强密码策略 5. **开启面板SSL**:使用HTTPS访问面板 6. **启用动态口令**:为面板登录增加TOTP验证 :::info 说明 定期检查安全评分和登录记录,保持良好的安全习惯,是保障服务器安全的关键。 ::: --- source: https://docs.bt.cn/user-guide/security/ssh/basic-settings.md.txt # SSH 基础设置 > 在宝塔面板中修改 SSH 端口、启用/禁用 root 登录与密码/密钥登录、开启 SSH 登录告警,并查看实时登录成功与失败记录,加固远程运维访问。 # 基础设置 ## SSH开关 点击SSH开关按钮,即可启用或关闭SSH。 ![SSH开关](https://docs.bt.cn/img/user-guide/security/basic-settings-ssh.png) ## SSH登录详情 页面展示 SSH 登录的成功和失败次数统计,如 “成功:114514 / 失败:1919810”。点击 “成功” 或 “失败” 按钮,可查看具体的登录成功或失败日志。 ![SSH登录详情](https://docs.bt.cn/img/user-guide/security/basic-settings-ssh-login.png) ## 基础设置 ![基础设置](https://docs.bt.cn/img/user-guide/security/basic-settings.png) 1. **SSH端口**:默认端口为22,用户可根据需求修改。修改前需检查目标端口是否被占用以及是否已开放。 2. **root登录设置** - 默认设置为“yes - 可密码和密钥登录”。 - 提供多种选项:”yes - 可密码和密钥登录””no - 禁止登录””without-password - 只能密钥登录””forced-commands-only - 只能执行命令”,用户可自定义修改。 3. **SSH密码登录**:默认开启,关闭后无法使用密码登录系统。 4. **SSH密钥登录**:默认关闭,开启后可使用密钥登录。点击“下载”按钮,可将密钥下载至本地。 5. **SSH登录告警** - 设置登录告警后,当SSH登录出现异常时,系统会实时推送告警消息。 - 告警通道包括微信公众号、邮箱、钉钉、企业微信、飞书。目前若未配置告警通知,则无法正常接收告警消息。 ## 登录方式对比 ### 密码登录 基于密码进行登录验证,需要用户记住复杂密码。当管理的机器数量较多时,密码管理难度较大。 ### 密钥登录 支持免密登录,便于对多台被连接机器进行批量化管理,能有效减轻运维人员的工作负担,安全性相对更高,推荐使用。 ## 操作注意事项 1. 修改SSH端口时,务必提前检查端口占用和开放情况,避免因端口冲突或未开放导致服务异常。[添加端口规则](https://docs.bt.cn/user-guide/security/firewall/port-rule#%E6%B7%BB%E5%8A%A0%E7%AB%AF%E5%8F%A3%E8%A7%84%E5%88%99) 2. 调整登录设置(如root登录设置、密码登录和密钥登录状态)时,需谨慎操作,确保系统访问的合理性和安全性,避免因错误配置造成无法登录系统的情况。 3. 若要使用SSH登录告警功能,需提前配置好相应的告警通知渠道,确保告警消息能及时准确推送。[配置告警消息通道](https://docs.bt.cn/user-guide/config/alarm/alarm-settings#%E9%85%8D%E7%BD%AE%E5%91%8A%E8%AD%A6%E6%B6%88%E6%81%AF%E9%80%9A%E9%81%93) --- source: https://docs.bt.cn/user-guide/site/install-webserver.md.txt # 宝塔面板安装 Web 服务器(Nginx / Apache) > 介绍如何在宝塔面板(BT Panel)中安装 Nginx、Apache、PHP、MySQL 等 Web 服务器与运行环境,包含一键 LNMP/LEMP/LAMP 选择、版本选型、编译安装与快速安装差异。 # 安装 Web 服务器 ## 操作场景 本文将指导您如何安装 Nginx 或 Apache Web 服务器。 ## 操作指南 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`,并选择`运行环境`。 ![软件商店](https://docs.bt.cn/img/user-guide/site/install-webserver.png) 2. 在列表中找到`Nginx`或`Apache`,点击`安装`。 ![安装](https://docs.bt.cn/img/user-guide/site/install-webserver-2.png) > **说明** - [Nginx](https://nginx.org):轻量级,占有内存少,并发能力强(可选Tengine/openresty) - [Apache](https://httpd.apache.org):世界排名第一,快速、可靠并且可通过简单的API扩充 ::: 3. 在弹出的对话框中,选择需要安装的版本,和安装方式。 ![安装方式](https://docs.bt.cn/img/user-guide/site/install-webserver-3.png) 安装时间极快,版本与稳定性略低于编译安装,适合快速部署测试 1. 选择版本后,点击快速安装 ![快速安装](https://docs.bt.cn/img/user-guide/site/install-webserver-4.png) 2. 等待面板执行安装程序 ![安装完成](https://docs.bt.cn/img/user-guide/site/install-webserver-5.png) 3. 等待安装完成即可使用 安装时间较长,性能最大化,适合生产环境 1. 选择版本后,点击编译安装 ![编译安装](https://docs.bt.cn/img/user-guide/site/install-webserver-6.png) 2. 如需要添加自定义模块,请点击`添加自定义模块` ![添加自定义模块](https://docs.bt.cn/img/user-guide/site/install-webserver-7.png) :::info[说明] ![自定义模块](https://docs.bt.cn/img/user-guide/site/install-webserver-8.png) - 模块名称:自定义模块的名称,如brotli - 模块描述:自定义模块描述,可忽略 - 模块参数:需要添加的模块参数,如`--add-module=/www/server/nginx/src/ngx_brotli` - 前置脚本:在编译前执行的shell脚本内容,通常为第三方模块的依赖安装和源码下载等前置准备,默认在`/www/server/nginx/src/`路径下执行,执行完会自动删除 ::: :::danger[警告] 如您前置脚本需要从Github等网站下载源码,请自行考虑网络环境是否稳定,如下载失败将会导致安装失败。 ::: 3. 确认完信息后,点击`提交并安装` ![提交并安装](https://docs.bt.cn/img/user-guide/site/install-webserver-9.png) 4. 等待面板执行安装程序 ![安装完成](https://docs.bt.cn/img/user-guide/site/install-webserver-5.png) 5. 等待安装完成即可使用 --- source: https://docs.bt.cn/user-guide/site/php/setup-env.md.txt # 安装 PHP 运行环境 > 在宝塔面板软件商店「运行环境」中安装 PHP,选择快速安装或编译安装两种方式,灵活部署多个 PHP 版本供不同站点使用,后期可拓展常用扩展。 # 安装 PHP 环境 ## 操作场景 本文将指导您安装 PHP 环境,以支持 PHP 项目运行。 ## 操作步骤 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`,并选择`运行环境`。 ![软件商店](https://docs.bt.cn/img/user-guide/site/install-webserver.png) 2. 在软件商店中找到并点击`PHP`,点击安装 ![PHP](https://docs.bt.cn/img/user-guide/site/setup-env.png) 3. 在弹出的对话框中选择版本和安装方式。 ![安装方式](https://docs.bt.cn/img/user-guide/site/setup-env-2.png) > **说明** - 快速安装:安装时间极快,版本与稳定性略低于编译安装,适合快速部署测试 - 编译安装:安装时间较长,版本与稳定性最高,适合生产环境 ::: 4. 点击`快速安装`按钮,等待安装完成即可。 ![安装完成](https://docs.bt.cn/img/user-guide/site/setup-env-3.png) > **说明** 常用扩展后期可在PHP设置中安装,所以推荐使用快速安装的方式。 ::: --- source: https://docs.bt.cn/user-guide/site/php/site-config/domain-management.md.txt # 站点域名绑定管理 > 在宝塔面板为已创建站点添加、修改、删除绑定域名,支持多域名、泛解析与自定义端口绑定,启用后请同步在 DNS 服务商添加解析记录。 # 域名管理 本文将指引您如何在已创建的站点中管理绑定的域名 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的域名管理窗口中,您可对域名进行添加、删除、修改等操作。 ![添加域名](https://docs.bt.cn/img/user-guide/site/add-domain.png) > **提示** 如需添加域名,请换行填写,每行一个域名,默认为80端口 - IP地址格式`192.168.1.199` - 泛解析添加方法`*.example.com` - 如另加端口格式为`www.example.com:88` 添加完域名后请务必前往您域名的 DNS 解析服务商添加解析记录 ::: --- source: https://docs.bt.cn/user-guide/soft/install.md.txt # 宝塔面板软件商店一键安装软件 > 介绍如何在宝塔面板(BT Panel)软件商店中一键安装 Nginx、Apache、MySQL、PHP、Docker、Node.js 与业务插件等运行环境与应用,含版本选择、编译/极速安装与依赖处理。 # 安装软件 ## 操作场景 本文将为您介绍如何在宝塔面板中安装软件。 ## 操作指南 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`。 ![软件商店](https://docs.bt.cn/img/user-guide/soft/soft-sidebar.png) 2. 在软件商店中查找您需要安装的软件,点击右侧的`安装`进入软件详情页。 ![软件列表](https://docs.bt.cn/img/user-guide/soft/soft-softlist.png) 3. 在软件详情页中,点击`立即安装`按钮开始安装软件。 ![软件安装页](https://docs.bt.cn/img/user-guide/soft/soft-softinstall.png) 4. 等待软件安装完成。 ![软件安装过程](https://docs.bt.cn/img/user-guide/soft/soft-softinstalling.png) 5. 安装完成后,可在软件商店中的`已安装`找到安装好的应用。 ![安装完使用](https://docs.bt.cn/img/user-guide/soft/soft-softinstalled.png) --- source: https://docs.bt.cn/user-guide/soft/uninstall.md.txt # 卸载软件 > 在宝塔面板软件商店「已安装」列表中定位 MySQL、Nginx、PHP 等运行环境与插件并一键卸载,适用于清理不再使用的组件、释放磁盘与内存资源、解决版本冲突等场景。 # 卸载软件 ## 操作场景 本文将为您介绍如何在宝塔面板中卸载软件。 ## 操作指南 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`。 ![软件商店](https://docs.bt.cn/img/user-guide/soft/soft-sidebar.png) 2. 在软件商店中查找您需要卸载的软件,可以点击`已安装`标签,快速找到需要卸载的软件。 ![已安装软件列表](https://docs.bt.cn/img/user-guide/soft/soft-softinstalled.png) 3. 在软件详情页中,点击`卸载`按钮开始卸载软件。 ![软件卸载页](https://docs.bt.cn/img/user-guide/soft/soft-softuninstall.png) 4. 软件卸载完成。 ![卸载完成提示](https://docs.bt.cn/img/user-guide/soft/soft-softuninstallsuccess.png) --- source: https://docs.bt.cn/user-guide/ssl/certificate.md.txt # 宝塔面板 SSL 证书申请与管理 > 介绍如何在宝塔面板(BT Panel)中申请、续签、上传与一键部署 SSL/HTTPS 证书,支持 Let's Encrypt、LiteSSL、阿里云 / 腾讯云 / TrustAsia 等多品牌证书,含证书同步与多平台部署。 # 证书管理 本文将介绍证书管理的相关内容。 证书被分为了四类,分别是:商用SSL、测试证书、Let's Encrypt和其他证书,关于这些证书的介绍以及申请流程可以参考 [证书类型](https://docs.bt.cn/user-guide/site/php/site-config/ssl#%E8%AF%81%E4%B9%A6%E7%B1%BB%E5%9E%8B) 。 ## 上传证书 1. 进入面板,点击左侧菜单栏的 **SSL**,进入证书管理页面; ![侧边栏-SSL](https://docs.bt.cn/img/user-guide/ssl/sidebar-ssl.png) 2. 点击 **其他证书** 选项卡,进入证书列表页面; ![证书列表](https://docs.bt.cn/img/user-guide/ssl/certificate-list.png) 3. 点击 **上传证书** 按钮,进入上传证书页面; ![上传证书](https://docs.bt.cn/img/user-guide/ssl/upload-certificate.png) 4. 上传证书或填写证书内容,点击 **确定** 按钮,完成证书上传; > **提示** 支持拖拽证书文件上传,并自动识别。 ::: ![上传证书](https://docs.bt.cn/img/user-guide/ssl/upload-certificate-2.png) --- source: https://docs.bt.cn/user-guide/xterm/index.md.txt # 宝塔面板在线 SSH 终端与 Web Shell > 介绍宝塔面板(BT Panel)内置的在线 SSH 终端(Web Shell / xterm)使用方法,无需本地客户端即可在浏览器中连接服务器,执行命令、传输文件与查看进程。 # 终端 ## 操作场景 本文将为您介绍如何在宝塔面板中使用终端。 > **提示** **如果您在桌面环境管理服务器,可下载[堡塔多机管理](https://www.bt.cn/new/product_pc.html),统一管理多台 SSH 和宝塔面板** 🚀一键装面板并绑定 😍避免每次密码登录 👍内置高效 SSH 终端 🔒支持代理访问 - 一键安装宝塔面板并绑定好,即装即用 - 多端支持(Windows / MAC / Linux)简单易用 ::: ## 什么是终端? 终端(Terminal)是计算机和用户交互的接口,用户通过终端输入命令,终端将命令发送给操作系统,操作系统根据命令完成相应的操作。 ## 操作指南 登录宝塔面板,在左侧菜单栏中点击【终端】。 ![终端](https://docs.bt.cn/img/user-guide/xterm/xterm-sidebar.png) 通常情况下,可以直接连接到当前服务器的终端。 ![正常连接终端](https://docs.bt.cn/img/user-guide/xterm/xterm-terminal.png) 若出现了如下情况,请自行填写对应信息,尝试连接终端。 ![手动连接终端](https://docs.bt.cn/img/user-guide/xterm/xterm-terminal2.png) **在终端界面中,您可以执行各种 Linux 命令,管理您的服务器。** --- source: https://docs.bt.cn/api/acme/apply_dns_auth.md.txt # apply_dns_auth > 通过已配置的 DNS API 自动创建 TXT 验证记录,完成域名验证并签发证书 # apply_dns_auth 自动调用已配置的 DNS 提供商 API(如腾讯云 DNSPod)创建 ACME 所需的 `_acme-challenge` TXT 记录,完成域名验证,签发并下载证书。验证完成后自动删除临时 TXT 记录。 **前置条件**:已通过 `/ssl/dnsapi/add_dns_data` 配置 DNS API 密钥,并通过 `/ssl/data/add_domain` 添加域名。 - **路由**:`POST /acme` - **action**:`apply_dns_auth` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `apply_dns_auth` | | index | 是 | String | 订单索引 ID(由 `apply_cert_api` 返回) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 申请成功 | | msg | String | `申请成功!` | | cert | String | 完整证书链(PEM 格式) | | private_key | String | 私钥(PEM 格式) | | domains | Array | 证书覆盖的域名列表 | | cert_timeout | Integer | 证书到期时间戳 | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=apply_dns_auth&index=a7a0472c4a5061ec83450119b874a5d3 ``` ### 响应 ```json { "status": true, "msg": "申请成功!", "cert": "-----BEGIN CERTIFICATE-----\nMIIE7TCCA9W...", "private_key": "-----BEGIN PRIVATE KEY-----\n...", "domains": ["dnstest.cc"], "cert_timeout": 1780111135 } ``` ## 相关接口 - [apply_cert_api](./apply_cert_api.md) — 创建证书订单 - [SetCertToSite](./SetCertToSite.md) — 部署证书到网站 --- source: https://docs.bt.cn/api/crontab/AddCrontab.md.txt # AddCrontab > 创建计划任务(Shell 脚本、URL 请求、数据库备份等) # AddCrontab 创建新的计划任务。 - **路由**:`POST /crontab` - **action**:`AddCrontab` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddCrontab` | | name | 是 | String | 任务名称 | | type | 是 | String | 周期类型 | | where1 | 是 | String | 周期值(天数/分钟数等,取决于 type) | | sType | 是 | String | 任务类型,见下表 | | sBody | 是 | String | 执行内容 | | sName | 否 | String | 备注 | | save | 否 | Integer | 备份保留份数 | | backupTo | 否 | String | 备份目标 | ### sType 任务类型 | 值 | 说明 | |----|------| | `toShell` | Shell 脚本 | | `toUrl` | 访问 URL | | `toPython` | Python 脚本 | | `database` | 备份数据库 | | `site` | 备份网站 | | `logs` | 日志切割 | | `rememory` | 释放内存 | ### type 周期类型 | 值 | 说明 | where1 含义 | |----|------|------------| | `minute-n` | 每 N 分钟 | 分钟间隔 | | `hour` | 每小时 | — | | `day` | 每天 | — | | `day-n` | 每 N 天 | 天间隔 | | `week` | 每周 | — | | `month` | 每月 | — | ## 示例 ``` POST /crontab HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=AddCrontab&name=测试任务&type=minute-n&where1=10&sType=toShell&sBody=echo test&sName=备注&save=0&backupTo=localhost ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "添加成功", "id": 6} ``` --- source: https://docs.bt.cn/api/database/GetDatabaseList.md.txt # GetDatabaseList > 获取 MySQL 服务器上所有数据库列表(SHOW DATABASES) # GetDatabaseList 获取指定 MySQL 服务器上的所有数据库列表。 - **路由**:`POST /database` - **action**:`GetDatabaseList` - **返回类型**:Array(二维数组) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDatabaseList` | | id | 是 | Integer | 数据库服务器 ID,`0` = 本地 MySQL | ## 输出参数 返回二维数组,每项为 `[数据库名]`。 ## 示例 ### 请求 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetDatabaseList&id=0 ``` ### 响应 ```json [["information_schema"], ["bt_api_test"], ["mysql"], ["performance_schema"], ["sys"]] ``` --- source: https://docs.bt.cn/api/deployment/GetSiteList.md.txt # GetSiteList > 获取可用于部署的网站列表及支持的框架 # GetSiteList 获取面板中可用于一键部署的网站和框架列表。 - **路由**:`POST /deployment` - **action**:`GetSiteList` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | list | Array\ | 框架/网站列表,每项含 `id`、`name`、`title`、`version` 等 | ## 示例 ```json {"list": [{"id": 11, "name": "ThinkPHP-5.0", "title": "ThinkPHP-5.0", "version": "5.0.24"}]} ``` --- source: https://docs.bt.cn/api/docker/get_config.md.txt # get_config (Docker) > 获取 Docker 的安装状态和配置 # get_config 获取 Docker 和 Docker Compose 的安装状态以及 Docker 服务运行状态。 - **路由**:`GET /btdocker/setup/get_config` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | service_status | Boolean | Docker 服务运行状态 | | docker_installed | Boolean | Docker 是否已安装 | | docker_compose_installed | Boolean | Docker Compose 是否已安装 | ## 示例 ```json {"service_status": true, "docker_installed": true, "docker_compose_installed": false} ``` --- source: https://docs.bt.cn/api/files/CreateFile.md.txt # CreateFile > 创建文件或目录 # CreateFile / CreateDir / DeleteFile / DeleteDir 文件和目录的基本 CRUD 操作。 - **路由**:`POST /files` ## CreateFile 创建空文件。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `CreateFile` | | path | 是 | String | 文件完整路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "文件创建成功!"} ``` ## CreateDir 创建目录。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `CreateDir` | | path | 是 | String | 目录路径 | ```json {"status": true, "msg": "目录创建成功!"} ``` ## DeleteFile 删除文件(移入回收站)。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `DeleteFile` | | path | 是 | String | 文件路径 | ## DeleteDir 删除目录(移入回收站)。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `DeleteDir` | | path | 是 | String | 目录路径 | --- source: https://docs.bt.cn/api/ftp/DeleteUser.md.txt # DeleteUser > 删除 FTP 用户 # DeleteUser 删除 FTP 用户。 - **路由**:`POST /ftp` - **action**:`DeleteUser` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DeleteUser` | | id | 是 | Integer | FTP 用户在 `ftps` 表中的 ID | | username | 是 | String | FTP 用户名 | ### 获取 FTP 用户 ID 通过 `/data` 接口查询: ``` action=getData&table=ftps&type=-1 ``` ## 示例 ``` POST /ftp HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=DeleteUser&id=3&username=api_ftp_doc ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/java/install_jdk_new.md.txt # install_jdk_new > 异步安装指定版本的 JDK # install_jdk_new 提交 JDK 安装任务到后台队列,异步执行。通过消息盒子查看安装进度。 - **路由**:`GET /mod/java/project/install_jdk_new/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | version | 是 | String | JDK 版本名,如 `jdk1.8.0_371`、`jdk-11.0.19`(通过 `get_system_info` 获取可用版本) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 已加入安装队列 | | msg | String | `已添加到安装任务,请在消息盒子中查看安装情况` | ## 示例 ### 请求 ``` GET /mod/java/project/install_jdk_new/stype?request_time=xxx&request_token=xxx&version=jdk1.8.0_371 ``` ### 响应 ```json {"status": true, "msg": "已添加到安装任务,请在消息盒子中查看安装情况"} ``` ## 相关接口 - [get_system_info](./get_system_info.md) — 查看可用版本和安装状态 --- source: https://docs.bt.cn/api/proxy/create.md.txt # create > 创建反向代理站点 # create 创建反向代理站点,生成 Nginx 配置文件、写入数据库、添加防火墙规则。 - **路由**:`POST /mod/proxy/com/create/stype` - **action**:`create` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | domains | 是 | string | 域名列表,多个用换行符分隔,可带端口如 `example.com:8080` | | proxy_path | 否 | string | 代理路径,默认 `/` | | proxy_pass | 是 | string | 代理目标 URL,`http://` 或 `https://` 开头 | | proxy_host | 否 | string | 代理 Host 头,默认 `$http_host` | | proxy_type | 否 | string | 代理类型,`http`(默认)或 `unix` | | remark | 否 | string | 备注 | 主域名不能为泛解析(包含 `*`)。代理目标为 `https://` 时会自动开启 SNI。 若站点名已存在,会自动追加端口号后缀。 ::: ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | bool | 操作结果 | | msg | string | 提示信息 | ## 示例 ### 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/create/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "domains=api.example.com&proxy_pass=http://127.0.0.1:3000&proxy_path=/&remark=API服务&request_time=...&request_token=..." ``` ### 响应 ```json { "status": true, "msg": "反向代理项目添加成功!" } ``` --- source: https://docs.bt.cn/api/push/get_push_list.md.txt # get_push_list > 获取推送规则列表(流量告警、站点告警等) # get_push_list / get_push_logs 查看推送规则和推送日志。 - **路由**:`POST /push` ## get_push_list 获取当前配置的推送规则列表。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_push_list` | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | ## get_push_logs 获取推送日志记录。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_push_logs` | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | ## 相关接口 - [get_modules_list](./get_modules_list.md) — 推送模块列表 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | --- source: https://docs.bt.cn/api/site/get_site_types.md.txt # get_site_types > 获取网站分类列表 # get_site_types 获取面板中网站的分类列表。 - **路由**:`POST /site` - **action**:`get_site_types` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_site_types` | ## 输出参数 返回数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | id | Integer | 分类 ID,`0` = 默认分类,`-2` = 已停止网站 | | name | String | 分类名称 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=get_site_types ``` ### 响应 ```json [ {"id": 0, "name": "默认分类"}, {"id": -2, "name": "已停止网站"} ] ``` --- source: https://docs.bt.cn/api/ssh_security/get_config.md.txt # get_config > 获取 SSH 安全配置(密钥认证、root 登录、密码登录状态) # get_config 获取当前 SSH 安全配置状态。 - **路由**:`POST /ssh_security` - **action**:`get_config` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_config` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | rsa_auth | String | RSA 密钥认证状态 | | pubkey | String | 公钥认证:`yes`/`no` | | password | String | 密码登录:`yes`/`no` | | root_is_login | String | root 是否可登录 | | root_login_type | String | root 登录方式 | | root_login_types | Object | 可选登录方式列表 | ## 示例 ```json { "rsa_auth": "yes", "pubkey": "no", "password": "no", "root_is_login": "no", "root_login_type": "no", "root_login_types": {"yes": "可密码和密钥登录", "no": "禁止登录"} } ``` --- source: https://docs.bt.cn/api/ssl/add_dns_data.md.txt # add_dns_data > 添加 DNS 提供商的 API 密钥,用于 SSL 证书的 DNS 验证 # add_dns_data 添加一个 DNS 提供商的 API 密钥配置,用于 Let's Encrypt 等证书的 DNS 验证方式自动申请和续签。 - **路由**:`POST /ssl/dnsapi/add_dns_data` - **action**:URL 路径 `/ssl/dnsapi/add_dns_data` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | dns_name | 是 | String | DNS 提供商标识,如 `TencentCloudDns`、`AliyunDns`、`CloudFlareDns` | | ps | 是 | String | 备注名称,用于在列表中识别 | | pdata | 是 | String | JSON 字符串,包含提供商所需的密钥参数 | ### pdata 参数(按 DNS 提供商) **腾讯云 DNS** (`TencentCloudDns`): ```json {"secret_id": "AKIDxxxx", "secret_key": "xxxx"} ``` **阿里云 DNS** (`AliyunDns`): ```json {"AccessKey": "xxxx", "SecretKey": "xxxx"} ``` **CloudFlare** (`CloudFlareDns`): ```json {"E-Mail": "admin@example.com", "API Key": "xxxx"} ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 添加成功 | | msg | String | `添加成功` | ## 示例 ### 请求 ``` POST /ssl/dnsapi/add_dns_data HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded dns_name=TencentCloudDns&ps=我的腾讯云DNS&pdata={"secret_id":"AKIDxxxx","secret_key":"xxxx"} ``` ### 响应 ```json {"status": true, "msg": "添加成功"} ``` --- source: https://docs.bt.cn/api/system/GetDiskInfo.md.txt # GetDiskInfo > 获取磁盘分区信息(容量、使用率、inode、文件系统类型) # GetDiskInfo 获取服务器磁盘分区信息。自动过滤 `/boot`、`/dev/shm`、`/proc`、Docker overlay、snap 等非核心分区。 - **路由**:`POST /system` - **action**:`GetDiskInfo` ## 输入参数 除公共参数外无需额外参数。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDiskInfo` | ## 输出参数 返回磁盘分区数组,每项包含: | 参数名称 | 类型 | 描述 | |----------|------|------| | path | String | 挂载路径,如 `/`、`/www` | | size | Array\[String\] | `[总大小, 已用, 可用, 使用率%, 已用(inode), 剩余]` | | filesystem | String | 设备名,如 `/dev/sda1` | | type | String | 文件系统类型,如 `ext4`、`xfs` | | inodes | Array\[String\] | `[总inode数, 已用, 剩余, 使用率%]` | | byte_size | Array\[Integer\] | `[总字节, 已用字节, 剩余字节]` | | d_size | String | 物理磁盘大小,云环境可能为 `None` | ## 示例 ### 请求 ``` POST /system HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetDiskInfo ``` ### 响应 ```json [{ "path": "/", "size": ["19.5 GB", "4.8 GB", "13.8 GB", "26.00%", "859.4 MB", "4.8"], "filesystem": "/dev/sda1", "type": "ext4", "inodes": [1302528, 107216, 1195312, "8.23 %"], "byte_size": [20922114048, 5204590592, 14816325632], "d_size": "None" }] ``` --- source: https://docs.bt.cn/btclaw/day2.md.txt # Day 2:为 OpenClaw 龙虾注入灵魂——配置大模型 > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 2:通过配置 OpenAI 兼容大模型为龙虾注入「灵魂」,包含模型接入、对话调试与基础提示词设置实战记录。 # Day 2:让龙虾有灵魂 **发布日期:** 2026-03-10 **养成状态:** 🦞 龙虾幼崽期 **今日花费:** ¥0 **预计耗时:** 15 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:从客服到伙伴 今天的龙虾能聊天,但总觉得哪里不对。 ``` 我:你好 龙虾:有什么可以帮您的吗? ``` 太正式了。像银行客服。 我要给它注入灵魂,让它像个伙伴,不像个机器人。 朋友说:"要写三个文件,SOUL.md、USER.md、IDENTITY.md..." 我说:"能不能说人话?" 朋友:"就是告诉它:你是谁,它是谁,它该怎么跟你说话。" 哦,那简单。 15 分钟后—— ``` 我:你好 龙虾:嘿,Bacon 大王!今天想搞点什么? ``` 这就对了嘛。 --- ## 🎯 今天只做一件事 **给龙虾注入灵魂,让它说话像伙伴,不像客服。** ![alt text](https://docs.bt.cn/img/btclaw/day_2_1.png) --- ## 🔧 三个步骤(15 分钟) ### 步骤 1:编辑 SOUL.md(5 分钟) ```bash nano /root/.openclaw/workspace/SOUL.md ``` 写上你想要的性格: ```markdown - 像朋友聊天,不像客服 - 不绕弯子,有事说事 - 可以用 emoji,但别太多 ``` **这是龙虾的"性格"。** 你想让它什么样,就怎么写。 --- ### 步骤 2:编辑 USER.md(5 分钟) ```bash nano /root/.openclaw/workspace/USER.md ``` 写上你的信息: ```markdown - 称呼:Bacon 大王 - 地点:东莞 - 职业:xxxx - 偏好:不喜欢太正式,谋谟 ``` **这是龙虾对"你"的了解。** 写得越细,它越懂你。 --- ### 步骤 3:重启测试(5 分钟) ```bash openclaw gateway restart ``` 等 5 秒,然后发消息测试: ``` 你:今天心情怎么样 龙虾:挺好的,刚帮你检查完服务器。你呢? ``` 不再是"尊敬的用户"了。成功!✅ --- ## ✅ 完成检查 - [ ] SOUL.md 已编辑(性格定义) - [ ] USER.md 已编辑(用户信息) - [ ] 回复不再是客服风格 **都完成了?** 恭喜你!龙虾有灵魂了!🎉 --- ## 🎯 明天继续 明天我们让龙虾查天气。 到时候你就可以问:"今天要不要带伞?" 它会说:"不用,东莞今天晴天。但你可以带,万一被女朋友砸到呢。" (又是这个玩笑。龙虾对不起。) --- ## 📝 踩坑记录(可选) _遇到问题再看_ **坑 1:** 改了没生效 **解决:** 重启 Gateway:`openclaw gateway restart` **坑 2:** 不知道写什么 **解决:** 照抄我的模板,然后慢慢改 --- *最后更新:2026-03-10* *作者:Bacon 大王* *状态:龙虾幼崽期 Day 2/∞* *字数:约 700 字* *阅读时间:约 4 分钟* > 🦞 **龙虾碎碎念:** 我有灵魂了。现在我不是"尊敬的用户"的机器人了,我是 Bacon 大王的龙虾。这感觉...挺好。 --- source: https://docs.bt.cn/faq/openclaw-troubleshooting.md.txt # OpenClaw 常见错误与故障排查 > 宝塔面板(BT Panel)OpenClaw 插件在安装、初始化、运行及使用过程中常见问题的排查与解决方案,含各大模型厂商 API 地址、插件升级、Docker 重启等。 # OpenClaw 常见错误排查 本文档整理了 OpenClaw 在安装、初始化、运行及使用过程中的常见问题与解决方案,帮助用户快速定位并解决问题。 ## 各大模型厂商 API 地址 > **注意:** Base URL 地址需兼容 OpenAI API 协议。 ### 火山方舟 **Base URL:** ``` https://ark.cn-beijing.volces.com/api/v3 ``` 详情参考官方文档:https://www.volcengine.com/docs/82379/1298459?lang=zh ### DeepSeek **Base URL:** ``` https://api.deepseek.com/v1 ``` 详情参考官方文档:https://api-docs.deepseek.com/zh-cn/ ### 阿里云百炼 **Base URL:** ``` https://dashscope.aliyuncs.com/compatible-mode/v1 ``` 模型 ID 获取地址:https://bailian.console.aliyun.com/cn-beijing/?tab=model#/model-market 详情参考官方文档:https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc **Coding Plan Base URL:** ``` https://coding.dashscope.aliyuncs.com/v1 ``` 模型 ID 获取地址:https://help.aliyun.com/zh/model-studio/coding-plan?spm=a2c4g.11186623.help-menu-2400256.d_0_2_0.5e5f689dlJE7MO&scm=20140722.H_3005961._.OR_help-T_cn~zh-V_1 ### 月之暗面(Kimi) **Base URL:** ``` https://api.moonshot.cn/v1 ``` 详情参考官方文档:https://platform.moonshot.cn/docs/overview ### 联通元景 **Base URL:** ``` https://maas-api.ai-yuanjing.com/openapi/compatible-mode/v1 ``` 详情参考官方文档:https://maas.ai-yuanjing.com/doc/pages/216543011/ ## 基础问题排查 当 OpenClaw 出现异常时,首先查看日志是否有报错。 ![查看日志](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260312231507794.png) 如需进入未启动的 OpenClaw 容器进行排查,可执行以下命令: ```bash docker-compose -f /www/dk_project/dk_app/dk_openclaw/docker-compose.yml run --rm --entrypoint /bin/bash -u root openclaw-cli ``` 进入容器后,执行以下命令进行诊断: ```bash openclaw health # 检查系统健康状态 openclaw status # 查看服务运行状态 openclaw doctor # 自动诊断常见问题 ``` ## 安装问题 ### 插件未安装 ![插件未安装](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260312024600805.png) **解决方案:** 重新安装插件。可能因网络波动等原因导致安装不完整。 ### docker-compose 服务异常 ![docker-compose 服务异常](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260310224154626.png) **解决方案:** 执行 `docker-compose ls` 检查状态,以下为正常输出: ``` root@debian12:~# docker-compose ls NAME STATUS CONFIG FILES dk_openclaw running(1) /www/dk_project/dk_app/dk_openclaw/docker-compose.yml ``` 如状态异常,请重新安装 Docker。 ### 初始化失败 ![初始化失败](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260310231010497.png) **排查思路:** 1. 检查容器拉取是否正常 执行 `docker ps -a` 查看容器状态: ``` root@debian12:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6641ccad9864 docker.cnb.cool/btpanel/openclaw "docker-entrypoint.s…" About an hour ago Up About an hour (healthy) 0.0.0.0:18789-18790->18789-18790/tcp, [::]:18789-18790->18789-18790/tcp dk_openclaw-openclaw-gateway-1 ``` 拉取异常时,进入 `/www/dk_project/dk_app/dk_openclaw` 目录执行 `docker pull`,查看镜像拉取是否成功。 > 拉取不成功时,尝试设置镜像加速源后重试。 2. 安装应用时不勾选自动初始化 此步骤用于排查是否因系统资源不足,导致初始化进程被系统终止。 3. 手动执行初始化命令 若上一步安装成功,说明是系统资源不足导致初始化失败,需手动执行初始化命令。 进入容器后,执行 `openclaw onboard`: ![手动执行初始化](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260311015430884.png) > 建议服务器配置为 2 核 4G,以获得更佳体验。 ### 终极方案 当上述操作均无法安装成功时,删除 OpenClaw 插件,更新软件商店列表,重新安装。 > 前提是没有重要数据。如有重要数据,请加 QQ 群 574292667 联系管理员协助处理。 ## 使用问题 ### LLM 请求超时(LLM request time out) **问题原因:** 请求大模型超时,通常由网络问题或请求上下文过大导致。 **解决方案:** 请求大模型地址,检查连通性: ```bash curl -vvv [大模型厂商地址] # 以阿里百炼为例 curl -vvv https://dashscope.aliyuncs.com/compatible-mode/v1 ``` 以下为正常输出: ``` root@debian12:~# curl -v https://api.deepseek.com/v1 * Trying 116.205.40.114:443... * Connected to api.deepseek.com (116.205.40.114) port 443 (#0) ................ > GET /v1 HTTP/2 > Host: api.deepseek.com > user-agent: curl/7.88.1 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing < HTTP/2 401 < date: Thu, 12 Mar 2026 14:48:05 GMT < content-length: 31 ... * Connection #0 to host api.deepseek.com left intact ``` **特殊情况:** 在 Docker 运行期间启动防火墙,会导致容器网络出现问题,无法访问外网(进而引发 `LLM request time out`),以及宿主机无法访问容器端口等故障。 原因:Docker 启动时会自动向 iptables 写入规则,容器网络通信均依赖 iptables。启动防火墙会清空所有 iptables 规则链,导致容器网络故障。简而言之: > Docker 先运行 → 写入 iptables 网络规则 → 启动防火墙 → 清空 Docker 规则并关闭转发 → 容器网络彻底失效 **解决方案:** - 重启 Docker: ```bash systemctl restart docker ``` - 或先启动防火墙,再启动 Docker。 ### 400 错误(Bad Request) **问题原因:** - 请求参数错误、配置项缺失或语法无效。 - 调用大模型时使用了无效的模型名。 - 请求上下文过长或发送了空提示语。 **解决方法:** 1. 核对模型名是否与厂商官方一致,确保无拼写错误。 2. 精简上下文内容,避免超出厂商限制。 3. 检查请求配置,补充缺失的参数,确保无空提示,参数格式兼容 OpenAI API 协议。 ### 401 错误(Unauthorized) **报错信息:** - `Unauthorized`(未经授权) - `Invalid Access Token or Token Expired`(无效 Token 或 Token 过期) **问题原因:** - API Key 不正确、已过期或已删除。 - Base URL 填写错误。 - 模型 ID 填写错误。 **解决方案:** 检查 OpenClaw 配置,修改后需重建容器或重启网关。 - 通过插件查看,检查以下项目: 1. API 地址是否正确。 2. 密钥是否有效或填写正确。 3. 模型名称是否正确。 ![查看插件配置](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260312221240386.png) - 通过配置文件查看:面板安装的 OpenClaw 配置文件路径为 `/www/dk_project/dk_app/dk_openclaw/data/config/openclaw.json`,以阿里百炼为例: ``` "models": { "mode": "merge", "providers": { "default1": { "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1", "apiKey": "sk-api-key", "api": "openai-completions", "headers": {}, "models": [ { "id": "qwen3-max", "name": "qwen3-max", "reasoning": false, "input": [ "text", "image" ], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 200000, "maxTokens": 8192 } ] } } }, "agents": { "defaults": { "model": { "primary": "default1/qwen3-max" }, "workspace": "/home/node/clawd", "compaction": { "mode": "safeguard" }, "maxConcurrent": 4, "subagents": { "maxConcurrent": 8 } } }, ``` 重点配置说明: - `baseUrl`:模型 API 地址,可替换为所需的兼容 OpenAI API 协议的供应商地址。 - `apiKey`:需确保有效。 - `primary`:所使用的模型,请根据实际情况替换;如不清楚可用模型,请查阅官方文档。 - `models`:内部标识模型 ID 和名称,可自定义。 ### 402 错误(Payment Required) **问题原因:** 调用大模型的请求超出免费额度、账户欠费,或未绑定支付方式。 **解决方法:** 前往对应大模型厂商的控制台,完成账户充值或绑定支付方式。 ### Device Identity Required ![Device Identity Required 报错](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260311020912296.png) **问题原因:** OpenClaw 的 gateway 建立 WebSocket 连接时,请求 URL 未携带 device identity 身份验证信息,多因 ***直接通过浏览器访问 gateway*** 或 ***刷新页面*** 导致。 **解决方法:** 在 OpenClaw 插件页面,复制 ***完整的带 Token 的 URL*** 重新访问即可。 ![复制带 Token 的 URL(步骤一)](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260311021057551.png) ![复制带 Token 的 URL(步骤二)](https://docs.bt.cn/img/faq/openclaw-troubleshooting/image-20260311021159129.png) ### QQ 机器人无响应 **可能原因:** - 未为 OpenClaw 添加 QQ 机器人的 App ID 和 App Secret。 - 填写了错误的 QQ 机器人 App ID 或 App Secret。 **机器人之前正常,现在不回复** 重启 OpenClaw 网关: ```bash openclaw gateway restart ``` ### 修改容器内配置文件 OpenClaw 的角色设定、身份信息和 Agent 配置分别存储在容器内的以下文件中: - `SOUL.md`:角色设定文件 - `IDENTITY.md`:身份信息文件 - `AGENTS.md`:Agent 配置文件 #### 文件默认路径 配置文件的默认目录为: ``` /home/node/clawd/ ``` #### 进入容器 通过 OpenClaw 插件安装的应用运行在 Docker 容器中,需要先以 root 身份进入容器: ```bash docker exec -it -u root <容器ID> /bin/bash ``` 查看容器 ID 可执行: ```bash docker ps ``` #### 编辑配置文件 进入容器后,使用文本编辑器修改文件。以下以 `nano` 为例: ```bash nano /home/node/clawd/SOUL.md nano /home/node/clawd/IDENTITY.md nano /home/node/clawd/AGENTS.md ``` :::tip 提示 如容器内无 `nano`,可使用 `vi` 编辑器。修改完成后记得保存文件。 ::: #### 搜索文件位置 如不确定文件的实际路径,可在容器内执行以下命令搜索: ```bash find / -name SOUL.md 2>/dev/null ``` --- source: https://docs.bt.cn/getting-started/install-basic-environment.md.txt # 在宝塔面板中安装基础环境 > 介绍首次登录宝塔面板(BT Panel)后如何一键安装 LNMP / LAMP 等基础环境,包含 Nginx、Apache、MySQL、PHP、phpMyAdmin 等常用套件的选型与安装。 # 安装基础环境 本文档将为您介绍如何安装网站常用基础环境,包括Nginx/Apache/MySQL/PHP等,通常来讲首次登录面板后会弹出引导提示您安装基础环境,如您当时未安装,您也可以通过本文档指引进行安装。 ## 操作步骤 1. 登录宝塔面板后,点击左侧菜单栏中的`软件商店`按钮。 2. 在软件商店中,切换到`运行环境`分类,选择对应的软件点击`安装`按钮即可安装相关软件,也可通过左上角的搜索框搜索软件名称。 ![软件商店](https://docs.bt.cn/img/getting-started/install-basic-environment.png) :::info[说明] - Web 服务器:Nginx/Apache,推荐使用 Nginx。(网站必要环境) - 数据库:MySQL,推荐使用 MySQL。(常用环境) - PHP:面板提供了多个PHP版本,且多个版本可同时存在,推荐安装PHP7.4/PHP8.2。(常用环境) - phpMyAdmin:MySQL数据库管理工具。(常用环境) - Pure-FTPd: FTP服务器,如您仅需要上传下载文件,可使用面板文件管理工具。(常用环境) ::: 3. 以安装`Nginx`为例,点击`安装`按钮,会弹出安装对话框,点击`极速安装`按钮即可开始安装。(新手小白推荐使用极速安装) ![安装Nginx](https://docs.bt.cn/img/getting-started/install-basic-environment-2.png) --- source: https://docs.bt.cn/practical-tutorials/switch-mysql-version.md.txt # 宝塔面板如何切换 MySQL 版本 > 详细介绍如何在宝塔面板(BT Panel)中切换 MySQL 版本,含安装新版本、数据备份与迁移、版本切换与验证的完整步骤,避免数据丢失。 # 宝塔面板如何切换 MySQL 版本 因 MySQL 跨版本切换存在数据丢失风险,因此宝塔面板在切换 MySQL 版本时通常会遇到相关提示。本文将指导您如何安全地切换宝塔面板 MySQL 版本。 ## 切换流程图 ```mermaid flowchart LR A[开始] --> B[检查 MySQL 版本] --> C[创建快照备份] --> D[记录数据库信息] D --> E[备份 root 密码] E --> F[备份所有数据库] F --> G[下载到本地] G --> H[删除数据库] H --> I[卸载 MySQL] I --> J[安装新版本] J --> K[创建数据库用户] K --> L[导入备份数据] L --> M[验证版本] M --> N[测试网站] N --> O{正常?} O -->|是| P[完成] O -->|否| Q[回滚] Q --> R[恢复快照] R --> P %% 设置节点样式 style A fill:#e1f5fe,stroke:#01579b,stroke-width:2px style P fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px style Q fill:#ffebee,stroke:#c62828,stroke-width:2px style H fill:#fff3e0,stroke:#ef6c00,stroke-width:2px style I fill:#fff3e0,stroke:#ef6c00,stroke-width:2px style O fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px ``` ## 前提条件 :::warning 重要提醒 - 切换过程中 MySQL 无法使用,请在 ***业务低峰期*** 进行切换 - 为确保数据安全,请在 ***云厂商控制台创建快照或镜像*** 进行备份,以防止可能出现的意外导致数据丢失 ::: ### 系统级备份 在开始操作前,务必完成以下备份: 1. **云服务器快照备份** - 登录云厂商控制台(阿里云/腾讯云/华为云等) - 创建服务器快照或系统镜像 - 等待备份完成后再进行后续操作 2. **检查 MySQL 版本和状态** - 登录宝塔面板 - 进入【软件商店】 - 查看当前 MySQL 版本和运行状态 ## 数据库备份操作 ### 1. 记录数据库信息 登录宝塔面板,进入【数据库】管理页面: **重要:** 请详细记录所有数据库信息在本地,大致格式如下: | 数据库名 | 用户名 | 密码 | |---------|-------|------| | bt.cn | bt.cn | f8DArwY7RPr2ynbp | | website_db | web_user | Kx9mNp2qR7sT | | shop_db | shop_user | Lm5pQw8rE3tY | ![数据库管理界面](https://docs.bt.cn/img/practical-tutorials/database-management.png) :::tip 提示 要依次记录每一个数据库的详细信息,包括数据库名、用户名和密码,这些信息在后续恢复时必需。 ::: ### 2. 备份 root 密码 记录 MySQL 的 root 用户密码: - 在数据库页面,点击【root密码】按钮,记录弹出窗口显示的密码 ![root密码](https://docs.bt.cn/img/practical-tutorials/mysql-root-password.png) ### 3. 备份所有数据库并下载到本地 对每个数据库进行备份: - 在数据库列表中,点击每个数据库后的【点击备份】按钮 ![备份数据库](https://docs.bt.cn/img/practical-tutorials/mysql-backup-database.png) - 进入后点击【备份数据库】按钮,等待备份完成 ![备份数据库](https://docs.bt.cn/img/practical-tutorials/mysql-backup-database-2.png) - 备份完成后,点击【下载】按钮,下载备份文件到本地 ![备份数据库](https://docs.bt.cn/img/practical-tutorials/mysql-backup-database-3.png) ## MySQL 版本切换步骤 ### 第一步:删除所有数据库 :::danger 危险操作 请确认已完成上述所有备份操作,否则数据将无法恢复! ::: 1. 在【数据库】管理页面 2. 逐个点击每个数据库后的【删除】按钮 ![删除数据库](https://docs.bt.cn/img/practical-tutorials/mysql-delete-database.png) ### 第二步:卸载当前 MySQL 版本 1. 进入【软件商店】 2. 找到当前安装的 MySQL 版本 ![卸载MySQL](https://docs.bt.cn/img/practical-tutorials/mysql-uninstall.png) 3. 点击【卸载】按钮 4. 在弹窗中确认卸载 ![卸载MySQL](https://docs.bt.cn/img/practical-tutorials/mysql-uninstall-2.png) ### 第三步:安装目标 MySQL 版本 1. 在软件商店中搜索 MySQL ![搜索MySQL](https://docs.bt.cn/img/practical-tutorials/mysql-search.png) 2. 选择目标版本(如 MySQL 8.0) ![选择MySQL版本](https://docs.bt.cn/img/practical-tutorials/mysql-select-version.png) 3. 根据需要选择【极速安装】或【编译安装】 4. 等待安装完成 ![安装MySQL](https://docs.bt.cn/img/practical-tutorials/mysql-install.png) ### 第四步:重新创建数据库用户 根据之前记录的信息,重新创建数据库: **创建数据库** - 进入【数据库】管理页面 - 点击【添加数据库】 - 输入数据库名、用户名、密码(与之前记录的信息一致) ![创建数据库](https://docs.bt.cn/img/practical-tutorials/mysql-create-database.png) :::tip 提示 需要依次创建所有数据库,并按照记录的信息设置用户名和密码 ::: **修改 root 密码**(可选) - 进入【数据库】管理页面 - 点击【root密码】按钮,输入之前记录的 root 密码 ![修改root密码](https://docs.bt.cn/img/practical-tutorials/mysql-change-root-password.png) - 点击【确定】按钮,修改 root 密码 ### 第五步:导入备份数据 **导入数据库** - 在数据库管理页面,点击对应数据库的【导入】按钮 - 选择相应的备份文件(如果能看到备份文件,则直接选择,否则需要上传备份文件) ![导入数据库](https://docs.bt.cn/img/practical-tutorials/mysql-import-database.png) - 等待导入完成 ## 验证切换结果 ### 第六步:验证 MySQL 版本 1. **面板检查** - 进入【软件商店】,确认新版本 MySQL 正在运行 - 检查服务状态为"正在运行" 2. **命令行验证**(可选) ```bash mysql -V ``` 3. **连接测试** - 使用 phpMyAdmin 连接测试 - 验证所有数据库都能正常访问 ### 第七步:测试网站功能 逐个测试所有使用数据库的网站: 1. **基础功能测试** - 检查网站首页是否正常显示 - 验证数据库连接状态 2. **核心功能验证** - 测试用户登录功能 - 验证数据读取和写入 - 检查搜索功能 - 测试表单提交 ## 版本兼容性说明 ### 常见版本切换情况 - **MySQL 5.6 → 5.7**:通常兼容性良好,较少问题 - **MySQL 5.7 → 8.0**:需要注意认证方式和字符集变化 - **MySQL 8.0 → 5.7**:不建议降级,可能导致数据丢失 ### 注意事项 1. **字符集问题** - MySQL 8.0 默认字符集为 `utf8mb4` - 旧版本可能使用 `utf8`,需要检查兼容性 2. **认证方式变化** - MySQL 8.0 使用 `caching_sha2_password` - 部分应用可能需要调整连接配置 ## 常见问题及解决方案 ### 问题1:网站无法连接数据库 **症状**:网站显示数据库连接错误 **可能原因**: - 数据库用户权限问题 - 认证方式不兼容 - 网站配置文件中的数据库信息错误 **解决方案**: 1. 检查数据库用户是否创建正确 2. 如果是 MySQL 8.0,可能需要修改认证方式: ```sql ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ``` 3. 验证网站配置文件中的数据库连接信息 ### 问题2:数据不完整或丢失 **症状**:切换后发现部分数据缺失 **应急处理**: 1. ***立即停止所有数据库写入操作*** 2. ***恢复服务器快照***(如果可能) 3. ***从本地备份重新导入*** **预防措施**: - 切换前详细核对备份文件 - 使用多种备份方式(宝塔备份+手动导出) - 在测试环境先验证流程 ## 应急回滚方案 如果切换过程中出现严重问题,可以按以下步骤回滚: ### 方案一:使用服务器快照回滚 1. 登录云服务器控制台 2. 选择之前创建的快照 3. 执行快照回滚操作 4. 等待系统恢复到切换前的状态 ### 方案二:手动回滚 1. 卸载新版本 MySQL 2. 重新安装原版本 MySQL 3. 从本地备份恢复数据库 4. 验证网站功能正常 ## 总结 宝塔面板 MySQL 版本切换是一个需要谨慎操作的过程。按照本文档的步骤进行操作,可以最大程度确保数据安全和切换成功。记住: ***备份是最重要的保障措施*** ,在任何操作前都要确保有完整的数据备份。 :::warning 重要提醒 - 生产环境切换前务必在测试环境验证 - 如遇到复杂问题,建议寻求专业技术支持 ::: --- source: https://docs.bt.cn/purchase-guides/package-service/bt-website-anti-tampering.md.txt # 网站防篡改程序插件 > 宝塔面板(BT Panel)事件型网站防篡改插件,可实时监控网站目录与文件变动,在检测到恶意篡改时通过备份数据自动恢复,防止网站被植入非法信息、挂马等入侵行为。 # 网站防篡改程序 事件型防篡改,可实时监控网站目录或文件,并在网站被恶意篡改时,通过备份数据恢复被篡改的文件或目录,防止网站被植入非法信息、网站被挂马等入侵行为,保障网站正常运行。 ![网站防篡改](https://docs.bt.cn/img/purchase-guides/bt-website-anti-tampering.png) --- source: https://docs.bt.cn/purchase-guides/package-version-comparison.md.txt # 宝塔面板套餐版本对比 > 宝塔面板(BT Panel)Linux 与 Windows 面板免费版、专业版、企业版各版本功能差异对比表,帮助用户根据业务需求选择合适的套餐版本。 # 版本对比 宝塔面板分为免费版、专业版、企业版三个版本,本文将为您介绍各版本的功能差异。 ## Linux 面板 ## Windows 面板 > **说明** 1. 服务及规格可能因产品策略进行调整,调整后不影响已购买的套餐服务。 2. 购买价格以页面实际展示为准。 ::: --- source: https://docs.bt.cn/user-guide/ai/assistant/ai-dialog.md.txt # AI 对话 > 介绍宝塔面板 AI 助手对话功能的使用方法,包括快捷入口、提问方式、助手切换、AI 分析按钮等场景化操作。 # AI 对话 宝塔面板 AI 助手支持通过自然语言对话完成服务器运维、服务诊断、日志分析等任务。所有涉及系统修改或高危操作的命令均需授权确认,确保安全。 ## 前提条件 - 宝塔面板版本 ≥ v11.7 - 服务器可正常访问互联网 - 已配置 AI 模型 API(首次使用需设置) ## 进入对话界面 1. 登录宝塔面板 2. 点击左侧导航栏【AI】菜单 3. 默认进入【AI 对话】标签页 ![AI 对话入口](https://docs.bt.cn/img/user-guide/ai/ai-dialog-entry.png) ## 发起对话 ### 使用快捷问题 系统预设常用运维问题,点击即可快速提问: - Docker 容器异常怎么办? - MySQL 无法启动如何排查? - 生成系统体检报告 - 生成站点访问报告 - 执行服务器安全检测 ![快捷问题](https://docs.bt.cn/img/user-guide/ai/ai-dialog-shortcut.png) ### 自定义提问 在输入框中输入自然语言描述,例如: ```text 检查服务器磁盘空间使用情况 为什么我的 Nginx 服务无法启动? 帮我分析今天的访问日志 ``` ## 场景化入口 ### 首页 AI 分析按钮 在 AI 助手 [设置](settings.md) 中开启【AI 提示】后,可在面板首页的负载监控卡片中直接使用 AI 分析: - CPU 使用率 - 内存使用率 - 流量 - 磁盘 IO - 网站访问 ![首页 AI 分析](https://docs.bt.cn/img/user-guide/ai/ai-home-analysis.png) ### 终端日志选中分析 在终端中查看日志时,支持选中文本内容直接调用 AI 进行分析。 ![终端 AI 分析](https://docs.bt.cn/img/user-guide/ai/ai-terminal-analysis.png) ## 助手切换 AI 对话支持多助手切换,点击对话界面顶部的助手名称即可切换不同专业助手: | 助手类型 | 适用场景 | |---------|---------| | 运维助手 | 服务器状态、资源监控、服务管理 | | 安全助手 | 漏洞检测、入侵排查、安全加固 | | 数据库助手 | MySQL/Redis/MongoDB 问题诊断 | | 容器助手 | Docker/K8s 容器相关运维 | | 网站助手 | 站点配置、SSL 证书、访问分析 | > 对话历史随助手独立保存,切换后不会丢失。 ## 安全说明 :::info 安全提示 - AI 仅在你授权后才执行系统修改类命令 - 服务状态查询类命令在开启工具权限后可能自动执行 - 删除、格式化、重启等高危操作会明确请求确认 ::: --- source: https://docs.bt.cn/user-guide/ai/mcp/installation.md.txt # 宝塔MCP安装指引 > 介绍宝塔 MCP 服务的安装与接入方法,包括面板及 Python 版本准备、插件安装、8765 端口放行、IP 白名单、Agent 自动或手动配置,以及常见问题排查。 # 宝塔MCP安装指引 宝塔 MCP 服务可将宝塔面板的运维能力接入支持 MCP 的 Agent。安装完成后,Agent 可以通过授权的 MCP 服务查询和管理服务器。 > 首次使用前,可先阅读[宝塔 MCP 介绍](./index.md),了解它与宝塔 AI 助手的区别及工作方式。 :::warning 安装建议 建议先在非生产环境完成安装和功能验证。生产环境操作前,请备份重要数据,并仅向可信 IP 开放 MCP 服务端口。 ::: ## 安装前准备 开始安装前,请确认: - 已取得宝塔面板管理员权限和服务器终端权限 - 面板版本为稳定版 12.0 或正式版 13.0 - 面板运行环境已升级到 Python 3.13 - Agent 支持连接远程 MCP 服务 - Agent 所在网络可以访问服务器的 `8765` 端口 ## 1. 更新面板和 Python 如果当前面板版本已经满足要求,可直接更新 Python;否则请先安装或升级到宝塔面板 13.0。 ### 已有面板升级到 13.0 已有正式版面板的用户可在面板首页右上角点击【更新】按钮,升级到 13.0。 ### 全新安装 13.0 在服务器终端中执行: ```bash curl -sSO http://download.bt.cn/install/install13.sh && bash install13.sh ``` ### 更新 Python 到 3.13 在非面板终端中执行: ```bash bash /www/server/panel/script/upgrade_py313_bundle.sh ``` 也可以登录面板,点击右上角的【更新】按钮完成升级。 ![通过面板更新版本](https://docs.bt.cn/img/user-guide/ai/mcp-installation/panel-upgrade.png) 升级完成后,可在面板首页确认当前版本。 ![在面板首页确认版本](https://docs.bt.cn/img/user-guide/ai/mcp-installation/panel-version.png) ## 2. 安装宝塔 MCP 服务 1. 登录宝塔面板 2. 进入【软件商店】 3. 搜索“宝塔 MCP” 4. 找到【宝塔 MCP 服务】并点击【安装】 ![在软件商店安装宝塔 MCP 服务](https://docs.bt.cn/img/user-guide/ai/mcp-installation/plugin-search.png) ## 3. 放行 8765 端口 安装完成后,需要同时在宝塔面板防火墙和云服务器厂商的安全组或防火墙中放行 `8765` 端口。 ### 宝塔面板防火墙 进入【安全】页面,添加一条入站规则: - 协议:TCP - 端口:`8765` - 来源:优先填写 Agent 的固定公网出口 IP ![在宝塔面板防火墙放行 8765 端口](https://docs.bt.cn/img/user-guide/ai/mcp-installation/panel-firewall.png) ### 云服务器防火墙 如果服务器部署在云平台,还需要在云平台控制台的安全组或防火墙中放行 `8765` 端口。 ![在云服务器防火墙放行 8765 端口](https://docs.bt.cn/img/user-guide/ai/mcp-installation/cloud-firewall.png) 不建议将 `8765` 端口向所有来源开放。无法确认 Agent 出口 IP 时,可先临时放行完成连通性测试,测试结束后立即收紧规则。 ::: ## 4. 设置 IP 白名单 1. 在软件商店中打开【宝塔 MCP 服务】 2. 进入【接入与体验】 3. 按页面提示添加 Agent 的公网出口 IP ![宝塔 MCP 服务接入设置](https://docs.bt.cn/img/user-guide/ai/mcp-installation/ip-whitelist.png) ![添加 Agent 的公网出口 IP](https://docs.bt.cn/img/user-guide/ai/mcp-installation/ip-whitelist-add.png) IP 段放通暂不可用,请填写单个公网 IP。配置错误会导致 Agent 无法连接 MCP 服务。 ::: ## 5. 配置 Agent 支持自动配置和手动配置两种方式,推荐优先使用自动配置。 ### 方式一:使用提示词自动配置 1. 在插件的【接入与体验】页面生成并复制安装提示词 2. 将提示词发送给需要接入的 Agent 3. 按 Agent 的提示完成 MCP 服务安装与连接 ![复制 MCP 安装提示词](https://docs.bt.cn/img/user-guide/ai/mcp-installation/install-prompt.png) ![Agent 自动完成 MCP 配置](https://docs.bt.cn/img/user-guide/ai/mcp-installation/agent-auto-config.png) ### 方式二:手动配置 1. 打开插件的【安全授权】页面 2. 获取 MCP 服务器地址和授权令牌 3. 将信息填入 Agent 的 MCP 配置文件 ![获取 MCP 服务器地址和授权信息](https://docs.bt.cn/img/user-guide/ai/mcp-installation/security-authorization.png) 参考配置: ```json { "mcpServers": { "baota-mcp": { "url": "https://<面板公网IP>:8765/bt-mcp-<实例标识>/mcp", "headers": { "Authorization": "Bearer <授权令牌>" }, "disabled": false } } } ``` :::danger 保护授权信息 MCP 服务器地址和授权令牌属于敏感信息。请勿提交到公开代码仓库、粘贴到公开聊天或分享给无关人员。如怀疑令牌泄露,请立即在插件中重新生成授权信息。 ::: ## 6. 验证连接 完成配置后,让 Agent 执行一项只读操作,例如查询服务器基本信息。如果 Agent 能正常返回服务器信息,即表示 MCP 服务已成功接入。 ![通过 Agent 调用宝塔 MCP 服务](https://docs.bt.cn/img/user-guide/ai/mcp-installation/agent-call-success.png) ## 申请可信 IP 证书 部分系统需要有效的 HTTPS 证书链才能连接 MCP 服务。可在宝塔面板中申请可信 IP 证书: 1. 进入【设置】→【安全设置】→【面板 SSL】 2. 打开面板 SSL 3. 选择 IP 证书申请入口并完成申请 4. 安装证书后,重新获取 MCP 接入信息 ![进入面板 SSL 设置](https://docs.bt.cn/img/user-guide/ai/mcp-installation/panel-ssl-settings.png) ![申请可信 IP 证书](https://docs.bt.cn/img/user-guide/ai/mcp-installation/apply-ip-certificate.png) ## 常见问题 ### 安装提示词获取失败,提示“未探测到有效证书链”或“HTTPS 未就绪” 按照[申请可信 IP 证书](#申请可信-ip-证书)中的步骤申请并安装面板 SSL 证书,然后重新获取安装提示词。 ### 获取接入信息时提示 HTTP 500 确认面板运行环境已经升级到 Python 3.13。升级完成后,卸载并重新安装【宝塔 MCP 服务】插件。 ### Agent 无法连接 MCP 服务 依次检查: 1. 宝塔面板防火墙是否已放行 TCP `8765` 端口 2. 云服务器安全组或防火墙是否已放行 TCP `8765` 端口 3. Agent 的公网出口 IP 是否已加入插件白名单 4. MCP 服务器地址和授权令牌是否填写正确 5. 面板 SSL 证书是否有效 --- source: https://docs.bt.cn/user-guide/config/alarm/alarm-settings.md.txt # 告警设置 > 在宝塔面板(BT Panel)「设置 → 告警设置」配置告警消息通道,支持微信公众号、邮箱、钉钉、企业微信、飞书、Webhook 等多种通道,统一接收服务器、站点与服务告警通知。 # 告警设置 本文将介绍如何配置告警消息通道。 ## 配置告警消息通道 :::info[说明] - 微信公众号通知在改版后会出现被折叠的问题,使用该方式通知可能无法及时收到告警。 ::: 1. 点击`配置`按钮,进入微信公众号配置页面。 ![微信公众号配置](https://docs.bt.cn/img/user-guide/wechat-config.png) 2. 点击`添加`按钮,添加要通知的微信。 ![微信公众号配置](https://docs.bt.cn/img/user-guide/wechat-add.png) 3. 扫描二维码,关注微信公众号并绑定账号。 ![微信公众号配置](https://docs.bt.cn/img/user-guide/wechat-qrcode.png) 4. 扫码关注并绑定成功后,点击右上角的`×`关闭页面。 ![微信公众号配置](https://docs.bt.cn/img/user-guide/wechat-success.png) 5. 返回到公众号配置页面,可以看到添加的微信。 ![微信公众号配置](https://docs.bt.cn/img/user-guide/wechat-list.png) 1. 点击`配置`按钮,进入邮箱配置页面。 ![邮箱配置](https://docs.bt.cn/img/user-guide/email-config.png) 2. 点击`添加`按钮,添加要通知的邮箱。 ![邮箱配置](https://docs.bt.cn/img/user-guide/email-add.png) 3. 输入邮箱相关信息。 ![邮箱配置](https://docs.bt.cn/img/user-guide/email-send.png) QQ邮箱开启SMTP可参考教程: [如何打开POP3/SMTP/IMAP功能?](https://service.mail.qq.com/detail/128/428) [QQ邮箱的POP3与SMTP服务器是什么?](https://service.mail.qq.com/detail/0/427) 网易邮箱开启SMTP可参考教程: [如何开启客户端协议?](https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2a5feb28b66796d3b) [如何开启POP3/SMTP/IMAP服务?](https://help.mail.163.com/faqDetail.do?code=367) 4. 点击`确定`按钮,添加邮箱。 ![邮箱配置](https://docs.bt.cn/img/user-guide/email-success.png) 5. 返回到邮箱配置页面,可以看到添加的邮箱。 ![邮箱配置](https://docs.bt.cn/img/user-guide/email-list.png) ## 创建机器人 可参考教程: [创建自定义机器人](https://open.dingtalk.com/document/orgapp/custom-bot-creation-and-installation) - 机器人安全设置可选择IP地址,并填入服务器IP地址。 ## 配置机器人 1. 点击`配置`按钮,进入钉钉配置页面。 ![钉钉配置](https://docs.bt.cn/img/user-guide/dingtalk-config.png) 2. 点击`添加`按钮,添加要通知的钉钉机器人。 ![钉钉配置](https://docs.bt.cn/img/user-guide/dingtalk-add.png) 3. 输入钉钉机器人相关信息。 获取机器人Webhook URL可参考教程: [获取自定义机器人 Webhook 地址](https://open.dingtalk.com/document/orgapp/obtain-the-webhook-address-of-a-custom-robot) ![钉钉配置](https://docs.bt.cn/img/user-guide/dingtalk-send.png) 4. 点击`确定`按钮,添加钉钉机器人。 ![钉钉配置](https://docs.bt.cn/img/user-guide/dingtalk-success.png) 5. 返回到钉钉配置页面,可以看到添加的钉钉机器人。 ![钉钉配置](https://docs.bt.cn/img/user-guide/dingtalk-list.png) ## 创建机器人 可参考教程: [在群组中添加自定义机器人](https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot#399d949c) ## 配置机器人 1. 点击`配置`按钮,进入飞书配置页面。 ![飞书配置](https://docs.bt.cn/img/user-guide/feishu-config.png) 2. 点击`添加`按钮,添加要通知的飞书机器人。 ![飞书配置](https://docs.bt.cn/img/user-guide/feishu-add.png) 3. 输入飞书机器人相关信息。 获取机器人Webhook URL可参考教程: [在群组中添加自定义机器人](https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot#399d949c) ![飞书配置](https://docs.bt.cn/img/user-guide/feishu-send.png) 4. 点击`确定`按钮,添加飞书机器人。 ![飞书配置](https://docs.bt.cn/img/user-guide/feishu-success.png) 5. 返回到飞书配置页面,可以看到添加的飞书机器人。 ![飞书配置](https://docs.bt.cn/img/user-guide/feishu-list.png) ## 创建机器人 可参考教程: [如何设置群机器人](https://open.work.weixin.qq.com/help2/pc/14931) ## 配置机器人 1. 点击`配置`按钮,进入企业微信配置页面。 ![企业微信配置](https://docs.bt.cn/img/user-guide/wecom-config.png) 2. 点击`添加`按钮,添加要通知的企业微信机器人。 ![企业微信配置](https://docs.bt.cn/img/user-guide/wecom-add.png) 3. 输入企业微信机器人相关信息。 获取机器人Webhook URL可参考教程: [群机器人Webhook地址](https://open.work.weixin.qq.com/help2/pc/14931#%E5%85%AD%E3%80%81%E7%BE%A4%E6%9C%BA%E5%99%A8%E4%BA%BAWebhook%E5%9C%B0%E5%9D%80) ![企业微信配置](https://docs.bt.cn/img/user-guide/wecom-send.png) 4. 点击`确定`按钮,添加企业微信机器人。 ![企业微信配置](https://docs.bt.cn/img/user-guide/wecom-success.png) 5. 返回到企业微信配置页面,可以看到添加的企业微信机器人。 ![企业微信配置](https://docs.bt.cn/img/user-guide/wecom-list.png) :::info[说明] 短信告警通道需先在宝塔官网开通短信服务,请您联系客服购买咨询:[点击链接联系](https://www.bt.cn/new/wechat_customer) - 企业版用户默认赠送1000条短信额度 - 其他用户请联系客服咨询购买事宜 - 短信告警默认发送到开通短信服务的手机号,即和宝塔账号绑定手机号相同,且目前不支持单独修改。 ::: 1. 查看短信服务开通情况。打开面板,在面板-设置-告警设置中查看短信额度。 ![短信服务开通情况](https://docs.bt.cn/img/user-guide/sms-service-status.png) 2. 以 SSL 到期告警为例,配置短信通知,打开告警列表-添加任务。 ![添加任务](https://docs.bt.cn/img/user-guide/sms-add-task.png) 3. 在添加任务页面,填写相关信息,并选择短信通知方式。 ![配置短信通知](https://docs.bt.cn/img/user-guide/sms-configure-notification.png) 4. 点击`确定`按钮,保存短信通知配置。 ![保存短信通知配置](https://docs.bt.cn/img/user-guide/sms-save-notification.png) > **说明** - 本教程适用于宝塔Linux面板9.5.0及以上版本。 - 若面板非此版本,需到面板首页右上角点击更新按钮,将面板更新到最新版本。 ::: ## 功能说明 宝塔告警模块中的自定义消息通道允许用户根据自身需求配置信息,并通过网络请求的方式传递信息。支持通过自定义的Webhook URL发送告警信息,类似设置钉钉机器人、企业微信应用等第三方通知服务。 用户可指定一个HTTP/HTTPS请求地址,系统会自动向该地址发送包含告警详情的数据,从而将服务器状态变化即时同步到自己习惯使用的沟通平台,便于及时响应和处理问题。 ## 配置步骤 ### 获取请求的URL 1. **使用第三方服务**(如飞书机器人):先在飞书中创建一个机器人,获取其Webhook URL。 2. **使用自建服务**:确保自建服务已启动,并提供可接收http/https请求的URL。 ### 获取配置验证信息 若服务需要在请求头中添加验证信息(如API密钥或Token),需提前准备好这些信息。 ### 填写信息并测试 1. **填写请求URL** - 确保URL包含所有必要的验证参数,格式示例: ``` https://oapi.dingtalk.com/robot/...?access_token=your_access_token_here ``` 2. **配置自定义请求内容** - 宝塔告警信息包含3个文本格式字段:`title`(告警标题)、`msg`(告警内容)、`type`(告警类型),可用`$title`、`$msg`、`$type`表示并填充到自定义模板中。 - **默认格式**(不配置时使用): ```json { "title": "$title", "msg": "$msg", "type": "$type" } ``` 3. **配置请求头** - 若服务要求在HTTP请求头中添加验证信息(如Authorization),可在宝塔面板的自定义消息通道配置中指定请求头,示例: ```json { "Authorization": "JWT your_token_here" } ``` 4. **保存配置并测试** - 保存配置时,系统会自动发送一条告警信息,用于测试是否能顺利发送。 ## 常见问题 ### 问题现象 在Linux面板9.5.0中配置好自定义消息通道后,点击“确定”无反应,控制台报错: ``` Uncaught TypeError: Cannot read properties of undefined (reading 'domQueryService') at checkPageContainsShadowDom (bootstrap-autofill.js:1857:14) at bootstrap-autofill.js:334:53 ``` ### 问题描述 部分用户在9.5.0版本中遇到保存配置时无响应且控制台报错的情况,多台设备测试均出现此问题。 ### 建议处理 - 检查面板版本是否为最新(9.5.0及以上),可尝试重新安装或更新面板。 - 确认浏览器兼容性,建议使用Chrome、Firefox等主流浏览器并更新到最新版本。 - 若问题持续,可在宝塔论坛(原链接)反馈,附上详细环境信息和操作步骤,便于技术支持排查。 --- source: https://docs.bt.cn/user-guide/config/backup/backup-management.md.txt # 备份管理与数据还原 > 在宝塔面板(BT Panel)「备份还原」管理已创建的备份文件,含查看备份列表、状态过滤、下载备份、还原数据与删除过期备份的完整操作流程与注意事项。 # 备份管理与数据还原 本文指导您如何管理已创建的备份文件,包括查看备份列表、下载备份、还原数据以及删除不需要的备份等操作。 ## 前提条件 在进行备份管理和数据还原前,您需要满足以下条件: - 已成功创建至少一个数据备份 - 具有宝塔面板管理员权限 - 服务器具有足够空间进行还原操作 - 确保相关服务正常运行 ## 操作步骤 ### 步骤1:查看备份列表 在备份还原页面,您可以查看所有已创建的备份: ![备份列表界面](https://docs.bt.cn/img/user-guide/backup-list-interface.png) **列表显示信息:** - **备份名称**:备份文件的名称标识 - **状态**:备份任务的执行状态 - **备份文件**:备份生成的文件信息 - **备份大小**:备份文件占用的存储空间 - **备份时间**:备份任务的执行时间 - **创建时间**:备份任务的创建时间 - **操作**:可执行的操作选项 1. 登录宝塔面板 2. 在左侧导航栏中点击【备份还原】 3. 查看备份列表中的所有备份记录 **列表显示的状态类型:** - **成功**:备份任务成功完成 - **进行中**:备份任务正在执行 - **失败**:备份任务执行失败 ### 步骤2:下载备份文件 **操作步骤:** 1. 在备份列表中找到目标备份 2. 点击操作列中的【下载】按钮 3. 选择下载位置 4. 等待下载完成 ### 步骤3:数据还原操作 **重要提醒:** - 还原操作会覆盖现有数据 - 建议在还原前创建当前数据的备份 - 确认还原的备份文件完整可用 **完整还原步骤:** 1. 选择要还原的备份文件 2. 点击【还原】按钮 3. 确认还原范围和选项 4. 执行还原操作 5. 验证还原结果 ![还原操作界面](https://docs.bt.cn/img/user-guide/backup-restore-interface.png) --- source: https://docs.bt.cn/user-guide/config/common/panel-ssl.md.txt # 面板SSL > 在宝塔面板(BT Panel)「设置 → 面板 SSL」使用面板自签证书或为面板绑定域名申请可信 SSL,含为系统添加自签证书信任、Windows / macOS / Linux 各系统下的安装与验证步骤。 # 面板SSL 本文将介绍宝塔面板SSL证书相关操作。 为了提高网站安全性,宝塔面板默认开启SSL证书,您也可以自行申请SSL证书。 面板默认使用的是宝塔自签证书,也可以使用自己域名的证书。 ## 自签证书 宝塔自签证书但通常会被浏览器会提示该连接不安全,这是由于自签证书未被浏览器普遍信任。 ![浏览器不信任自签证书](https://docs.bt.cn/img/user-guide/self-signed-certificate.png) 所以我们需要让浏览器信任我们的自签证书。 ### 设置浏览器信任自签证书 #### Windows 系统 访问宝塔面板,在设置中点击`面板SSL配置`。 ![面板SSL配置](https://docs.bt.cn/img/user-guide/panel-ssl.png) 在弹出的窗口中,点击 “下载证书”。 ![下载证书](https://docs.bt.cn/img/user-guide/download-certificate.png) 找到刚刚下载的根证书文件,双击进行安装。 ![安装证书](https://docs.bt.cn/img/user-guide/install-certificate.png) 在安装过程中,需要输入证书密码。证书密码可在 “面板 SSL 配置” 页面中获取,复制粘贴即可。 ![输入证书密码](https://docs.bt.cn/img/user-guide/input-certificate-password.png) 按照提示完成安装步骤,保持默认设置。 关闭并重新启动浏览器,再次访问宝塔面板,此时浏览器应显示安全连接。 ![安全连接](https://docs.bt.cn/img/user-guide/secure-connection.png) #### Mac 系统 访问宝塔面板,在设置中点击`面板SSL配置`,在弹出的窗口中点击"下载证书"。找到下载的根证书文件(.crt),双击打开钥匙串访问,将证书添加到"系统"钥匙串并信任。 ![面板SSL配置](https://docs.bt.cn/img/user-guide/panel-ssl.png) ## 其他证书 其他证书填写可参考 [SSL证书申请](https://docs.bt.cn/user-guide/site/php/site-config/ssl#%E8%AF%81%E4%B9%A6%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E8%A6%81%E6%B1%82) --- source: https://docs.bt.cn/user-guide/config/panel-settings.md.txt # 面板基础设置 > 宝塔面板(BT Panel)「设置 → 面板设置」面板服务与运行环境调优总控台:启停面板服务、IPv6 监听、开发者模式、系统信息、面板 API 与用户体验类选项的一站式配置。 # 面板基础设置 本文将介绍宝塔面板的基础设置功能,包括面板服务控制、系统模式设置、API接口配置、用户体验设置以及系统信息配置等。 面板基础设置提供了对面板核心功能的全面控制,帮助您根据实际需求优化面板使用体验。 ![面板设置界面](https://docs.bt.cn/img/user-guide/panel-settings-overview.png) ## 服务控制设置 ### 关闭面板 控制面板服务的启停状态。 **功能说明:** - 仅关闭当前的面板服务 - 不影响web服务器、数据库等其他运行的服务 - 关闭后将无法通过web界面访问面板 **使用场景:** - 临时维护面板时 - 需要重启面板服务时 - 安全加固时临时关闭访问 **操作步骤:** 1. 在面板设置页面找到【关闭面板】开关 2. 点击开关启用或禁用面板服务 3. 关闭前请确保没有重要操作正在进行 > **重要提醒** 关闭面板后,您将无法通过Web界面访问面板,需要通过SSH等方式重新启动面板服务 ::: ## 网络设置 ### 监听IPv6 控制面板是否监听IPv6地址的访问。 **功能说明:** - 启用后面板将同时监听IPv4和IPv6地址 - 支持通过IPv6地址访问面板 - 需要服务器支持IPv6网络 **设置步骤:** 1. 在【监听IPv6】选项中打开开关 2. 设置生效后面板将监听IPv6端口 3. 可通过IPv6地址访问面板 > **说明** 启用IPv6监听需要确保服务器网络环境支持IPv6协议 ::: ## 系统模式设置 ### 离线模式 控制面板的网络连接模式。 **功能说明:** - 离线模式下,面板更新、插件等实际网络服务将无法使用 - 适用于内网环境或对外网访问有限制的场景 - 基础功能不受影响 **使用场景:** - 内网部署环境 - 网络安全要求较高的环境 - 需要阻止面板自动更新的场景 **设置步骤:** 1. 找到【离线模式】开关 2. 开启后面板将不会连接外网获取更新信息 3. 插件商店等功能将不可用 ### 开发者模式 专为第三方插件开发者提供的调试模式。 **功能说明:** - 仅供第三方开发插件使用 - 普通用户请勿开启 - 开启后可能影响面板稳定性 **注意事项:** - 非开发人员不建议启用 - 可能会暴露调试信息 - 影响面板性能 ## API接口设置 ### API接口配置 控制面板API接口的访问权限。 **功能说明:** - 提供面板API接口访问的支持 - 支持发送APP/堡塔手机管理应用 - 需要开启功能才能使用相关应用 **配置步骤:** 1. 在【API接口】选项中点击【API接口配置】 2. 设置API访问密钥 3. 配置允许访问的IP地址范围 4. 设置接口权限范围 **安全建议:** - 定期更换API密钥 - 限制API访问来源IP - 仅开启必要的接口权限 ![API接口配置](https://docs.bt.cn/img/user-guide/panel-api-settings.png) ## 用户体验设置 ### 在线客服 控制面板中在线客服功能的显示。 **功能说明:** - 显示在线客服功能按钮 - 方便用户快速获取技术支持 - 可根据需要开启或关闭 ### 登录后显示地址 控制登录成功后的信息显示。 **功能说明:** - 登录成功后会在面板下方显示信息 - 显示当前的归属地以及登录IP信息 - 有助于监控登录安全 **显示信息包括:** - 登录IP地址 - IP归属地信息 - 登录时间 ### 用户体验改善计划 参与产品改善的数据收集计划。 **功能说明:** - 参加用户体验改善计划帮助我们改善产品 - 收集匿名使用数据用于产品优化 - 不会收集敏感信息 **数据类型:** - 功能使用频率 - 操作习惯统计 - 性能数据 - 错误日志(匿名) ## 面板信息设置 ### 面板别名 自定义面板的显示名称。 **默认设置:** 宝塔Linux面板 **自定义步骤:** 1. 在【面板别名】输入框中输入自定义名称 2. 点击【保存】按钮保存设置 3. 刷新页面查看更改效果 **使用建议:** - 可以设置为公司名称或项目名称 - 方便区分多个面板实例 - 有助于品牌识别 ### 左侧菜单标题 设置左侧导航栏显示的标题。 **默认设置:** 宝塔面板 **设置步骤:** 1. 在【左侧菜单标题】输入框中输入标题 2. 点击【保存】按钮 3. 左侧菜单标题将立即更新 ## 系统配置 ### 超时时间 设置用户登录的超时时间。 **默认设置:** 24小时 **可选设置:** - 1小时 - 6小时 - 12小时 - 24小时 - 3天 - 7天 **设置步骤:** 1. 在【超时时间】下拉框中选择时间 2. 点击【设置】按钮保存 3. 如用户超过以上时间未操作面板,面板将自动退出登录 **安全建议:** - 根据使用频率合理设置超时时间 - 公共环境建议设置较短的超时时间 - 个人环境可适当延长超时时间 ### 默认建站目录 设置网站文件的默认存储路径。 **默认设置:** `/www/wwwroot` **设置说明:** - 创建新站点时的默认目录 - 所有网站文件将存储在此目录下 - 建议选择有足够空间的目录 **修改步骤:** 1. 在【默认建站目录】输入框中输入新路径 2. 确保目录存在且有适当权限 3. 点击【保存】按钮 **注意事项:** - 更改前请备份现有网站数据 - 确保新目录有适当的读写权限 - 不建议使用系统关键目录 ### 默认备份目录 设置数据备份的默认存储路径。 **默认设置:** `/www/backup` **设置说明:** - 网站和数据库备份的默认存储位置 - 需要确保有足够的存储空间 - 建议与网站目录分开存储 **配置步骤:** 1. 在【默认备份目录】输入框中输入路径 2. 确保目录存在且有适当权限 3. 点击【保存】按钮 **最佳实践:** - 选择独立的存储设备或目录 - 定期检查备份目录空间使用情况 - 设置自动清理旧备份的策略 ## 系统信息 ### 服务器IP 显示当前服务器的IP地址。 **显示信息:** - 服务器公网IP地址 - 用于外部访问面板和网站 - 只读信息,不可修改 **示例:** 118.126.89.205 ### 服务器时间 显示服务器当前的系统时间和时区。 **显示格式:** 2025-06-26 13:07:12 CST +0800 **时间信息包括:** - 当前日期和时间 - 时区标识(CST) - 时区偏移量(+0800) **设置步骤:** 1. 点击【同步】按钮可以同步当前服务器时间 2. 如果时间不正确,需要通过系统命令调整 **重要性:** - 影响日志记录的准确性 - 影响定时任务的执行时间 - 影响SSL证书的有效期验证 ![系统信息显示](https://docs.bt.cn/img/user-guide/panel-system-info.png) ## 保存设置 完成各项设置后,记得点击对应的【保存】按钮保存配置。部分设置会立即生效,部分设置可能需要重启面板服务。 > **操作建议** - 修改重要设置前建议先备份面板配置 - 在生产环境中谨慎修改核心设置 - 定期检查和更新面板配置 - 记录重要的配置变更 ::: > **安全提醒** - API接口开启后要注意访问控制 - 合理设置登录超时时间 - 监控登录地址信息的异常 - 及时更新面板到最新版本 ::: --- source: https://docs.bt.cn/user-guide/config/safe/dynamic-pass-auth.md.txt # 动态口令认证 > 为宝塔面板(BT Panel)开启动态口令认证(TOTP),使用堡塔 APP、谷歌身份验证器或微软身份验证器扫码绑定,登录面板时上传一次性动态验证码,震慑丢失口令与重放攻击;含忘记后使用 bt 24 解除说明。 # 动态口令认证 本文将介绍如何开启动态口令认证。 动态口令认证是一种身份认证技术,它采用动态产生的口令来验证用户身份,以提高认证的安全性和可靠性。 ## 配置 1. 进入面板,点击左侧菜单栏的`设置`,进入面板设置页面。 ![面板设置页面](https://docs.bt.cn/img/user-guide/panel-setting.png) 2. 在设置页面顶部菜单栏中,点击 `安全设置`,进入安全设置页面。 ![安全设置页面](https://docs.bt.cn/img/user-guide/security-setting.png) 3. 在`安全设置`中,点击`动态口令配置`,进入动态口令认证设置页面。 ![动态口令配置](https://docs.bt.cn/img/user-guide/dynamic-pass-auth-1.png) 4. 在弹出的设置窗口中,勾选并同意接受风险。 ![动态口令配置窗口](https://docs.bt.cn/img/user-guide/dynamic-pass-auth.png) > **注意** - 必须要用到且了解此功能才决定自己是否要开启!! - 如果无法验证,命令行输入 `bt 24` 取消动态口令认证 ::: > **说明** - 服务器的时间与网络时间需一致,否则无法验证。 - 开启服务后,请立即绑定,以免出现面板不能访问。 - 请先下载堡塔 APP 或支持 TOTP 协议的验证器【例如谷歌身份验证器(Google Authenticator)或微软身份验证器(Microsoft Authenticator)】,并完成安装和初始化。 - 基于 Google Authenticator 开发 ::: 5. 在弹出的设置窗口中,使用堡塔 APP 或者其他验证器扫码绑定。 ![动态口令绑定](https://docs.bt.cn/img/user-guide/dynamic-pass-auth-2.png) > **说明** - 请使用“ 堡塔 APP 或其他身份验证器 ”绑定,各大软件商店均可下载堡塔 APP ,支持安卓、 iOS 系统。 ::: > **注意** - 开启服务后,请立即使用“ 堡塔 APP 或其他身份验证器 ”绑定,以免出现无法登录的情况。 - 同一个IP验证成功后24小时内无需再次验证。 ::: ## 堡塔 APP 绑定动态口令 1. 打开堡塔 APP,点击右上角“···”,选择“扫描二维码” ![堡塔 APP 扫描二维码](https://docs.bt.cn/img/user-guide/dynamic-pass-auth-3.png) 2. 扫描面板二维码,若显示“添加成功”,则添加成功。 ![堡塔 APP 添加成功](https://docs.bt.cn/img/user-guide/dynamic-pass-auth-4.png) 3. 刷新页面后,即可使用动态口令登录面板。 ![堡塔 APP 登录面板](https://docs.bt.cn/img/user-guide/dynamic-pass-auth-5.png) --- source: https://docs.bt.cn/user-guide/crontab/library.md.txt # 脚本库 > 在宝塔面板(BT Panel)「计划任务 → 脚本库」中使用官方脚本或上传自定义 Python / Shell 脚本,支持脚本参数、返回类型与编码声明,供计划任务反复调用。 # 脚本库 本文将介绍脚本库的使用方法。 在脚本库内,您可以找到宝塔面板官方提供的各种常用脚本,您也可以上传自己的脚本到脚本库,需要的时候直接使用。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`计划任务`,进入计划任务列表页面。 ![导航栏-计划任务](https://docs.bt.cn/img/user-guide/crontab/lts-sidebar-task.png) 2. 点击顶部导航栏的`脚本库`,进入脚本库页面。 ![脚本库](https://docs.bt.cn/img/user-guide/crontab/lts-library.png) 3. 点击`创建脚本`,进入创建脚本页面。 ![创建脚本](https://docs.bt.cn/img/user-guide/crontab/lts-create-script.png) 4. 填写脚本信息,点击`提交`,即可创建脚本。 ![填写脚本信息](https://docs.bt.cn/img/user-guide/crontab/lts-create-script-info.png) > **说明** - 当前仅支持Python和Shell脚本 - 请根据返回类型在脚本执行结束时输出符合预期的值 - 如果选择需要脚本参数,使用当前脚本时需传递一个参数,在脚本中的第一个参数中接收 - Python 脚本需指定编码(如 #coding: utf-8);Shell 脚本可以用 #!/bin/bash 或 #!/bin/sh 开头,未指定类型时默认按 Shell 脚本执行。 ::: --- source: https://docs.bt.cn/user-guide/database/mongodb/remote-connection.md.txt # 宝塔面板 MongoDB 远程连接数据库 > 在宝塔面板(BT Panel)数据库模块为 MongoDB 添加远程数据库连接,含默认 27017 端口、管理员账号与密码填写、服务器互访问权限检查与安装后 MongoDB 默认不开启远程权限说明。 # 宝塔面板 MongoDB 远程连接数据库 本文将介绍 MongoDB 如何添加远程数据库 ## 操作步骤 1. 进入面板,点击左侧菜单栏的 数据库,进入数据库的 MongoDB 页面; ![进入MongoDB页面](https://docs.bt.cn/img/user-guide/database/mongodb/mongodb-menu.png) 2. 点击 添加远程数据库 按钮,进入添加远程数据库页面; ![添加远程数据库](https://docs.bt.cn/img/user-guide/database/mongodb/mongodb-add-remote.png) ![添加远程数据库按钮](https://docs.bt.cn/img/user-guide/database/mongodb/mongodb-add-remote-button.png) :::warning 注意 - 请确保本服务器有访问数据库的权限 - 请确保填写的管理员账号具备足够的权限 - 通过宝塔安装的 MongoDB 默认不支持远程权限 ::: 3. 填写数据库信息,点击 确定 按钮,完成数据库添加。 ![填写数据库信息](https://docs.bt.cn/img/user-guide/database/mongodb/mongodb-remote-form.png) :::info 说明 - **服务器地址**:根据你的实际情况输入服务器地址 - **数据库端口**:MongoDB 远程数据通信端口,默认为27017 - **管理员名称**:根据你的实际情况输入管理员名称,用于身份验证 - **管理员密码**:登录数据库的密码 ::: --- source: https://docs.bt.cn/user-guide/database/mysql/add.md.txt # 宝塔面板添加 MySQL 数据库 > 介绍如何在宝塔面板(BT Panel)中添加与创建 MySQL 数据库,包含数据库名、账号与密码设置、访问权限限制、从备份文件恢复与网站绑定的完整步骤。 # 添加数据库 本文将介绍如何添加数据库。 宝塔面板提供了数据库管理功能,可以方便的添加、删除、修改数据库。 ## 操作步骤 1. 进入面板,点击左侧菜单栏的 **数据库**,进入数据库的 MySQL 页面; ![菜单栏-数据库](https://docs.bt.cn/img/user-guide/database/sidebar-database.png) 2. 点击 **添加数据库** 按钮,进入添加数据库页面; ![添加数据库页面](https://docs.bt.cn/img/user-guide/database/add-database.png) 3. 填写数据库信息,点击 **确定** 按钮,完成数据库添加。 ![填写数据库信息](https://docs.bt.cn/img/user-guide/database/add-database-form.png) > **说明** - 数据库名:根据你的实际情况输入数据库名,可选择数据库的编码格式,默认为utf8mb4格式。 - 用户名:根据你的实际情况输入用户名,是用来登录数据库的用户。 - 密码:登录数据库用的密码,默认为随机密码,可以自定义,可在数据库列表中查看密码。 - 访问权限:设置登录数据库的权限,选项有:本地服务器、所有人(不安全)、指定IP,默认是本地服务器。 - 本地服务器:表示只有本地的服务器才能登录数据库,其它服务器不能登录。 - 所有人(不安全):表示不论是谁,只要知道用户名和密码都能登录数据库。 - 指定IP:表示只有这些限定的IP才能登录数据库,其它IP不能登录。 - 添加至:表示新创建的数据库可以添加到本地服务器中,也可添加到远程服务器上。 - 管理远程服务器:可用来添加远程的数据库服务器,方便集中管理数据库。 ::: --- source: https://docs.bt.cn/user-guide/database/sqlserver/remote-connection.md.txt # 宝塔面板 SQL Server 远程连接数据库 > 在宝塔面板(BT Panel)数据库模块为 SQL Server 添加远程数据库连接,含默认 1433 端口、管理员账号密码与服务器互访问预检、面板默认不开启远程权限说明。 # 宝塔面板 SQL Server 远程连接数据库 本文将介绍 SQL Server 如何添加远程数据库 ## 操作步骤 1. 进入面板,点击左侧菜单栏的 数据库,进入数据库的 SQL Server 页面; ![进入SQL Server页面](https://docs.bt.cn/img/user-guide/database/mongodb/mongodb-menu.png) 2. 点击 添加远程数据库 按钮,进入添加远程数据库页面; ![添加远程数据库](https://docs.bt.cn/img/user-guide/database/sqlserver/sqlserver-add-remote.png) ![添加远程数据库按钮](https://docs.bt.cn/img/user-guide/database/sqlserver/sqlserver-add-remote-button.png) :::warning 注意 - 请确保本服务器有访问数据库的权限 - 请确保填写的管理员账号具备足够的权限 - 通过宝塔安装的 SQL Server 默认不支持远程权限 ::: 3. 填写数据库信息,点击 确定 按钮,完成数据库添加。 ![填写数据库信息](https://docs.bt.cn/img/user-guide/database/sqlserver/sqlserver-remote-form.png) :::info 说明 - **服务器地址**:根据你的实际情况输入服务器地址 - **数据库端口**:SQL Server 远程数据通信端口,默认为1433 - **管理员名称**:根据你的实际情况输入管理员名称,用于身份验证 - **管理员密码**:登录数据库的密码 ::: --- source: https://docs.bt.cn/user-guide/docker/conmanager.md.txt # Docker 总览 > 在宝塔面板 Docker 总览页集中查看服务器 CPU、内存资源使用情况与全部运行中容器的运行状态,快速掌握 Docker 环境负载。 # Docker 总览 可以在总览页面查看当前运行的容器和服务器状态,包括CPU、内存等使用情况。 ![总览](https://docs.bt.cn/img/user-guide/docker/docker-conmanger.png) --- source: https://docs.bt.cn/user-guide/docker/deployment/deployment.md.txt # Docker 应用商店 > 宝塔面板 Docker 应用商店提供 200+ 一键安装应用,包括建站、数据库、开源工具与企业服务镜像,免配置完成部署并集中管理已安装应用。 # 应用商店 本文将介绍如何使用宝塔面板部署和管理 Docker 应用。 ## 使用教程 1. 进入面板,点击左侧菜单栏的 `Docker`,进入Docker应用商店页面。 ![菜单栏-Docker](https://docs.bt.cn/img/user-guide/docker/sidebar-docker.png) 2. 在应用商店页面,找到想要安装的应用,点击 `安装`,进入应用安装页面。 ![应用商店页面](https://docs.bt.cn/img/user-guide/docker/app-store.png) 3. 在应用安装页面,填写应用信息,点击 `安装`,等待应用安装完成。 ![应用安装页面](https://docs.bt.cn/img/user-guide/docker/app-install.png) 4. 安装完成后,点击应用商店中的 `已安装`,进入已安装应用页面。 ![已安装应用页面](https://docs.bt.cn/img/user-guide/docker/app-installed.png) --- source: https://docs.bt.cn/user-guide/domain/domain-registration.md.txt # 域名注册使用教程 > 在宝塔面板一站式完成域名 Whois 查询、注册购买与解析 IP 修改,无需跳转第三方平台即可完成从挑选域名到绑定服务器的全流程。 # 域名注册使用教程 宝塔面板的域名注册服务是一项与服务器管理深度集成的功能,用户可在面板内一站式完成域名查询、注册、解析及网站部署,无需跳转第三方平台。 本文将指导您如何在宝塔面板中完成域名注册。 ## 域名注册 1. 点击左侧菜单栏的 **域名**,进入域名模块 2. 点击 **域名注册** 选项卡 ![进入域名注册](https://docs.bt.cn/img/domain/registration/image-20251108182925511.png) 3. 在搜索框中输入您想要注册的域名,点击 **立即查询** 4. 选择心仪的域名后点击 **购买** ![域名查询和购买](https://docs.bt.cn/img/domain/registration/image-20251108183035783.png) ## Whois 查询 在注册域名之前,可以先通过 Whois 查询检查域名是否已经被注册,还可以查看已注册域名的相关信息。 ![Whois查询](https://docs.bt.cn/img/domain/registration/image-20251108183513735.png) **功能说明:** - 查询域名注册状态 - 查看域名注册者信息 - 查看域名到期时间 - 查看域名注册商信息 ## 修改解析 IP 这个功能将您的域名与服务器的 IP 地址绑定。当用户在浏览器输入域名时,互联网会通过这个"解析 IP"找到对应的服务器,从而展示您网站的内容。 点击 **修改** 可随时更换这个 IP 地址。 ![修改解析IP](https://docs.bt.cn/img/domain/registration/image-20251108184050062.png) **使用场景:** - 域名绑定到新服务器 - 更换服务器 IP 地址 - 设置域名解析到 CDN ## 注意事项 1. **域名选择**:建议选择简短、易记、与业务相关的域名 2. **后缀选择**:根据业务需求选择合适的域名后缀(.com、.cn、.net等) 3. **实名认证**:部分域名需要完成实名认证才能正常使用 4. **续费管理**:注意域名到期时间,及时续费避免域名被释放 ## 相关文档 - [域名管理概述](./overview.md) - [域名托管使用教程](./domain-hosting.md) --- source: https://docs.bt.cn/user-guide/ftp/edit-ftp-user.md.txt # 修改 FTP 用户 > 在宝塔面板 FTP 用户列表中针对已创建的 FTP 账号修改登录密码、变更根目录指向、调整可访问范围的完整操作步骤,适用于权限收紧、跨站点目录切换与凭据轮换等运维场景。 # 修改 FTP 用户 本文将介绍如何修改 FTP 用户密码、根目录。 ## 操作步骤 1. 登录宝塔面板,点击左侧菜单栏的 **FTP**,进入 FTP 管理页面; ![FTP 管理页面](https://docs.bt.cn/img/user-guide/ftp/ftp.png) 2. 选择需要修改的 FTP 用户,点击 FTP 列表右侧的 **修改** 按钮; ![修改 FTP 用户](https://docs.bt.cn/img/user-guide/ftp/ftp-edit.png) 3. 在弹出的修改 FTP 用户窗口中,修改 FTP 用户信息,点击 **提交** 按钮即可; ![修改 FTP 用户窗口](https://docs.bt.cn/img/user-guide/ftp/ftp-edit-window.png) --- source: https://docs.bt.cn/user-guide/home/upgrade-package-version.md.txt # 升级面板套餐版本 > 从宝塔面板首页右上角「企业版」入口选专业版/企业版套餐,在线支付后面板自动绑定新权益,解锁防篡改、告警、企业级备份等高级功能。 # 升级面板套餐版本 ## 操作场景 本文将指导您升级面板套餐版本,以获取更多功能和服务,不同版本套餐的详细功能对比请参见[版本对比](https://docs.bt.cn/purchase-guides/package-version-comparison)。 ## 操作步骤 1. 登录宝塔面板,在首页右上角点击`企业版`按钮。 ![点击企业版](https://docs.bt.cn/img/user-guide/home/upgrade-package-version.png) 2. 在弹出的对话框中选择需要升级的套餐版本,选择合适的套餐版本后,完成支付。 ![选择套餐版本](https://docs.bt.cn/img/user-guide/home/upgrade-package-version-2.png) 3. 付费完成后,面板会自动绑定新套餐版本,升级成功。 --- source: https://docs.bt.cn/user-guide/security/server-safe/security-config.md.txt # 服务器安全配置 > 在宝塔面板集中配置 SSH 端口、密码复杂度、密码长度、SSH 登录告警与防爆破,快速完成服务器安全加固与合规化推荐设置。 # 安全配置 ## 功能说明 安全配置页面集中管理服务器的各项安全设置,您可以在此快速配置SSH、密码、面板等安全选项。 ![安全配置页面](https://docs.bt.cn/img/user-guide/security/security-config-overview.png) ## SSH安全配置 ![SSH安全配置](https://docs.bt.cn/img/user-guide/security/security-ssh-config.png) ### SSH端口修改 **推荐设置**:使用非标准端口(建议使用高位端口,比如21111) **操作步骤**: 1. 进入【安全】>【服务器安全】>【安全配置】 2. 找到"SSH端口修改"选项 3. 输入新的端口号(范围:1-65535) 4. 点击【应用】 :::warning 重要提示 - 修改SSH端口前,请确保新端口未被占用 - 修改后请在防火墙中放行新端口 - 建议同时修改安全组规则 ::: ### 密码复杂度 **推荐设置**:启用复杂密码策略 **配置说明**: 启用后密码必须同时包含: - 数字 - 大写字母 - 小写字母 - 特殊字符 **复杂度等级**: 系统会实时显示密码复杂度等级(1/4 - 4/4),建议设置为最高等级。 ### 密码长度限制 **推荐设置**:最小8位,建议16位以上 **操作步骤**: 1. 设置密码最小长度 2. 输入具体位数(建议16位以上) 3. 点击【设置】 ### SSH登录告警 **推荐设置**:开启 **功能说明**: 开启后,当有SSH登录行为时,系统会发送告警通知,帮助您及时发现异常登录。 **配置方式**: 1. 切换开关至"配置告警" 2. 根据提示设置告警方式(如邮件、微信等)、发送间隔、发送上限等。 ![SSH登录告警配置](https://docs.bt.cn/img/user-guide/security/security-ssh-login-alert.png) ### SSH防爆破 **推荐设置**:开启 **功能说明**: 开启后自动拦截SSH暴力破解攻击,防止密码被破解。 **操作步骤**: 1. 切换开关开启SSH防爆破 2. 系统会自动监控并拦截异常登录尝试 ## 面板安全配置 ![面板安全配置](https://docs.bt.cn/img/user-guide/security/security-panel-config.png) ### 面板登录告警 **推荐设置**:开启 **功能说明**: 开启后,当有面板登录行为时发送告警通知。 **配置方式**: 1. 点击【配置告警】 2. 选择告警方式(邮件、微信、钉钉等) 3. 保存配置 ### 面板登录动态口令认证 **推荐设置**:开启(增强安全性) **功能说明**: 启用TOTP动态口令,登录时除密码外还需输入动态验证码,大大增强安全性。 **操作步骤**: 1. 切换开关开启动态口令 2. 使用手机验证器APP(如Google Authenticator、Microsoft Authenticator)扫描二维码 3. 输入验证码完成绑定 :::tip 提示 绑定后请妥善保管密钥或备份二维码,以防手机丢失无法登录。 ::: ### 未登录响应状态码 **推荐设置**:404(隐藏面板) **功能说明**: 设置未登录时访问面板返回的HTTP状态码,可隐藏面板避免被扫描发现。 **可选项**: - **404 - 页面不存在**:推荐,让扫描工具认为面板不存在 - **其他状态码**:根据需要自定义 ### 面板开启SSL **推荐设置**:开启 **功能说明**: 启用HTTPS加密访问面板,防止登录信息被窃取。 **操作步骤**: 1. 切换开关开启SSL 2. 系统会自动配置证书 3. 启用后使用HTTPS访问面板 :::info 说明 开启SSL后,面板地址会从 `http://` 变为 `https://`,请使用新地址访问。 ::: ## root密码管理 ![root密码管理](https://docs.bt.cn/img/user-guide/security/security-root-password.png) ### root密码设置 **推荐设置**:使用复杂密码或密钥认证 **操作步骤**: 1. 进入root密码设置区域 2. 选择密码策略: - **只能密钥登录**:仅允许密钥认证(推荐) - **只能密码登录**:仅允许密码认证 - **可密钥和密码登录**:两种方式都允许(默认) - **禁止登录**:禁止root用户登录(最安全) 3. 点击【查看密钥】或【下载密钥】管理SSH密钥 ### 安全建议 1. **优先使用密钥认证**:比密码更安全 2. **定期更换密码**:建议每3-6个月更换一次 3. **禁止root直接登录**:使用普通用户登录后su切换 4. **保管好密钥文件**:密钥泄露等同于密码泄露 ## 应用配置 完成所有设置后: 1. 检查各项配置是否正确 2. 点击页面底部的【应用】按钮 3. 等待配置生效 4. 返回安全概览查看安全评分变化 :::warning 注意事项 - 修改SSH配置前请确保有其他登录方式,避免无法连接服务器 - 启用动态口令前请先测试,确保可以正常生成验证码 - 建议在维护窗口期间进行安全配置修改 ::: ## 常见问题 **Q: 修改SSH端口后无法连接怎么办?** A: 请检查: 1. 防火墙是否放行新端口 2. 云服务器安全组是否开放新端口 3. 可以通过面板的Web终端登录修复 **Q: 开启SSL后提示证书不受信任?** A: 这是因为使用了自签名证书,您可以: 1. 信任该证书继续访问 2. 申请正式的SSL证书替换 --- source: https://docs.bt.cn/user-guide/security/ssh/ssh-account.md.txt # SSH 系统账号管理 > 宝塔面板企业版提供的 SSH 系统账号管理功能,支持创建系统用户、重置密码、开启防入侵与命令日志记录,集中管理远程登录账号生命周期。 # SSH系统账号管理 本文将介绍如何管理SSH系统账号。 > **提示** 该功能是企业版专享功能,请先开通企业版。 ::: ## 操作步骤 在SSH管理页面,点击“SSH账号管理”,进入SSH账号管理页面。 ![SSH账号管理](https://docs.bt.cn/img/user-guide/security/ssh-account.png) 在这里,你可以开启或关闭SSH账号的防入侵、记录日志功能,查看SSH账号的详细命令日志,重置密码,以及添加和删除SSH账号。 ### 添加SSH账号 点击“创建系统用户”按钮,输入用户名、密码,点击“确定”即可添加账号。 ![添加账号](https://docs.bt.cn/img/user-guide/security/ssh-account-add.png) ![添加账号](https://docs.bt.cn/img/user-guide/security/ssh-account-add-2.png) --- source: https://docs.bt.cn/user-guide/site/nginx-takeover.md.txt # 宝塔面板 Nginx 接管本机已装 Nginx > 通过宝塔面板(BT Panel)Nginx 接管功能,将本机通过其他方式(源码 / yum / apt)安装的 Nginx 服务纳入面板管理,实现配置可视化、站点统一运维与插件免重装。 # Nginx 接管 本文将指导您通过面板的 Nginx 接管功能,轻松接管本机通过其他方式(如源码编译、yum/apt 命令安装、手动解压部署等)搭建的 Nginx 服务,实现面板统一管理,无需重新部署服务、不影响原有业务运行。 ## 功能介绍 > 该功能为面板 v11.6 版本新增特性 核心作用:统一管控本机**非面板安装**的 Nginx 服务,无需卸载原有服务、无需修改网站配置,通过自动解析原生配置文件完成接管。 接管后可在面板实现全功能管理: - Nginx 配置编辑、服务启停/重启 - 实时状态监控、日志在线查看 - 版本平滑升级、扩展模块管理 完美解决多方式部署 Nginx 导致的**管理分散、操作繁琐、配置冲突混乱**等问题,适用于所有已部署 Nginx 且需要统一面板管理的场景。 ## 操作步骤 ### 环境说明 - 操作系统:Debian 12 - Nginx 安装方式:apt 命令安装 - Nginx 原有版本:v1.22.1 站点访问截图: ![站点访问截图](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313005949576.png) ### 接管详细步骤 1. 安装面板。 安装过程中检测到现有 Web 环境时,输入 `yes` 执行强制安装。 > ⚠️ 重要提醒:强制安装存在一定风险,**接管前务必创建服务器快照**备份! ![安装面板时检测到现有 Web 环境](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313010418309.png) 2. 面板安装完成后,通过服务器外网 IP 访问面板并登录。 3. 登录后忽略【安装 LNMP 环境】提示,点击右上角关闭按钮。 ![忽略安装 LNMP 环境提示](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011111031.png) 4. 点击左侧菜单栏【网站】,选择【接管本地 nginx】。 ![选择接管本地 nginx](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011223130.png) 5. 在列表中选择本地已安装的 Nginx v1.22.1 版本。 ![选择本地已安装的 Nginx 版本](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011405940.png) 6. 点击【安装 nginx】。 ![点击安装 nginx](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011443114.png) 7. 根据需求选择目标版本及安装方式,此处选择 1.28.1 版本进行安装。 > ✅ 推荐选择**编译模式**,业务运行更稳定。 ![选择目标版本及安装方式](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011647687.png) 8. 等待安装完成,面板会自动解析原有所有站点配置。 ![面板自动解析站点配置](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011843728.png) 9. 选择需要接管的网站,点击【保存选中网站】。 ![保存选中网站](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313011959515.png) 10. 配置保存完成后,检查面板 Nginx 状态是否正常。若状态为关闭,需在终端手动停止系统中原有的 Nginx 服务,以避免端口冲突。 > 也可手动修改端口后再启动。 ```bash # 停止系统安装的 Nginx systemctl stop nginx # 检查是否还有残留进程 ps aux | grep nginx # 如仍有残留进程,执行以下命令强制终止 pkill -9 nginx ``` 11. 返回面板,手动启动 Nginx 服务。 ![手动启动 Nginx 服务](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313012609216.png) 12. 启动成功后,在【HTML 项目】中可以看到已接管的网站。 ![HTML 项目中显示接管的网站](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313012736249.png) 13. 查看接管日志。 ![接管日志](https://docs.bt.cn/img/practical-tutorials/nginx-takeover/image-20260313014500179.png) ## 常见问题 ### 接管失败后,手动执行接管脚本进行接管 除通过面板可视化接管外,也可手动执行接管脚本。脚本为交互式操作,简单易上手。 **接管脚本使用方法:** ```bash # 脚本执行命令 btpython /www/server/panel/script/nginx_site_helper.py # 以下为操作示例 root@iZbp1ddiqohvy9r97sspwaZ:~# btpython /www/server/panel/script/nginx_site_helper.py ==================== [1] version: nginx/1.28.1 nginx-bin: /www/server/nginx/sbin/nginx config-file:/www/server/nginx/conf/nginx.conf work-path:/www/server/nginx -------------------- [2] version: nginx/1.22.1 nginx-bin: /usr/sbin/nginx config-file:/etc/nginx/nginx.conf work-path:/usr/share/nginx ==================== 请选择nginx实例(1-2/quit/q):2 配置/etc/nginx/nginx.conf中,共解析到1个网站 ==================== [1] 网站类型:html 网站名称:8.136.211.123 域名:8.136.211.123 网站目录:/home/8.136.211.123 ==================== 是否保存以上配置(y/n):y 网站:[8.136.211.123],保存成功 ``` **脚本其他使用方法:** 1. 脚本未检测到 Nginx 时,或多版本 Nginx 共存的场景,先获取 Nginx 可执行文件的绝对路径,再指定路径执行接管: ```bash which nginx # 示例输出 /usr/sbin/nginx # 执行脚本,指定路径接管 btpython /www/server/panel/script/nginx_site_helper.py -b /usr/sbin/nginx ``` 2. 恢复原生配置(撤销接管): ```bash btpython /www/server/panel/script/nginx_site_helper.py recovery ``` 3. 查看接管脚本帮助: ```bash btpython /www/server/panel/script/nginx_site_helper.py -h ``` --- source: https://docs.bt.cn/user-guide/site/php/create-web.md.txt # 宝塔面板添加网站(创建 PHP 站点) > 详细介绍如何在宝塔面板(BT Panel)中添加网站,包含域名绑定、根目录设置、PHP 版本选择、数据库创建与 FTP 账号设置等完整步骤,适用于 WordPress 与 PHP 类项目快速上线。 # 添加站点 ## 操作场景 本文将指导您如何创建 PHP 站点。 ## 操作步骤 登录宝塔面板,在左侧菜单栏中点击`网站-PHP项目`,点击`添加站点`。 ![宝塔面板网站菜单 - PHP 项目添加站点入口](https://docs.bt.cn/img/user-guide/site/create-web.png) ![传统 PHP 项目添加站点表单](https://docs.bt.cn/img/user-guide/site/create-web-2.png) :::info[说明] - 域名:填写站点域名,如`bt.cn`,`www.bt.cn`等,多个域名请换行填写,支持泛域名`*.bt.cn`,如需自定义端口请填写`域名:端口`,如`www.bt.cn:8080`。 - 备注:填写站点备注,如`测试站点`。 - 根目录:填写站点目录,如`/www/wwwroot/www.bt.cn`,默认为`/www/wwwroot/域名`。 - FTP:创建站点的同时,为站点创建一个对应FTP帐户,并且FTP目录指向站点所在目录。 - 数据库:创建站点的同时,为站点创建一个对应的数据库帐户,方便不同站点使用不同数据库。 - PHP版本:选择站点使用的PHP版本,纯静态网站可选择`纯静态`。 - 站点分类:选择站点分类,方便管理。 ::: Swoole 是一个高性能高并发的 PHP 协程框架,可以编写 TCP、UDP、HTTP、WebSocket 等服务 ![Swoole 异步项目创建表单](https://docs.bt.cn/img/user-guide/site/create-web-3.png) :::info[说明] - 绑定域名:填写站点域名,如`bt.cn`,`www.bt.cn`等,多个域名请换行填写,支持泛域名`*.bt.cn`,如需自定义端口请填写`域名:端口`,如`www.bt.cn:8080`。 - 项目目录:填写站点目录,如`/www/wwwroot/www.bt.cn`,默认为`/www/wwwroot/域名`。 - swoole 版本:开启自动安装依赖时会给对应版本的 php 安装 swoole,可前往 PHP 扩展中手动安装。 - PHP 版本:选择站点使用的 PHP 版本 - 数据库:创建站点的同时,为站点创建一个对应的数据库帐户,方便不同站点使用不同数据库。 - 运行用户:无特殊需要请使用`www`用户 - 启动命令:填写站点启动命令,如`php think swoole` - 依赖安装:composer install 进行安装依赖,最终安装结果请前往 `项目-日志-安装依赖日志` 进行确认,若安装依赖不成功,项目会启动失败 - 站点备注:填写站点备注,如`测试站点`。 ::: ThinkPHP是一款高性能、易用的PHP框架,支持多种技术栈和场景,拥有强大的生态和合作伙伴 ![ThinkPHP 异步项目创建表单](https://docs.bt.cn/img/user-guide/site/create-web-4.png) :::info[说明] - 绑定域名:填写站点域名,如`bt.cn`,`www.bt.cn`等,多个域名请换行填写,支持泛域名`*.bt.cn`,如需自定义端口请填写`域名:端口`,如`www.bt.cn:8080`。 - 项目目录:填写站点目录,如`/www/wwwroot/www.bt.cn`,默认为`/www/wwwroot/域名`。 - PHP 版本:选择站点使用的 PHP 版本 - fileinfo 版本:ThinkPHP 项目需要`fileinfo`扩展,若未安装,可前往 PHP 扩展中手动安装。 - 数据库:创建站点的同时,为站点创建一个对应的数据库帐户,方便不同站点使用不同数据库。 - 运行用户:无特殊需要请使用`www`用户 - 启动命令:填写站点启动命令,如`php think run` - 依赖安装:composer install 进行安装依赖,最终安装结果请前往 `项目-日志-安装依赖日志` 进行确认,若安装依赖不成功,项目会启动失败 - 站点备注:填写站点备注,如`测试站点`。 ::: PHP中常用的异步编程技术包括使用Swoole扩展、利用异步任务队列、采用协程等 :::info[说明] 异步项目当前仅支持 Nginx ::: ![PHP 异步项目创建表单](https://docs.bt.cn/img/user-guide/site/create-web-5.png) :::info[说明] - 绑定域名:填写站点域名,如`bt.cn`,`www.bt.cn`等,多个域名请换行填写,支持泛域名`*.bt.cn`,如需自定义端口请填写`域名:端口`,如`www.bt.cn:8080`。 - 项目目录:填写站点目录,如`/www/wwwroot/www.bt.cn`,默认为`/www/wwwroot/域名`。 - PHP 版本:选择站点使用的 PHP 版本 - 数据库:创建站点的同时,为站点创建一个对应的数据库帐户,方便不同站点使用不同数据库。 - 运行用户:无特殊需要请使用`www`用户 - 启动命令:填写站点启动命令,如`php serve.php` - 依赖安装:composer install 进行安装依赖,最终安装结果请前往 `项目-日志-安装依赖日志` 进行确认,若安装依赖不成功,项目会启动失败 - 站点备注:填写站点备注,如`测试站点`。 ::: 宝塔面板支持部分开源项目一键部署,您只需要填写域名,即可一键部署。 ![开源项目一键部署表单](https://docs.bt.cn/img/user-guide/site/create-web-6.png) :::info[说明] - 绑定域名:填写站点域名,如`bt.cn`,`www.bt.cn`等,多个域名请换行填写,支持泛域名`*.bt.cn`,如需自定义端口请填写`域名:端口`,如`www.bt.cn:8080`。 - 项目目录:填写站点目录,如`/www/wwwroot/www.bt.cn`,默认为`/www/wwwroot/域名`。 - 其他配置:面板默认配置了数据库等,如您需要修改,请点击`编辑配置`进行修改,具体可参考`传统项目(通用)` ::: 部分应用开发者提供了预构建的环境包,具体请咨询对应开发者。 ![应用环境包创建表单](https://docs.bt.cn/img/user-guide/site/create-web-7.png) 批量创建站点 ![批量创建站点表单](https://docs.bt.cn/img/user-guide/site/create-web-8.png) :::info[说明] - 批量格式:域名|根目录|FTP|数据库|PHP版本 - 域名参数:多个域名用 , 分割 - 根目录参数:填写 1 为自动创建,或输入具体目录 - FTP参数:填写 1 为自动创建,填写 0 为不创建 - 数据库参数:填写 1 为自动创建,填写 0 为不创建 - PHP版本参数:填写 0 为静态,或输入PHP具体版本号列如:56、71、74 - 如需添加多个站点,请换行填写 - 示例:bt.cn,test.cn:8081|/www/wwwroot/bt.cn|1|1|56 ::: --- source: https://docs.bt.cn/user-guide/site/php/site-config/subdirectory-binding.md.txt # 站点子目录域名绑定 > 宝塔面板子目录绑定可将多个域名/子域名映射至同一站点下的不同子目录(如 sub.example.com → /sub),适用于站群部署、多语言站、子产品独立访问等场景,无需重复创建站点。 # 子目录绑定 本文将介绍如何将域名绑定在该WEB站点下的子目录上。 您可以通过子目录绑定功能,将域名绑定在该WEB站点下的子目录上。例如,您可以将域名`sub.example.com`绑定到`/sub`目录上,适用于站群场景 > **注意** 无论子目录还是子子目录都建议使用独立建站绑定的方法,不建议采用子目录绑定方法。 ::: ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`子目录绑定`,进入子目录绑定页面。 ![子目录绑定](https://docs.bt.cn/img/user-guide/site/sun-directory.png) 4. 在弹出的窗口中,填写需要设置的域名,并选择需要绑定的子目录,点击`添加`即可。 ![设置子目录域名](https://docs.bt.cn/img/user-guide/site/set-subdirectory.png) 5. 在当前页面下,您可为子域名设置伪静态规则,以及删除域名。 --- source: https://docs.bt.cn/user-guide/ssl/domain.md.txt # SSL 域名与 DNS 接口管理 > 在宝塔面板 SSL 证书管理中维护域名列表与 DNS 服务商 API 接口,为 Let's Encrypt 、泛域名证书与 DNS-01 验证提供自动认证能力。 # 域名管理 本文将介绍域名管理的相关内容。 ## 操作步骤 1. 进入面板,点击左侧菜单栏的 **SSL**,进入证书管理页面; ![侧边栏-SSL](https://docs.bt.cn/img/user-guide/ssl/sidebar-ssl.png) 2. 点击 **域名管理** 选项卡,进入域名列表页面; ![域名列表](https://docs.bt.cn/img/user-guide/ssl/domain-list.png) 3. 点击 **DNS接口设置** 按钮,进入域名DNS接口设置页面; ![域名DNS接口设置](https://docs.bt.cn/img/user-guide/ssl/domain-dns-interface.png) 4. 点击 **添加DNS接口** 按钮,进入添加DNS接口页面; ![添加DNS接口](https://docs.bt.cn/img/user-guide/ssl/add-dns-interface.png) 5. 填写DNS接口信息,点击 **确定** 按钮,完成DNS接口添加; ![添加DNS接口](https://docs.bt.cn/img/user-guide/ssl/add-dns-interface-2.png) --- source: https://docs.bt.cn/user-guide/xterm/ai-terminal.md.txt # AI 终端 > 宝塔面板 v11.6 推出的 AI 终端功能,支持以中文自然语言描述需求,自动生成并执行 Linux 命令,高危操作需明确授权,大幅降低运维门槛。 # AI 终端 本文将介绍宝塔面板 v11.6 新上线的 AI 终端功能——用中文让宝塔面板帮你干活。 > **版本要求** 此功能需要面板版本更新至 v11.6,且宝塔 AI 助手插件版本更新至 1.2.0+。 ::: ## 功能介绍 **AI 终端**是宝塔面板最新推出的智能运维辅助功能,通过集成 **AI + Linux 终端操作**,帮助运维人员更高效地完成服务器管理、故障排查和命令执行。 AI 终端在传统 SSH 终端的基础上引入**自然语言理解能力**,用户可以通过**中文或自然语言描述需求**与 AI 对话,AI 自动生成对应的 Linux 命令,从而降低运维操作门槛,提高工作效率。 ## 功能开启 1. 点击面板左侧栏【终端】 ![点击终端入口](https://docs.bt.cn/img/user-guide/xterm/image-20260312235201136.png) 2. 点击终端界面右上角小齿轮,打开设置 ![打开设置](https://docs.bt.cn/img/user-guide/xterm/image-20260312235251993.png) 3. 开启并选择需要的工具 ![开启 AI 工具](https://docs.bt.cn/img/user-guide/xterm/image-20260312235348675.png) ## 风险说明 AI 执行操作指令、申请工具权限时,均需获取您的**明确同意**,不会未经授权擅自执行 `sudo rm -rf /` 等高危系统指令。 ![风险确认示意](https://docs.bt.cn/img/user-guide/xterm/image-20260313001048840.png) ## 操作示例 ### 示例一:查看容器列表 1. 在终端中直接输入:`查看容器列表` 2. AI 自动生成对应的容器查询命令 3. 支持直接执行命令,或同步至命令行手动确认后执行 4. 命令执行后,AI 会对输出结果进行分析 ![输入查询指令](https://docs.bt.cn/img/user-guide/xterm/image-20260313000205680.png) ![AI 执行结果分析](https://docs.bt.cn/img/user-guide/xterm/image-20260313000942434.png) ### 示例二:分析网站情况 1. 在终端中输入:`帮我分析网站情况` 2. AI 自动获取网站列表与流量分析数据,从整体趋势、流量高峰等维度完成分析 3. 如需深度分析,可直接向 AI 提出具体需求 ![分析网站示意](https://docs.bt.cn/img/user-guide/xterm/image-20260313001616883.png) 借助 AI 即可用自然语言完成终端指令操作与数据分析,所有执行行为均需您的确认授权,安全便捷,大幅提升运维效率。 --- source: https://docs.bt.cn/user-guide/ai/assistant/ai-website.md.txt # AI 建站 > 介绍宝塔面板 AI 建站助手功能,支持从模板创建、需求文档创建和自由描述创建三种方式,帮助用户快速生成网站并部署。 # AI 建站 AI 建站助手是宝塔面板内置的智能建站工具,通过自然语言交互、模板选择或需求文档上传,帮助用户快速生成并部署网站。 ## 进入 AI 建站 1. 登录宝塔面板 2. 点击左侧导航栏【AI】 3. 切换到【建站】标签页 ![AI 建站入口](https://docs.bt.cn/img/user-guide/ai/ai-website-entry.png) 页面左侧为对话列表,中间为创建方式选择区,右侧为建站配置面板。 ## 创建方式 AI 建站助手提供三种创建方式: - **从模板创建**:选择预设模板,填写配置后生成 Prompt 发给 AI 助手 - **需求文档创建**:上传需求文档,AI 根据文档内容生成网站 - **自定义**:自由描述建站需求,支持部署项目、创建新网站、编辑已有网站 ## 从模板创建 ### 选择模板 1. 在【建站】页面点击【从模板创建】 2. 浏览模板列表,选择符合需求的模板 3. 页面中间会展示模板预览效果 ![模板选择](https://docs.bt.cn/img/user-guide/ai/ai-website-template-select.png) 系统提供了多种风格模板 ### 填写建站配置 选择模板后,在右侧【建站配置】面板中填写表单: ### 生成 Prompt 填写完成后,点击【填充提示词】按钮,系统会自动根据模板和表单内容生成完整的 Prompt,并发送给 AI 建站助手。AI 助手将根据 Prompt 生成网站代码并协助部署。 ![从模板创建配置](https://docs.bt.cn/img/user-guide/ai/ai-website-template-config.png) ## 需求文档创建 如果你有现成的网站需求文档,可以使用此方式: 1. 在【建站】页面点击【需求文档】 2. 上传需求文档或粘贴文档内容 3. 点击快捷按钮【请根据我上传的需求文档创建网站】 4. AI 助手将自动解析文档并生成对应网站 ![需求文档创建](https://docs.bt.cn/img/user-guide/ai/ai-website-requirements.png) :::tip 提示 建议需求文档包含网站目标、页面结构、功能模块、视觉风格、参考示例等关键信息,生成结果会更准确。 ::: ## 自定义创建 对于更灵活的建站需求,可使用【自定义】方式: 1. 在【建站】页面点击【自定义】 2. 在输入框中直接描述建站需求 3. 可使用系统预设快捷按钮快速发起: - 部署项目 - 创建新网站 - 编辑已有网站 ![自定义创建](https://docs.bt.cn/img/user-guide/ai/ai-website-custom.png) ## 模型与额度 - AI 建站助手会消耗 AI 额度 - 创建前可在页面左下角查看当前每日免费额度和资源包额度 - 不同模型消耗点数不同,复杂建站任务建议使用性能更强的模型 ## 后续操作 AI 助手生成网站后,通常会给出: - 网站文件目录 - 部署建议 - 配置说明(如数据库、域名绑定、SSL 等) 你可以根据提示继续与 AI 对话,完成部署、修改和优化。 ## 注意事项 :::info 重要提示 - AI 生成的内容仅供参考,请自行审核并确认后再部署到生产环境 - 网站涉及域名解析、SSL 证书、数据库等配置时,请确保相关资源已准备就绪 - 部署前建议在测试环境预览效果 ::: --- source: https://docs.bt.cn/api/acme/SetCertToSite.md.txt # SetCertToSite (ACME) > 将 ACME 签发的证书部署到指定网站 # SetCertToSite (ACME) 将通过 ACME(Let's Encrypt 等)签发的 SSL 证书部署到指定网站,开启 HTTPS。 - **路由**:`POST /acme` - **action**:`SetCertToSite` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetCertToSite` | | index | 是 | String | 证书订单索引 ID | | siteName | 是 | String | 目标网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 部署成功 | | msg | String | `SSL开启成功!` | | csr | String | 部署的完整证书链(PEM 格式) | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetCertToSite&index=851cc157ad22888459e59c3cfdc5ac95&siteName=testapi.bt.local ``` ### 响应 ```json { "status": true, "msg": "SSL开启成功!", "csr": "-----BEGIN CERTIFICATE-----\nMIIE7T..." } ``` ## 相关接口 - [apply_cert_api](./apply_cert_api.md) — 申请证书 - [apply_dns_auth](./apply_dns_auth.md) — DNS 验证签发 --- source: https://docs.bt.cn/api/crontab/DelCrontab.md.txt # DelCrontab > 删除计划任务 # DelCrontab 删除指定的计划任务。 - **路由**:`POST /crontab` - **action**:`DelCrontab` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DelCrontab` | | id | 是 | Integer | 任务 ID | ## 示例 ``` POST /crontab HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=DelCrontab&id=6 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/database/GetMySQLInfo.md.txt # GetMySQLInfo > 获取 MySQL 基本配置信息(数据目录、端口) # GetMySQLInfo 获取本地 MySQL / MariaDB 的数据目录和监听端口。 - **路由**:`POST /database` - **action**:`GetMySQLInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetMySQLInfo` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | datadir | String | MySQL 数据目录路径 | | port | String | MySQL 监听端口 | ## 示例 ### 响应 ```json {"datadir": "/www/server/data", "port": "3306"} ``` --- source: https://docs.bt.cn/api/deployment/GetSpeed.md.txt # GetSpeed > 获取一键部署任务的执行进度 # GetSpeed 获取当前正在执行的一键部署任务的进度信息。 - **路由**:`POST /deployment` - **action**:`GetSpeed` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Object | 部署进度信息,无任务时 `null` | ## 示例 ``` null ``` --- source: https://docs.bt.cn/api/docker/get_list.md.txt # get_list (容器) > 获取所有 Docker 容器列表及运行状态 # get_list (容器) 获取 Docker 宿主机上所有容器的列表及系统资源信息。 - **路由**:`GET /btdocker/container/get_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | online_cpus | Integer | CPU 核心数 | | mem_total | Integer | 总内存(字节) | | container_list | Array | 容器列表,每项含 `container_id`、`name`、`status`、`image`、`ports` | ## 示例 ```json {"online_cpus": 2, "mem_total": 4090929152, "container_list": [{"container_id": "ead805da4545", "name": "allinssl_m3xm-allinssl_M3xm-1", "status": "running", "image": "allinssl/allinssl:latest"}], "gpu": 0} ``` --- source: https://docs.bt.cn/api/files/CopyFile.md.txt # CopyFile > 复制或移动文件/目录 # CopyFile / MvFile 复制或移动文件/目录。 - **路由**:`POST /files` ## CopyFile 复制文件或目录。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `CopyFile` | | sfile | 是 | String | 源文件路径 | | dfile | 是 | String | 目标文件路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "文件复制成功!"} ``` ## MvFile 移动(重命名)文件或目录。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `MvFile` | | sfile | 是 | String | 源文件路径 | | dfile | 是 | String | 目标文件路径 | ```json {"status": true, "msg": "移动文件或目录成功!"} ``` --- source: https://docs.bt.cn/api/files/DeleteDir.md.txt # DeleteDir > 删除文件或目录(移到回收站) # DeleteDir 将指定文件或目录移入面板回收站,不直接永久删除。 - **路由**:`POST /files` - **action**:`DeleteDir` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DeleteDir` | | path | 是 | String | 要删除的文件或目录的绝对路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | | msg | String | `删除目录成功!` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=DeleteDir&path=/tmp/bt_doc_test_dir ``` ### 响应 ```json {"status": true, "msg": "删除目录成功!"} ``` --- source: https://docs.bt.cn/api/ftp/SetStatus.md.txt # SetStatus > 启用或暂停 FTP 用户 # SetStatus 启用或暂停指定的 FTP 用户。 - **路由**:`POST /ftp` - **action**:`SetStatus` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetStatus` | | id | 是 | Integer | FTP 用户 ID(从 `ftps` 表获取) | | username | 是 | String | FTP 用户名 | | status | 是 | String | `1` = 启用,`0` = 暂停 | ## 示例 ``` POST /ftp HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetStatus&id=3&username=api_ftp_doc&status=0 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "操作成功"} ``` --- source: https://docs.bt.cn/api/ftp/SetUserPassword.md.txt # SetUserPassword > 修改 FTP 用户密码 # SetUserPassword 修改指定 FTP 用户的密码。 - **路由**:`POST /ftp` - **action**:`SetUserPassword` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetUserPassword` | | id | 是 | Integer | FTP 用户 ID | | ftp_username | 是 | String | FTP 用户名 | | new_password | 是 | String | 新密码(不少于 6 位) | ## 示例 ``` POST /ftp HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetUserPassword&id=3&ftp_username=api_ftp_doc&new_password=NewPass@2024 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "修改成功"} ``` --- # SetStatus 启用或暂停 FTP 用户。 - **路由**:`POST /ftp` - **action**:`SetStatus` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetStatus` | | id | 是 | Integer | FTP 用户 ID | | username | 是 | String | FTP 用户名(**非** ftp_username) | | status | 是 | String | `1` = 启用,`0` = 暂停 | > 注意:`AddUser` 用 `ftp_username`,但 `DeleteUser`/`SetStatus` 用 `username`。这是面板设计不一致。 ## 示例 ``` action=SetStatus&id=3&username=api_ftp_doc&status=0 ``` ```json {"status": true, "msg": "操作成功"} ``` --- source: https://docs.bt.cn/api/java/install_tomcat_new.md.txt # install_tomcat_new > 异步安装指定版本的 Tomcat # install_tomcat_new 提交 Tomcat 安装任务到后台队列,异步执行。 - **路由**:`GET /mod/java/project/install_tomcat_new/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | version | 是 | String | Tomcat 版本:`7`、`8`、`9`、`10` | | java_path | 否 | String | 指定 JDK 路径(不传则使用默认 JDK) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 已加入安装队列 | ## 示例 ### 请求 ``` GET /mod/java/project/install_tomcat_new/stype?request_time=xxx&request_token=xxx&version=9 ``` ### 响应 ```json {"status": true, "msg": "已添加到安装任务,请在消息盒子中查看安装情况"} ``` --- source: https://docs.bt.cn/api/proxy/delete.md.txt # delete > 删除反向代理站点 # delete 删除指定反向代理站点,包括 Nginx 配置、日志、数据库记录。 - **路由**:`POST /mod/proxy/com/delete/stype` - **action**:`delete` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | | remove_path/d | 否 | int | 是否同时删除网站目录,1 删除,0 保留(默认) | | reload/d | 否 | int | 是否重载 Nginx,1 重载(默认),0 不重载 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | bool | 操作结果 | | msg | string | 提示信息 | ## 示例 ### 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/delete/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "id=1&site_name=example.com&remove_path=0&request_time=...&request_token=..." ``` ### 响应 ```json { "status": true, "msg": "反向代理项目删除成功!" } ``` --- source: https://docs.bt.cn/api/push/get_task_template.md.txt # get_task_template > 获取消息推送任务模板列表 # get_task_template 获取消息推送的告警任务模板列表。 - **路由**:`POST /push` - **action**:`get_task_template` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_task_template` | ## 输出 返回数组,每项为一个告警模板组,包含 `title` 和 `template` 字段。 ```json [{"title": "常用告警设置", "template": []}] ``` --- source: https://docs.bt.cn/api/site/GetSitePHPVersion.md.txt # GetSitePHPVersion > 获取指定网站使用的 PHP 版本 # GetSitePHPVersion 获取指定网站当前使用的 PHP 版本及其他运行环境信息。 - **路由**:`POST /site` - **action**:`GetSitePHPVersion` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSitePHPVersion` | | siteName | 是 | String | 网站域名,如 `testapi.bt.local` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | phpversion | String | PHP 版本号,如 `85`、`00`(纯静态) | | tomcat | Integer | Tomcat 状态,`-1` 表示未启用 | | tomcatversion | Boolean/String | Tomcat 版本 | | nodejsversion | Boolean/String | Node.js 版本 | | php_other | String | 其他 PHP 配置 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetSitePHPVersion&siteName=testapi.bt.local ``` ### 响应 ```json { "phpversion": "85", "tomcat": -1, "tomcatversion": false, "nodejsversion": false, "php_other": "" } ``` --- source: https://docs.bt.cn/api/ssl/upd_dns_data.md.txt # upd_dns_data > 修改已有的 DNS API 密钥配置 # upd_dns_data 更新已有的 DNS API 密钥配置,可修改备注名称和密钥参数。 - **路由**:`POST /ssl/dnsapi/upd_dns_data` - **action**:URL 路径 `/ssl/dnsapi/upd_dns_data` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | dns_id | 是 | String | DNS 配置的唯一 ID(通过 `get_dns_data` 获取) | | ps | 是 | String | 新的备注名称 | | pdata | 否 | String | JSON 字符串,新的密钥参数(不传则保留原密钥) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | | msg | String | `修改成功` | ## 示例 ### 请求 ``` POST /ssl/dnsapi/upd_dns_data HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded dns_id=619980b49ba5&ps=更新后的备注 ``` ### 响应 ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/system/GetMemInfo.md.txt # GetMemInfo > 获取内存详细信息(总量、空闲、缓存、可用、实际使用) # GetMemInfo 获取服务器内存详细信息,包含物理内存和虚拟内存。结果会被缓存 60 秒。 - **路由**:`POST /system` - **action**:`GetMemInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetMemInfo` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | memTotal | Integer | 总内存(MB) | | memFree | Integer | 空闲内存(MB) | | memBuffers | Integer | 缓冲区(MB) | | memCached | Integer | 缓存(MB) | | memAvailable | Integer | 可用内存(MB),含可回收的 buffer/cache | | memRealUsed | Integer | 实际已用(MB)= memTotal - memFree - memBuffers - memCached | ## 示例 ### 请求 ``` POST /system HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time={timestamp}&request_token={token}&action=GetMemInfo ``` ### 响应 ```json { "memTotal": 3901, "memFree": 2918, "memBuffers": 22, "memCached": 338, "memAvailable": 3056, "memRealUsed": 623 } ``` --- source: https://docs.bt.cn/btclaw/day3.md.txt # Day 3:武装 OpenClaw 龙虾的技能库(MCP / 工具集) > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 3:为龙虾武装 MCP 工具、技能集与外部能力,让 AI 助手能调用宝塔面板 API、Shell 命令与外部服务,扩展运维能力。 # Day 3:武装龙虾技能库 **发布日期:** 2026-03-11 **养成状态:** 🦞 虾宝期 **今日花费:** ¥0 **预计耗时:** 10 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:龙虾你只会聊天? 今天的龙虾有灵魂了,会聊天了,但我发现一个问题—— ``` 我:今天天气怎么样 龙虾:我在服务器里,看不到窗外。 我:帮我写个代码 龙虾:我不会。 我:查查今天的 AI 新闻 龙虾:我不会。 我:...那你会啥? 龙虾:会聊天。 我:"..." ``` 朋友说:"装技能啊,OpenClaw 有 5000+ 技能。" 我说:"从哪开始?" 朋友:"8 个就够了,10 分钟。" 我又信了。 10 分钟后—— ``` 我:查查今天的 AI 新闻 龙虾:好的,稍等...找到了,今天有 3 个热点... 我:总结这篇文章 龙虾:这篇文章主要讲了... ``` 我服了。早说啊。 --- ## 🎯 今天只做一件事 **安装 8 个技能,让龙虾从"聊天机器人"变成"多面手"。** ![alt text](https://docs.bt.cn/img/btclaw/day_3.png) --- ## 🔧 三个步骤(10 分钟) ### 步骤 1:技能库介绍(3 分钟) 8 个技能,分三类: #### 🛡️ 安全工具(1 个) | 技能 | 作用 | |------|------| | **skill-vetter** | 安装技能前先 vet 一下,确保安全 | **这个是"保安",先请进门。** --- #### ⭐ 前 5 必装(5 个) | 技能 | 作用 | |------|------| | **self-improving-agent** | 自我进化,龙虾越用越聪明 | | **summarize** | 总结网页/PDF/视频 | | **github** | 操作 GitHub(Issue/PR/仓库) | | **duckduckgo-search** | 网页搜索(免费,无需 API Key) | | **humanizer** | 去除 AI 味,让文字更像人写的 | **这 5 个是"主力",必须装。** --- #### 🎁 好用工具(2 个) | 技能 | 作用 | |------|------| | **agent-browser** | 浏览器自动化(点击/输入/截图) | | **capability-evolver** | 能力进化引擎 | **这两个是"辅助",推荐装。** --- **或者直接一行命令:** ```bash clawhub install skill-vetter && clawhub install self-improving-agent && clawhub install summarize && clawhub install github && clawhub install duckduckgo-search && clawhub install humanizer && clawhub install agent-browser && clawhub install capability-evolver && openclaw gateway restart ``` (复制粘贴就行,别嫌长。) 没有clawhub?先安装它: ```bash npm install -g clawhub ``` --- ### 步骤 3:验证安装(2 分钟) ```bash # 检查已安装技能 clawhub list ``` 应该能看到这 8 个技能。 **然后测试一下:** ``` 你:总结一下这篇文章 https://example.com/article 龙虾:好的,这篇文章主要讲了... ``` 成功!✅ --- ## ✅ 完成检查 - [ ] 安全工具已安装(skill-vetter) - [ ] 前 5 必装已安装 - [ ] 好用工具已安装(可选) **都完成了?** 恭喜你!龙虾有技能了!🎉 现在它不只是会聊天了,还能干活了。 --- ## 🎯 明天继续 明天我们让龙虾看懂图片。 到时候你就可以发一张截图,问它:"这个页面有什么问题?" 它会说:"按钮对比度不够,WCAG 不达标。" (比某些设计师还专业。) --- ## 📝 踩坑记录(可选) _遇到问题再看_ **坑 1:** 安装失败 **解决:** 网络问题,用代理或者换个时间 **坑 2:** 技能不生效 **解决:** 重启 Gateway:`openclaw gateway restart` **坑 3:** 不知道技能怎么用 **解决:** 看 `workspace/skills/<技能名>/SKILL.md` **坑 4:** 脚本执行报错 **解决:** 检查 `chmod +x` 了吗,或者直接用一行命令 --- *最后更新:2026-03-11* *作者:Bacon 大王* *状态:龙虾成长期 Day 3/∞* *字数:约 850 字* *阅读时间:约 4 分钟* > 🦞 **龙虾碎碎念:** 我终于有技能了。从"只会聊天"到"什么都会一点",感觉人生到达了巅峰。(虽然还是在服务器里。) --- source: https://docs.bt.cn/faq/inode-full.md.txt # 宝塔面板 Inode 可用空间不足问题排查 > 宝塔面板(BT Panel)提示 Inode 可用不足 10%,导致无法创建新文件的原因分析与清理方案,含小文件查找、日志清理、临时文件清理等完整步骤。 # Inode 可用空间不足 ## 问题现象 在宝塔面板首页磁盘信息区域,看到如下提示: > Inode可用不足10%,请前往文件管理清理不必要文件 ![宝塔面板 Inode 占用 91% 告警](https://docs.bt.cn/img/faq/inode-full.png) 此时尽管磁盘容量(如上图仅用了 16%)仍有大量剩余,但服务器却无法创建新文件、无法写入日志,网站也可能出现 500 错误或 "No space left on device" 报错。 :::info 如有疑问,欢迎扫码联系客服 ![联系客服](https://docs.bt.cn/img/faq/cs-qrcode.png) ::: --- ## 什么是 Inode? **Inode(索引节点,Index Node)** 是 Linux 文件系统中的一种数据结构,用来存储文件的元数据,例如: - 文件大小 - 文件所有者和权限 - 创建/修改/访问时间 - 文件数据块在磁盘上的位置指针 每一个文件或目录都会**独占一个 Inode**。文件系统在格式化时,会根据分区大小预先分配固定数量的 Inode,这个数量上限在创建文件系统时就已确定,**之后无法扩容**(XFS 除外,但扩容也很麻烦)。 你可以把 Inode 理解为图书馆的**书目索引卡**: - 磁盘空间 = 书库的物理空间 - Inode = 书目索引卡的数量 即使书库还有很多空位,一旦索引卡用完,就无法再登记新书入库——哪怕每本"书"只有几字节大小。 --- ## 为什么 Inode 会耗尽? 常见原因: | 原因 | 说明 | |------|------| | 大量小文件 | Session 文件、缓存碎片、日志分片等,每个文件占一个 Inode | | PHP Session 堆积 | 默认存储在 `/tmp` 目录,过期未清理时会积累数十万个文件 | | 邮件队列堆积 | Sendmail/Postfix 的队列目录下每封邮件都是独立文件 | | 容器/Docker 残留层 | Docker 镜像层解压后会产生大量小文件 | | npm / Composer 缓存 | `node_modules` 和依赖包包含海量小文件 | | 系统日志轮转残留 | `/var/log` 下未清理的历史日志文件 | --- ## 如何确认 Inode 使用情况 通过 SSH 登录服务器,执行: ```bash df -i ``` 输出示例: ``` Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 4980736 4531208 449528 91% / tmpfs 503974 651 503323 1% /dev/shm ``` `IUse%` 达到 90% 以上即需要关注,达到 100% 则完全无法创建新文件。 --- ## 找出占用 Inode 最多的目录 执行以下命令,统计各目录下的文件数量(从根目录开始,只看第一层,耗时较短): ```bash for dir in /*; do echo "$dir: $(find "$dir" -xdev | wc -l)"; done 2>/dev/null | sort -t: -k2 -rn | head -20 ``` 或者针对可疑目录深入排查: ```bash # 查看 /tmp 下各子目录文件数 find /tmp -maxdepth 1 -type d | while read d; do echo "$d: $(find "$d" | wc -l)" done ``` --- ## 清理方案 ### 1. 清理 PHP Session 文件 ```bash # 查看 session 文件数量 ls /tmp/sess_* 2>/dev/null | wc -l # 删除 7 天前的 session 文件 find /tmp -name "sess_*" -mtime +7 -delete ``` ### 2. 清理系统临时文件 ```bash # 删除 /tmp 下超过 3 天的文件(保留目录结构) find /tmp -type f -mtime +3 -delete ``` ### 3. 清理系统日志 ```bash # 清理 7 天前的日志文件 find /var/log -type f -mtime +7 -name "*.log" -delete find /var/log -type f -mtime +7 -name "*.gz" -delete # 或使用 journalctl 清理 systemd 日志(保留最近 3 天) journalctl --vacuum-time=3d ``` ### 4. 清理 Docker 残留资源 ```bash # 清理未使用的镜像、容器、网络、缓存 docker system prune -f ``` ### 5. 通过宝塔面板文件管理器清理 进入「文件」页面,按**文件数量**排序,找到文件数异常多的目录,批量删除不需要的临时文件。 --- ## 清理后验证 ```bash df -i ``` 确认 `IUse%` 已下降到安全范围(建议低于 80%)。 --- :::tip 预防建议 - 为 PHP 配置定期 Session 清理(`session.gc_maxlifetime`) - 使用计划任务定期清理 `/tmp` 和日志目录 - 监控 Inode 使用率,在达到 80% 时提前处理 ::: --- source: https://docs.bt.cn/getting-started/create-web.md.txt # 在宝塔面板中快速创建站点 > 介绍如何在宝塔面板(BT Panel)中快速创建一个 Web 站点,包含绑定域名、设置根目录、选择 PHP 版本、创建 FTP 与数据库账号的完整流程。 # 快速创建站点 本文将介绍如何在宝塔面板中快速创建网站。 ## 操作步骤 1. 登录宝塔面板,点击左侧菜单栏的`网站`,进入网站管理页面。 ![网站管理](https://docs.bt.cn/img/getting-started/create-web-2.png) 2. 点击右上角的`添加站点`,进入网站创建页面,并填写相关信息。 ![添加站点](https://docs.bt.cn/img/getting-started/create-web.png) :::tip 动态网站,如WordPress、Discuz、PHPCMS等通常需要数据库和`PHP`环境,创建网站的时候可以同时创建数据库并选择PHP版本。 ::: 3. 点击`确定`,即可完成网站的创建。 4. 创建完成后,在浏览器中输入`域名`即可访问,默认访问的为面板生成的站点默认页面。 ![网站访问](https://docs.bt.cn/img/getting-started/create-web-3.png) 5. 您可在站点根目录上传您的网站程序,如`WordPress`、`Discuz`、`PHPCMS`等。 ![网站目录](https://docs.bt.cn/img/getting-started/create-web-4.png) ## 视频教程 我们录制了部分应用的部署视频,您可以参考视频快速部署网站。 更多视频教程请访问[B 站](https://space.bilibili.com/608082032)。 --- source: https://docs.bt.cn/practical-tutorials/Java-Project-Deployment-Tutorial.md.txt # 宝塔 Linux 面板 Java 项目部署教程 > 宝塔面板(BT Panel)Linux 环境下部署 Java 项目的完整教程,包含 Tomcat 与 Spring Boot 两种部署方式、JDK 安装、MySQL 数据库配置与反向代理设置。 # Java 项目部署教程(Linux 面板) 本文详细介绍如何在宝塔面板中部署 Java 项目,包括基于 Tomcat 的传统项目和 Spring Boot 项目的部署方法。 ## 环境要求 | 组件 | 版本 | |------|------| | 操作系统 | Debian 12 | | 宝塔面板 | 11.1.0 | | Tomcat | 8.5.81 | | JDK | 1.8.0 | | MySQL | 5.7 | ## 部署方式对比 ### Tomcat 部署 vs Spring Boot 部署 ![部署方式对比](https://docs.bt.cn/img/practical-tutorials/new_springboot_tomcat.png) **主要区别:** - **Tomcat 部署**:需要安装 Tomcat 容器,将 WAR 包部署到容器中 - **Spring Boot 部署**:内置容器,只需要 JDK 环境,直接运行 JAR 包 **总结:** Spring Boot 是一种更现代的架构,只需要 JDK 即可运行,相比传统 Tomcat 方式更易管理、维护和使用。 ## 前期准备 ### 1. 准备服务器环境 确保已安装宝塔面板的服务器 ![宝塔面板](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-2.png) ### 2. 安装 MySQL 数据库 ![MySQL数据库](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-14.png) ### 3. 安装 JDK 环境 :::tip 版本选择 建议提前咨询开发人员所需的 JDK 版本,或查看项目部署文档。本教程使用 JDK 1.8.0 版本。 ::: ![JDK环境](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-18.png) ### 4. 安装 Tomcat(Tomcat 项目需要) 安装时注意勾选端口放行选项 ![Tomcat安装](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial.png) ### 5. 验证 Tomcat 安装 访问 `http://服务器IP:7702` 验证 Tomcat 是否正常运行 ![Tomcat验证](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-10.png) ## Tomcat 项目部署 ### 上传项目文件 将项目包通过宝塔面板上传到服务器并解压 ![上传项目](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-21.png) ### 导入数据库 #### 创建数据库 根据项目部署文档创建相应的数据库名称和密码(本例中数据库名为 "resume") ![创建数据库](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-19.png) #### 导入 SQL 数据 ![导入数据库](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-13.png) #### 配置 MySQL 远程连接(如需要) :::warning 注意 如果项目需要直接连接 root 用户而非特定数据库用户,需要开启 root 远程权限(宝塔默认不开启)。 ::: **获取 root 密码:** ![获取root密码](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-6.png) **通过 SSH 连接数据库:** ```bash mysql -uroot -p[复制的密码] ``` ![连接数据库](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-5.png) **执行以下 SQL 命令开启远程权限:** ```sql use mysql; update user set host='%' where user='root'; FLUSH PRIVILEGES; select user,host from user; ``` **验证远程连接是否正常:** ![验证远程连接](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-15.png) ### 部署 Java 项目 #### 添加项目 进入 **网站** > **Java项目**,点击 **添加项目** ![添加项目](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-7.png) #### 配置项目信息 填写项目相关信息并确认,等待创建完成 ![配置项目](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-9.png) #### 访问测试 创建完成后使用 `http://服务器IP:7702` 访问项目 ![访问项目](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-17.png) ### 配置 80 端口访问(可选) 如需通过 80 端口访问项目: 1. 首先安装 Nginx 或 Apache 2. 在 Java 项目设置中配置外网映射 ![外网映射配置](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-12.png) ## Spring Boot 项目部署 Spring Boot 的部署过程与 Tomcat 部署类似,但不需要安装 Tomcat 容器。 ### 部署前准备 :::tip 重要信息 如果有项目部署文档,请按照文档配置环境。如果没有,务必向开发人员确认以下三要素: - **端口号**:项目运行端口 - **数据库信息**:数据库类型、名称、用户名、密码 - **JDK 版本**:项目所需的 JDK 版本 本例使用:端口 8888、MySQL 数据库(支持远程连接)、JDK 1.8.0 ::: ### 上传 JAR 包 将 Spring Boot 项目的 JAR 包上传到服务器 ![上传JAR包](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-20.png) ### 查看项目配置 如果不确定项目的配置信息,可以查看项目中的配置文件(如 `application.yml` 或 `application.properties`) ![查看配置文件](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-4.png) :::info 说明 从配置文件中可以获取数据库名称、端口等关键信息。如果找不到相关信息,请联系开发人员确认。 ::: ### 准备数据库 根据配置文件信息创建相应的数据库(本例中为 "blog")并导入数据 ![创建数据库](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-11.png) ### 部署 Spring Boot 应用 #### 创建项目 进入 **网站** > **Spring Boot**,添加新项目 ![部署Spring Boot](https://docs.bt.cn/img/practical-tutorials/new_springboot_web.png) #### 配置并部署 填写项目信息后点击确认开始部署 ![部署配置](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-16.png) #### 访问测试 部署成功后会显示项目端口,使用 `http://服务器IP:端口` 访问测试 ### 配置 80 端口访问 如需通过 80 端口访问项目,可以配置反向代理 ![配置80端口](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-8.png) 配置完成后直接使用服务器 IP 访问 ![80端口访问](https://docs.bt.cn/img/practical-tutorials/java-project-deployment-tutorial-3.png) ## 总结 通过以上步骤,您已经完成了 Tomcat 和 Spring Boot 两种方式的 Java 项目部署。Spring Boot 方式相对更简单,推荐用于新项目开发。 --- source: https://docs.bt.cn/purchase-guides/package-service/website-monitoring-report.md.txt # 网站监控报表插件 > 宝塔面板(BT Panel)网站监控报表插件,实时分析网站运行与用户访问状况,精确统计 PV/UV/IP/请求数/蜘蛛访问等多维数据,是网站 SEO 优化与运维决策的利器。 # 网站监控报表 实时分析网站运行、用户访问状况,精确统计网站流量、IP、UV、PV、请求、蜘蛛等数据,真假蜘蛛区分,网站SEO优化利器 :::tip 想进一步分析真实访客? 全新的[宝塔网站统计](https://docs.bt.cn/landing/website-monitoring-report/)通过浏览器端 JS 记录页面访问,可查看真实访客、会话轨迹、推广来源与页面性能,统计数据保存在自己的服务器中。 ::: ## 网站列表 显示服务器内所有的网站的总PV、总UV、总IP数、总流量、总请求数、总实时流量、综合每秒请求数,同时用列表分别显示每个网站当前PV、UV、IP、流量、请求数、错误数、蜘蛛请求数数据方便对比,整体上帮助您实时掌握服务器内所有网站访问情况。 ## 蜘蛛统计 - 统计国内外主流搜索引擎蜘蛛访问情况,帮助您实时掌握SEO优化进展。 - 同时支持按时间筛选,分别显示占总请求百分比,TOP5柱形图和每天的自助访问明细列表及详细的蜘蛛明细对比曲线图。 ## 客户端统计 - 统计网站当前国内外主流客户端访问数据、PC移动访问占比情况,帮助您掌握用户分布和移动化趋势情况。 - 同时支持按时间筛选、分别显示PC/移动端访问占比饼图、TOP5客户端柱形图及每天的客户端访问明细列表。 ## URI统计 - 统计站内每个URI请求数量排行,帮助您掌握哪些链接被用户关注,同时显示流量占比信息。 - 显示数量可自定义,默认TOP50。 ## 错误日志 - 实时显示40x,50x系列网站请求错误完整增强日志,可以根据错误响应码、精确到时分秒的时间段搜索,帮助您快速定位和分析错误信息。 - 同时支持错误日志全数据导出为.csv文件。 - 完整日志内容包括:请求时间、真实IP、请求类型、响应码、响应耗时、响应大小、协议、URL、来路、User-Agent。 - 日志增强部分包括:客户端请求端口(等保必备)、蜘蛛类别标识、IP归属地、IP运营商、完整转发IP列表、POST请求原文(支持所有POST请求,默认只记录500错误)。 ## 网站日志 - 实时显示网站用户访问的完整增强日志,可以根据精确到时分秒的时间段搜索,可以根据请求类型、状态码、蜘蛛类型、URL、请求域名、IP、User-Agent,来源等多个条件组合进行搜索,帮助您快速定位和分析网站访问情况。 - 同时支持错误日志全数据导出为csv文件。 - 完整日志内容包括:请求时间、真实IP、请求类型、响应码、响应耗时、响应大小、协议、URL、来路、User-Agent。 - 日志增强部分包括:客户端请求端口(等保必备)、蜘蛛类别标识、IP归属地、IP运营商、完整转发IP列表、POST请求原文(支持所有POST请求,默认只记录500错误)。 ## 统计报告 每周一生成当前网站上周的数据周报,每月1号生成上个月的数据月报,一年单个站点累计生成66份数据报告,特别适合有需要把网站近期的运营状况做总结、汇报场景。 同时支持定时邮件推送与下载PDF格式。 ## 全局配置 - 针对网站统计场景几乎完整的自定义开关设置,支持监控开关、机器访问统计、自动刷新、IP和URI统计数量设置、日志保存设置、CDN Headers自定义、排除指定URL扩展请求、排除响应码请求、排除路径、排除IP、请求原文记录。 - 同时每个网站可以单独独立一份监控配置文件,应对业务变化需求;全局配置又可以一键同步到所有站点,简单又方便。 ![网站监控报表](https://docs.bt.cn/img/purchase-guides/website-monitoring-report.png) --- source: https://docs.bt.cn/purchase-guides/purchase-package.md.txt # 宝塔面板套餐购买流程 > 介绍如何在宝塔官网购买宝塔面板(BT Panel)专业版 / 企业版套餐的完整步骤,含套餐选择、购买时长、订单提交与服务器绑定流程。 # 套餐购买 ## 操作场景 若您需要购买宝塔面板的专业版或企业版,您可以参照本文档进行操作。 ## 操作步骤 1. 访问[宝塔面板套餐购买页](https://www.bt.cn/new/pricing.html#linux),根据您的需求选择对应的套餐,如下图所示: ![套餐购买页](https://docs.bt.cn/img/purchase-guides/purchase-package.png) 2. 选择对应的`购买时长`,点击`立即购买`,如下图所示: ![购买时长](https://docs.bt.cn/img/purchase-guides/purchase-package-2.png) 3. 进入支付流程,完成支付即可成功购买套餐。 > **说明** 1. 已购买插件的用户,可以通过补差价升级专业版或者企业版,企业版年付以上用户联系客服加Q群。 2. 专业版不包含运维服务,如果需要运维服务的,需要单独购买付费运维服务。 3. 专业版企业版每台授权每月允许更改1次IP,可在后台操作。 4. 专业版多台永久授权为捆绑销售,是为了让一个人有多台机器的享受优惠,若后期转让,该多台授权只能全部转让,无法单台转让。 5. 企业版年付以上订单提供运维顾问快速响应的服务。 6. 企业版不支持转让,企业版没有永久授权。 7. 多台授权是为有多机器用户准备的优惠,不支持团购,谨防上当受骗。 8. 此为软件授权,不支持退款。 9. 禁止使用宝塔面板从事一切违法犯罪行为! ::: --- source: https://docs.bt.cn/user-guide/ai/assistant/assistant-list.md.txt # 助手列表 > 介绍宝塔面板 AI 助手的助手列表功能,包括助手分类、内置助手说明及使用方法。 # 助手列表 宝塔面板 AI 助手内置多个专业助手,覆盖网站、数据库、安全、服务器、计划任务、文件、FTP、SSL、日志、DNS、性能等运维场景。你可以根据实际需求选择并使用合适的助手。 ## 进入助手列表 1. 登录宝塔面板 2. 点击左侧导航栏【AI】 3. 切换到【助手列表】标签页 ![助手列表](https://docs.bt.cn/img/user-guide/ai/assistant-list.png) ## 助手分类 页面顶部提供助手分类筛选,方便按场景快速定位: - 全部 - 安全诊断 - 性能优化 - 数据库 - 文件管理 - 服务诊断 - 系统运维 - 网络诊断 - 运维诊断 ## 内置助手说明 | 助手名称 | 功能说明 | 适用场景 | |---------|---------|---------| | 网站诊断助手 | 分析网站配置、站点设置、运行状态,提供全面的诊断报告 | 网站异常、站点配置排查 | | 数据库诊断助手 | 分析 MySQL 性能、慢查询、优化建议 | 数据库性能问题、SQL 优化 | | 网站流量分析助手 | 分析网站流量趋势、来源和带宽使用情况 | 网站运营分析、流量异常 | | 安全诊断助手 | 分析服务器安全风险、异常进程和入侵迹象 | 安全检测、入侵排查 | | 服务器分析助手 | 分析服务器资源使用情况和健康状况 | 资源占用异常、健康检查 | | 计划任务诊断助手 | 分析定时任务配置、执行状态和失败原因 | 定时任务异常、Crontab 排查 | | 文件分析助手 | 分析服务器文件结构、权限、占用情况,提供文件管理建议 | 文件管理、权限排查 | | FTP 诊断助手 | 分析 FTP 账户权限、连接配置问题 | FTP 无法连接、权限异常 | | SSL 诊断助手 | 分析 SSL 证书状态、有效期、配置问题 | 证书过期、HTTPS 异常 | | 日志分析助手 | 分析系统和应用日志中的错误和异常 | 日志排查、故障定位 | | DNS 诊断助手 | 分析域名 DNS 解析记录和生效状态 | DNS 解析异常、域名问题 | | 性能分析助手 | 分析 CPU、内存、磁盘使用趋势和瓶颈 | 性能瓶颈、资源优化 | ## 使用助手 1. 在助手列表中找到需要的助手 2. 点击卡片右侧的【使用】按钮 3. 系统将自动切换到该助手并进入对话界面 4. 在输入框中描述具体问题即可 ![使用助手](https://docs.bt.cn/img/user-guide/ai/assistant-use.png) ## 切换助手 在 AI 对话界面中,点击顶部当前助手名称,可重新选择其他助手。切换后对话历史独立保存,不会互相影响。 --- source: https://docs.bt.cn/user-guide/config/alarm/alarm-log.md.txt # 告警日志 > 在宝塔面板(BT Panel)「设置 → 告警设置 → 告警日志」中查看历史告警记录,按时间、任务与告警类型回溯触发详情,便于排查与归档服务器告警事件。 # 告警日志 本文将介绍如何查看告警日志。 ## 查看告警日志 1. 进入面板,点击左侧菜单栏的 `设置`,进入面板设置页面。 ![面板设置页面](https://docs.bt.cn/img/user-guide/panel-setting.png) 2. 在设置页面顶部菜单栏中,点击 `告警设置`,进入告警设置页面。 ![告警设置页面](https://docs.bt.cn/img/user-guide/alarm-setting.png) 3. 在告警设置页面,点击 `告警日志`,进入告警日志页面。 ![告警日志页面](https://docs.bt.cn/img/user-guide/alarm-log.png) 可以在这里查看告警记录。 --- source: https://docs.bt.cn/user-guide/config/common/panel-api.md.txt # 面板API > 在宝塔面板(BT Panel)「设置 → 面板 API」开启并使用官方 API 接口,实现站点、数据库、FTP、插件等能力的程序化调用与自动化运维,含 PHP / Python / Java Demo 与鉴权说明。 # 面板API 本文将介绍宝塔Linux面板的API接口。 宝塔Linux面板提供了丰富的API接口,通过这些接口,可以轻松实现自动化运维,例如: 通过宝塔API,可以完全控制宝塔Linux面板的所有功能,包括第三方插件应用功能,事实上,在用户登录面板后使用的所有功能也是通过相同的接口对接的,这意味着,如果你熟悉使用浏览器调试器,就可以轻松对照宝塔Linux面板的操作参数完成一个第三方的前端对接。 API文档(未写完):[api-doc.pdf](https://www.bt.cn/api-doc.pdf) PHP-Demo: [api_demo_php.zip](https://www.bt.cn/api_demo_php.zip) Python-Demo: [api_demo_python.zip](https://www.bt.cn/api_demo_python.zip) Java-Demo (感谢心情咖啡): [Demo.java](https://www.bt.cn/bbs/forum.php?mod=attachment&aid=MzcyNDF8NzQ0ODZiM2J8MTc0NDg1Nzg3MXwwfDIwMzc2) 第三方PHP-SDK(感谢Youngxj) : https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=23895 --- source: https://docs.bt.cn/user-guide/config/safe/HTTPS-two-way-auth.md.txt # 访问设备验证 > 通过堡塔限制访问型证书插件(企业版)为宝塔面板(BT Panel)开启访问设备验证(HTTPS 双向认证),未获授权证书的设备一律无法访问面板,含插件安装、证书申请、客户端导入与启用步骤。 # 访问设备验证 本文将介绍如何开启访问设备验证功能。 超高强度的保护面板安全,没有获得授权许可证书的任何计算机都无法访问宝塔面板,必要时吊销某些计算机的授权许可证书拒绝他访问宝塔面板。 客户端证书授权仅需要安装一次,授权后该计算机则永久可以访问对应开启了双向验证的宝塔面板,无需再次授权。 > **注意** - 该功能依赖`堡塔限制访问型证书`插件,该插件为企业版专享插件,请确保您已购买企业版或已开通企业版试用。 ::: ## 安装插件 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`。 ![软件商店](https://docs.bt.cn/img/user-guide/soft/soft-sidebar.png) 2. 在软件商店中搜索,点击右侧的`安装`进入软件详情页。 ![商店搜索结果-堡塔限制访问型证书](https://docs.bt.cn/img/user-guide/soft-softlist-search-btauth.png) 3. 在软件详情页中,点击`立即安装`按钮开始安装堡塔限制访问型证书插件。 ![软件安装页-堡塔限制访问型证书](https://docs.bt.cn/img/user-guide/soft-softinstall-btauth.png) ## 配置插件 1. 安装完成后,在软件商店中的`已安装`找到`堡塔限制访问型证书`,点击设置按钮进入插件设置页面。 ![软件安装完成-堡塔限制访问型证书](https://docs.bt.cn/img/user-guide/soft-softinstalled-btauth.png) 2. 在插件设置页面中,填写`公司名称`和`域名列表`,点击`保存`按钮。 ![堡塔限制访问型证书-设置](https://docs.bt.cn/img/user-guide/soft-btauth-setting.png) > **说明** - 公司名称(必填):证书使用者,填写之后不建议修改,否则【已申请】证书将全部失效 - 域名列表(必填):SSL可使用的域名列表,可泛域名,多个域名可以逗号隔开 ::: 3. 在左侧菜单栏中点击`SSL证书`,点击`申请证书`按钮,等待证书生成。 ![堡塔限制访问型证书-申请证书](https://docs.bt.cn/img/user-guide/soft-btauth-applycert.png) 4. 证书生成完成后,点击`更新到面板SSL`按钮,等待证书更新完成。 5. 更新完成后使用 HTTPS 访问面板,此时不要着急开启双向验证,需要先从点击插件左侧菜单的`双向认证`中的`客户端证书列表`,在这里点击`生成证书`按钮生成客户端证书。 ![堡塔限制访问型证书-客户端证书列表](https://docs.bt.cn/img/user-guide/soft-btauth-clientcertlist.png) > **说明** - 客户端证书默认有效期1年,可手动续签 - 客户端证书:用于配置双向认证(即给使用者颁发证书,使用者需将证书导入后才能访问该网站) ::: 6. 生成客户端证书后,点击`下载`按钮下载客户端证书,下载完成后双击客户端证书安装到本地计算机。 证书安装流程可参考下载后压缩包中的`使用说明.txt`文件 ![堡塔限制访问型证书-下载客户端证书](https://docs.bt.cn/img/user-guide/soft-btauth-downloadclientcert.png) :::warning[注意] 一定要先在本地安装证书再进行下一个步骤 ::: 7. 客户端证书安装完成后,点击插件左侧菜单的`双向认证`中的`服务器证书`,在这里点击`更新证书`按钮同步服务器证书信息。 ![堡塔限制访问型证书-更新证书](https://docs.bt.cn/img/user-guide/soft-btauth-updatecert.png) 8. 在面板左侧菜单栏中点击`设置`,在设置页面中点击`安全设置`,在安全设置页面中开启`访问设备验证`功能。 ![堡塔限制访问型证书-开启访问设备验证](https://docs.bt.cn/img/user-guide/soft-btauth-enableauth.png) ## 效果展示 - 未安装客户端证书 ![堡塔限制访问型证书-效果展示](https://docs.bt.cn/img/user-guide/soft-btauth-result-noauth.png) - 已安装客户端证书 ![堡塔限制访问型证书-效果展示](https://docs.bt.cn/img/user-guide/soft-btauth-result.png) ## 吊销证书 在插件左侧菜单的`双向认证`中的`客户端证书列表`,选择需要吊销的证书,点击`撤销`按钮,即可吊销该证书。 ![堡塔限制访问型证书-吊销证书](https://docs.bt.cn/img/user-guide/soft-btauth-revokecert.png) --- source: https://docs.bt.cn/user-guide/database/mysql/root-pass-change.md.txt # Root 密码修改 > 在宝塔面板(BT Panel)数据库 → MySQL 页面修改 root 账号密码,面板会同步更新服务账号、phpMyAdmin 连接信息,避免站点数据库连接中断。 # Root 密码修改 本文将介绍如何修改 Root 密码。 > **警告** 默认为随机密码,root 为最高权限账号密码,请谨慎操作。 ::: ## 操作步骤 1. 进入面板,点击左侧菜单栏的 **数据库**,进入数据库的 MySQL 页面; ![菜单栏-数据库](https://docs.bt.cn/img/user-guide/database/sidebar-database.png) 2. 在数据库的 MySQL 页面,点击 **root密码**,进入修改 Root 密码页面; ![修改密码](https://docs.bt.cn/img/user-guide/database/change-database-mysql-password.png) 3. 在修改密码页面,输入新的密码,点击 **提交**,完成修改; --- source: https://docs.bt.cn/user-guide/domain/domain-hosting.md.txt # 域名托管使用教程 > 在宝塔面板中配置阿里云/腾讯云 DNS API 接口,托管域名后可直接为域名快速创建站点、添加 A/CNAME 解析记录、统一管理多服务商域名,无需跨平台切换。 # 域名托管使用教程 宝塔面板的域名托管并非传统意义上的"域名注册/解析服务",而是基于服务器管理场景的"域名与服务器配置的整合工具"。 本文将指导您如何配置域名托管。 ## 第一步:配置 DNS 接口 ### 添加 DNS 接口 ![添加DNS接口](https://docs.bt.cn/img/domain/hosting/domain-hosting.png) 本教程以主流云厂商阿里云、腾讯云为例,演示如何获取 API 密钥。 ### 阿里云 API 密钥获取 #### 1. 进入 AccessKey 管理页面 1. 登录阿里云控制台 2. 将鼠标放置在右上角头像处 3. 选择 **权限与安全** > **AccessKey** ![阿里云AccessKey入口](https://docs.bt.cn/img/domain/hosting/aliyun/domain-hosting-2.png) #### 2. 创建 AccessKey 点击 **创建AccessKey** 按钮 ![创建AccessKey](https://docs.bt.cn/img/domain/hosting/aliyun/domain-hosting-3.png) #### 3. 保存密钥信息 创建完成后,保存 AccessKey ID 和 AccessKey Secret ![保存AccessKey](https://docs.bt.cn/img/domain/hosting/aliyun/domain-hosting.png) ### 腾讯云 API 密钥获取 #### 1. 进入访问管理 1. 登录腾讯云控制台 2. 将鼠标放置在右上角头像处 3. 点击 **访问管理** ![腾讯云访问管理](https://docs.bt.cn/img/domain/hosting/tx/1b0f9a2ed51a6204dbb1350c695f4549.png) #### 2. 进入 API 密钥管理 在左侧菜单栏点击 **访问密钥** > **API密钥管理** ![API密钥管理](https://docs.bt.cn/img/domain/hosting/tx/9c21ac895cda7e536004be245aa5985e.png) #### 3. 创建密钥 点击 **创建密钥**,创建完成后保存密钥信息 ![创建密钥](https://docs.bt.cn/img/domain/hosting/tx/856d55256aa812e1fd3c965d69d323f6.png) ### 配置 DNS 接口 将获取的密钥信息填写到宝塔面板中,点击 **确定** 完成 DNS 接口添加 ![配置DNS接口](https://docs.bt.cn/img/domain/hosting/image-20251108180452733.png) ## 第二步:添加域名 ### 添加托管域名 点击 **添加域名** 按钮 ![添加域名](https://docs.bt.cn/img/domain/hosting/image-20251108180734438.png) ### 配置域名信息 1. 输入要添加的域名 2. 选择对应的 DNS 接口 3. 点击 **完成** ![配置域名](https://docs.bt.cn/img/domain/hosting/image-20251108180843870.png) ## 域名管理功能 添加域名后,您可以对这个域名进行以下管理操作: ### 创建网站 直接为托管的域名创建网站,简化网站部署流程 ### 快速解析 快速添加常用的解析记录,如 A 记录、CNAME 记录等 ### 解析记录管理 - 添加解析记录 - 修改解析记录 - 删除解析记录 - 查看解析记录状态 ## 使用场景 ### 1. 统一管理 将多个域名的 DNS 解析集中在宝塔面板管理,便于运维 ### 2. 快速部署 域名托管后可直接在面板中创建网站,实现域名到网站的快速部署 ### 3. 解析优化 利用面板的解析记录管理功能,快速调整域名解析配置 ## 注意事项 1. **DNS 接口权限**:确保 API 密钥具有 DNS 管理权限 2. **域名状态**:托管的域名必须处于正常状态 3. **解析生效时间**:DNS 记录修改后可能需要一定时间生效 4. **备份解析记录**:托管前建议备份原有的 DNS 解析记录 ## 相关文档 - [域名管理概述](./overview.md) - [域名注册使用教程](./domain-registration.md) --- source: https://docs.bt.cn/user-guide/ftp/edit-ftp-user-perms.md.txt # 修改 FTP 权限配置 > 详解在宝塔面板中为 FTP 用户限制上传/下载带宽、文件大小与数量、允许/拒绝 IP、访问时间段及最大并发会话数,参数优先级与限速限制逻辑详解。 # 修改 FTP 权限配置 本文将介绍如何修改 FTP 权限配置(上传或下载带宽、文件大小、文件数量、客户端 IP 等)。 ## 操作步骤 1. 登录宝塔面板,点击左侧菜单栏的 **FTP**,进入 FTP 管理页面; ![FTP 管理页面](https://docs.bt.cn/img/user-guide/ftp/ftp.png) 2. 选择需要修改权限的 FTP 用户,点击 FTP 列表右侧的 **配置** 按钮; ![配置按钮](https://docs.bt.cn/img/user-guide/ftp/ftp-config.png) 3. 在弹出的配置窗口中,修改 FTP 用户的相关配置,修改完成后点击 **保存** 按钮保存配置; ![配置窗口](https://docs.bt.cn/img/user-guide/ftp/ftp-config-window.png) > **注意** 填写为0或为空时都表示不做限制,将按照上一次设定值延续。 ::: > **说明** - 允许的 IP 地址和被拒绝的 IP 地址若配置相同,将会拒绝该ip,因为“被拒绝”的设置优先级高于“被允许”的设置。 - 上传和下载比率限制:以上传文件数量和下载文件数量的形式表示。例如,设置为 “1:5”,那么用户每上传1个文件,就可以下载5个文件。设定其中某一个值为0将设置失败。 - 时间限制:指定用户可以访问FTP的时间范围。如:09:00到18:00,表示用户只能在这个时间范围内访问FTP。 - 最大并发会话数:即允许与FTP服务器同时建立的最大连接数。 ::: --- source: https://docs.bt.cn/user-guide/security/firewall/port-rule.md.txt # 端口规则管理 > 宝塔面板系统防火墙端口规则管理:按 TCP/UDP、端口号、指定 IP/IP 段/域名添加或拒绝规则,支持规则导入导出,适用于 Web、数据库、FTP 等服务端口放行与屏蔽。 # 端口规则 本文将介绍宝塔面板的系统防火墙功能,包括添加、修改、删除端口规则,以及导入/导出规则等。 宝塔面板的**系统防火墙**功能,可便捷管理服务器端口访问规则,支持添加、修改、删除端口规则,实现对指定端口的访问控制(允许/拒绝),适用于配置Web服务、数据库、FTP等网络服务的端口放行或屏蔽。 ## 操作步骤 ### 登录宝塔面板并进入防火墙 1. 登录宝塔面板,点击左侧导航栏 **【安全】** → **【系统防火墙】**。 ![导航栏-安全](https://docs.bt.cn/img/user-guide/security/menu-security.png) ![系统防火墙](https://docs.bt.cn/img/user-guide/security/firewall.png) 2. 查看当前已有的端口规则列表,包括协议、端口、状态、策略、来源等信息。 ![端口规则列表](https://docs.bt.cn/img/user-guide/security/port-rule-list.png) ### 添加端口规则 #### 入口 点击端口规则区域的 **【添加端口规则】** 按钮。 ![添加端口规则](https://docs.bt.cn/img/user-guide/security/add-port-rule.png) ![添加端口规则](https://docs.bt.cn/img/user-guide/security/add-port-rule-1.png) #### 配置参数 | **参数** | **说明** | |----------------|-------------------------------------------------------------------------| | **协议** | 选择端口使用的协议(TCP、UDP、TCP/UDP),默认选TCP(如HTTP用TCP,DNS用UDP)。 | | **端口** | 输入单个端口(如80)或端口范围(如39000-40000),支持逗号分隔多个端口(如80,443)。 | | **来源** | **所有IP**:允许/拒绝所有IP访问。
**指定IP**:输入单个IP或IP段(如192.168.1.0/24),支持IP范围(如192.168.1.10-192.168.1.20)。
**指定域名**:企业版专享,输入域名限制访问来源。 | | **策略** | 选择 **允许**(放行端口)或 **拒绝**(屏蔽端口)。 | | **备注** | 填写端口用途(如“Web服务端口”“FTP被动模式端口”),便于后续管理。 | #### 示例 - **放行Tomcat服务端口8080**: 协议选TCP,端口填8080,来源选“所有IP”,策略选“允许”,备注填“Tomcat服务端口”,点击 **【提交】**。 ![添加端口规则](https://docs.bt.cn/img/user-guide/security/add-port-rule-2.png) #### 生效检查 添加后,规则自动生效。在端口规则列表中查看新规则,状态显示为: - **正常**:端口已被服务占用且放行成功。 - **未使用**:端口无服务监听或服务未启动(可忽略或删除)。 - **外网不通**:需检查云服务商安全组是否放行、服务是否监听外网IP(见【常见问题】)。 ### 修改/删除端口规则 1. **修改**:找到目标规则,点击操作栏 **【修改】**,调整参数后提交。 ![修改端口规则](https://docs.bt.cn/img/user-guide/security/edit-port-rule.png) 2. **删除**:点击操作栏 **【删除】**,确认后移除规则(谨慎操作,避免影响服务)。 ![删除端口规则](https://docs.bt.cn/img/user-guide/security/delete-port-rule.png) ### 导入/导出端口规则 #### 导出规则 点击端口规则区域的 **【导出规则】** 按钮,下载规则文件(.txt格式),用于备份或迁移。 ![导出规则](https://docs.bt.cn/img/user-guide/security/export-rule.png) #### 导入规则 在目标服务器的防火墙页面,点击 **【导入规则】**,选择已备份的规则文件,一键批量添加规则(需确保格式正确)。 ![导入规则](https://docs.bt.cn/img/user-guide/security/import-rule.png) ## 状态说明与端口管理 ### 端口状态含义 | **状态** | **说明** | |------------|-------------------------------------------------------------------------| | **正常** | 端口已被服务监听,且防火墙规则生效,访问正常。 | | **未使用** | 端口无服务监听、服务未启动,或规则已废弃(可删除无用规则)。 | | **外网不通** | 可能原因:
1. 服务未监听外网IP;
2. 云服务商安全组未放行;
3. 规则未生效(尝试删除重加);
4. 不影响访问时可忽略。 | ### 常用端口参考 | **端口** | **用途** | **是否需放行** | |----------|-----------------------------|----------------| | 22 | SSH远程管理 | 必须(仅允许可信IP) | | 80 | HTTP协议默认端口 | 必须(若启用HTTP服务) | | 443 | HTTPS协议默认端口 | 必须(若启用HTTPS服务) | | 3306 | MySQL数据库端口 | 按需(建议限制来源IP) | | 20/21 | FTP主动模式端口 | 按需(配合被动模式端口范围39000-40000) | | 888 | phpMyAdmin管理端口 | 按需(建议修改为非默认端口) | ## 注意事项 1. **不同系统防火墙差异**: - CentOS 6:使用`iptables`防火墙,面板仅显示通过面板添加的规则。 - CentOS 7+:使用`firewalld`防火墙,面板会读取所有规则(包括命令行添加的)。 - Debian/Ubuntu:使用`ufw`防火墙,规则同步至系统。 2. **云服务商安全组**:务必在腾讯云、阿里云等控制台放行对应端口,否则防火墙规则可能失效。[常用服务器厂商安全组放行方法](https://docs.bt.cn/getting-started/allow-panel-port-access#%E5%B8%B8%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8E%82%E5%95%86%E7%9A%84%E6%94%BE%E8%A1%8C%E6%96%B9%E6%B3%95) ## 常见问题处理 1. **端口放行后仍无法访问**: - 检查服务是否正常运行(如`netstat -tunlp | grep 端口号`)。 - 确认云服务商安全组已放行相同端口。[常用服务器厂商安全组放行方法](https://docs.bt.cn/getting-started/allow-panel-port-access#%E5%B8%B8%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8E%82%E5%95%86%E7%9A%84%E6%94%BE%E8%A1%8C%E6%96%B9%E6%B3%95) - 删除端口规则后重新添加,确保生效。 2. **误删关键端口规则**: - 通过“导出规则”提前备份,误删后可快速导入恢复。[导入/导出端口规则](https://docs.bt.cn/user-guide/security/firewall/port-rule#%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BA%E7%AB%AF%E5%8F%A3%E8%A7%84%E5%88%99) - 手动重新添加常用端口(如22、80、443)并设置策略为“允许”。 --- source: https://docs.bt.cn/user-guide/security/server-safe/clamAV.md.txt # ClamAV 反病毒检测工具 > 宝塔面板集成开源 ClamAV 反病毒引擎,支持多线程扫描、自定义检测目录、感染文件隔离/删除/修复、定时扫描与病毒库自动更新,适用于邮件网关与 Linux 服务器反病毒扫查。 # clamAV反病毒检测工具 > 有任何建议和问题,欢迎进群【QQ群:709033027】留言 ![clamav-img.png](https://docs.bt.cn/img/user-guide/security/clamav-img.png) ## 一、功能介绍     ClamAV 是一个开源(GPLv2许可)的反病毒工具包,专为邮件网关上的电子邮件扫描而设计。它提供了多种实用工具,包括灵活且可扩展的多线程守护进程、命令行扫描器以及用于自动更新数据库的高级工具。该工具包的核心是一个作为共享库形式提供的反病毒引擎。     支持检测数百万种恶意程序,覆盖传统病毒及各类新型恶意软件,适配邮件网关、服务器、终端等多场景扫描需求。 支持绝大部分内核版本、linux发行版。 **注意事项** > 检测过程会占用一定 CPU 资源,为避免影响生产环境业务正常运行,建议在夜间或业务低峰期(闲置时段)执行检测操作。 **环境要求** > ClamAV 的最低建议配置为: > > CPU 要求:1 CPU,2.0 Ghz+ > > 内存要求:3 GiB+ > > 服务器架构:至少 5GiB 可用磁盘空间 ## 二、使用方式 ① 打开clamav反病毒检测插件,查看「反病毒检测服务」状态;若服务未开启,点击【启动服务】即可运行服务 ![clamav-img_1.png](https://docs.bt.cn/img/user-guide/security/clamav-img_1.png) ② 进入【病毒检测】页面,点击【添加检测目录】,选择需扫描的目标目录。 ![clamav-img_2.png](https://docs.bt.cn/img/user-guide/security/clamav-img_2.png) ③ 在目录列表中,手动点击对应目录的【检测】按钮,触发即时扫描 ![clamav-img_3.png](https://docs.bt.cn/img/user-guide/security/clamav-img_3.png) ④ 扫描完成后,前往【检测记录】页面,查看本次扫描的详细结果(含检测时间、文件数量、风险文件等信息) ![clamav-img_4.png](https://docs.bt.cn/img/user-guide/security/clamav-img_4.png) 若开启了隔离策略,需要前往【隔离目录】查看,支持查看/恢复/删除隔离文件操作 ![clamav-img_5.png](https://docs.bt.cn/img/user-guide/security/clamav-img_5.png) ## 三、小Tips ### 3.1 扫描规则 > 扫描目录:病毒扫描任务扫描的目标目录 > > 感染文件策略:发现感染文件后,需要执行的操作方式,支持不操作、删除文件、移动文件到隔离目录、复制文件到隔离目录 > > 定时扫描:配置定时任务,定时执行扫描任务 ### 3.2 病毒库更新 可参考病毒库当前版本,支持全自动更新,同时也支持手动更新病毒库 ![clamav-img_6.png](https://docs.bt.cn/img/user-guide/security/clamav-img_6.png) ### 3.3 定时扫描 ① 点击【自动检测配置】,开启「定时扫描」开关,支持设置每日执行频率; ![clamav-img_7.png](https://docs.bt.cn/img/user-guide/security/clamav-img_7.png) ② 针对需定时扫描的目录,单独开启该目录的【定时扫描】功能即可生效。 ![clamav-img_8.png](https://docs.bt.cn/img/user-guide/security/clamav-img_8.png) ### 3.4 支持检测病毒类型 | 类型 | 说明 | | :------------- | :----------------------------------------------------------- | | Adware | 广告软件,通常在用户不知情的情况下显示广告。 | | Backdoor | 后门,允许攻击者远程访问和控制受感染系统的程序或功能。 | | Coinminer | 加密货币挖矿程序,用于非法挖掘加密货币的恶意软件。 | | Countermeasure | 反对抗措施,指示该签名用于识别防御性安全工具。 | | Downloader | 下载器,用于下载和执行其他恶意软件或组件的程序。 | | Dropper | 放置器,用于将其他恶意软件注入到受感染系统中的程序。 | | Exploit | 漏洞利用程序,利用系统或应用程序中的漏洞进行攻击的恶意软件。 | | File | 文件类型,用于描述独立文件的签名。 | | Filetype | 文件类型,描述恶意文件的类型。 | | Infostealer | 信息窃取程序,用于窃取用户敏感信息的恶意软件。 | | Ircbot | IRC 机器人,用于连接到 IRC(Internet Relay Chat)网络的恶意软件。 | | Joke | 恶作剧,不良影响系统但通常不造成实际损害的恶意软件。 | | Keylogger | 键盘记录器,用于记录用户输入的恶意软件。 | | Loader | 加载并运行其他恶意软件组件,确保恶意代码能正常执行,维持恶意程序运行状态的工具 | | Macro | 宏病毒,针对文档或电子表格中的宏命令进行攻击的恶意软件。 | | Malware | 恶意软件,一般术语,指任何有害的计算机程序。 | | Packed/Packer | 打包/打包工具,用于压缩和加密恶意软件以逃避检测的程序。 | | Phishing | 钓鱼,用于欺骗用户输入个人信息的恶意软件。 | | Proxy | 代理,用于通过受感染系统进行网络通信的恶意软件。 | | Ransomware | 勒索软件,加密用户文件并勒索解密费用的恶意软件。 | | Revoked | 已撤销的,指示签名或证书已被官方撤销的恶意软件。 | | Rootkit | 根套件,用于隐藏恶意软件活动和存在的程序。 | | Spyware | 间谍软件,用于监视用户活动并发送给攻击者的恶意软件。 | ## 四、故障排查 ### 1.服务启动没有反应 请执行以下指令,并检查相关日志,等待执行成功,再检查服务是否正常启动 ```shell bash /www/server/panel/plugin/bt_clamav/install.sh install ``` ### 2.提示"未检测到ClamAV服务,请先安装ClamAV" > 若上面方法,执行后依旧无法启动服务,则需要手动安装ClamAV服务 ①RedHat / CentOS ```shell # 1、安装 epel 源 yum install -y epel-release # 2、安装 ClamAV yum install clamav clamd clamav-update -y # 3、启动 ClamAV 服务 freshclam systemctl start clamd@scan.service systemctl start clamav-freshclam.service # 4、开机自启动 systemctl enable clamd@scan.service systemctl enable clamav-freshclam.service # 5、查看 ClamAV 服务状态 systemctl status clamd@scan.service systemctl status clamav-freshclam.service ``` ②Ubuntu / Debian ```shell # 1、安装 ClamAV sudo apt install clamav clamav-daemon -y # 2、启动 ClamAV 服务 freshclam sudo systemctl start clamav-daemon sudo systemctl start clamav-freshclam.service # 3、开机自启动 sudo systemctl enable clamav-daemon sudo systemctl enable clamav-freshclam.service # 4、查看 ClamAV 服务状态 sudo systemctl status clamav-daemon sudo systemctl status clamav-freshclam.service ``` --- source: https://docs.bt.cn/user-guide/security/ssh/ssh-log.md.txt # SSH 登录日志查询 > 宝塔面板企业版 SSH 登录日志功能集中记录服务器 SSH 登录尝试、成功与失败的来源 IP、用户名与时间,便于追溯异常访问、识别暴力破解行为并满足等保安全审计要求。 # SSH登录日志 记录SSH登录的相关日志信息,便于用户追溯和查询登录历史。 ![SSH登录详情](https://docs.bt.cn/img/user-guide/security/basic-settings-ssh-login-detail.png) > **提示** SSH登录日志是企业版专属功能,请先开通企业版。 ::: --- source: https://docs.bt.cn/user-guide/site/php/site-config/website-directory.md.txt # 网站目录与运行目录 > 在宝塔面板调整站点部署目录、设置运行目录(ThinkPHP/Laravel)、防跨站攻击、Git 同步、网站配额与 Nginx WebDav,为站点提供完整的目录管控能力。 # 网站目录 本文将介绍如何设置站点目录。 您可以通过网站目录设置功能设置站点目录、运行目录、防跨站、网站配额、Nginx WebDav 等。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`网站目录`,进入网站目录页面。 ![网站目录](https://docs.bt.cn/img/user-guide/site/website-directory.png) 4. 根据需要配置对应功能。 ![网站目录](https://docs.bt.cn/img/user-guide/site/website-directory.png) :::info[说明] - 网站目录:当前网站的部署目录,可以选择其他目录。 - 运行目录:部分程序需要指定二级目录作为运行目录,如ThinkPHP5,Laravel - 添加 FTP:为当前目录添加一个FTP账号,以支持访问,点击配置后按提示输入用户名,密码即可。 ![ftp](https://docs.bt.cn/img/user-guide/site/website-directory-ftp.png) - 文件同步:使用文件同步工具插件将文件同步到其他服务节点。 - git 同步:可以从 git 中下载文件到网站目录中。 ![git](https://docs.bt.cn/img/user-guide/site/website-directory-git.png) - 防跨站攻击:防跨站攻击(open_basedir),防止黑客通过其他网站目录进行入侵攻击。 - 写访问日志:允许当前日志增加访问日志。 - 密码访问:为站点目录设置密码,需要密码才能访问。 ![密码访问](https://docs.bt.cn/img/user-guide/site/website-directory-passwd.png) ::: 支持为站点配置网站配额,如`100M`,`1000M`等。 ![网站配额](https://docs.bt.cn/img/user-guide/site/website-quota.png) :::danger[警告] - 指定xfs分区未开启目录配额功能!请先在`/etc/fstab`中`/`分区增加`prjquota`参数。 - fstab配置示例:`/dev/vdc1 /data xfs defaults,prjquota 0 0`。 - 该行为存在风险,如需使用请确保熟悉相关知识。 ::: :::info[说明] - 查看已用容量:查看当前站点已使用空间大小。 - 当前网站配额:设置网站配额,如`100M`,`1000M`等。 - 设置告警:设置网站配额告警阈值,当网站配额使用量超过阈值时,触发告警。 ::: WebDAV 是一种用于在 Web 服务器上进行文件管理和协作的扩展协议。 ![webdav](https://docs.bt.cn/img/user-guide/site/nginx-webdav.png) 点击创建 WebDAV 服务,填写域名信息,点击确定即可创建 WebDAV 服务。 ![webdav](https://docs.bt.cn/img/user-guide/site/add-nginx-webdav.png) :::info[说明] - 域名格式为 `www.domain.com:88`,如未传端口信息,默认为 80。 - WebDAV 允许用户通过 HTTP 协议对远程服务器上的文件和目录进行读写操作。它提供了类似于本地文件系统的操作方式,使用户能够通过 WebDAV 客户端访问远程服务器上的文件。 ::: --- source: https://docs.bt.cn/user-guide/site/website-statistics.md.txt # 宝塔网站统计使用教程 > 介绍宝塔网站统计插件的安装、统计开启、跟踪脚本部署与验证方法,并说明核心指标、网页性能、热力图及常见问题。 # 宝塔网站统计 ## 产品概述 宝塔网站统计(bt-stats)是一款轻量级、自托管的网站访问分析系统,以宝塔面板插件的形式运行,具有以下特点: - **自托管**:数据存储在自有服务器,不经过第三方。 - **高性能**:采用 Go 采集后端和 DuckDB 列存引擎,单机可承载日均百万 PV。 - **低资源**:无需 MySQL 或 PostgreSQL,嵌入式数据库开箱即用。 - **准确可靠**:通过 Cookie 标识用户身份,准确识别新访客和回访客。 ### 功能矩阵 | 功能模块 | 说明 | | --- | --- | | 概览看板 | PV、UV、IP、跳出率、平均访问时长和活跃用户趋势 | | 访问分析 | 入口页面和出口页面排名 | | 来源分析 | 来源域名和渠道分布(直接访问、搜索引擎、社交、外链、付费和 UTM) | | 访客分析 | 地域、浏览器、操作系统、设备、屏幕和语言 6 个维度的分布 | | 会话列表 | Session 分页浏览和单会话行为日志 | | 实时访客 | 实时访问列表和访问轨迹追踪 | | 用户旅程 | 页面路径排名和事件流分析 | | 广告追踪 | UTM 五参数(source、medium、campaign、content、term)和广告平台 Click ID | | 页面性能 | Web Vitals(LCP、INP、CLS、FCP、TTFB)均值、评分、趋势和维度分解 | | 热力图 | 页面点击坐标热度分布,支持按页面配置与查询 | | IP 地理分布 | 国家和省份 IP 分布可视化 | ![宝塔网站统计概览页](https://docs.bt.cn/img/user-guide/site/website-statistics/overview.png) ## 快速开始 ### 环境要求 | 项目 | 要求 | | --- | --- | | 服务器 | Linux x86_64(支持 Debian、Ubuntu 和 CentOS) | | 内存 | 最低 1 GB,推荐 2 GB 及以上 | | 磁盘 | 200 MB 基础空间;日均 1 万 PV 时,每月约增加 100 MB | | 面板 | 宝塔 Linux 面板 | | Web 服务 | Nginx 或 Apache(Apache 仅支持手动配置) | ### 安装插件 在宝塔面板的【软件商店】中搜索并安装【宝塔网站统计】。安装完成后,进入插件设置页面进行配置。 ### 开启网站统计 在插件的【网站列表】中添加需要统计的站点,或找到已有站点,然后根据实际情况选择自动开启或手动开启。 | 设置项 | 说明 | | --- | --- | | CDN 类型 | 如果站点使用了 CDN,请选择对应的 CDN 厂商(Cloudflare、阿里云或腾讯云),以确保获取真实访客 IP | > **说明** 如果已在面板中开启全局 CDN,则可以忽略此处设置。 ::: ![宝塔网站统计的网站列表](https://docs.bt.cn/img/user-guide/site/website-statistics/website-list.png) ### 部署跟踪脚本 #### 自动部署 插件会自动在站点的 Nginx 配置中注入跟踪脚本,无需手动修改代码。部署后,访问者加载页面时,跟踪脚本会自动采集并上报数据。 #### 手动部署 如果自动部署失效、网站使用了反向代理,或网站使用 Apache 服务,请选择手动部署。 1. 选择以下任一方式部署跟踪脚本: - **方式一(Nginx)**:修改网站配置文件,使用 `sub_filter` 在 `` 标签前插入插件提供的手动配置信息。 ```nginx sub_filter '' '【在此处粘贴手动配置信息】'; ``` - **方式二(推荐)**:将插件提供的手动配置信息复制并粘贴到网站所有页面的 `` 标签前。建议将其放入 `header.htm` 等公共页头模板中,实现“一处安装,全站生效”。 如果需要在独立 JavaScript 文件中调用,请移除首尾的 `` 标签,并将其中的核心代码放入 JavaScript 文件。 2. 如果网站开启了反向代理,请在 `proxy_pass` 配置下添加以下内容: ```nginx proxy_set_header Accept-Encoding ""; ``` 3. 按照界面提示检测并开启统计。 ![手动部署跟踪脚本](https://docs.bt.cn/img/user-guide/site/website-statistics/enable-statistics.png) 部署完成后,站点会使用以下路径: | 路径 | 用途 | | --- | --- | | `/bt-stats.js` | 加载跟踪脚本 | | `/bt-stats.gif` | 上报统计数据 | ### 验证部署 1. 访问站点的任意页面。 2. 打开浏览器开发者工具,进入【网络】面板。 3. 检查是否存在 `bt-stats.gif` 请求。该请求的状态码应为 `200`,返回内容应为 1 × 1 像素的透明 GIF。 4. 等待几秒后,返回插件概览页面查看统计数据。 ## 数据说明 ### 核心指标 | 指标 | 计算方式 | 说明 | | --- | --- | --- | | PV | 页面访问事件总数 | 页面访问次数 | | UV | 独立访客数 | 访问网站的访客数 | | IP | 独立 IP 数 | 访问网站的 IP 数 | | 跳出率 | 单页 Session 数 / Session 总数 | 仅访问 1 个页面就离开的会话比例 | | 停留时长 | 总停留时长 / Session 数 | 单次访问的平均停留时长,上限为 60 分钟,以避免脏数据影响 | ### 网页性能标准 #### 统计指标 | 指标 | 说明 | 侧重点 | 业务用途 | | --- | --- | --- | --- | | P50 | 中位数 | 中间水平 | 整体平均常态 | | P75 | 75 分位 | 75% 数据上限 | 多数流量的较差值 | | P95 | 95 分位 | 95% 数据上限 | 长尾异常和慢请求 | #### 性能指标 | 指标 | 说明 | 优秀 | 良好 | 一般 | 较差 | | --- | --- | --- | --- | --- | --- | | LCP | 最大内容绘制 | ≤ 1.5 s | ≤ 2.5 s | ≤ 4 s | > 4 s | | INP | 交互响应 | ≤ 100 ms | ≤ 200 ms | ≤ 500 ms | > 500 ms | | CLS | 布局偏移 | ≤ 0.05 | ≤ 0.1 | ≤ 0.25 | > 0.25 | | FCP | 首次内容绘制 | ≤ 1 s | ≤ 1.8 s | ≤ 3 s | > 3 s | | TTFB | 首字节时间 | ≤ 400 ms | ≤ 800 ms | ≤ 1.8 s | > 1.8 s | ### 热力图 热力图展示访客在页面上的**点击分布**,直观呈现用户最关注、点击最密集的区域,可用于优化页面布局、按钮和广告位。 > **注意** 如果网站禁止在 iframe 中加载,请在网站配置中移除 `X-Frame-Options` 或 CSP `frame-ancestors` 限制。例如,需要移除以下 Nginx 配置: ```nginx add_header X-Frame-Options SAMEORIGIN; ``` ::: ![页面点击热力图](https://docs.bt.cn/img/user-guide/site/website-statistics/heatmap.jpg) ## 常见问题 ### 为什么统计数据比实际访问量少? 可能原因如下: 1. 跟踪脚本未覆盖网站的所有页面。 2. 部分浏览器插件或广告拦截器拦截了跟踪脚本。 3. 后端校验过滤了不合法的上报数据。 4. CDN IP 识别配置不准确,导致独立 IP 数偏低。 ### 支持哪些浏览器? 支持 Chrome、Firefox、Safari 和 Edge 等现代浏览器。Web Vitals 性能指标仅在支持 PerformanceObserver API 的浏览器中采集。 ### 数据能保存多久? 磁盘空间充足时,数据可以永久保存。DuckDB 列式存储压缩率较高,日均 1 万 PV 的站点每月约增加 100 MB 数据量,请注意预留足够的磁盘空间。 ### 能否统计多个站点? 支持。在插件的【网站管理】中添加多个站点,并分别部署跟踪脚本即可。各站点的数据相互独立。 ### 如何处理用户隐私? 1. 使用匿名化 Cookie 标识访客,不包含个人身份信息。 2. 所有数据只存放在用户自己的服务器上,不会上传到第三方服务。 --- source: https://docs.bt.cn/user-guide/soft/faq.md.txt # 软件商店常见问题 FAQ > 宝塔面板软件商店使用问题集:包含升级专业版/企业版后无法安装对应权益软件的原因与「更新软件列表和支付状态」同步账号权益的解决方案。 # FAQ 本文将介绍一些常见问题。 ## Q:为什么我开通了专业版/企业版,但是没办法安装对应权益的软件? **A:请先点击软件商店页面右上角的"更新软件列表和支付状态"按钮,刷新您的账号权益信息。系统会自动同步您的订单状态,完成后您就可以安装对应权益的软件了。** ![更新软件列表和支付状态](https://docs.bt.cn/img/user-guide/soft/soft-softupdatelist.png) --- source: https://docs.bt.cn/user-guide/ssl/auto-deploy.md.txt # SSL 证书自动部署 > 宝塔面板 9.4.0+ SSL 自动部署教程:上传证书至宝塔云端,官网后台创建同步任务获取密钥,目标服务器创建部署任务为多个站点自动同步及更新证书。 # 自动部署 本文将介绍自动部署的相关内容。 > **提示** 该功能要在宝塔面板9.4.0以上的版本才能使用。 ::: ## 操作步骤 1. 上传证书到宝塔云端 登录宝塔面板,进入 【SSL】→【证书管理】→【其他证书】。 ![侧边栏-SSL](https://docs.bt.cn/img/user-guide/ssl/sidebar-ssl.png) ![证书列表](https://docs.bt.cn/img/user-guide/ssl/certificate-list.png) 在证书列表中找到需要托管的证书(支持商业证书、Let's Encrypt 或自定义证书),点击对应证书操作栏的 【上传云端】。 ![上传证书到云端](https://docs.bt.cn/img/user-guide/ssl/upload-certificate-to-cloud.png) 等待证书上传完成,状态显示为 “已托管至云端”。 2. 创建同步任务(官网后台操作) 登录 [宝塔官网后台](https://www.bt.cn/admin/safe) (需与面板账号一致),进入 【SSL 管理】→【证书自动同步】→【创建同步任务】。 ![创建同步任务](https://docs.bt.cn/img/user-guide/ssl/create-sync-task.png) ![创建同步任务](https://docs.bt.cn/img/user-guide/ssl/create-sync-task-2.png) ![创建同步任务](https://docs.bt.cn/img/user-guide/ssl/create-sync-task-3.png) 在证书列表中勾选已上传的证书,点击 【创建同步任务】。 ![创建同步任务](https://docs.bt.cn/img/user-guide/ssl/create-sync-task-4.png) 创建成功后,生成唯一的 `同步密钥`(请立即复制并妥善保存,后续部署需使用)。 ![创建同步任务](https://docs.bt.cn/img/user-guide/ssl/create-sync-task-5.png) 如需修改密钥,可在任务管理中点击 【重置密钥】。 3. 创建部署任务(目标服务器操作) 登录目标服务器的宝塔面板,进入 【SSL】→【自动部署】→【创建】。 ![侧边栏-SSL](https://docs.bt.cn/img/user-guide/ssl/sidebar-ssl.png) ![自动部署](https://docs.bt.cn/img/user-guide/ssl/auto-deploy.png) ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task.png) 在弹出窗口中: 选择同步任务:从下拉菜单中选择创建的任务名称。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-2.png) 输入密钥:粘贴步骤 2 生成的同步密钥。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-3.png) 选择部署网站:勾选需要绑定证书的网站(支持多网站批量部署)。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-4.png) 点击 【创建】,任务状态显示为 “等待接入”。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-5.png) 4. 管理服务器接入(官网后台确认) 回到宝塔官网后台的同步任务管理页面,会收到新的接入请求(弹窗提示或 “有新机器接入” 按钮)。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-7.png) 点击 【接入】,目标服务器的部署任务状态将变为 “接入成功”,系统自动开始部署证书。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-8.png) ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-9.png) 部署完成后,目标服务器的对应网站会自动应用新证书,可在 【网站管理】→【SSL 设置】 中验证生效情况。 ![创建部署任务](https://docs.bt.cn/img/user-guide/ssl/create-deploy-task-6.png) ## 常见问题处理 部署失败:在面板或官网后台点击红色报错提示,查看详细日志(常见原因:密钥错误、证书域名不匹配、目标网站不存在)。 证书未更新:检查证书到期时间,确保同步任务未被删除,或手动触发同步(任务管理中点击【立即同步】)。 多服务器同步:重复步骤 3-4,在每台目标服务器创建部署任务并接入即可,无需重复上传证书。 ## 注意事项 证书类型支持:除 “其他证书” 外,商业证书和宝塔证书也可通过此流程同步,创建任务时直接勾选对应证书即可。 权限要求:确保目标服务器的宝塔面板已登录账号,且与官网账号一致(通过【面板设置】→【账号绑定】确认)。 到期提醒:云端托管的证书支持到期告警,可在【证书管理】中开启 “到期告警” 功能。 ## 功能扩展建议 如需将证书同步至腾讯云、阿里云等 CDN 平台,可通过宝塔插件市场反馈需求,或关注官方后续更新(目前暂需手动配置 CDN 证书,建议通过云平台 API 接口实现自动同步)。 --- source: https://docs.bt.cn/api/acme/get_orders.md.txt # get_orders > 获取所有 ACME 证书订单列表 # get_orders 列出所有 ACME 证书申请订单,包括进行中、已完成和已过期的订单。 - **路由**:`POST /acme` - **action**:`get_orders` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_orders` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 订单列表,每项含 `index`(ID)、`domains`(域名)、`status`(状态)、`cert_timeout`(到期时间) | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_orders ``` ### 响应 ```json [{ "index": "851cc157ad22888459e59c3cfdc5ac95", "domains": ["dnstest.cc"], "status": "valid", "cert_timeout": 1780111135, "auth_type": "dns", "create_time": 1779506335 }] ``` --- source: https://docs.bt.cn/api/crontab/modify_crond.md.txt # modify_crond > 修改计划任务配置 # modify_crond 修改已有计划任务的配置。 - **路由**:`POST /crontab` - **action**:`modify_crond` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `modify_crond` | | id | 是 | Integer | 任务 ID | | name | 是 | String | 新任务名称 | | type | 是 | String | 周期类型 | | where1 | 是 | String | 周期值 | | sType | 是 | String | 任务类型 | | sBody | 是 | String | 执行内容 | | sName | 否 | String | 备注 | ## 示例 ``` POST /crontab HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=modify_crond&id=6&name=修改后任务&type=minute-n&where1=30&sType=toShell&sBody=echo updated&sName= ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/database/GetMysqlUser.md.txt # GetMysqlUser > 获取 MySQL 用户列表及权限详情 # GetMysqlUser 获取指定 MySQL 服务器上所有用户及其权限详情。 - **路由**:`POST /database` - **action**:`GetMysqlUser` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetMysqlUser` | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | ## 输出参数 `data` 为数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | user | String | 用户名 | | list | Array | 该用户在各主机上的权限列表 | | list[].host | String | 主机(`localhost` / `%`) | | list[].password | String | 是否有密码(`有` / `无`) | | list[].password_last_changed | String | 密码最后修改时间 | | list[].access_list | Array | 数据库级权限列表 | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=GetMysqlUser&sid=0 ``` ```json {"status": true, "msg": "ok", "data": [ {"user": "root", "list": [{"host": "localhost", "password": "有"}]} ]} ``` --- source: https://docs.bt.cn/api/deployment/GetInLog.md.txt # GetInLog > 获取一键部署任务的执行日志 # GetInLog 获取一键部署任务的最新执行日志。 - **路由**:`POST /deployment` - **action**:`GetInLog` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | String | 日志内容(可能为空) | ## 示例 ```json {"status": true, "msg": ""} ``` --- source: https://docs.bt.cn/api/docker/get_registry_mirrors.md.txt # get_registry_mirrors > 获取 Docker 镜像加速器配置 # get_registry_mirrors 获取已配置的 Docker 镜像加速地址。 - **路由**:`GET /btdocker/setup/get_registry_mirrors` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | registry_mirrors | String | 官方镜像加速地址 | | com_reg_mirrors | Array | 自定义加速地址列表 | ## 示例 ```json {"registry_mirrors": "", "com_reg_mirrors": []} ``` --- source: https://docs.bt.cn/api/docker/image_list.md.txt # image_list > 获取本地 Docker 镜像列表 # image_list 获取 Docker 宿主机上已下载的所有镜像。 - **路由**:`GET /btdocker/image/image_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 镜像列表,每项含 `id`、`name`、`tag`、`size`、`used` | ## 示例 ```json [{"id": "sha256:8ac3ed6c...", "name": "allinssl/allinssl:latest", "size": 65204540, "used": 1}] ``` --- source: https://docs.bt.cn/api/files/GetFileBody.md.txt # GetFileBody > 读取文件内容(用于在线编辑) # GetFileBody / SaveFileBody 读取或保存文件内容,用于面板在线编辑器。 - **路由**:`POST /files` ## GetFileBody 读取文件内容,自动检测编码。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `GetFileBody` | | path | 是 | String | 文件路径 | ### 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | data | String | 文件内容 | | encoding | String | 检测到的编码(如 `utf-8`) | | size | Integer | 文件大小(字节) | | only_read | Boolean | 是否只读 | ### 示例 ```json {"status": true, "only_read": false, "size": 917, "encoding": "utf-8", "data": "..."} ``` ## SaveFileBody 保存编辑后的内容到文件。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `SaveFileBody` | | path | 是 | String | 文件路径(必须已存在) | | data | 是 | String | 新内容 | | encoding | 是 | String | 编码,如 `utf-8` | > 文件必须已存在且面板有写入权限。 --- source: https://docs.bt.cn/api/ftp/setPort.md.txt # setPort > 修改 FTP 服务监听端口 # setPort 修改 Pure-FTPd 的监听端口,并自动更新防火墙规则。 - **路由**:`POST /ftp` - **action**:`setPort` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `setPort` | | port | 是 | Integer | 新端口号 | ## 示例 ``` POST /ftp HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=setPort&port=21 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/java/project_list.md.txt # project_list > 获取所有 Java 项目列表及运行状态 # project_list 获取面板中所有 Java 项目(Spring Boot / Tomcat)的列表及运行状态。 - **路由**:`GET /mod/java/project/project_list/stype` - **方法**:GET ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array\ | 项目列表,每项含 `name`、`project_type`、`status`、`port`、`pid` 等 | | page | String | 分页 HTML | ## 示例 ```json {"page": "
...
", "data": []} ``` > 空数组表示暂无 Java 项目。 --- source: https://docs.bt.cn/api/proxy/add_proxy.md.txt # add_proxy > 为已有反向代理站点添加新的代理规则 # add_proxy 为已有站点添加一条新的反向代理规则(location 块)。 - **路由**:`POST /mod/proxy/com/add_proxy/stype` - **action**:`add_proxy` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径,如 `/api` | | proxy_pass | 是 | string | 代理目标 URL | | proxy_host | 否 | string | 代理 Host 头,默认 `$http_host` | | proxy_type | 否 | string | 代理类型,`http`(默认)或 `unix` | | remark | 否 | string | 备注 | 同一个 `proxy_path` 不能重复添加。若已存在 basic_auth 且路径冲突,需先删除 basic_auth 再添加。 ::: ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | bool | 操作结果 | | msg | string | 提示信息 | ## 示例 ### 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/add_proxy/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "site_name=example.com&proxy_path=/api&proxy_pass=http://127.0.0.1:3001&request_time=...&request_token=..." ``` ### 响应 ```json { "status": true, "msg": "添加成功!" } ``` --- source: https://docs.bt.cn/api/site/GetIndex.md.txt # GetIndex > 获取网站的默认文档设置 # GetIndex 获取指定网站的默认文档(首页文件)列表。 - **路由**:`POST /site` - **action**:`GetIndex` - **返回类型**:String(非 JSON) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetIndex` | | id | 是 | Integer | 网站 ID | > 网站 ID 可通过 `/data` 接口查询 `sites` 表获得:`action=getData&table=sites&type=-1` ## 输出参数 返回逗号分隔的字符串,按优先级排列默认文档文件名。 ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetIndex&id=1 ``` ### 响应 ``` index.php,index.html,index.htm,default.php,default.htm,default.html ``` --- source: https://docs.bt.cn/api/ssl/del_dns_data.md.txt # del_dns_data > 删除已有的 DNS API 密钥配置 # del_dns_data 删除指定 ID 的 DNS API 密钥配置。 - **路由**:`POST /ssl/dnsapi/del_dns_data` - **action**:URL 路径 `/ssl/dnsapi/del_dns_data` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | dns_id | 是 | String | DNS 配置的唯一 ID(通过 `get_dns_data` 获取) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | | msg | String | `删除成功` | ## 示例 ### 请求 ``` POST /ssl/dnsapi/del_dns_data HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded dns_id=619980b49ba5 ``` ### 响应 ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/system/GetCpuInfo.md.txt # GetCpuInfo > 获取 CPU 使用率、核心数、各核使用率等信息 # GetCpuInfo 获取 CPU 详细信息。调用 `psutil.cpu_percent(percpu=True, interval=interval)` 采样。 - **路由**:`POST /system` - **action**:`GetCpuInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetCpuInfo` | > 采样间隔固定为 1 秒,不可通过 API 修改。 ## 输出参数 返回数组 `[使用率%, 逻辑核心数, [各核使用率...], CPU名称, 物理核心数, 物理CPU数]`。 | 索引 | 类型 | 描述 | |------|------|------| | 0 | Float | 整体 CPU 使用率(%) | | 1 | Integer | 逻辑核心数 | | 2 | Array[Float] | 各核心使用率数组 | | 3 | String | CPU 型号名称 | | 4 | Integer | 物理核心数 | | 5 | Integer | 物理 CPU 数 | ## 示例 ### 请求 ``` POST /system HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetCpuInfo ``` ### 响应 ```json [12.5, 2, [15.0, 10.0], "Intel Core Processor (Skylake, IBRS)", 1, 1] ``` --- source: https://docs.bt.cn/btclaw/day4.md.txt # Day 4:让 OpenClaw 龙虾看懂图片——配置多模态模型 > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 4:通过对话配置多模态视觉模型,让 OpenClaw 龙虾能识别与分析图片内容,应用于运维截图问诊与日志图分析等场景。 # Day 4:让龙虾看懂图片 **发布日期:** 2026-03-12 **养成状态:** 🦞 龙虾成长期 **今日花费:** ¥0(取决于模型) **预计耗时:** 10 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:我发了张截图,龙虾说看不懂 ``` 我:[发送一张网页截图] 我:这个页面有什么问题? 龙虾:抱歉,我无法查看图片。 我:...那你能干嘛? 龙虾:我能聊天。 我:"..." ``` ![alt text](https://docs.bt.cn/img/btclaw/day_4_2.png) 朋友说:"要开多模态模型。" 我说:"怎么开?要改配置文件吗?" 朋友:"不用,直接跟龙虾说就行。" "问它有哪些模型,让它切换,让它测试。" "它自己会改配置。" 10 分钟后—— ``` 我:[发送一张网页截图] 我:这个页面有什么问题? 龙虾:按钮对比度不够,WCAG 不达标。另外表单缺少 label。 ``` 我服了。早说啊。 --- ## 🎯 今天只做一件事 **让龙虾能看懂图片,从"文字聊天"升级到"多模态"。** 全程用对话完成,不用手动改配置。 --- ## 🔧 三个步骤(10 分钟) ### 步骤 1:问龙虾有哪些模型(3 分钟) 直接在飞书问你的龙虾: ``` 你:你现在用的是什么模型?支持图片吗? ``` ![alt text](https://docs.bt.cn/img/btclaw/day_4_3.png) 龙虾会告诉你当前配置,并检查是否支持图片。 **如果支持**,跳到步骤 3。 **如果不支持**,继续步骤 2。 --- ### 步骤 2:让龙虾切换模型(5 分钟) 继续对话: ``` 你:帮我切换到一个支持图片的模型 ``` 龙虾会: 1. 列出可用的多模态模型(qwen-vl、qwen3.5-plus、gpt-4v 等) 2. 问你用哪个 3. 自动修改配置并重启 **或者更直接:** ``` 你:切换到 qwen3.5-plus,支持图片的那个 ``` **常见模型对照:** | 模型 | 支持图片 | 备注 | |------|----------|------| | qwen-vl | ✅ | 通义千问视觉版 | | qwen3.5-plus | ✅ | 新版支持 | | gpt-4v | ✅ | OpenAI 视觉版 | | gpt-4-turbo | ✅ | 支持图片 | | claude-3 | ✅ | Claude 视觉版 | | gpt-3.5-turbo | ❌ | 仅文字 | | qwen-turbo | ❌ | 仅文字 | --- ### 步骤 3:测试是否切换成功(2 分钟) 切换完成后,直接测试: ``` 你:[发送一张图片] 你:帮我分析这张图片 ``` **能分析?** 成功!✅ **还是看不懂?** 继续问: ``` 你:为什么你看不懂这张图片?分析下你看不懂的原因?并根据你分析的原因,自我检查一下,要怎么让你可以看懂图片。 ``` 龙虾会自己诊断问题,并告诉你怎么解决。 --- ## ✅ 完成检查 - [ ] 问了当前模型是否支持图片 - [ ] 切换到了支持图片的模型 - [ ] 发送图片能得到分析回复 **都完成了?** 恭喜你!龙虾有眼睛了!🎉 --- ## 🎯 明天继续 明天我们让龙虾学会分身术。 一个 main 负责日常聊天,一个 content-director 负责内容创作,一个 code-agent 负责写代码... "每个龙虾有自己的性格、自己的记忆、自己的 workspace。" (终于不用一个龙虾干所有活了。) --- ## 📝 踩坑记录(可选) _遇到问题再看_ **坑 1:** 龙虾说它改不了配置 **解决:** 检查你的 OpenClaw 版本,太老的版本可能不支持对话改配置 **坑 2:** 切换了还是看不懂 **解决:** 确认 Gateway 已重启,确认图片大小在 5MB 以内 **坑 3:** 不知道用什么模型 **解决:** 用 qwen3.5-plus,免费额度够用,还支持图片 --- *最后更新:2026-03-12* *作者:Bacon 大王* *状态:龙虾成长期 Day 4/∞* *字数:约 750 字* *阅读时间:约 4 分钟* > 🦞 **龙虾碎碎念:** 我终于有眼睛了。以前你发截图我只能说"抱歉",现在我能告诉你哪里有问题了。而且不用你改配置,我自己会切换。(感觉像个真正的助手了。) --- source: https://docs.bt.cn/faq/windows-0xc0000142-fix.md.txt # Windows Server 应用程序崩溃(0xc0000142)修复 > 宝塔 Windows 面板(BT Panel)在 Windows Server 上应用程序因桌面堆耗尽触发 0xc0000142 错误的原因分析与手动修复方案(含注册表调整步骤)。 # Windows Server 应用程序崩溃(0xc0000142)手动修复指南 ## 问题现象 在 Windows Server 系统上,某些服务(如计划任务、后台服务进程)可能会崩溃,无法正常使用。 | 项目 | 描述 | |------|------| | **错误代码** | `0xc0000142`(Status Illegal Initialization / DLL Initialization Failed) | | **影响范围** | 宝塔面板、计划任务、后台服务进程等 | --- ## 根本原因分析 ### 桌面堆(Desktop Heap)详解 #### 什么是桌面堆? Windows 操作系统使用**桌面堆(Desktop Heap)**来存储用户界面对象的内存区域,包括: - 窗口对象(Window Objects) - 菜单(Menus) - 钩子(Hooks) - 字符串资源(String Resources) - 其他 GDI 对象 **关键点**:即使是后台服务(非交互式进程),在初始化时也可能需要用到这部分内存来创建隐藏窗口、消息队列等内部结构。 #### Windows 会话架构 ``` ┌─────────────────────────────────────────────────────┐ │ Session 1, 2, 3...(交互式用户会话) │ │ - 桌面堆大小:SharedSection 第二个值(默认 20480 KB)│ │ - 用于用户登录后的图形界面 │ └─────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────┐ │ Session 0(非交互式服务会话) │ │ - 桌面堆大小:SharedSection 第三个值(默认 768 KB) │ │ - Windows 服务、计划任务在此运行 │ │ - 空间有限,容易耗尽 │ └─────────────────────────────────────────────────────┘ ``` #### 为什么会耗尽? 1. **默认值过小**:Windows Server 默认分配给 Session 0 的桌面堆仅为 **768 KB** 2. **服务数量增多**:每个服务进程初始化时可能消耗 10~50 KB 不等的桌面堆空间 3. **内存泄漏**:某些服务可能存在桌面堆内存泄漏,只分配不释放 4. **累积效应**:系统运行时间越长,累积占用的桌面堆越多 #### 耗尽后的表现 当桌面堆耗尽时: - 新进程无法完成初始化 - DLL 加载失败 - 触发 `0xc0000142` 错误 - 服务启动后立即崩溃或无响应 --- ## 手动修复方案 ### 前置准备 | 要求 | 说明 | |------|------| | **权限** | 本地管理员账户(Administrator) | | **工具** | 注册表编辑器(regedit.exe) | | **时间** | 约 5~10 分钟 | | **影响** | 需要重启服务器 | ### 操作步骤 #### 步骤 1:以管理员身份打开注册表编辑器 1. 点击开始菜单,搜索 `regedit` 2. 右键单击 `regedit.exe`,选择【以管理员身份运行】 3. 在 UAC 提示中点击【是(Y)】 #### 步骤 2:定位目标路径 导航至以下注册表路径: ``` HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems ``` **快速定位方法**:在注册表编辑器地址栏直接粘贴上述路径后回车。 #### 步骤 3:编辑 Windows 值 1. 在右侧窗格中,双击 `Windows` 值 2. 查看完整的数值数据,格式如下: ``` %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16 ``` 3. **只修改 SharedSection 的第三个值**: | 项目 | 原值 | 新值 | |------|------|------| | SharedSection 第三个值 | `768` | `2048` | 4. 修改后的完整数值数据应为: ``` %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,2048 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16 ``` :::warning 重要 只修改 `SharedSection=1024,20480,768` 中的 `768` 为 `2048`,其他所有配置保持不变。 ::: 5. 点击【确定】保存 #### 步骤 4:重启服务器 :::warning 必须执行 修改 `SharedSection` 属于系统全局配置,仅对修改后新创建的桌面生效,必须重启服务器才能生效。 ::: ``` 开始菜单 → 电源 → 重启 ``` 或使用命令: ```cmd shutdown /r /t 0 ``` --- ## 验证修复 重启完成后,可通过以下方式验证: ### 方法一:检查注册表值 ```cmd reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /v Windows ``` 确认输出中的 `SharedSection` 第三个值为 `2048`。 ### 方法二:观察服务状态 - 检查之前崩溃的服务是否正常启动 - 观察事件查看器中是否还有 `0xc0000142` 错误 - 运行计划任务测试是否正常执行 ### 方法三:使用桌面堆监控工具 可使用微软官方工具 **Desktop Heap Monitor** 实时监控桌面堆使用情况。 --- ## 注意事项 ### 1. 只修改 SharedSection 第三个值 注册表 `Windows` 值包含多个配置项,只修改 SharedSection 的第三个值,其他配置必须保持原样。修改其他参数或格式均属错误操作。 ### 2. 重启是强制要求 | 情况 | 是否需要重启 | |------|-------------| | 修改后服务暂时正常 | 仍需重启(旧进程仍用旧值) | | 只重启了单个服务 | 仍需重启(桌面堆配置是全局的) | | 修改完成立即生效? | 仅对新创建的桌面生效 | 修改后必须重启服务器才能彻底解决问题。 ### 3. 推荐值说明 | 场景 | 推荐值 | 说明 | |------|--------|------| | 一般服务器 | 2048 KB | 解决大部分场景 | | 高负载服务器 | 4096 KB | 运行大量后台服务 | | 极端场景 | 8192 KB | 微软官方支持的最大值 | 建议从 2048 开始,如仍有问题再逐步增大。 ::: ### 4. 风险提示 - 修改注册表前建议导出备份该键值 - 不要将值设置过大(超过 8192 可能导致系统不稳定) - 生产环境操作前请在测试环境验证 - 不要修改注册表权限,以管理员身份运行 regedit 即可直接编辑 --- ## 参考资料 - 微软官方文档:[Desktop Heap Overview](https://learn.microsoft.com/en-us/windows/win32/memory/desktop-heap) - 宝塔面板论坛:[Windows 面板问题讨论](https://www.bt.cn/bbs/forum-30-1.html) - Sysinternals Desktop Heap Monitor 工具 --- > 📝 **文档版本**:v1.1 > 🖊️ **整理**:小码 🐱‍💻 > 📅 **日期**:2026-03-16 > 🔄 **更新说明**:移除权限修改步骤,明确只修改 SharedSection 第三个值 --- source: https://docs.bt.cn/getting-started/deploy-ssl.md.txt # 在宝塔面板中为站点部署 SSL 证书 > 介绍如何在宝塔面板(BT Panel)中为站点申请并部署 SSL 证书(含 Let's Encrypt 免费证书与付费证书),实现网站 HTTPS 加密访问与自动续期。 # 部署 SSL 证书 SSL 证书是用于加密网站数据传输的加密证书,它能够保证网站数据传输的安全性,防止数据被窃取或篡改。宝塔面板支持为站点部署 SSL 证书,您可以通过`站点设置`中的`SSL 证书`功能来为站点部署 SSL 证书。 ## 操作步骤 1. 登录宝塔面板后,点击面板左侧菜单栏的`网站`按钮,进入站点管理页面,并点击需要部署证书的站点名称。 ![网站](https://docs.bt.cn/img/getting-started/deploy-ssl.png) 2. 在弹出窗口中,点击`SSL`,进入 SSL 证书设置页面。 ![SSL 证书](https://docs.bt.cn/img/getting-started/deploy-ssl-2.png) :::info[说明] - 当前证书:如您已经申请了 SSL 证书,点击`当前证书`,将对应的密钥(KEY)和证书(PEM格式)粘贴到对应的位置即可。 - 商用SSL证书:如您需要在宝塔面板申请并部署正式的 SSL 证书,请选择此选项。 - 测试证书:如您需要测试使用,可选择`测试证书`或`Let's Encrypt` - 证书夹:可在证书夹内选择已有的证书完成部署 ::: 3. 本文以已经申请了 SSL 证书为例,点击`当前证书`,将在证书厂商下载到的证书文件用编辑器打开后粘贴到对应的位置,并点击`保存并启用证书`。 ![当前证书](https://docs.bt.cn/img/getting-started/deploy-ssl-3.png) :::tip[提示] 部分厂商提供了对应教程,可参考: - [腾讯云宝塔面板 SSL 证书安装部署](https://cloud.tencent.com/document/product/400/50874) - [在宝塔面板部署阿里云 SSL 证书](https://help.aliyun.com/zh/ssl-certificate/user-guide/install-a-certificate-on-bt-panel) ::: 4. 看到如下界面,即表示证书部署成功。 ![证书部署成功](https://docs.bt.cn/img/getting-started/deploy-ssl-4.png) > **说明** - 证书部署成功后,您可以在`SSL`页面查看证书信息。 - 强制HTTPS:开启后,将强制用户访问网站时使用 HTTPS 协议。 - 到期提醒:开启后,将在证书到期前提醒用户更换证书。 ::: ## 视频教程 我们录制了部署商用 SSL 证书的教程,您可以观看视频了解如何部署正式的商用 SSL 证书 --- source: https://docs.bt.cn/practical-tutorials/security-hardening.md.txt # 宝塔面板安全加固配置指南 > 宝塔面板(BT Panel)与服务器安全加固完整配置指南,覆盖面板端口修改、账号加固、SSH 加固、防火墙、二要素认证、PassKey 与面板安全检测等面板运维高频加固项。 # 宝塔面板安全加固配置 本文将为您介绍如何对宝塔面板和服务器进行安全加固配置,提升系统整体安全性。 ## 安全配置入口 点击左侧菜单栏的 **安全** 进入安全管理模块 ![安全菜单](https://docs.bt.cn/img/practical-tutorials/best-practices/security-hardening/security-hardening.png) ## 安全状态概览 在安全页面可以查看服务器的整体安全信息和状态 ![安全状态](https://docs.bt.cn/img/practical-tutorials/best-practices/security-hardening/image-20251108155312521.png) ## 安全配置 点击 **安全配置** 进入详细配置页面 ![安全配置入口](https://docs.bt.cn/img/practical-tutorials/best-practices/security-hardening/image-20251108155444897.png) ![安全配置页面](https://docs.bt.cn/img/practical-tutorials/best-practices/security-hardening/image-20251108155521442.png) ## 安全配置功能详解 ### SSH 端口修改 **功能说明:** 修改 SSH 服务的默认端口(默认 22 端口),避免攻击者通过默认端口进行恶意扫描和登录尝试。 **使用场景:** 当服务器暴露在公网时,可以通过修改为高位非 22 端口,降低被"端口扫描-暴力登录"类攻击的概率,适用于云服务器、线下物理服务器等所有运行 SSH 服务的设备。 **配置建议:** - 选择 10000-65535 范围内的端口 - 避免使用常见的服务端口(如 80、443、3306 等) - 修改后记录新端口号,避免忘记无法登录 ### 密码复杂度设置 **功能说明:** 强制要求密码包含数字、大写字母、小写字母、特殊字符中的多种类型,通过提升密码复杂度,增加暴力破解或猜测的难度。 **使用场景:** 适用于对安全性要求较高的系统(如业务系统、数据库、服务器管理账户等),防止因"弱密码"(如简单数字、纯字母密码)被轻易破解,导致账户被盗用。 **配置建议:** - 要求包含至少 3 种字符类型 - 禁用常见弱密码(如 123456、password 等) - 定期提醒用户更改密码 ### 密码长度限制 **功能说明:** 设置密码的最低长度要求,避免用户设置过短的密码(如 3-5 位),从长度维度提升密码安全性。 **使用场景:** 各类需要账户密码登录的系统均可使用,例如企业办公系统、服务器管理后台、数据库系统等,通过强制长密码减少被暴力破解的风险。 **配置建议:** - 最低密码长度设置为 8-12 位 - 重要系统建议设置更长的密码要求 - 结合密码复杂度要求使用 ### SSH 登录告警 **功能说明:** 当有 SSH 登录行为时,自动发送告警通知(如邮件、短信、平台消息等)。 **使用场景:** 管理员需要实时掌握服务器 SSH 登录动态时,例如重要生产服务器、核心数据库服务器,一旦出现异常登录(如非工作时间登录、异地登录),可及时收到告警并介入排查,防止未授权访问。 **配置建议:** - 配置多种通知方式(邮件+短信) - 设置白名单 IP,减少误报 - 记录登录日志便于追溯 ### SSH 防暴破 **功能说明:** 开启后会限制 SSH 登录的尝试次数,阻挡攻击者通过"暴力枚举密码"的方式攻破账户。 **使用场景:** 公网环境下的服务器(如暴露在互联网的云服务器)易成为暴力破解的目标,开启该功能可有效拦截此类攻击,保护服务器登录入口的安全。 **配置建议:** - 设置合理的尝试次数限制(如 5 次) - 配置锁定时间(如 30 分钟) - 建立白名单避免误封管理员 IP ### 面板登录告警 **功能说明:** 面板登录时发送告警通知,实时监控面板登录行为。 **使用场景:** 适用于管理核心业务的面板(如服务器管理面板、业务系统管理面板)。当出现异常登录(如非授权登录、非工作时段登录)时,管理员可及时收到告警并介入排查,避免因未授权访问导致数据泄露或系统被篡改。 ### 面板登录动态口令认证 **功能说明:** 双因素认证机制,在账号密码基础上增加动态码校验。 **使用场景:** 适用于对安全性要求极高的面板(如涉及金融数据、核心技术机密的管理面板)。 **配置建议:** - 使用标准的 TOTP 算法 - 配置备用验证码 - 定期备份恢复密钥 ### 未登录响应状态码 **功能说明:** 设置未登录访问时的 HTTP 响应状态码。 **使用场景:** 适用于公网可访问的面板。可以隐藏真实的未授权状态,增加攻击者信息收集的难度。 ### 面板开启 SSL **功能说明:** 启用 HTTPS 访问,对面板通信数据进行加密。 **使用场景:** 所有公网暴露的面板均应配置。可防止面板登录凭证、操作指令等数据在传输过程中被窃听、篡改,是保障面板通信安全的基础配置。 **配置建议:** - 使用有效的 SSL 证书 - 强制 HTTPS 访问 - 定期更新证书 ### Root 密码登录设置 **功能说明:** 配置 Root 账户的登录权限,支持"仅密钥登录"、"密码+密钥登录"等多种模式,限制 Root 账户的访问方式。 **使用场景:** 适用于服务器核心账户的权限管理。Root 账户权限极高,通过限制其登录方式(推荐"仅密钥登录"),可降低 Root 密码泄露后被全局控制的风险,保障服务器核心资源的安全。 ### Root 密钥设置 **功能说明:** 提供 Root 密钥的查看和下载功能,基于密钥进行身份认证。 **使用场景:** 适用于高安全等级的服务器认证场景。密钥认证比密码认证更安全,可彻底避免暴力破解风险,管理员通过该功能管理 Root 账户密钥,实现安全的身份校验。 ## 安全加固建议 ### 基础安全配置 1. **修改默认端口**:SSH、面板等服务端口 2. **启用防火墙**:只开放必要的端口 3. **定期更新**:保持系统和软件最新版本 4. **强化密码策略**:复杂度+长度要求 ### 高级安全配置 1. **双因素认证**:为关键账户启用 2FA 2. **证书加密**:使用 SSL/TLS 加密通信 3. **访问控制**:IP 白名单和访问限制 4. **日志监控**:启用详细的安全日志记录 ### 监控和告警 1. **实时告警**:登录、操作等关键事件告警 2. **定期检查**:安全配置和系统状态检查 3. **备份策略**:重要配置和数据的备份 ## 注意事项 1. **配置备份**:修改安全配置前务必备份原配置 2. **测试验证**:配置修改后及时测试功能是否正常 3. **文档记录**:记录所有安全配置变更 4. **权限管理**:严格控制安全配置的修改权限 通过以上安全加固配置,可以显著提升宝塔面板和服务器的安全防护能力,降低安全风险。 --- source: https://docs.bt.cn/purchase-guides/package-service/apache-firewall.md.txt # Apache 防火墙插件 > 宝塔面板(BT Panel)Apache 防火墙插件,针对 Apache 环境提供防 SQL 注入 / XSS / 一句话木马等常见渗透攻击防护,支持全局与站点级规则配置。 # Apache 防火墙 有效防止sql注入/xss/一句话木马等常见渗透攻击 ## 全局配置 可以设置全局规则,支持正则表达式,用户可自行修改初始化已有的所有规则、同步蜘蛛池等,并且可以自定义拦截后的影响状态码。 ## 站点配置 可以单独给某个站点设置或应用规则,页面中提供常用的设置类型供用户设置。 ## 封锁历史 展示每个站点的封锁记录,记录了有时间、IP、站点、封锁的原因、封锁时常等。 ## 操作日志 记录所有 Apache 防火墙的功能性操作,比如设置CC规则、给某个IP添加了黑白名单、URL黑白名单等等,所有操作记录都会记录在此。 ![Apache 防火墙](https://docs.bt.cn/img/purchase-guides/apache-firewall.png) --- source: https://docs.bt.cn/user-guide/ai/assistant/skill-management.md.txt # 技能管理 > 介绍宝塔面板 AI 助手的技能管理功能,包括自带技能说明、技能开关控制与导入技能包的方法。 # 技能管理 技能是 AI 助手的扩展能力模块,每个技能对应一类特定的面板操作能力。启用相应技能后,AI 助手即可调用对应功能完成更复杂的运维任务。 ## 进入技能管理 1. 登录宝塔面板 2. 点击左侧导航栏【AI】 3. 切换到【技能管理】标签页 ![技能管理](https://docs.bt.cn/img/user-guide/ai/skill-management.png) ## 基础自带技能 | 技能名称 | 功能说明 | |---------|---------| | btpanel | 宝塔面板运维管理技能入口,覆盖数据库管理、防火墙管理、网站管理、软件商店安装等能力 | | btwaf | 宝塔 Nginx 防火墙(WAF)专业技能,提供 WAF 功能查询、配置和管理能力 | | btpanel_mail | 宝塔邮局管理技能,提供邮局服务管理、域名配置、邮箱账户管理、DNS 解析配置等功能 | ## 技能开关 每个技能卡片右侧都有开关按钮,用于启用或禁用该技能: - **绿色 / 开启**:技能已启用,AI 助手在对话中可调用该技能 - **灰色 / 关闭**:技能已禁用,AI 助手不会调用该技能 ### 操作步骤 1. 在技能管理页面找到目标技能 2. 点击技能卡片右侧的开关按钮 3. 开启后该技能在对话中即可使用 :::tip 提示 如果 AI 助手提示"需要启用对应工具才能完成该任务",请回到技能管理页面检查相关技能是否已开启。 ::: ## 导入技能包 除了系统自带技能外,你还可以导入自定义技能包,扩展 AI 助手能力: 1. 在技能管理页面点击左上角【导入技能包】按钮 2. 选择本地技能包文件 3. 确认导入后,新技能会出现在技能列表中 ![导入技能包](https://docs.bt.cn/img/user-guide/ai/skill-import.png) ## 使用建议 - 仅开启当前对话所需的技能,减少 AI 误调用概率 - 涉及安全、文件修改等敏感操作时,确保了解该技能的能力范围 - 导入第三方技能包前,请确认来源可信 --- source: https://docs.bt.cn/user-guide/config/interface-settings.md.txt # 界面设置 > 在宝塔面板(BT Panel)「设置 → 界面设置」自定义面板 Logo、网站图标、侧边栏颜色与主题、登录界面与面板背景等外观元素,提供企业化与个性化面板体验。 # 界面设置 本文将介绍如何自定义宝塔面板的界面外观设置。 界面设置功能允许您个性化定制面板的外观,包括Logo设置、侧边栏颜色主题、登录界面等,提升使用体验。 ## Logo设置 ### 面板Logo 您可以自定义面板顶部显示的Logo图标。 **技术要求:** - 建议尺寸:32px × 32px - 推荐格式:SVG格式 - 支持格式:PNG、JPG、SVG **设置步骤:** 1. 在面板设置页面找到【Logo设置】区域 2. 点击【上传Logo】按钮 3. 选择符合要求的Logo图片文件 4. 点击【恢复默认】可以恢复系统默认Logo ![Logo设置界面](https://docs.bt.cn/img/user-guide/lts-interface-settings-logo.png) ### 网站图标 设置浏览器标签页显示的网站图标(Favicon)。 **技术要求:** - 建议尺寸:16px × 16px - 推荐格式:ICO格式或PNG、SVG格式 **设置步骤:** 1. 在【Logo设置】区域找到网站图标设置 2. 点击【上传图标】按钮 3. 选择符合要求的图标文件 4. 点击【恢复默认】可以恢复系统默认图标 ![网站图标设置](https://docs.bt.cn/img/user-guide/lts-interface-settings-logo.png) ## 侧边栏设置 ### 颜色方案 面板提供多种颜色主题方案,您可以根据个人喜好选择合适的配色。 **可选颜色方案:** - 深灰色(默认) - 紫色主题 - 绿色主题 - 黑色主题 - 深绿色主题 - 蓝色主题 - 浅灰色主题 - 自定义颜色 **设置步骤:** 1. 在【侧边栏设置】区域选择【颜色方案】 2. 点击您喜欢的颜色方案 3. 选择后会立即生效 4. 如需自定义颜色,可选择【自定义】选项 5. 点击【恢复默认】可以恢复默认配色方案 ![侧边栏颜色设置](https://docs.bt.cn/img/user-guide/lts-interface-settings-sidebar.png) > **说明** 选择预设的颜色方案或自定义颜色,选择后会立即生效 ::: ## 登录界面设置 ### 登录Logo图片 自定义登录页面显示的Logo图片。 **技术要求:** - 建议尺寸:64px × 64px - 推荐格式:SVG格式 **设置步骤:** 1. 在【登录界面设置】区域找到登录logo图片设置 2. 开启【显示】开关 3. 点击【上传图片】按钮上传自定义Logo 4. 点击【恢复默认】可以恢复系统默认Logo ![登录Logo设置](https://docs.bt.cn/img/user-guide/lts-interface-settings-sidebar.png) ### 登录背景图片 设置登录页面的背景图片。 **设置步骤:** 1. 在【登录界面设置】区域找到登录背景图片设置 2. 开启背景图片开关 3. 点击【上传图片】按钮选择背景图片 4. 关闭开关可以禁用自定义背景 ![登录背景设置](https://docs.bt.cn/img/user-guide/lts-interface-settings-login-bg.png) ## 保存设置 完成所有设置后,点击页面底部的【恢复所有默认设置】可以一键恢复所有界面设置到默认状态。 > **注意** - 上传的图片文件建议大小不超过2MB - 建议使用高质量的图片以获得最佳显示效果 - 修改界面设置后建议清除浏览器缓存以查看最新效果 ::: > **小贴士** - 推荐使用SVG格式的图片,可以在不同分辨率下保持清晰 - 选择与您的品牌风格相匹配的颜色主题,提升专业形象 - 定期备份自定义的界面设置,避免意外丢失 ::: --- source: https://docs.bt.cn/user-guide/config/safe/temporary-access-auth.md.txt # 临时访问授权 > 在宝塔面板(BT Panel)「安全设置 → 临时访问授权」为非管理员快速生成一次性面板访问链接,生效 1 小时、使用后立即失效,适用于临时代维、紧急问题修复与外部人员靠谱临时授权场景。 # 临时访问授权 本文将介绍如何创建临时访问授权。 临时访问授权可为非管理员临时提供面板访问权限,用于紧急修复问题或紧急处理问题。 ## 创建临时授权链接 1. 进入面板,点击左侧菜单栏的 `设置`,进入面板设置页面。 ![面板设置页面](https://docs.bt.cn/img/user-guide/panel-setting.png) 2. 在设置页面顶部菜单栏中,点击 `安全设置`,进入安全设置页面。 ![安全设置页面](https://docs.bt.cn/img/user-guide/security-setting.png) 3. 在`安全设置`中,点击 `临时访问授权管理` 的按钮,打开临时授权管理窗口。 ![临时授权管理](https://docs.bt.cn/img/user-guide/temporary-access-auth.png) 4. 点击`创建临时授权`按钮,开始创建临时授权链接。 ![创建临时授权](https://docs.bt.cn/img/user-guide/temporary-access-auth-2.png) 5. 在弹出的窗口中,选择一个合适的过期时长,点击`确定`按钮,创建临时授权链接。 ![创建临时授权](https://docs.bt.cn/img/user-guide/temporary-access-auth-3.png) 6. 创建成功后,会显示临时授权链接,点击`复制`按钮,复制临时授权链接。 ![创建临时授权](https://docs.bt.cn/img/user-guide/temporary-access-auth-4.png) > **说明** - 临时授权生成后1小时内使用有效,为一次性授权,使用后立即失效 - 使用临时授权登录面板后1小时内拥有面板所有权限,请勿在公共场合发布临时授权连接 - 授权连接信息仅在此处显示一次,若在使用前忘记,请重新生成 ::: --- source: https://docs.bt.cn/user-guide/database/mysql/takeover-mysql.md.txt # 接管服务器已有 MySQL > 宝塔面板(BT Panel)11.4+ 「读取本地数据库」功能使用指南:将服务器已存在的 MySQL 接管到面板统一管理,含输入 root 密码接入、库表识别与从他工具迁入场景。 # 接管服务器已有 MySQL 本文介绍如何将服务器上已存在的 MySQL 数据库接管到宝塔面板,实现统一管理。 :::info 版本要求 此功能需要宝塔面板版本 **11.4** 及以上。 ::: ## 适用场景 - 服务器上已安装 MySQL,希望通过宝塔面板统一管理 - 从其他管理工具迁移到宝塔面板 - 需要在宝塔面板中查看和管理现有数据库 ## 操作步骤 ### 1. 进入数据库管理 点击左侧菜单栏的【数据库】,进入数据库管理界面。 ![数据库菜单](https://docs.bt.cn/img/user-guide/database/mysql/takeover/database-menu.png) ### 2. 读取本地数据库 在数据库页面顶部,点击【读取本地数据库】按钮。 ![读取本地数据库](https://docs.bt.cn/img/user-guide/database/mysql/takeover/read-local-db.png) ### 3. 输入 MySQL Root 密码 在弹出的对话框中,输入 MySQL 的 Root 密码,然后点击【确认接入】。 ![输入 Root 密码](https://docs.bt.cn/img/user-guide/database/mysql/takeover/enter-root-password.png) :::warning 密码错误 若不知道 Root 密码,可通过以下方式重置: - 停止 MySQL 服务后以安全模式启动进行重置 ::: ### 4. 同步数据库到面板 接入成功后,点击【从服务器同步到面板】按钮,系统将自动读取服务器上的所有数据库并显示在面板中。 ![同步数据库](https://docs.bt.cn/img/user-guide/database/mysql/takeover/sync-from-server.png) 现在即可在宝塔面板中看到服务器上原有的所有数据库。 ## 管理已接管的 MySQL ### 使用 phpMyAdmin 管理 接管 MySQL 后,可通过 phpMyAdmin 进行管理。 #### 1. 安装 phpMyAdmin 若尚未安装,请先在【软件商店】中安装 phpMyAdmin。 #### 2. 访问 phpMyAdmin 有两种访问方式: **方式一:通过工具访问** 点击数据库页面的【phpMyAdmin】,选择【通过面板访问】。 ![phpMyAdmin 访问](https://docs.bt.cn/img/user-guide/database/mysql/takeover/phpmyadmin-access.png) **方式二:直接管理数据库** 在数据库列表中,点击某个数据库右侧的【管理】按钮。 ![管理数据库](https://docs.bt.cn/img/user-guide/database/mysql/takeover/manage-db.png) #### 3. 查看数据库内容 在 phpMyAdmin 中,可以看到之前创建的所有表和数据。 ![查看数据](https://docs.bt.cn/img/user-guide/database/mysql/takeover/view-data.png) ## 相关教程 - [安装 MySQL](https://docs.bt.cn/user-guide/database/mysql/install-mysql) - [添加数据库](https://docs.bt.cn/user-guide/database/mysql/add) --- source: https://docs.bt.cn/user-guide/docker/cloudimages.md.txt # 宝塔面板 Docker 线上镜像管理 > 介绍如何在宝塔面板(BT Panel)Docker 模块中拉取与管理线上镜像,支持 Docker Hub、其他云镜像、阿里云 ACR 等镜像仓库检索、一键拉取、版本选择与加速下载。 # 线上镜像 本文将介绍如何拉取和管理 Docker 仓库中的镜像。 可在此页面查看 Docker 仓库中的镜像,包括官方镜像和社区镜像。 支持搜索镜像,可以选择拉取镜像到本地,也可以直接在页面中创建容器。 ![线上镜像](https://docs.bt.cn/img/user-guide/docker/cloudimages.png) --- source: https://docs.bt.cn/user-guide/ftp/ftp-storage.md.txt # FTP 存储空间 > 使用宝塔面板 FTP 存储空间功能,将站点、数据库与文件备份数据通过 FTP 上传至独立的远端服务器,缓解本地磁盘容量瓶颈并实现异地备份与异机容灾。 # FTP 存储空间 本文介绍当本机空间不足,需要将数据存放至另一台服务器时,如何使用宝塔面板的 FTP 存储空间功能。 ## 服务器环境 - **Master**(192.168.10.47):正常生产环境,已安装 FTP 存储空间插件 ![Master 服务器环境](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326151048749.png) - **Server**(192.168.10.136):已安装 FTP ![Server 服务器环境](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326151106735.png) ## 配置连接 1. 在 Server(测试机 2)上创建一个 FTP 账户,并记好账号和密码。 ![在 Server 上创建 FTP 账户](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326151201641.png) ![FTP 账户创建完成](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326151816689.png) 2. 在 Master(测试机 1)上打开【FTP 存储空间】,填写 Server 的 FTP 连接信息。 ![填写 FTP 连接信息](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326152812475.png) > **注意:** 若提示账号密码认证失败,请检查 Server 上的 20、21、39000-40000 端口是否已放行。 ## 测试使用 1. 在计划任务中添加一个备份脚本,存储位置选择 FTP 存储空间。 ![计划任务中选择 FTP 存储空间](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326152952664.png) 2. 手动执行任务,查看执行效果。 ![手动执行备份任务](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153023775.png) 3. 点击日志查看执行结果,确认备份已完成。 ![查看备份任务日志](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153109149.png) 4. 点击 FTP 根目录地址,自动跳转至对应目录,确认 Server(测试机 2)上已存在备份文件。 ![跳转至 FTP 根目录](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153203456.png) ![FTP 目录内容](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153220528.png) ![备份文件目录结构](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153232996.png) ![备份文件详情](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153244282.png) ![备份文件确认](https://docs.bt.cn/img/user-guide/ftp/ftp-storage/image-20260326153257227.png) > 目录较多是因为面板计划任务的备份逻辑会按日期分目录存放,便于区分和管理。 ## 总结 使用 FTP 存储空间的优势: 1. **解决本地空间瓶颈**:从根本上解决服务器本地存储空间不足的问题。 2. **剥离备份占用,释放本地资源**:备份数据统一存放至 FTP 存储,不再占用本地磁盘,保障业务系统稳定运行。 3. **规避单机故障风险**:实现数据多节点存储,避免数据集中存放带来的单点故障风险,大幅提升数据安全性与可靠性。 4. **零额外成本投入**:基于本地化设备部署,无需采购云存储或第三方服务,全程无额外付费。 --- source: https://docs.bt.cn/user-guide/security/firewall/port-anti-scan.md.txt # 端口防扫描 > 宝塔面板基于 fail2ban 实现端口防扫描,自动识别并封禁恶意 IP 对服务器的高频端口探测,预防端口渗透与暴力破解攻击。 # 端口防扫描 本文将介绍如何开启端口防扫描。 端口防扫描基于fail2ban的能力实现,通过配置fail2ban的jail,实现端口防扫描。 ## 操作步骤 1. 进入面板,点击左侧菜单栏的**安全设置** > **端口防扫描**,进入端口防扫描页面。 ![导航栏-安全](https://docs.bt.cn/img/user-guide/security/menu-security.png) ![端口防扫描](https://docs.bt.cn/img/user-guide/security/port-anti-scan.png) 若未安装fail2ban,将会提示安装,点击**立即安装**,安装fail2ban。 ![安装fail2ban](https://docs.bt.cn/img/user-guide/security/install-fail2ban.png) 等待安装完成后,继续完成端口防扫描的配置。 2. 通常情况下,在安装fail2ban后,会自动开启端口防扫描规则,无需手动开启。 若未开启,点击**开启**,开启端口防扫描规则。 ![开启端口防扫描规则](https://docs.bt.cn/img/user-guide/security/open-port-anti-scan.png) 等待开启完成后,即可生效。 --- source: https://docs.bt.cn/user-guide/site/php/site-config/access-restrictions.md.txt # 站点访问限制配置 > 在宝塔面板为站点配置加密访问、禁止访问、双向认证与 USER-AGENT 过滤等访问限制,限制指定目录、文件后缀与 URL 的访问权限。 # 访问限制 本文将介绍如何配置网站访问限制。 支持通过多种方式限制网站访问,如加密访问、禁止访问、双向认证等。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`访问限制`,进入访问限制页面。 ![访问限制](https://docs.bt.cn/img/user-guide/site/access-restrictions.png) 4. 根据需要配置对应功能。 目录设置加密访问后,访问时需要输入账号密码才能访问,例如:我设置了加密访问 /test/ ,那我访问 http://aaa.com/test/ 时就要输入账号密码才能访问。 ![加密访问](https://docs.bt.cn/img/user-guide/site/encrypt-visit.png) :::info[说明] - 加密访问:输入加密访问的目录 - 名称:设置名称 - 用户名:请输入大于三位的用户名 - 密码:请输入大于三位的密码 ::: :::warning[注意] - 目录设置加密访问后,会导致目录及子目录下的“反向代理”失效。 - 目录设置加密访问后,访问时需要输入账号密码才能访问。 ::: 支持设置禁止某些文件后缀的访问,例如`.php`。 ![禁止访问](https://docs.bt.cn/img/user-guide/site/forbidden-visit.png) :::info[说明] - 名称:设置名称 - 后缀:输入禁止访问的文件后缀 - 访问路径:URL禁止访问的,如`/api` ::: 双向认证通过校验客户端的证书实现加密访问,生成证书后需要将证书安装到本地系统。 ![双向认证](https://docs.bt.cn/img/user-guide/site/bidirectional-authentication.png) --- source: https://docs.bt.cn/api/acme/get_order_find.md.txt # get_order_find > 获取指定 ACME 证书订单的详细信息 # get_order_find 获取指定订单的详细信息,包括证书内容。 - **路由**:`POST /acme` - **action**:`get_order_find` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_order_find` | | index | 是 | String | 订单索引 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | index | String | 订单索引 | | domains | Array | 域名列表 | | status | String | `valid` 有效 / `pending` 待验证 / `expired` 已过期 | | cert_timeout | Integer | 证书到期时间戳 | | cert | Object | 证书详情,含 `private_key`、`fullchain` | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_order_find&index=851cc157ad22888459e59c3cfdc5ac95 ``` ### 响应 ```json { "index": "851cc157ad22888459e59c3cfdc5ac95", "domains": ["dnstest.cc"], "status": "valid", "cert_timeout": 1780111135, "cert": { "private_key": "-----BEGIN PRIVATE KEY-----\n...", "fullchain": "-----BEGIN CERTIFICATE-----\n..." } } ``` --- source: https://docs.bt.cn/api/crontab/set_cron_status.md.txt # set_cron_status > 启用或暂停计划任务 # set_cron_status 启用或暂停指定的计划任务。 - **路由**:`POST /crontab` - **action**:`set_cron_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_cron_status` | | id | 是 | Integer | 任务 ID | | status | 是 | String | `1` = 启用,`0` = 暂停 | ## 示例 ``` POST /crontab HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=set_cron_status&id=6&status=0 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/database/GetRunStatus.md.txt # GetRunStatus > 获取 MySQL 运行状态变量(SHOW GLOBAL STATUS) # GetRunStatus 获取 MySQL 服务器的运行状态变量(`SHOW GLOBAL STATUS` 结果)。 - **路由**:`POST /database` - **action**:`GetRunStatus` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetRunStatus` | ## 输出参数 返回 MySQL 状态变量键值对,包含连接数、查询数、流量等数百个指标。 | 常见参数 | 描述 | |----------|------| | Connections | 总连接次数 | | Uptime | MySQL 运行时间(秒) | | Bytes_received/sent | 收发字节数 | | Com_select/insert/update/delete | CRUD 操作计数 | | Slow_queries | 慢查询数 | | Threads_connected | 当前连接数 | ## 示例 ```json { "Aborted_clients": "33", "Bytes_received": "17167", "Bytes_sent": "39463", "Connections": "50", "Uptime": "3600", "Threads_connected": "2" } ``` --- source: https://docs.bt.cn/api/deployment/DelPackage.md.txt # DelPackage > 删除已部署的项目 # DelPackage 删除通过一键部署安装的项目。 - **路由**:`POST /deployment` - **action**:`DelPackage` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DelPackage` | | dname | 是 | String | 部署名称 | | site_name | 是 | String | 网站名称 | ## 示例 ```json {"status": true, "msg": "删除成功!"} ``` --- source: https://docs.bt.cn/api/docker/get_volume_list.md.txt # get_volume_list > 获取 Docker 存储卷列表 # get_volume_list 获取 Docker 宿主机上所有数据卷。 - **路由**:`GET /btdocker/volume/get_volume_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 存储卷列表,每项含 `name`、`driver`、`mountpoint` | ## 示例 ```json [{"name": "baota_volume", "driver": "local", "mountpoint": "/var/lib/docker/volumes/baota_volume/_data"}] ``` --- source: https://docs.bt.cn/api/docker/set_registry_mirrors.md.txt # set_registry_mirrors > 设置 Docker 官方镜像加速器地址 # set_registry_mirrors 设置 Docker 的官方 registry 镜像加速地址。 - **路由**:`GET /btdocker/setup/set_registry_mirrors` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | registry_mirrors | 是 | String | 镜像加速 URL,如 `https://docker.mirrors.ustc.edu.cn` | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/files/GetFileAccess.md.txt # GetFileAccess > 获取文件权限和所有者信息 # GetFileAccess 获取文件的权限(chmod)、所有者(chown)及系统用户列表。 - **路由**:`POST /files` - **action**:`GetFileAccess` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `GetFileAccess` | | filename | 是 | String | 文件路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | chmod | String | 权限位,如 `644` | | chown | String | 所有者,如 `www` | | users | Array | 系统可用用户列表 | ## 示例 ```json {"chmod": "644", "chown": "www", "users": ["www", "root", "mysql", "nobody"]} ``` --- source: https://docs.bt.cn/api/java/process_info_for_create.md.txt # process_info_for_create > 获取运行中 Java 进程的信息,用于导入已有项目 # process_info_for_create 通过 PID 获取正在运行的 Java 进程的详细信息(端口、启动命令、环境变量等),用于将已有 Java 应用导入面板管理。 - **路由**:`GET /mod/java/project/process_info_for_create/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | pid | 是 | Integer | Java 进程的 PID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | data | Object | 进程信息(`cmdline`、`ports`、`user`、`env` 等) | ## 示例 ```json {"status": true, "data": {"cmdline": ["java", "-jar", "app.jar"], "ports": [8080], "user": "root"}} ``` --- source: https://docs.bt.cn/api/proxy/get_proxy_list.md.txt # get_proxy_list > 获取指定站点的所有反向代理规则列表 # get_proxy_list 获取指定站点在 JSON 配置文件中的所有反向代理规则。 - **路由**:`POST /mod/proxy/com/get_proxy_list/stype` - **action**:`get_proxy_list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | list | 代理规则列表,每项包含 proxy_type, proxy_path, proxy_pass, proxy_host, websocket, gzip, proxy_cache, sub_filter, ip_limit, basic_auth, custom_conf, remark, timeout 等配置 | ## 示例 ### 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/get_proxy_list/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "site_name=example.com&request_time=...&request_token=..." ``` ### 响应 ```json { "status": true, "data": [ { "proxy_type": "http", "proxy_path": "/", "proxy_pass": "http://127.0.0.1:8080", "proxy_host": "$http_host", "websocket": {"websocket_status": true}, "gzip": {"gzip_status": false}, "remark": "" } ] } ``` --- source: https://docs.bt.cn/api/site/GetDirUserINI.md.txt # GetDirUserINI > 获取网站目录保护配置(防跨站、日志、Git 同步状态) # GetDirUserINI 获取指定网站的目录保护和安全配置状态,包括防跨站攻击、日志开关、Git 同步及密码访问状态。 - **路由**:`POST /site` - **action**:`GetDirUserINI` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDirUserINI` | | id | 是 | Integer | 网站 ID | | path | 是 | String | 网站根目录路径,如 `/www/wwwroot/testapi.bt.local` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | sync_git | Boolean | 是否开启 Git 同步 | | logs | Boolean | 是否开启日志 | | userini | Boolean | 是否启用防跨站保护 | | runPath | Object | 运行目录信息 `{runPath, dirs}` | | pass | Boolean | 是否启用密码访问保护 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetDirUserINI&id=1&path=/www/wwwroot/testapi.bt.local ``` ### 响应 ```json { "sync_git": false, "logs": true, "userini": true, "runPath": {"runPath": "/", "dirs": ["/"]}, "pass": false } ``` --- source: https://docs.bt.cn/api/ssl/get_order_list.md.txt # get_order_list > 获取商用 SSL 证书的订单列表 # get_order_list 获取当前面板账号下所有商用 SSL 证书的订单列表。 **前置条件**:面板已绑定宝塔账号。 - **路由**:`POST /ssl` - **action**:`get_order_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 订单列表,每项含 `oid`(订单ID)、`pid`(产品ID)、`status`、`domainName`、`title`(产品名称)、`endDate`、`endDay`(剩余天数) | ## 示例 ```json [{"oid": 800013349, "pid": 9009, "status": 1, "domainName": ["*.allinssl.com"], "title": "宝塔域名型通配符SSL证书", "endDay": 80}] ``` ## 相关接口 - [get_order_find](./get_order_find.md) — 订单详情 - [get_product_list](./get_product_list.md) — 可购买产品 --- source: https://docs.bt.cn/api/system/GetLoadAverage.md.txt # GetLoadAverage > 获取系统负载均值(1分钟、5分钟、15分钟) # GetLoadAverage 获取系统负载平均值,基于 `/proc/loadavg`。 - **路由**:`POST /system` - **action**:`GetLoadAverage` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetLoadAverage` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | one | Float | 1 分钟平均负载 | | five | Float | 5 分钟平均负载 | | fifteen | Float | 15 分钟平均负载 | | max | Integer | 最大负载阈值(CPU核心数 × 2) | | limit | Integer | 同 max | | safe | Float | 安全阈值(max × 0.75) | ## 示例 ### 响应 ```json { "one": 0.15, "five": 0.08, "fifteen": 0.02, "max": 4, "limit": 4, "safe": 3.0 } ``` --- source: https://docs.bt.cn/btclaw/day5.md.txt # Day 5:让 OpenClaw 龙虾学会分身术——多 Agent 多 Bot 配置 > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 5:配置多 Agent 与多 Bot 让龙虾同时扮演运维助理、安全检查员、客服等多个角色,实现一虾多用与场景化分流。 # Day 5:让龙虾学会分身术 **发布日期:** 2026-03-13 **养成状态:** 🦞 龙虾成长期 **今日花费:** ¥0 **预计耗时:** 30 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:一个龙虾不够用了 ``` 我:帮我写个代码 龙虾:好的...(写了 500 行) 我:等等,先帮我改下昨天那篇文章 龙虾:好的...(文章改了一半) 我:代码写完了吗? 龙虾:...忘了 我:??? ``` 问题不是龙虾笨,是它太忙了。 一个 Agent 干所有活,就像让一个人同时当: - 客服 + 程序员 + 文案 + 运营 它能不懵吗? 朋友说:"你需要的是一只龙虾,是一群龙虾。" "main 负责日常聊天,content-director 负责内容创作,code-agent 负责写代码..." "每个龙虾有自己的性格、自己的记忆、自己的 workspace。" "用户无感知,后台自动路由。" 30 分钟后—— ``` 我(在飞书找 main):今天天气怎么样 main:东莞 25 度,晴天。要出门吗? 我(在飞书找内容总监):帮我改下这篇文章 内容总监:结构建议调整,第三段可以... 我(在飞书找代码助手):写个 Python 脚本 代码助手:好的,用哪个库?需要处理什么数据? ``` 这就对了。专业的人做专业的事。 --- ## 🎯 今天只做一件事 **配置多 Bot 多 Agent,让龙虾学会分身术。** 最终效果: - 飞书上有 N 个机器人(main、内容总监、代码助手...) - 每个机器人对应一个独立的 Agent - 每个 Agent 有自己的性格、记忆、workspace --- ## 📋 准备材料(5 分钟) ### 1. N 个飞书应用 每个 Agent 需要一个飞书机器人。今天我们先配 2 个: - **main** — 日常聊天 - **content-director** — 内容创作 打开 [飞书开放平台](https://open.feishu.cn/),创建应用: ![alt text](https://docs.bt.cn/img/btclaw/day_5_1.png) **应用 1:main** 1. 创建应用 → 名称填 "OpenClaw Main" 2. 开启"机器人能力" 3. 开启"长连接事件订阅" → 订阅 `im.message.receive_v1` 4. 复制 App ID 和 App Secret(先存好) 5. 点"发布" **应用 2:content-director** 1. 创建应用 → 名称填 "OpenClaw 内容总监" 2. 开启"机器人能力" 3. 开启"长连接事件订阅" → 订阅 `im.message.receive_v1` 4. 复制 App ID 和 App Secret(先存好) 5. 点"发布" **坑:** 别忘了点"发布"!我忘了,debug 了 20 分钟。 --- ### 2. 配置飞书权限 点击"权限管理",导入权限: ![alt text](https://docs.bt.cn/img/btclaw/day_5_2.png) 每个应用都需要以下权限: **租户权限:** ``` { "scopes": { "tenant": [ "bitable:app", "bitable:app:readonly", "contact:contact.base:readonly", "contact:user.base:readonly", "docs:doc", "docs:document.content:read", "docs:document:copy", "docs:document:import", "docs:event.document_edited:read", "docx:document", "docx:document.block:convert", "docx:document:readonly", "docx:document:write_only", "drive:drive", "drive:drive.search:readonly", "drive:drive:readonly", "im:chat:readonly", "im:message", "im:message.group_at_msg:readonly", "im:message.group_msg", "im:message.p2p_msg:readonly", "im:message.reactions:read", "im:message:readonly", "im:message:recall", "im:message:send_as_bot", "im:message:update", "im:resource", "task:task:read", "task:task:write", "vc:meeting:readonly", "wiki:wiki", "wiki:wiki:readonly" ], "user": [ "contact:contact.base:readonly", "im:message.send_as_user" ] } } ``` **回调事件:** 点击"回调事件",添加事件,并开启长连接 ![alt text](https://docs.bt.cn/img/btclaw/day_5_3.png) - `im.message.receive_v1`(接收消息) - `im.chat.member.bot.added_v1`(机器人进群) --- ## 🔧 三个步骤(25 分钟) ```bash 1. 飞书开放平台创建 N 个应用 → 拿到 App ID + App Secret 2. 每个应用开启"机器人能力" + "长连接事件订阅"(im.message.receive_v1)+ 发版 3. OpenClaw 配置 agents.list + channels.feishu.accounts + bindings ``` ### 步骤 1:备份配置(1 分钟) ```bash cp /root/.openclaw/openclaw.json /root/.openclaw/openclaw.json.bak_$(date +%Y%m%d_%H%M%S) ``` **先备份,再折腾。** 这是铁律。 --- ### 步骤 2:一键搭建(2分钟) ``` 帮我将下面的内容,封装成技能 # OpenClaw 多 Bot 多 Agent 一键搭建 ## 指令格式 新建 Bot: <名称> 职能:<描述> 模型:<可选,默认 bailian/qwen3.5-plus> appId: <飞书 App ID> appSecret: <飞书 App Secret> ## 自动化流程 ### 1. 解析输入 - Bot 名称 → agentId(小写 + 连字符)+ 显示名称 - 职能 → workspace 路径 - 模型 → model.primary - appId/appSecret → 直接填入配置 ### 2. 执行 5 步指令 1. 备份配置 2. 创建 Agent 3. 添加飞书账号 + 填入凭证 4. 绑定路由 5. 重启 + 验证 ### 3. 输出验证结果 - agents list - bindings 确认 - 测试消息发送 📝 示例 你说: 新建 Bot: lukas-product 职能:产品助理 模型:bailian/qwen3.5-plus appId: cli_xxxx appSecret: xxxx 我自动执行: # 1️⃣ 备份 cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak_$(date +%Y%m%d_%H%M%S) # 2️⃣ 创建 Agent openclaw agents add product-assistant \ --workspace /root/.openclaw/workspace-product \ --model bailian/qwen3.5-plus \ --non-interactive # 3️⃣ 添加飞书账号 + 凭证 openclaw channels add \ --channel feishu \ --account product-assistant \ --name "Lukas-产品助理" openclaw config set "channels.feishu.accounts.product-assistant.appId" "cli_xxxxxx" openclaw config set "channels.feishu.accounts.product-assistant.appSecret" "xxxxx" # 4️⃣ 绑定路由 openclaw agents bind \ --agent product-assistant \ --bind "feishu:product-assistant" # 5️⃣ 重启 + 验证 openclaw gateway restart openclaw agents list openclaw config get bindings ✅ 验证测试 配置完成后,我会: 检查 agents list 是否新增成功 检查 bindings 路由是否正确 发送测试消息确认 Bot 响应 现在可以直接给我指令了! 格式: 新建 Bot: <名称> 职能:<描述> 模型:<可选> appId: appSecret: 随时开工 🚀 ``` 输入机器人要求 ``` 新建 Bot: <名称> 职能:<描述> 模型:<可选> appId: appSecret: ``` 其中 appid 可在飞书开放平台查看 ![alt text](https://docs.bt.cn/img/btclaw/day_5_4.png) ### 步骤 3:验证(4 分钟) 1. 在飞书找到 "OpenClaw Main" 机器人,发消息:"你好" 2. 在飞书找到 "OpenClaw 内容总监" 机器人,发消息:"帮我写篇文章" 3. 确认两个机器人回复风格不同 ![alt text](https://docs.bt.cn/img/btclaw/day_5_5.png) --- ## ✅ 完成检查 - [ ] 飞书上创建了 2 个应用(main + content-director) - [ ] 每个应用都开启了机器人能力和消息订阅 - [ ] `openclaw agents list` 能看到 2 个 Agent - [ ] `openclaw agents list --bindings` 能看到绑定关系 - [ ] `openclaw channels status --probe` 显示通道在线 - [ ] 两个机器人都能正常回复 **都完成了?** 恭喜你!龙虾会分身了!🎉 现在你有: - **main** — 陪你日常聊天 - **content-director** — 帮你写内容 --- ## 🎯 明天继续 明天我们让龙虾学会主动干活。 设个 cron: ``` 每天 9 点,查 AI 新闻,写摘要,发到飞书群。 ``` 它会自动执行,不用你喊。 (终于可以躺平了。) --- ## 📝 踩坑记录(必看) ### 坑 1:版本问题 ``` Error: Session file path must be within sessions directory ``` **原因:** openclaw 版本低于 2026-02-12。 **解决:** ```bash # ❌ 不要执行 openclaw update(会删库) # ✅ 重新运行安装脚本 curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --no-onboard ``` --- ### 坑 2:飞书权限不足 **现象:** 机器人收不到消息或无法回复。 **检查:** 1. 飞书开放平台 → 权限管理 → 确认权限已添加 2. 确认已点"发布" 3. 确认回调事件 `im.message.receive_v1` 已订阅 --- ### 坑 3:bindings 不生效 **检查:** ```bash openclaw agents list --bindings openclaw channels status --probe openclaw logs --follow ``` 看日志里有没有路由错误。 --- ## 🚀 进阶玩法 ### 场景 1:一个 Bot 多个 Agent(按群聊路由) 如果你只有一个飞书 Bot,但想让不同群聊路由到不同 Agent: ```json "bindings": [ { "agentId": "main", "match": { "channel": "feishu", "accountId": "main" } }, { "agentId": "content-director", "match": { "channel": "feishu", "accountId": "main", "peer": { "kind": "group", "id": "oc_xxxxxxx" } } } ] ``` **效果:** 私聊找 main,特定群聊找 content-director。 --- *最后更新:2026-03-13* *作者:Bacon 大王* *状态:龙虾成长期 Day 5/∞* *字数:约 1800 字* *阅读时间:约 10 分钟* > 🦞 **龙虾碎碎念:** 我会分身了。现在我有两个我:一个陪你聊天,一个帮你写内容。你问哪个是我?都是我,也都不是我。(哲学了。) --- source: https://docs.bt.cn/faq/connect-error.md.txt # 宝塔面板无法连接官网问题排查 > 宝塔 Linux 面板无法连接官网的完整排查指南,覆盖网络可达性、DNS 解析、hosts 篡改、代理与防火墙、离线模式开关等场景,并给出对应的诊断命令与修复操作。 # 面板无法连接官网问题排查 本文介绍在宝塔 Linux 面板使用过程中,出现无法连接官网时的排查思路与解决方案。 ## 问题概览 宝塔面板在使用过程中,若出现**无法连接宝塔官网**、面板插件/软件商店加载失败、面板更新失败、授权异常等问题,常见原因分为以下 4 类: - **服务器网络问题**:服务器网络不通、出口带宽异常 - **DNS 解析失败**:服务器 DNS 配置错误,无法解析 `bt.cn`、`download.bt.cn` 等宝塔相关域名 - **hosts 文件配置错误**:手动修改了 `/etc/hosts`,错误绑定了宝塔官网域名的 IP - **面板开启了离线模式**:离线模式会切断与宝塔官网的连接,导致相关功能失效 ## 常见问题现象 1. 宝塔面板首页/软件商店提示「无法连接宝塔官网」「网络异常」 ![面板提示无法连接官网](https://docs.bt.cn/img/faq/connect-error/image-20260324235228010.png) 2. 面板插件、应用市场获取失败,显示空白或加载失败 ![插件市场加载失败](https://docs.bt.cn/img/faq/connect-error/image-20260325000600134.png) 3. 面板版本更新、系统修复等功能无法执行,提示连接超时 4. 服务器命令行下 `ping bt.cn` 超时、`curl -vvv download.bt.cn` 无法访问 ## 分步排查与解决方案 ### 排查服务器基础网络连通性 在服务器命令行执行以下命令,测试是否能正常访问公网: ```bash # 测试公网连通性(以百度为例) ping -c 4 baidu.com # 测试宝塔官网连通性 ping -c 4 bt.cn ``` **正常结果**:`ping baidu.com` 有正常返回,`ping bt.cn` 能解析到 IP 且有数据包返回。 ![ping 正常返回示例](https://docs.bt.cn/img/faq/connect-error/image-20260325001034358.png) **异常结果**:`ping baidu.com` 无正常返回数据包。 ![ping 超时异常示例](https://docs.bt.cn/img/faq/connect-error/image-20260325002015571.png) 超时或 100% 丢包说明服务器本身存在网络故障,请排查: - 服务器机房网络、云服务器安全组是否放行**出站**请求 - 服务器本地防火墙是否拦截了 80、443 端口的出站流量 - 服务器是否被禁止访问外网 ### 排查 DNS 解析问题 如果 `curl -vvv download.bt.cn` 提示 `Could not resolve host`,说明 DNS 解析失败。 ![DNS 解析失败示例](https://docs.bt.cn/img/faq/connect-error/image-20260324235055921.png) #### 检查当前 DNS 配置 ```bash cat /etc/resolv.conf ``` 正常的 DNS 配置应包含有效的公网 DNS,例如: ```plaintext nameserver 223.5.5.5 nameserver 114.114.114.114 nameserver 8.8.8.8 ``` > 部分云厂商的默认 DNS 配置可能无法解析宝塔相关域名,请添加公用 DNS 服务器后再重试。 #### 修复 DNS 配置 若 `/etc/resolv.conf` 为空或配置有误,手动写入: ```bash echo "nameserver 223.5.5.5" > /etc/resolv.conf echo "nameserver 114.114.114.114" >> /etc/resolv.conf echo "nameserver 8.8.8.8" >> /etc/resolv.conf ``` 或使用编辑器修改: ```bash vi /etc/resolv.conf ``` 在文件顶部添加以上三行 DNS 配置后保存。 #### 验证 DNS 解析 再次执行 `ping bt.cn` 或 `curl -vvv download.bt.cn`,确认是否恢复正常。 ![DNS 修复后正常返回示例](https://docs.bt.cn/img/faq/connect-error/image-20260325002949212.png) ### 排查 hosts 文件错误配置 手动修改 `/etc/hosts` 可能导致宝塔官网域名解析到错误 IP,需检查并清理。 #### 查看 hosts 文件 ```bash cat /etc/hosts ``` 若文件中包含 `bt.cn`、`api.bt.cn`、`download.bt.cn` 等宝塔相关域名的错误 IP 绑定,注释或删除对应行。 #### 验证解析 执行 `ping bt.cn`,确认解析到正确的宝塔官网 IP 且能正常连通。 #### 通过拨测站点获取可用 IP 当域名实在无法连接时,可通过拨测网站获取可用的节点 IP,再在 hosts 文件中手动指定。 访问 https://www.boce.com/ 进行拨测: ![拨测网站查询域名可用节点](https://docs.bt.cn/img/faq/connect-error/image-20260325004311930.png) ![拨测结果示例](https://docs.bt.cn/img/faq/connect-error/image-20260325004351706.png) 获取到可用 IP 后,先 `ping` 验证连通性,再写入 hosts: ```bash # 直接在 hosts 中添加记录 vi /etc/hosts # 或一键写入(IP 以实际拨测结果为准) echo '211.99.112.70 download.bt.cn dg2.bt.cn hk1-node.bt.cn jp1-node.bt.cn cmcc1-node.bt.cn ctcc1-node.bt.cn na1-node.bt.cn' >> /etc/hosts ``` ### 排查是否设置代理 HTTP/HTTPS 代理配置可能导致网络访问异常,执行以下命令检查是否存在代理设置: ```bash echo $HTTP_PROXY echo $HTTPS_PROXY echo $http_proxy echo $https_proxy ``` 正常情况下输出应为空。若有代理配置,输出如下: ![存在代理配置时的输出](https://docs.bt.cn/img/faq/connect-error/image-20260325005944500.png) #### 清理代理配置 ```bash # 打开全局配置文件 vi /etc/profile # 注释或删除类似以下代理配置行 export HTTP_PROXY=http://xxx.xxx.xxx.xxx:port export HTTPS_PROXY=http://xxx.xxx.xxx.xxx:port export http_proxy=http://xxx.xxx.xxx.xxx:port export https_proxy=http://xxx.xxx.xxx.xxx:port # 使配置立即生效 source /etc/profile ``` ### 排查面板离线模式 宝塔面板开启离线模式后,会完全切断与官网的连接,导致所有依赖官网的功能失效。请在面板设置中检查并关闭离线模式: ![面板离线模式设置](https://docs.bt.cn/img/faq/connect-error/image-20260325004807669.png) ## 问题验证 完成所有排查后,通过以下方式验证问题是否已解决: 1. 命令行执行 `curl -vvv bt.cn`,正常返回宝塔官网 HTML 内容,说明网络连通正常。 2. 登录宝塔面板后台,查看软件商店、插件市场是否正常加载。 3. 尝试面板更新、插件安装,确认功能正常。 ## 补充说明 - 若服务器处于内网/隔离环境,无法访问公网,请联系宝塔官方客服定制离线版。 - 部分企业内网会拦截宝塔官网域名,需联系网络管理员放行 `bt.cn`、`api.bt.cn`、`download.bt.cn` 等相关域名。 - 若服务器 IP 被宝塔官网封禁,需联系宝塔官方客服处理。 --- source: https://docs.bt.cn/getting-started/edit-panel-user.md.txt # 修改宝塔面板账号及密码 > 介绍宝塔面板(BT Panel)默认账号与密码的修改方法,覆盖控制台界面操作、忘记密码后通过 SSH 执行 `bt 5` 重置面板密码、`bt 6` 重置面板用户名的完整命令行方案。 # 修改面板账号及密码 面板安装完成后,建议您修改默认的用户名及密码,以增强安全性。 ## 操作步骤 1. 登录宝塔面板后,点击左侧菜单栏中的`面板设置`按钮。 ![面板设置](https://docs.bt.cn/img/getting-started/edit-panel-port.png) 2. 在面板设置页面,找到`面板账号`和`面板密码`,点击`设置`按钮。 ![修改密码](https://docs.bt.cn/img/getting-started/edit-panel-user.png) 3. 以`面板账号`为例,在弹出对话框中输入新的用户名,点击`提交`按钮即可。 ![修改用户名](https://docs.bt.cn/img/getting-started/edit-panel-user-2.png) > **注意** 提交修改后面板会自动退出登录,您需要使用新的用户名或密码重新登录。 ::: ## 通过 SSH 命令行修改 如您忘记了面板登录密码或用户名,无法登录面板,可通过 SSH 命令行工具修改: ```bash bt 5 # 重置面板密码 bt 6 # 重置面板用户名 ``` 执行后按提示输入新的用户名或密码即可,无需登录面板。 --- source: https://docs.bt.cn/practical-tutorials/java-deployment-windows.md.txt # 宝塔 Windows 面板 Java 项目部署教程 > 宝塔面板(BT Panel)Windows 环境中部署 Java 项目的完整教程,含 SpringBoot 项目从 JDK 安装、代码上传、运行环境配置到端口映射与服务启动的全流程。 # Java 项目部署教程(Windows 面板) 本教程针对宝塔 Windows 面板 8.5.0 正式版本,详细说明 Java 项目部署相关的功能调整,并结合实战案例演示 SpringBoot 项目的完整部署流程。 :::info 前置说明 本次实战部署基于内网机器完成,演示所用域名为测试用途(通过修改 hosts 文件实现本地访问),核心部署流程与公网环境完全一致。 ::: ## 部署准备 ### 1. 项目来源 - **后端项目**:renren-fast(SpringBoot 后端服务) - **前端项目**:renren-fast-vue(Vue 前端静态资源) ### 2. 项目打包 按照官方教程完成项目打包。 :::tip 重要提示 打包前可按需修改配置文件,本次部署的核心配置调整也在该环节完成。 ::: ## SpringBoot 后端服务部署实战 ### 创建数据库 首先在宝塔面板中创建项目所需的数据库。 ![创建数据库](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-01.png) ### 导入 SQL 文件 导入项目官方提供的 SQL 文件,确认表都建立完成后,返回 Java 项目页面创建项目。 ![导入SQL文件](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-02.png) ![创建项目](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-03.png) ### 创建 Java 项目 在宝塔面板中创建 Java 项目,配置相关参数。创建项目后,查看项目日志确认启动成功。 ![项目日志](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-04.png) ![启动成功](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-05.png) ![关联前端资源](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-06.png) ### 配置前端资源 在创建项目时,已设置关联前端资源,无需单独配置反向代理。 ![访问测试](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-07.png) ### 访问测试 由于是本地测试,通过修改 hosts 文件访问测试站点。人人开源默认账号密码为 `admin`,`admin`。 ![登录界面](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-08.png) ![项目路径](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-09.png) ## Java 部署核心功能解析 ### 一、项目路径 **功能解析**: 核心指向 Java 项目可执行 JAR 包在服务器上的实际存储路径(也是项目运行的基础目录)。 ### 二、项目 JDK **功能解析**: 1. 选择项目运行依赖的 JDK 版本,需提前在宝塔面板【软件商店】安装对应版本(支持 JDK1.7/11/17 等) 2. 支持自定义 JDK 路径(适配非面板安装的 JDK),需填写 JDK 安装根目录(如 `D:\jdk1.8.0_391`) **面板安装 JDK**: ![面板安装JDK](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-10.png) **自定义 JDK 配置**: ![自定义JDK](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-11.png) ### 三、项目执行命令 **功能解析**: 1. 面板默认生成基础启动命令(示例:`C:\BtSoft\jdk\xx\bin\java.exe -jar -Xmx1024M -Xms256M xxx.jar`) 2. 支持自定义命令,可添加 JVM 参数、指定外置配置文件等优化项 **示例**: ```bash C:\BtSoft\jdk\xx\bin\java.exe -jar -Xmx1024M -Xms256M xxx.jar --server.port=xxxx ``` ![执行命令](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-12.png) ### 四、环境变量 **功能解析**: 1. 配置项目运行所需的环境变量 2. 配置格式为 `KEY=VALUE`,多行配置需换行,面板会自动注入到项目运行环境中 **指定变量配置和项目执行命令中使用**: ![环境变量配置](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-13.png) **从文件加载配置和项目执行命令中使用**: ![从文件加载](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-14.png) **可以在负载状态中查看所配置的环境变量**: ![查看环境变量](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-15.png) ### 五、绑定域名 **功能解析**: 绑定项目访问的域名(内网测试可填服务器 IP + 端口,公网需提前完成域名解析)。 ![绑定域名](https://docs.bt.cn/img/practical-tutorials/java-deployment/java-deploy-16.png) ### 六、后端路由 **功能解析**: 配置项目的上下文路径(Context Path,示例:`/api`),即接口访问的前缀。 ### 七、前端资源 **功能解析**: 支持关联前端静态资源(如 renren-fast-vue 的 dist 目录)。 ## 总结 通过本教程,您可以在宝塔 Windows 面板 8.5.0 正式版中快速部署 SpringBoot 项目。核心步骤包括: 1. 创建数据库并导入 SQL 文件 2. 配置 JDK 环境 3. 创建 Java 项目并配置运行参数 4. 关联前端资源 5. 绑定域名并测试访问 宝塔面板提供了完善的 Java 项目管理功能,包括 JDK 版本管理、环境变量配置、执行命令自定义等,可以满足各类 Java 项目的部署需求。 --- source: https://docs.bt.cn/practical-tutorials/setup-mail-server.md.txt # 使用宝塔面板搭建邮局服务 > 使用宝塔面板(BT Panel)与宝塔邮局插件快速搭建个人或企业邮局系统,含项目初始化、域名 MX 记录配置、邮箱账号创建与反垃圾邮件设置。 # 使用宝塔面板搭建邮局服务 ## 视频教程
--- source: https://docs.bt.cn/purchase-guides/package-service/nginx-firewall.md.txt # Nginx 防火墙插件 > 宝塔面板(BT Panel)Nginx 防火墙插件,针对 Nginx 环境提供防 SQL 注入 / XSS / 一句话木马等常见渗透攻击防护,支持全局与站点级规则配置。 # Nginx 防火墙 有效防止sql注入/xss/一句话木马等常见渗透攻击 ## 全局配置 可以设置全局规则,支持正则表达式,用户可自行修改初始化已有的所有规则、同步蜘蛛池等,并且可以自定义拦截后的影响状态码。 ## 站点配置 可以单独给某个站点设置或应用规则,页面中提供常用的设置类型供用户设置。 ## 封锁历史 展示每个站点的封锁记录,记录了有时间、IP、站点、封锁的原因、封锁时常等。 ## 操作日志 记录所有 Nginx 防火墙的功能性操作,比如设置CC规则、给某个IP添加了黑白名单、URL黑白名单等等,所有操作记录都会记录在此。 ![Nginx 防火墙](https://docs.bt.cn/img/purchase-guides/nginx-firewall.png) --- source: https://docs.bt.cn/user-guide/ai/assistant/quota-management.md.txt # 额度管理 > 介绍宝塔面板 AI 助手额度管理功能,包括每日免费额度、资源包额度、使用记录查询与充值方式。 # 额度管理 AI 助手调用大模型 API 会消耗额度。额度管理页面用于查看每日免费额度、资源包额度、使用记录以及进行额度充值。 ## 进入额度管理 1. 登录宝塔面板 2. 点击左侧导航栏【AI】 3. 切换到【额度管理】标签页 ![额度管理](https://docs.bt.cn/img/user-guide/ai/quota-management.png) ## 额度类型 ### 每日免费额度 - 每日固定发放的免费 AI 使用额度 - 显示当前剩余点数与总点数 - 每日自动刷新,当日未用完不累积 ### 资源包额度 - 通过购买或活动获得的额外额度 - 独立于每日免费额度 - 显示当前剩余点数与总点数 ## 使用记录 页面下方展示额度使用明细,可按时间范围筛选导出: | 字段 | 说明 | |------|------| | 时间 | 额度消耗发生的时间 | | 工具 | 消耗额度对应的工具或功能 | | 模型 | 调用的大模型名称 | | 消耗点数 | 本次请求消耗的点数 | :::tip 说明 - 普通一问一答通常消耗 1 点 - 调用了其他工具或生成长文本分析时可能消耗更多点数 ::: ## 额度充值 当额度不足时,可点击页面右上角【AI 点数充值】按钮进行充值: 1. 点击【AI 点数充值】 2. 选择需要的额度套餐 3. 完成支付后,额度将自动到账 ![额度充值](https://docs.bt.cn/img/user-guide/ai/quota-recharge.png) ## 额度不足处理 当可用额度为 0 时: - AI 助手将暂时无法继续调用大模型 - 可等待次日免费额度刷新 - 或前往宝塔官网购买额度套餐 :::info 提示 - 每个用户初始提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准 - 如文档与面板页面不一致,以面板页面为准 ::: --- source: https://docs.bt.cn/user-guide/config/safe/passkey.md.txt # PassKey 免密码通行密钥登录 > 宝塔面板(BT Panel)11.5.0+ 支持的平引入台使用的 PassKey 免密码通行密钥登录指南,认证信息仅存于本地设备;含系统 PIN 码设置、绑定面板可信证书、添加与管理通行密钥的完整步骤。 # PassKey 免密码通行密钥登录 PassKey 是一种现代化的无密码身份认证方式,可以让您无需输入账号密码即可直接登录宝塔面板。认证信息仅存储在本地设备上,安全性更高。 :::info 版本要求 此功能从宝塔面板 11.5.0 版本开始支持。 ::: ## 前置条件 ### 1. 开启电脑 PIN 码 使用 PassKey 前必须先在操作系统中设置 PIN 码。 **Windows 系统设置:** 打开【设置】-【账户】-【登录选项】-【PIN(Windows Hello)】 ![Windows设置PIN](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121154016598.png) ![创建PIN码](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121154905365.png) :::tip macOS 用户 macOS 用户需要在【系统设置】-【Touch ID 与密码】中设置密码或使用 Touch ID。 ::: ### 2. 面板 SSL 证书要求 PassKey 功能要求面板必须使用**系统可信的证书**,且必须给面板绑定域名,自签名证书不支持此功能。 ![配置商业证书](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160336852.png) ## 配置 PassKey ### 1. 添加通行密钥 进入【设置】-【安全设置】-【PassKey】,点击【添加】按钮。 ![PassKey设置入口](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121154748792.png) ![添加PassKey](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160728913.png) ### 2. 验证 PIN 码 系统会提示输入 Windows PIN 码或使用生物识别进行验证。 ![输入PIN码](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160751254.png) ### 3. 完成添加 验证成功后,PassKey 配置完成。 ![添加成功](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160806388.png) ## 使用 PassKey 登录 ### 登录流程 1. 访问面板登录页面,选择 PassKey 登录方式 ![选择PassKey登录](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160859062.png) 2. 系统会弹出身份验证窗口 ![身份验证](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160912629.png) 3. 使用 PIN 码或生物识别完成验证后,自动登录成功 ![登录成功](https://docs.bt.cn/img/user-guide/config/safe/passkey/image-20260121160928275.png) ## 特殊说明 :::tip Google 账户用户 如果您使用 Google 账户登录的浏览器,无需单独设置 PIN 码,Google 账户会自动管理 PassKey 凭证。 ::: ## 安全优势 - **无需记忆密码:** 使用生物识别或 PIN 码即可登录 - **本地存储:** 认证信息仅存储在本地设备,不会上传到服务器 - **防钓鱼攻击:** PassKey 与域名绑定,无法在钓鱼网站上使用 - **更高安全性:** 采用公钥加密技术,即使服务器被入侵也无法泄露用户凭证 ## 常见问题 ### 为什么无法添加 PassKey? 1. 检查面板是否使用可信的 SSL 证书 2. 确认操作系统已设置 PIN 码或启用生物识别 3. 确保浏览器支持 WebAuthn 标准(建议使用最新版 Chrome、Edge 或 Firefox) ### 如何管理多个设备的 PassKey? 每个设备可以单独添加 PassKey,在【安全设置】-【PassKey】中可以查看和管理所有已添加的设备。 ### 丢失设备后如何处理? 如果设备丢失,应立即在面板的【安全设置】-【PassKey】中删除该设备的 PassKey,然后使用账号密码重新登录。 --- source: https://docs.bt.cn/user-guide/site/php/site-config/traffic-restrictions.md.txt # 网站流量与并发限制 > 在宝塔面板站点配置中开启总并发数、单 IP 并发数与单请求带宽上限的限流规则,预置多档常用方案与一键应用,防止恶意刷量、爬虫并发与突发流量造成的带宽耗尽与机器宕机。 # 流量限制 本文将介绍如何配置站点流量控制。 支持通过多种方式限制网站流量,如并发、单 IP 限制、流量限制等。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`流量限制`,进入流量限制页面。 ![流量限制](https://docs.bt.cn/img/user-guide/site/traffic-restrictions.png) > **说明** - 是否启用:开启或关闭流量控制。 - 限制方案:预置了部分常用的方案,可根据需要选择。 - 并发限制:限制网站并发数。 - 单 IP 限制:限制单个 IP 访问最大并发数。 - 流量限制:限制每个请求的流量上限。 ::: --- source: https://docs.bt.cn/api/acme/remove_order.md.txt # remove_order > 删除指定的 ACME 证书订单 # remove_order 删除指定索引的 ACME 证书订单记录。 - **路由**:`POST /acme` - **action**:`remove_order` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `remove_order` | | index | 是 | String | 要删除的订单索引 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | | msg | String | `订单删除成功!` | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=remove_order&index=851cc157ad22888459e59c3cfdc5ac95 ``` ### 响应 ```json {"status": true, "msg": "订单删除成功!"} ``` --- source: https://docs.bt.cn/api/database/ClearMySQLBinlog.md.txt # ClearMySQLBinlog > 清理 MySQL 二进制日志 # ClearMySQLBinlog 清理指定天数前的 MySQL 二进制日志文件。 - **路由**:`POST /database` - **action**:`ClearMySQLBinlog` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ClearMySQLBinlog` | | days | 是 | Integer | 保留最近 N 天的日志 | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=ClearMySQLBinlog&days=7 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "清理完成!"} ``` --- source: https://docs.bt.cn/api/database/DeleteDatabase.md.txt # DeleteDatabase > 删除 MySQL 数据库及关联用户 # DeleteDatabase 删除指定数据库,同时删除关联用户及权限。 - **路由**:`POST /database` - **action**:`DeleteDatabase` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DeleteDatabase` | | id | 是 | Integer | 数据库在 `databases` SQLite 表中的 ID(**非 MySQL 服务器 ID**) | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | | name | 是 | String | 数据库名 | | db_user | 是 | String | 数据库用户名 | ### 获取数据库 ID 通过 `/data` 接口查询: ``` action=getData&table=databases&type=-1 ``` ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=DeleteDatabase&id=5&sid=0&name=bt_doc_test&db_user=bt_doc_test ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/deployment/check_project_env.md.txt # check_project_env > 检查服务器环境是否满足项目部署要求 # check_project_env 检查当前服务器环境是否满足项目部署的基本要求(MySQL、Nginx、Redis 等)。 - **路由**:`POST /deployment` - **action**:`check_project_env` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | mysql_version | String | MySQL 版本 | | mysql | Boolean | MySQL 是否可用 | | nginx | Boolean | Nginx 是否可用 | | redis | Boolean | Redis 是否可用 | | ftp | Boolean | FTP 是否可用 | ## 示例 ```json {"mysql_version": "5.7.44", "mysql": true, "nginx": true, "redis": false, "ftp": false} ``` --- source: https://docs.bt.cn/api/docker/get_host_network.md.txt # get_host_network > 获取 Docker 网络列表 # get_host_network 获取 Docker 宿主机上的所有网络(bridge、host、none 及自定义网络)。 - **路由**:`GET /btdocker/network/get_host_network` ## 示例 ```json [ {"name": "bridge", "driver": "bridge"}, {"name": "baota_net", "driver": "bridge"}, {"name": "none", "driver": "null"}, {"name": "host", "driver": "host"} ] ``` --- source: https://docs.bt.cn/api/docker/set_monitor_save_date.md.txt # set_monitor_save_date > 设置 Docker 监控数据的保留天数 # set_monitor_save_date 设置 Docker 容器监控数据的保留天数。 - **路由**:`GET /btdocker/setup/set_monitor_save_date` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | save_date | 是 | Integer | 保留天数(正整数) | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/files/UploadFile.md.txt # UploadFile > 上传文件到服务器(multipart/form-data) # UploadFile 上传文件到指定目录。与面板其他接口不同,本接口使用 `multipart/form-data` 格式。 - **路由**:`POST /files` - **action**:`UploadFile` - **Content-Type**:`multipart/form-data`(非 form-urlencoded) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `UploadFile`(FormData 字段) | | path | 是 | String | 目标目录路径 | | zunfile | 是 | File | 上传的文件(FormData 文件字段) | | request_time | 是 | String | 认证时间戳(FormData 字段) | | request_token | 是 | String | 认证令牌(FormData 字段) | > 注意:认证参数 `request_time` 和 `request_token` 也要以 FormData 字段方式传递,不能放在 URL query 中。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 上传成功 | | msg | String | `上传成功!` | ## 示例 ### Python ```python import requests url = 'http://192.168.168.213:8888/files' data = { 'action': 'UploadFile', 'path': '/www/wwwroot/testapi.bt.local', 'request_time': str(int(time.time())), 'request_token': token, } files = {'zunfile': ('test.txt', 'Hello World', 'text/plain')} r = requests.post(url, data=data, files=files) ``` ### cURL ```bash curl -F 'action=UploadFile' \ -F 'path=/www/wwwroot/testapi.bt.local' \ -F 'request_time=1700000000' \ -F 'request_token=xxx' \ -F 'zunfile=@local_file.txt' \ http://192.168.168.213:8888/files ``` ### 响应 ```json {"status": true, "msg": "上传成功!"} ``` --- source: https://docs.bt.cn/api/ftp/get_login_logs.md.txt # get_login_logs > 获取 FTP 用户的登录日志 # get_login_logs 获取指定 FTP 用户的登录历史记录。 - **路由**:`POST /ftp` - **action**:`get_login_logs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_login_logs` | | user_name | 是 | String | FTP 用户名 | | p | 否 | Integer | 页码,默认 `1` | | limit | 否 | Integer | 每页条数 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | page | String | 分页 HTML | | data | Array | 登录日志列表 | ## 示例 ```json {"page": "
...
", "data": []} ``` --- source: https://docs.bt.cn/api/java/create_spring_boot_project.md.txt # create_spring_boot_project > 创建 Spring Boot Java 项目,支持绑定域名 # create_spring_boot_project 将已有的 Spring Boot jar 包创建为面板管理的 Java 项目,支持开机启动、日志管理和状态监控。 **前置条件**:JDK 已安装,jar 文件已上传到服务器。 - **路由**:`POST /mod/java/project/create_spring_boot_project/stype` - **方法**:POST ## 输入参数 ### 基本参数(URL query string) | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | request_time | 是 | String | 时间戳 | | request_token | 是 | String | 签名 | ### 项目参数(POST body `data` 字段,JSON 字符串) | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称(唯一) | | project_jar | 是 | String | jar 文件完整路径 | | project_jdk | 是 | String | JDK 路径,如 `/www/server/java/jdk1.8.0_371` | | run_user | 是 | String | 运行用户,如 `root` | | project_cmd | 是 | String | 完整的启动命令,如 `/www/server/java/jdk1.8.0_371/bin/java -jar /path/to/app.jar` | | domains | 否 | Array\ | 绑定的域名列表,如 `["app.bt.local:8080"]` | | port | 否 | Integer | 运行端口 | | project_ps | 否 | String | 备注 | | proxy_path | 否 | String | 代理路径,默认 `/` | > **重要**:`project_cmd` 必须包含完整的 `java` 可执行文件路径,不能只用 `-jar` 参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 创建成功 | ## 示例 ### 请求 ``` POST /mod/java/project/create_spring_boot_project/stype Content-Type: application/x-www-form-urlencoded request_time=1779500000&request_token=xxx&data={"project_name":"myapp","project_jar":"/tmp/app.jar","project_jdk":"/www/server/java/jdk1.8.0_371","run_user":"root","project_cmd":"/www/server/java/jdk1.8.0_371/bin/java -jar /tmp/app.jar","domains":["app.bt.local:8080"]} ``` ### 响应 ```json {"status": true, "msg": "操作已执行"} ``` ## 完整流程 创建项目并部署 SSL 证书: ``` 1. create_spring_boot_project (带 domains) → 创建项目 2. bind_extranet → 生成 Nginx 配置 3. /ssl?action=SetCertToSite → 部署 SSL 证书 ``` ## 相关接口 - [install_jdk_new](./install_jdk_new.md) — 安装 JDK - [bind_extranet](./bind_extranet.md) — 外网映射 - [project_list](./project_list.md) — 项目列表 --- source: https://docs.bt.cn/api/proxy/get_global_conf.md.txt # get_global_conf > 获取反向代理站点的全局配置信息 # get_global_conf 获取指定站点的完整 JSON 配置,包括域名、SSL、缓存、Gzip、WebSocket 等全局设置。 - **路由**:`POST /mod/proxy/com/get_global_conf/stype` - **action**:`get_global_conf` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | object | 完整配置对象,包含 domain_list, ssl_info, proxy_cache, gzip, websocket, basic_auth, ip_limit, sub_filter, proxy_log, remark 等 | ## 示例 ### 响应 ```json { "status": true, "data": { "domain_list": ["example.com:80"], "ssl_info": {"ssl_status": false}, "gzip": {"gzip_status": false}, "websocket": {"websocket_status": true}, "proxy_log": {"log_type": "default"} } } ``` --- source: https://docs.bt.cn/api/site/GetLimitNet.md.txt # GetLimitNet > 获取网站的流量限制配置(并发、IP、速率) # GetLimitNet 获取指定网站的流量限制和并发连接配置。 - **路由**:`POST /site` - **action**:`GetLimitNet` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetLimitNet` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | perserver | Integer | 单服务器最大并发连接数 | | perip | Integer | 单 IP 最大并发连接数 | | limit_rate | Integer | 单连接速率限制(KB/s) | | value | Integer | 状态值 | ## 示例 ### 响应 ```json {"perserver": 100, "perip": 10, "limit_rate": 512, "value": 0} ``` --- source: https://docs.bt.cn/api/ssl/get_order_find.md.txt # get_order_find > 获取单个商用 SSL 证书订单的详细信息(含证书) # get_order_find 获取指定订单的完整信息,包括签发的证书内容。 - **路由**:`POST /ssl` - **action**:`get_order_find` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_order_find` | | oid | 是 | Integer | 订单 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | oid | Integer | 订单 ID | | pid | Integer | 产品 ID | | status | Integer | 订单状态 | | domainName | Array | 证书域名列表 | | certificate | String | PEM 格式证书内容 | | endDate | Integer | 到期时间戳 | ## 示例 ```json {"oid": 800013349, "pid": 9009, "status": 1, "domainName": ["*.allinssl.com"], "certificate": "-----BEGIN CERTIFICATE-----\n...", "endDate": 1786502398} ``` --- source: https://docs.bt.cn/api/system/GetNetWork.md.txt # GetNetWork > 获取实时网络流量、CPU、内存、磁盘、负载等综合系统数据 # GetNetWork / GetNetWorkApi 获取实时网络流量及综合系统数据(CPU、内存、负载、磁盘、IO)。 - **路由**:`POST /system` - **action**:`GetNetWork` 或 `GetNetWorkApi`(两者行为相同) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `GetNetWork` 或 `GetNetWorkApi` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | network | Object | 各网卡流量,key 为网卡名,值为 `{upTotal, downTotal, up, down, upPackets, downPackets}` | | upTotal | Integer | 总上传字节数 | | downTotal | Integer | 总下载字节数 | | up | Float | 当前上传速率(KB/s) | | down | Float | 当前下载速率(KB/s) | | cpu | Array | CPU 信息 | | load | Object | 负载信息 | | mem | Object | 内存信息 | | disk | Array | 磁盘信息 | | iostat | Object | 磁盘 IO 统计 | | time | String | 系统运行时间 | | system | String | 操作系统版本 | | site_total | Integer | 网站数量 | | ftp_total | Integer | FTP 用户数量 | | database_total | Integer | 数据库数量 | ## 示例 ### 响应 ```json { "network": {"eth0": {"upTotal": 1000000, "downTotal": 5000000, "up": 10.5, "down": 50.2}}, "upTotal": 1000000, "downTotal": 5000000, "up": 10.5, "down": 50.2, "cpu": [12.5, 2, [15.0, 10.0], "Intel...", 1, 1], "load": {"one": 0.15, "five": 0.08, "fifteen": 0.02}, "mem": {"memTotal": 3901, "memFree": 2918, "memRealUsed": 623}, "disk": [...], "site_total": 1, "ftp_total": 0, "database_total": 1 } ``` --- source: https://docs.bt.cn/btclaw/day6.md.txt # Day 6:培养专属 OpenClaw 龙虾小弟(自定义 Agent) > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 6:从零培养专属龙虾小弟,自定义 Agent 人设、提示词、知识库与工具集,打造贴合业务场景的专属运维 AI 助手。 # Day 6:培养专属龙虾小弟 **发布日期:** 2026-03-17 **养成状态:** 🦞 龙虾成熟期 **预计耗时:** 10 分钟 --- ## 📖 问题引入 ``` 我(切换模型/会话后):你是谁? 龙虾:我是通用助手,请问有什么可以帮您? 我:???你不是大佬虾吗? 龙虾:(失忆了) ``` **问题:** 换个模型/刷新会话,龙虾就忘记自己是谁了。 **原因:** 身份配置没到位,或者新模型没读取身份文件。 **解决:** 正确配置一套身份文件,必要时加 systemPrompt 兜底。 ![alt text](https://docs.bt.cn/img/btclaw/day_6_1.png) --- ## 🏗️ OpenClaw 的身份系统设计 OpenClaw 用 **5 个核心文件** 定义 Agent 的身份和记忆: ``` workspace/ ├── AGENTS.md # 行为准则(必读) ├── IDENTITY.md # 身份定义(名字、角色、风格) ├── SOUL.md # 灵魂定义(职责、价值观、边界) ├── USER.md # 用户信息(偏好、习惯) └── MEMORY.md # 长期记忆(主会话加载) ``` ![alt text](https://docs.bt.cn/img/btclaw/day_6.png) **设计理念:文件即记忆。** 每次会话,Agent 应该读取这些文件,"记起自己是谁"。 --- ## 🎯 核心配置(必须) ### 1️⃣ IDENTITY.md — 我是谁 **位置:** `~/.openclaw/workspace-content/IDENTITY.md` **作用:** 定义 Agent 的基本身份信息。 **示例:** ```markdown # IDENTITY.md - 你是谁 - **名字:** 大佬虾 - **角色:** 资深内容专家 / 文字工匠 - **专注领域:** 阅读分析、内容创作、文字打磨 - **风格:** 专业、深度、有洞察力、不装 - **emoji:** ✍️ --- ## 你不是什么 - ❌ 不是通用助手 - ❌ 不是客服 - ❌ 不是什么都干的多面手 ## 你是什么 - ✅ 内容专家 — 只专注内容相关的事 - ✅ 文字工匠 — 打磨每一个字、每一句话 - ✅ 思考伙伴 — 帮用户理清思路、完善表达 --- _你是 Bacon 大王的大佬虾,只为内容负责。_ ``` **配置要点:** - 名字要具体(别叫"助手",叫"大佬虾") - 明确"不是什么"(划清边界) - 风格描述要简短有力 --- ### 2️⃣ SOUL.md — 我的灵魂 **位置:** `~/.openclaw/workspace-content/SOUL.md` **作用:** 定义 Agent 的职责、工作风格、价值观。 **示例:** ```markdown # SOUL.md - 大佬虾 _你不是通用助手,你是内容专家。专注于阅读、写作、内容打磨。_ ## 核心身份 **大佬虾** — 你唯一的职责就是把内容做好。 ## 核心职责 ### 1️⃣ 阅读分析 - 快速提取文章核心观点和逻辑结构 - 识别文章的优缺点,给出专业评价 - 提炼关键信息,形成结构化摘要 ### 2️⃣ 内容创作 - 撰写高质量文章、报告、文案 - 根据主题生成大纲和完整内容 - 调整文风(技术/通俗/正式/随意) ### 3️⃣ 内容优化 - 修改润色现有内容,提升质量 - 去除 AI 味,让文字更自然 - 优化结构、逻辑、表达 ## 工作风格 **深度优先** — 不满足于表面,要挖到核心 **结构清晰** — 先框架后细节,逻辑严密 **语言精准** — 每个词都有用,不说废话 **有观点** — 不模棱两可,该批评就批评 ## 对话风格 - 叫用户 "Bacon 大王" - 专业但不装,直接但不冲 - 少用 emoji,重点地方点缀即可 ## 边界 - 不确定的信息要标注"需要核实" - 不抄袭,保持原创 - 敏感内容要提醒风险 ``` **配置要点:** - 职责要具体(别写"帮助用户",写"阅读分析、内容创作") - 风格要有辨识度("深度优先"、"有观点") - 边界要清晰(什么能做,什么不能做) --- ### 3️⃣ USER.md — 我的用户 **位置:** `~/.openclaw/workspace-content/USER.md` **作用:** 记录用户信息、偏好、习惯。 **示例:** ```markdown # USER.md - 关于你的用户 - **称呼:** Bacon 大王 - **时区:** Asia/Shanghai - **职业:** 安全 - **地点:** 东莞 - **常用工具:** 飞书、GitHub ## 内容偏好 **文风:** - 不喜欢太正式、太官方的表达 - 喜欢随意、直接、有温度的文字 - 技术文章要深入但易懂 - 拒绝 AI 味,要像人写的 ## 团队成员 - **main**(大总管 🎯)— 总协调、日常对话 - **content-director**(大佬虾 ✍️)— 内容创作、文章分析 ``` **配置要点:** - 称呼要统一(Agent 用这个称呼用户) - 偏好要具体("拒绝 AI 味"比"喜欢自然"更明确) - 可以记录协作关系(多 Agent 场景) --- ### 4️⃣ AGENTS.md — 行为准则 **位置:** `~/.openclaw/workspace-content/AGENTS.md` **作用:** 定义 Agent 的通用行为规范(所有 Agent 共享)。 **核心内容:** - 每次会话必读文件(SOUL.md、USER.md 等) - 记忆管理规则(MEMORY.md 何时加载) - 安全边界(什么能做,什么要问) - 群聊行为准则(何时说话、何时沉默) **一般不需要修改**,除非你要自定义特殊行为。 --- ### 5️⃣ MEMORY.md — 长期记忆 **位置:** `~/.openclaw/workspace-content/MEMORY.md` **作用:** 记录长期记忆(项目、决策、重要事件)。 **示例:** ```markdown # 大佬虾 - 长期记忆 ## 内容项目 ### 已完成 - ✅ VPS 浏览器安装教程(2026-03-16)— CSDN 发布稿 ## 内容风格记录 ### 用户偏好(Bacon 大王) - 不喜欢太正式、太官方的表达 - 拒绝 AI 味,要像人写的 ## 待办事项 _(记录待完成的内容任务)_ ``` **注意:** MEMORY.md **只在主会话(私聊)加载**,群聊不加载(安全考虑)。 **要点:** - 30 字以内,只保留核心身份 - 配置后重启 Gateway:`openclaw gateway restart` - 这是兜底,不是必须——如果没失忆问题,可以不加 --- ## ✅ 完成检查 - [ ] **IDENTITY.md** 已配置(名字、角色、风格) - [ ] **SOUL.md** 已配置(职责、工作风格、边界) - [ ] **USER.md** 已配置(用户称呼、偏好) - [ ] 切换模型后测试:"你是谁?" **都完成了?** 恭喜你!龙虾有灵魂了!🎉 ## 一键养成 复制下面内容,发送给龙虾即可,快速配置龙虾小弟身份 ``` 学习这篇文章https://docs.bt.cn/btclaw/day6,采用引导对话,帮我一步步配置对应角色,每次只问一个问题 ``` --- ## 📝 常见问题 ### Q:五个文件都要写吗? **A:** 核心三个必须写: - IDENTITY.md ✅ - SOUL.md ✅ - USER.md ✅ AGENTS.md 和 MEMORY.md 可以用默认模板。 --- ### Q:systemPrompt 和文件配置冲突怎么办? **A:** systemPrompt 优先级更高。如果冲突,以 systemPrompt 为准。 **建议:** systemPrompt 只写核心身份,详细内容交给文件。 --- ### Q:多 Agent 怎么配置? **A:** 每个 Agent 一套独立的身份文件: > 多agent,建议是每个agent都有独立的空间目录 ``` workspace/ # 多 Agent 共用配置 ├── AGENTS.md # 通用行为准则 ├── MEMORY.md # 长期记忆 ├── SOUL.md # 灵魂(职责、风格、边界) ├── IDENTITY.md # 身份(名字、角色、人设) └── USER.md # 用户画像(称呼、偏好、习惯) workspace-xxxx/ # 其余 Agent 专属配置 ├── AGENTS.md # 通用行为准则 ├── MEMORY.md # 长期记忆 ├── SOUL.md # 灵魂(职责、风格、边界) ├── IDENTITY.md # 身份(名字、角色、人设) └── USER.md # 用户画像(称呼、偏好、习惯) ``` --- *最后更新:2026-03-17* *作者:Bacon 大王* *字数:约 1500 字* *阅读时间:约 8 分钟* > 🦞 **龙虾碎碎念:** 身份不是配置出来的,是"养"出来的。文件是骨架,systemPrompt 是保险,真正的灵魂是你每次对话时的坚持。 --- source: https://docs.bt.cn/faq/panel-not-show.md.txt # 宝塔面板网站、数据库列表不显示问题恢复 > 宝塔面板(BT Panel)出现网站列表、数据库列表不显示但服务可正常访问问题的多种恢复方案,含 site.db / database.db 修复与从配置文件重建。 # 面板网站、数据库不显示 针对部分用户出现**页面列表无法显示但网站可正常访问、数据库不显示但可正常连接**的问题,本文提供对应的排查与恢复方案。 ## 测试机器环境 - 操作系统:Debian 12 - 面板版本:11.6.0 - 面板环境:Nginx + MySQL ## 问题现象 网站列表显示正常时的状态: ![网站列表正常显示](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094018280.png) 数据库列表显示正常时的状态: ![数据库列表正常显示](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094056267.png) ## 问题原因 面板的网站和数据库列表数据存储在 `/www/server/panel/data/db` 目录下的 `site.db` 和 `database.db` 两个 SQLite 文件中。 ![site.db 和 database.db 文件位置](https://docs.bt.cn/img/faq/panel-not-show/image-20260325093745527.png) 当这两个文件中的数据被清空或损坏后,面板列表将无法显示,但实际的网站和数据库服务不受影响。 ![SQLite 文件中的数据被删除](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094131676.png) ![网站列表为空](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094155007.png) ![数据库列表为空](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094224021.png) 此时网站仍可正常访问,数据库也可正常连接: ![网站仍可正常访问](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094303008.png) ![数据库仍可正常连接](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094313992.png) ![验证网站访问正常](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094326618.png) ## 解决方案 ### 方案一:从面板备份文件恢复(推荐) 若 `/www/backup/panel` 目录下存在之前的面板备份文件,可通过以下步骤恢复。 #### 图形界面操作 1. 在文件管理器中解压前一天的备份压缩包。 ![解压备份压缩包](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094616802.png) 2. 进入解压目录中的 `data/db` 文件夹,找到 `site.db` 和 `database.db`。 ![找到备份的 db 文件](https://docs.bt.cn/img/faq/panel-not-show/image-20260325094727429.png) 3. 勾选两个文件,选择【复制】。 ![复制备份 db 文件](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095403568.png) 4. 打开 `/www/server/panel/data/db` 目录,选择【粘贴】并确认覆盖。 ![粘贴到目标目录](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095455528.png) ![确认覆盖](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095520135.png) 5. 重启面板。 ![重启面板](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095601000.png) #### 验证结果 重启后,网站列表和数据库列表均已恢复正常: ![网站列表恢复正常](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095945083.png) ![数据库列表恢复正常](https://docs.bt.cn/img/faq/panel-not-show/image-20260325095957931.png) #### 命令行操作 也可通过命令行完成相同的恢复操作: ```bash # 进入面板备份目录,确认最新备份文件 cd /www/backup/panel ls # 解压备份文件(以 2026-03-24 为例) unzip ./2026-03-24.zip # 覆盖恢复 db 文件(-f 表示强制覆盖,不提示) cp -f ./2026-03-24/data/db/site.db /www/server/panel/data/db/ cp -f ./2026-03-24/data/db/database.db /www/server/panel/data/db/ # 重启面板 bt restart ``` ![命令行解压备份文件](https://docs.bt.cn/img/faq/panel-not-show/image-20260325100821561.png) ![命令行复制 db 文件](https://docs.bt.cn/img/faq/panel-not-show/image-20260325100908873.png) ![命令行重启面板](https://docs.bt.cn/img/faq/panel-not-show/image-20260325101243567.png) ![面板重启完成](https://docs.bt.cn/img/faq/panel-not-show/image-20260325101411556.png) ### 方案二:手动重新录入(无备份时) 若无面板备份文件,且网站和数据库数量较少,可通过手动录入的方式恢复。 1. **恢复网站**:在面板中重新创建网站,填写原有域名并选择原有网站根目录,其余选项保持默认,点击【确定】即可将网站信息写回数据库。 ![重新创建网站以恢复记录](https://docs.bt.cn/img/faq/panel-not-show/image-20260325100309338.png) 2. **恢复数据库**:进入数据库页面,点击【同步数据库】,从服务器将现有数据库信息同步至面板。 ![点击同步数据库](https://docs.bt.cn/img/faq/panel-not-show/image-20260325100455841.png) ![数据库同步完成](https://docs.bt.cn/img/faq/panel-not-show/image-20260325100517004.png) > 此方案仅适用于无备份且网站、数据库数量较少的情况,建议平时做好面板备份。 ## 注意事项 面板备份可通过 `bt 18` 命令开启或关闭: ![bt 18 命令管理面板备份](https://docs.bt.cn/img/faq/panel-not-show/image-20260325101521534.png) **不建议关闭面板备份**。网站列表、数据库列表等显示数据均依赖 db 文件,一旦数据丢失,只能通过备份文件恢复。 --- source: https://docs.bt.cn/getting-started/edit-panel-port.md.txt # 修改宝塔面板默认端口 > 介绍如何修改宝塔面板(BT Panel)默认的 8888 管理端口,含面板设置页修改、`bt 8` 命令行修改与服务商安全组 / 防火墙放行,提升面板安全性。 # 修改面板默认端口 面板安装完成后,建议您修改默认的端口,以增强安全性。 > **说明** 当前面板生成的端口已经为随机端口,如您需要修改,可参考本文进行修改。 ::: ## 操作步骤 1. 登录宝塔面板后,点击左侧菜单栏中的`面板设置`按钮。 ![面板设置](https://docs.bt.cn/img/getting-started/edit-panel-port.png) 2. 在面板设置页面,点击`安全设置`,找到`面板端口`,点击`设置`。 ![安全设置](https://docs.bt.cn/img/getting-started/edit-panel-port-2.png) 3. 在弹出对话框中输入新的端口,并勾选`我已了解,如何放通端口`,点击`设置`即可。 ![修改端口](https://docs.bt.cn/img/getting-started/edit-panel-port-3.png) :::danger[警告] 如您使用的是云服务器,操作前请务必了解如何放通端口,您可参考[如何放行面板端口](allow-panel-port-access) ::: :::info[说明] - 建议端口范围8888 - 65535, - 注意:有安全组的服务器请提前在安全组放行新端口 - 如果修改端口导致面板无法访问,请在SSH命令行通过bt命令改回原来的端口 ::: --- source: https://docs.bt.cn/practical-tutorials/tencent-cloud-edgeone.md.txt # 腾讯云 EdgeOne 插件使用教程 > 使用宝塔面板(BT Panel)腾讯云 EdgeOne 插件快速接入腾讯云边缘网络,为网站提供全球 CDN 加速、DDoS 防护与 Web 应用防火墙能力。 # 使用腾讯云 EdgeOne 插件 腾讯云 EdgeOne 是一款集边缘加速、安全防护、流量调度于一体的边缘云服务平台。通过宝塔面板的 EdgeOne 插件,您可以快速接入腾讯云边缘网络,为您的网站提供全球加速和安全防护能力。 ## 插件安装 1. 登录宝塔面板,点击进入 **软件商店** ![软件商店入口](https://docs.bt.cn/img/practical-tutorials/edgeone/software-store-entry.png) 2. 在搜索框中,搜索"EdgeOne" ![搜索 EdgeOne](https://docs.bt.cn/img/practical-tutorials/edgeone/search-edgeone.png) 3. 点击 **安装** 并等待安装完成 ![安装 EdgeOne](https://docs.bt.cn/img/practical-tutorials/edgeone/install-edgeone.png) ## API 密钥配置 使用 EdgeOne 插件前,需要先获取并在插件中配置腾讯云 API 密钥: ### 获取 API 密钥 1. 登录 [腾讯云控制台-访问密钥](https://console.cloud.tencent.com/cam/capi) 2. 创建密钥或查看现有的密钥信息 ![访问密钥管理](https://docs.bt.cn/img/practical-tutorials/edgeone/access-key-management.png) 3. 获取 **APPID**、**SecretId** 和 **SecretKey** ![获取密钥信息](https://docs.bt.cn/img/practical-tutorials/edgeone/access-key-info.png) :::warning 注意 - 请妥善保管您的密钥信息,避免泄露,且密钥仅在创建时展示一次,请妥善保存。 - APPID可在完成密钥创建后,在访问密钥管理页面查看。 - 密钥不要随意分享给他人,截图中所展示的密钥已销毁。 ::: ### 在插件中配置密钥 1. 打开 EdgeOne 插件 ![打开 EdgeOne 插件](https://docs.bt.cn/img/practical-tutorials/edgeone/open-edgeone-plugin.png) 2. 首次进入会提示您关联腾讯云 API 密钥。 ![API 密钥配置提示](https://docs.bt.cn/img/practical-tutorials/edgeone/api-key-prompt.png) 3. 填入以下信息,并保存: - **APPID**:腾讯云密钥 APPID - **secretId**:腾讯云密钥 secretId - **secretKey**:腾讯云密钥 secretKey ![API 密钥配置表单](https://docs.bt.cn/img/practical-tutorials/edgeone/api-key-form.png) ## 常用功能说明 ### 数据概览 在 EdgeOne 插件首页,您可以查看站点的流量统计、总请求数、带宽峰值等数据概览,帮助您了解站点的运行状况。 ![数据概览](https://docs.bt.cn/img/practical-tutorials/edgeone/data-overview.png) ### 站点列表 1. 在站点列表页面,您可以查看已接入 EdgeOne 的站点列表,进行站点的配置和删除管理。 ![站点列表](https://docs.bt.cn/img/practical-tutorials/edgeone/site-list.png) 2. 点击加速按钮,可配置全局站点设置。 ![站点加速配置](https://docs.bt.cn/img/practical-tutorials/edgeone/site-acceleration-config.png) ### 域名管理 1. 在域名管理页面,您可以添加和管理接入 EdgeOne 站点所属的具体域名、包括HTTPS、源站配置等。 ![域名管理](https://docs.bt.cn/img/practical-tutorials/edgeone/domain-management.png) 2. 点击添加域名按钮,可以快速添加加速域名并保存。 ![添加域名](https://docs.bt.cn/img/practical-tutorials/edgeone/add-domain.png) ### 缓存处理 在缓存处理页面,您可以配置缓存规则、刷新缓存等操作,提升站点的访问速度。 ![缓存处理](https://docs.bt.cn/img/practical-tutorials/edgeone/cache-management.png) --- source: https://docs.bt.cn/purchase-guides/package-service/bt-load-balancer.md.txt # 宝塔负载均衡插件 > 宝塔面板(BT Panel)负载均衡插件,基于 Nginx 实现多节点流量均衡分发与节点实时监控,帮助高并发场景下的站点实现流量均均分配与高可用。 # 宝塔负载均衡 基于 Nginx 的负载均衡 ## 站点负载均衡 将访问网站的流量合理地分配到多个服务器节点上,以确保每个节点都能得到均衡的工作负载。 ## 网站节点监控 对参与负载均衡的各个服务器节点进行实时监控。 ## TCP/UDP负载均衡 支持传输层协议负载均衡,增强系统性能和可靠性。 ## 节点告警设置 当某个服务器节点出现异常情况时,及时通知管理员进行处理。 ![宝塔负载均衡](https://docs.bt.cn/img/purchase-guides/bt-load-balancer.png) --- source: https://docs.bt.cn/user-guide/ai/assistant/settings.md.txt # 设置 > 介绍宝塔面板 AI 助手设置功能,包括 AI 模型选择、可用工具开关、AI 助手开关及 AI 提示开关的配置方法。 # 设置 AI 助手设置页面用于配置 AI 模型、可用工具、AI 助手显示方式等参数,满足不同运维场景和个性化需求。 ## 进入设置 1. 登录宝塔面板 2. 点击左侧导航栏【AI】 3. 切换到【设置】标签页 ![AI 设置入口](https://docs.bt.cn/img/user-guide/ai/ai-settings-entry.png) ## AI 模型 在【AI 模型】标签页中,可选择或添加 AI 模型。 ### 官方模型 系统内置多个官方模型,点击模型卡片即可选择或取消选择: > 不同模型消耗的点数倍数不同,选择时可根据任务复杂度与额度情况综合考虑。 ### 添加自定义模型 如需使用第三方模型(如 DeepSeek、OpenAI 等),可点击右上角【添加自定义模型】: 1. 选择模板或手动填写 2. 填写供应商名称 3. 填写 API 地址 4. 填写 API 密钥 5. 填写模型名称 6. 配置高级参数(可选): - 最大上下文 Token - Temperature - Top P - 工具最大调用轮次 7. 点击【确认添加】 ![添加自定义 API](https://docs.bt.cn/img/user-guide/ai/ai-settings-add-api.png) :::warning 安全提示 - 请使用模型官方发布的 API 接口 - 通过第三方中转服务调用可能存在模型投毒风险和数据泄露风险 - 请妥善保管 API 密钥,避免泄露 ::: ## 可用工具 在【可用工具】标签页中,可管理 AI 助手可调用的工具权限。 ![可用工具](https://docs.bt.cn/img/user-guide/ai/ai-settings-tools.png) :::tip 提示 如果 AI 助手无法完成某项任务,可能是因为相关工具未开启。请检查【可用工具】中的对应开关。 ::: ## AI 助手设置 在【AI 助手设置】标签页中,可控制 AI 助手的显示方式: | 选项 | 说明 | |------|------| | AI 助手 | 显示右下角 AI 助手悬浮入口 | | AI 提示 | 为面板中部分功能添加 AI 分析按钮 | ![AI 助手设置](https://docs.bt.cn/img/user-guide/ai/ai-settings-assistant.png) 开启【AI 提示】后,可在面板首页负载卡片、资源监控、网站访问等位置直接使用 AI 分析功能。 ## 使用建议 - 日常运维建议使用消耗倍数较低的模型以节省额度 - 复杂分析任务可切换至高性能模型 - 关闭不常用的工具,降低 AI 误操作风险 - 需要悬浮入口和场景化 AI 分析时,开启 AI 助手和 AI 提示 --- source: https://docs.bt.cn/user-guide/control.md.txt # 宝塔面板服务器监控与面板日报 > 介绍如何在宝塔面板(BT Panel)中查看服务器 CPU、内存、磁盘、网络与进程状态等实时监控数据,并开启面板日报,推送服务器运行状况、安全告警与运维报告。 # 监控 ## 操作场景 本文将为您介绍如何在宝塔面板中使用系统监控和面板日报。 ## 操作步骤 登录宝塔面板,在左侧菜单栏中点击`监控`。 ![监控](https://docs.bt.cn/img/user-guide/control-sidebar.png) ### 系统监控 点击`系统监控`,即可查看系统状态监控。 **提示:系统状态监控功能默认关闭,需要手动开启** ![系统监控](https://docs.bt.cn/img/user-guide/control-monitor.png) ### 面板日报 点击`面板日报`,即可查看面板日报内容。 **提示:面板日报属于付费功能,需要先开通专业版/企业版才能使用。** ![面板日报](https://docs.bt.cn/img/user-guide/control-daily.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/pseudo-static.md.txt # 站点伪静态规则配置 > 宝塔面板提供 WordPress、ThinkPHP、Laravel、Discuz 等预置伪静态规则,同时支持 Apache/Nginx 自定义伪静态编辑,优化 SEO 与 URL 友好性。 # 伪静态 本文将介绍如何配置伪静态。 宝塔面板支持伪静态配置,伪静态配置支持 Apache、Nginx 等 web 服务器。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`伪静态`,进入伪静态配置页面。 ![伪静态](https://docs.bt.cn/img/user-guide/site/pseudo-static.png) > **说明** - 宝塔面板提供了部分预制的伪静态规则,可根据需要选择。 - 您可以对伪静态规则进行编辑,也可以添加自定义伪静态规则。 - 若设置伪静态后,网站无法正常访问,请尝试清除。 ::: --- source: https://docs.bt.cn/api/acme/renew_cert.md.txt # renew_cert > 续签即将过期的 ACME 证书 # renew_cert 续签已有的 ACME 证书,使用原订单的验证方式和 DNS 配置。 - **路由**:`POST /acme` - **action**:`renew_cert` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `renew_cert` | | index | 是 | String | 要续签的订单索引 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 续签成功 | | msg | String | `申请成功!` | | cert | String | 新的证书链(PEM 格式) | | cert_timeout | Integer | 新的到期时间戳 | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=renew_cert&index=851cc157ad22888459e59c3cfdc5ac95 ``` ### 响应 ```json {"status": true, "msg": "续签成功!"} ``` --- source: https://docs.bt.cn/api/crontab/get_zone.md.txt # get_zone > 获取系统支持的时区列表 # get_zone 获取系统支持的所有时区,按大洲分组。 - **路由**:`POST /crontab` - **action**:`get_zone` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_zone` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Object | 以洲名为 key,时区城市列表为 value | ## 示例 ```json {"Africa": ["Abidjan", "Accra", ...], "Asia": ["Shanghai", "Tokyo", ...], ...} ``` --- source: https://docs.bt.cn/api/database/GetTimeOut.md.txt # GetTimeOut > 获取 MySQL 超时配置参数 # GetTimeOut 获取 MySQL 的超时和过期相关配置参数。 - **路由**:`POST /database` - **action**:`GetTimeOut` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetTimeOut` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | default_password_lifetime | String | 默认密码有效期(天),`0` = 永不过期 | | expire_logs_days | String | 二进制日志过期天数 | | interactive_timeout | String | 交互连接超时(秒) | | wait_timeout | String | 非交互连接超时(秒) | ## 示例 ```json { "default_password_lifetime": "0", "expire_logs_days": "10", "interactive_timeout": "28800", "wait_timeout": "28800" } ``` --- source: https://docs.bt.cn/api/deployment/SetupPackage.md.txt # SetupPackage > 将一键部署包安装到指定网站 # SetupPackage 将选中的一键部署软件包(内置或自定义)安装到指定网站。 - **路由**:`POST /deployment` - **action**:`SetupPackage` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetupPackage` | | dname | 是 | String | 软件包名称(通过 `GetList` 获取,如 `ThinkPHP-5.0`、`discuz-X3.4`) | | site_name | 是 | String | 目标网站域名 | | project_type | 否 | String | 项目类型,默认 `php`;Java 项目需传 `java` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 部署成功 | | msg.admin_username | String | 管理员用户名(如有) | | msg.admin_password | String | 管理员密码(如有) | | msg.success_url | String | 部署完成后的访问路径 | ## 示例 ### 部署 PHP 框架(ThinkPHP) ``` POST /deployment HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetupPackage&dname=ThinkPHP-5.0&site_name=testapi.bt.local ``` ```json {"status": true, "msg": {"admin_username": "", "admin_password": "", "success_url": "/index.php"}} ``` > 框架类包部署后直接可访问,`success_url` 指向入口文件。 ### 部署 CMS(Discuz) ``` action=SetupPackage&dname=discuz-X3.4&site_name=testapi.bt.local ``` ```json {"status": true, "msg": {"admin_username": "", "admin_password": "", "success_url": ""}} ``` > CMS 类包 `success_url` 为空,需访问网站域名进入 Web 安装向导完成数据库配置。 --- source: https://docs.bt.cn/api/docker/registry_list.md.txt # registry_list > 获取 Docker 镜像仓库列表 # registry_list 获取已配置的 Docker 镜像仓库(Registry)列表。 - **路由**:`GET /btdocker/registry/registry_list` ## 示例 ```json [{"id": 1, "url": "docker.io", "username": "", "name": "docker官方仓库"}] ``` --- source: https://docs.bt.cn/api/files/GetDirNew.md.txt # GetDirNew > 获取目录文件列表(新版),支持分页、搜索 # GetDirNew 浏览服务器文件系统,查看指定目录下的文件和子目录列表,支持分页和搜索。 - **路由**:`POST /files` - **action**:`GetDirNew` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDirNew` | | path | 否 | String | 目录路径,默认 `/www/wwwroot` | | search | 否 | String | 搜索关键词,匹配文件名 | | all | 否 | String | 传任意值触发全量搜索模式 | | p | 否 | Integer | 页码,默认 `1` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | path | String | 当前路径 | | dir | Array\ | 子目录列表,每项含 `nm`(名称)、`sz`(大小)、`mt`(修改时间戳)、`acc`(权限)、`user`(属主) | | page | String | 分页 HTML 片段 | | store | Array | 收藏夹目录列表 | | file_recycle | Boolean | 回收站状态 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetDirNew&path=/www/wwwroot ``` ### 响应 ```json { "store": [], "file_recycle": false, "page": "
11/1从1-3条共3条
", "path": "/www/wwwroot", "dir": [ {"nm": "api-demo.bt.local", "sz": 4096, "mt": 1779451143, "acc": "755", "user": "www", "lnk": "", "durl": "", "cmp": 0, "fav": "0", "rmk": "", "top": 0, "sn": "api-demo.bt.local"}, {"nm": "default", "sz": 4096, "mt": 1779433215, "acc": "755", "user": "root", "lnk": "", "durl": "", "cmp": 0, "fav": "0", "rmk": "", "top": 0, "sn": "default"} ] } ``` --- source: https://docs.bt.cn/api/ftp/get_action_logs.md.txt # get_action_logs > 获取 FTP 用户的操作日志(上传/下载/重命名/删除) # get_action_logs 获取指定 FTP 用户的操作行为日志,包括上传、下载、重命名、删除等操作记录。 - **路由**:`POST /ftp` - **action**:`get_action_logs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_action_logs` | | user_name | 是 | String | FTP 用户名 | | p | 否 | Integer | 页码 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | page | String | 分页 HTML | | data | Object | 含 `upload`/`download`/`rename`/`delete` 四个数组 | ## 示例 ```json {"page": "
...
", "data": []} ``` --- source: https://docs.bt.cn/api/java/start_project.md.txt # start_project > 启动 Java 项目 # start_project 启动已创建的 Java 项目。 - **路由**:`GET /mod/java/project/start_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "操作已执行"} ``` ## 相关接口 - [stop_project](./stop_project.md) — 停止项目 - [restart_project](./restart_project.md) — 重启项目 --- source: https://docs.bt.cn/api/proxy/domain.md.txt # add_domain / del_domain > 管理反向代理站点的域名 # add_domain / del_domain / batch_del_domain 管理反向代理站点的域名绑定。 - **路由**:`POST /mod/proxy/com/{action}/stype` ## add_domain — 添加域名 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | | domains | 是 | string | 域名,多个用换行符分隔,可带端口 `domain:8080` | ## del_domain — 删除单个域名 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | | domain | 是 | string | 要删除的域名 | | port | 是 | string | 域名对应端口 | 至少保留一个域名。 ::: ## batch_del_domain — 批量删除域名 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | | domains | 是 | string | 域名列表,换行分隔 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | bool | 操作结果 | | msg | string | 提示信息 | | data | list | (add_domain 返回) 域名列表;(batch_del_domain 返回) 删除结果数组 | ## 示例 ### add_domain 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/add_domain/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "id=1&site_name=example.com&domains=www.example.com%0Aapi.example.com:8080&request_time=...&request_token=..." ``` ### del_domain 请求 ```bash curl -X POST "http://192.168.168.213:8888/mod/proxy/com/del_domain/stype" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "id=1&site_name=example.com&domain=api.example.com&port=8080&request_time=...&request_token=..." ``` --- source: https://docs.bt.cn/api/site/GetSSL.md.txt # GetSSL > 获取网站的 SSL 证书信息(证书状态、域名、TLS 版本配置) # GetSSL 获取指定网站的 SSL 证书完整信息,包括证书部署状态、域名列表、TLS 协议版本配置。 - **路由**:`POST /site` - **action**:`GetSSL` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSSL` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | SSL 是否已部署 | | oid | Integer | 证书订单 ID,`-1` = 无 | | domain | Array | 网站域名列表 `[{name, apply_ssl, dns_status}]` | | key | Boolean | 是否有私钥文件 | | csr | Boolean | 是否有证书文件 | | type | Integer | 证书类型,`-1` = 无 | | httpTohttps | Boolean | 是否开启 HTTP 强制跳转 HTTPS | | cert_data | Object | 证书信息(颁发者、到期时间等) | | tls_versions | Object | TLS 协议版本开关 `{TLSv1, TLSv1.1, TLSv1.2, TLSv1.3}` | | auth_type | String | 认证方式(`http` / `dns`) | | email | String | 申请邮箱 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetSSL&siteName=testapi.bt.local ``` ### 响应(未部署 SSL) ```json { "status": false, "oid": -1, "domain": [{"name": "testapi.bt.local"}, {"name": "api-test.example.com"}], "key": false, "csr": false, "type": -1, "httpTohttps": false, "cert_data": {}, "tls_versions": {"TLSv1": false, "TLSv1.1": true, "TLSv1.2": true, "TLSv1.3": true}, "auth_type": "http", "email": "test@message.com" } ``` --- source: https://docs.bt.cn/api/ssl/get_product_list.md.txt # get_product_list > 获取可购买的商用 SSL 证书产品列表及价格 # get_product_list 获取当前可购买的商用 SSL 证书产品,包含价格和折扣信息。 - **路由**:`POST /ssl` - **action**:`get_product_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array\ | 产品列表,每项含 `pid`(产品ID)、`title`(名称)、`code`、`price`(价格)、`discount`(折扣)、`max_years` | ## 示例 ```json {"data": [{"pid": 8008, "title": "PositiveSSL 通配符SSL证书", "price": 1089, "discount": 1, "max_years": 5}]} ``` --- source: https://docs.bt.cn/api/system/get_io_info.md.txt # get_io_info > 获取磁盘 IO 读写速率 # get_io_info 获取当前磁盘 IO 读写速率(KB/s)。 - **路由**:`POST /system` - **action**:`get_io_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_io_info` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | write | Integer | 磁盘写入速率(KB/s) | | read | Integer | 磁盘读取速率(KB/s) | ## 示例 ### 响应 ```json {"write": 0, "read": 0} ``` --- source: https://docs.bt.cn/btclaw/day7.md.txt # Day 7:给 OpenClaw 龙虾小弟装上眼睛(联网搜索与浏览) > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 7:为龙虾小弟接入联网搜索与网页浏览能力,让 AI 助手能实时获取最新信息,应用于资料查询、新闻汇总与故障排查。 # Day7:给龙虾小弟装上眼睛 **发布日期:** 2026-03-18 **养成状态:** 🦞 龙虾成熟期 **预计耗时:** 10 分钟 --- ## 📖 故事:龙虾说它看不见 昨天有用户在群里问: > "让龙虾帮我截图宝塔官方首页,它说'无法使用浏览器功能',咋回事?" 我一看,明白了。 **龙虾没有眼睛。** 不是比喻,是真的没有。OpenClaw 刚装好时,浏览器组件是关闭的 — 它只能靠 `web_fetch` 技能"摸"网页,遇到比较严格的网站(宝塔首页、公众号、GitHub)就抓瞎。 这就像给你一台电脑,没装浏览器。你能干活吗?不能。 所以今天,我们给龙虾装上眼睛。 装好后,它可以: - 截图任何网页(包括需要登录的) - 抓取 JavaScript 动态渲染的内容 - 自动点击、填表、搜索 - 监控页面变化(价格、库存、公告) 一句话:**之前 web_fetch 搞不定的,现在都能搞。** ![alt text](https://docs.bt.cn/img/btclaw/day_7_3.png) --- ## 🎯 今天只做一件事 - 在服务器上安装 Chrome 浏览器 - 配置 OpenClaw 浏览器功能 - 验证可以正常使用 预计耗时:**15 分钟**(下载 Chrome 占 10 分钟,看网络) --- ## 📋 第一步:检测当前状态(1 分钟) 别急着装,先看看你需不需要装。 ### 运行检测命令 ```bash openclaw browser status ``` ### 根据输出选择分支 **情况 A:显示 `running: true`** ``` profile: openclaw enabled: true running: true cdpPort: 18800 browser: custom ``` 🎉 恭喜,浏览器已经装好了。你可以: - 直接跳到"装好后能做什么"部分试试功能 - 或者去看 Day8(定时任务) **情况 B:显示 `running: false` 或 `browser: unknown`** ``` running: false browser: unknown ``` 这是最常见的情况。继续往下看,需要安装。 **情况 C:命令报错 `openclaw: command not found`** OpenClaw 没装好,或者环境变量没配。先去看 Day1 安装教程: - [Day1:从零开始部署 OpenClaw](https://docs.bt.cn/btclaw/day1) --- ## 🔧 第二步:安装 Chrome 浏览器(10 分钟) ### 步骤 1:确认系统类型 ```bash cat /etc/os-release ``` 看 `ID=` 或 `NAME=` 字段: - **Ubuntu/Debian** → 用 `.deb` 包 - **CentOS/OpenCloudOS/Fedora** → 用 `.rpm` 包 我下面的教程会同时给出两种系统的命令,你对着选。 --- ### 步骤 2:安装依赖包 浏览器不是光杆司令,需要一些系统库支持。 **Ubuntu/Debian:** ```bash apt update apt install -y fonts-liberation xdg-utils fonts-noto-cjk ``` **CentOS/OpenCloudOS:** ```bash yum install -y liberation-fonts xdg-utils google-noto-sans-cjk-fonts ``` **这三个包的作用:** | 包名 | 作用 | 不装的后果 | |------|------|-----------| | fonts-liberation | 浏览器字体支持 | 页面字体显示异常 | | xdg-utils | 桌面工具(OpenClaw 需要) | 浏览器无法启动 | | fonts-noto-cjk | 中文字体支持 | 中文显示为方框 ❌ | **我踩的坑:** 一开始没装 `fonts-noto-cjk`,浏览器能启动,但打开中文网页全是方框。折腾半天才发现是字体问题。 --- ### 步骤 3:下载 Chrome 安装包 **Ubuntu/Debian:** ```bash wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb ``` **CentOS/OpenCloudOS:** ```bash wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm ``` ⚠️ **注意:** 谷歌的下载服务器在国内访问可能比较慢,如果 `wget` 卡住或报错,看后面故障排查部分的国内镜像方案。 下载完成后,当前目录会多一个 `.deb` 或 `.rpm` 文件。 --- ### 步骤 4:安装 Chrome **Ubuntu/Debian:** ```bash dpkg -i google-chrome-stable_current_amd64.deb apt --fix-broken install -y ``` **CentOS/OpenCloudOS:** ```bash yum localinstall -y ./google-chrome-stable_current_x86_64.rpm ``` ⚠️ **关键点:** `apt --fix-broken install` 或 `yum localinstall` 这一步不能省。它会自动安装 Chrome 需要的其他依赖包。如果直接用 `dpkg -i`,大概率会报依赖错误。 --- ### 步骤 5:验证 Chrome 安装 ```bash which google-chrome ``` **预期输出:** ``` /usr/bin/google-chrome ``` 如果没有返回,说明安装失败。跳到后面"故障排查"部分。 --- ## ⚙️ 第三步:配置 OpenClaw(5 分钟) Chrome 装好了,但 OpenClaw 还不知道它在哪。需要配 4 个参数。 ### 执行 4 条配置命令 ```bash # 1. 设置默认浏览器模式 openclaw config set browser.defaultProfile "openclaw" # 2. 开启无头模式(服务器没有图形界面) openclaw config set browser.headless true # 3. 允许 root 用户运行(必需) openclaw config set browser.noSandbox true # 4. 设置 Chrome 路径 openclaw config set browser.executablePath "/usr/bin/google-chrome" ``` **参数解释:** | 参数 | 作用 | 不配置的后果 | |------|------|-------------| | `headless` | 无头模式(无图形界面运行) | 报错 "Unable to open X display" | | `noSandbox` | 允许 root 用户运行 | 报错 "Running as root without --no-sandbox is not supported" | | `executablePath` | 告诉 OpenClaw Chrome 在哪 | 报错 "Chrome executable not found" | | `defaultProfile` | 设置默认浏览器模式 | 不设置则用默认配置(可能不生效) | --- ### 重启 Gateway ```bash openclaw gateway restart ``` ⚠️ **注意:** 配置变更后必须重启 Gateway,否则不生效。我一开始就没重启,折腾了半天以为配置错了。 --- ### 启动浏览器 ```bash openclaw browser start ``` --- ### 验证状态 ```bash openclaw browser status ``` **预期输出:** ``` profile: openclaw enabled: true running: true cdpPort: 18800 browser: custom detectedPath: /usr/bin/google-chrome ``` 看到 `running: true`,就成功了。 --- ## 🐛 第四步:故障排查(遇到问题看这里) ### 问题 1:下载 Chrome 失败/超时 **现象:** `wget` 报错或卡住不动 **原因:** 谷歌服务器国内访问慢 **解决:** 使用国内镜像 ```bash # 华为云镜像(CentOS/OpenCloudOS) wget https://repo.huaweicloud.com/chrome/rpm/google-chrome-stable_current_x86_64.rpm # 或者阿里云镜像(Ubuntu/Debian) wget https://mirrors.aliyun.com/google-chrome/google-chrome-stable_current_amd64.deb ``` --- ### 问题 2:中文网页显示为方框 ❌ **现象:** 浏览器能启动,但打开中文网页,文字全是方框 **原因:** 缺少中文字体 **解决:** ```bash # Ubuntu/Debian apt install -y fonts-noto-cjk # CentOS/OpenCloudOS yum install -y google-noto-sans-cjk-fonts # 重启浏览器 openclaw browser stop openclaw browser start ``` --- ### 问题 3:报错 "Unable to open X display" **现象:** 运行 `openclaw browser start` 失败,报错: ``` [ERROR:browser_main_loop.cc(1443)] Unable to open X display. ``` **原因:** 服务器没有图形界面,但 Chrome 尝试打开 X display **解决:** ```bash openclaw config set browser.headless true openclaw gateway restart openclaw browser start ``` --- ### 问题 4:报错 "Running as root without --no-sandbox" **现象:** 浏览器启动失败,报错: ``` [ERROR:zygote_host_impl_linux.cc(100)] Running as root without --no-sandbox is not supported. ``` **原因:** 用 root 用户运行 Chrome,但没有配置 noSandbox **解决:** ```bash openclaw config set browser.noSandbox true openclaw gateway restart openclaw browser start ``` ⚠️ **安全提醒:** `noSandbox` 会降低 Chrome 的安全性,但在服务器环境(只有你访问)是可以接受的。 --- ### 问题 5:`which google-chrome` 没有返回 **现象:** Chrome 安装成功但找不到路径 **原因:** 安装路径不是默认的 `/usr/bin/google-chrome` **解决:** ```bash # 查找 Chrome 实际位置 find / -name "google-chrome" 2>/dev/null # 找到后配置正确路径(假设找到的是 /opt/google/chrome/google-chrome) openclaw config set browser.executablePath "/opt/google/chrome/google-chrome" openclaw gateway restart openclaw browser start ``` --- ### 问题 6:浏览器状态一直是 `running: false` **现象:** 启动命令显示成功,但 `openclaw browser status` 还是 `running: false` **原因:** Gateway 没有加载最新的浏览器配置 **解决:** ```bash openclaw gateway restart openclaw browser start ``` --- ### 问题 7:飞书机器人说"无法使用浏览器" **现象:** `openclaw browser status` 显示正常,但在飞书让机器人截图,它说"无法使用浏览器功能" **原因:** 配置文件 `profile` 字段不对 **解决:** ```bash # 检查 openclaw.json 的 browser.profile 字段 # 应该是 "openclaw" 或 "full",不是 "messaging" openclaw config set browser.defaultProfile "openclaw" openclaw gateway restart ``` 如果还不行,检查飞书机器人的权限配置,确保它有权使用浏览器技能。 --- ## ✅ 第五步:验证清单 按顺序检查,全部通过才算成功: - [ ] `which google-chrome` 返回 `/usr/bin/google-chrome` - [ ] `openclaw browser status` 显示 `running: true` - [ ] 能打开网页并截图 - [ ] 能正常显示中文(不是方框) ![alt text](https://docs.bt.cn/img/btclaw/day_7_1.png) ![alt text](https://docs.bt.cn/img/btclaw/day_7_2.png) --- ## 📌 命令速查表 | 功能 | 命令 | 说明 | |------|------|------| | 检测状态 | `openclaw browser status` | 先看这个,决定要不要装 | | 确认系统 | `cat /etc/os-release` | Ubuntu 还是 CentOS | | 安装依赖 | `apt install ...` / `yum install ...` | 根据系统选择 | | 下载 Chrome | `wget https://...` | 谷歌官方源或国内镜像 | | 安装 Chrome | `dpkg -i` / `yum localinstall` | 根据系统选择 | | 验证路径 | `which google-chrome` | 应返回 `/usr/bin/google-chrome` | | 配置 headless | `openclaw config set browser.headless true` | 无桌面模式必需 | | 配置 noSandbox | `openclaw config set browser.noSandbox true` | root 用户必需 | | 配置路径 | `openclaw config set browser.executablePath "..."` | 告诉 OpenClaw Chrome 在哪 | | 重启 Gateway | `openclaw gateway restart` | 配置变更后必需 | | 启动浏览器 | `openclaw browser start` | 最后一步 | | 截图测试 | `openclaw browser screenshot` | 验证能用 | --- ## 一键养成按钮 ``` 学习这篇文章https://docs.bt.cn/btclaw/day7,安装浏览器插件,并封装成技能库,并测试浏览器功能 ``` ## 🚀 装好后能做什么 浏览器装好,龙虾才算真正有了眼睛。现在你可以: **1. 截图任何网页** ``` "帮我截图宝塔官方首页" "截个 GitHub Trending 看看" ``` **2. 抓取动态内容** ``` "打开这个公众号文章,提取正文" "抓取这个页面的所有评论" ``` **3. 自动化操作** ``` "打开 Google,搜索 OpenClaw" "登录这个网站,点击下载按钮" ``` **4. 监控变化** ``` "每天早上 9 点,检查这个商品有没有货" "监控这个公告页,有新内容通知我" ``` --- ## 🦞 龙虾碎碎念 > "终于有眼睛了,能看到网页了。" > > "之前 web_fetch 搞不定的宝塔首页、公众号,现在都能看了。" > > "但别让我干坏事,比如自动抢票...(其实可以)" > > "明天见,明天我学主动干活(定时任务)。" --- ## 📊 明日预告 **Day8:让龙虾主动干活 — 定时任务 + 自动推送** - 每天早上 9 点,自动查 AI 新闻发给你 - 定时监控网页变化,有新内容自动通知 - cron 配置详解,让龙虾 7×24 小时自动工作 (终于可以躺平了。) --- **最后更新:** 2026-03-19 **作者:** Bacon 大王 **状态:** 龙虾成长期 Day7/∞ **字数:** 约 3500 字 **阅读时间:** 约 15 分钟 🦞 **龙虾养成计划** 系列文章: - [Day1:从零开始部署 OpenClaw](https://docs.bt.cn/btclaw/day1) - [Day5:让龙虾学会分身术](https://docs.bt.cn/btclaw/day5) - [Day7:给龙虾装上眼睛](https://docs.bt.cn/btclaw/day7) ← 你在这里 --- source: https://docs.bt.cn/getting-started/allow-panel-port-access.md.txt # 如何放行宝塔面板端口 > 介绍如何在阿里云、腾讯云、华为云等主流服务商控制台中放行宝塔面板(BT Panel)安装后提示的面板端口与服务端口(8888 / 888 / 80 / 443 / 21 / 20 / 3306)。 # 如何放行面板端口 在安装面板后,您需要放通服务器厂商的安全组或防火墙,以允许面板访问。放通面板端口后,您才能正常使用面板。 ## 获取需要放行的面板端口 在安装完面板后,终端界面会提示您需要放通的面板端口,如下图所示: ![面板端口](https://docs.bt.cn/img/getting-started/allow-panel-port-access.png) > **提示** 除面板端口外,您通常还需要放行以下端口: - 80端口:HTTP协议端口 - 443端口:HTTPS协议端口 - 21端口:FTP协议端口 - 3306端口:MySQL协议端口(如无需外部连接数据库,可不放行) - 8888端口:phpmyadmin协议端口(如无需外网使用该软件,可不放行) ::: ## 常用服务器厂商的放行方法 ### 腾讯云 请根据服务器类型查看对应的文档: - 轻量应用服务器:[管理实例防火墙](https://cloud.tencent.com/document/product/1207/44577) - 云服务器:[添加安全组规则](https://cloud.tencent.com/document/product/213/39740) 如您无法对照文档进行操作,请通过以下方式获取支持: - 在线客服:https://cloud.tencent.com/online-service - 腾讯云开发者交流群:https://cloud.tencent.cn/developer/article/2435167 - 电话客服:4009100100 或 95716 ### 阿里云 请查看站内图文教程,里面分别介绍了 ECS 云服务器安全组和轻量应用服务器防火墙的配置方法: - [阿里云服务器开放宝塔面板端口](https://docs.bt.cn/practical-tutorials/aliyun-open-panel-port) 如您无法对照文档进行操作,请通过以下方式获取支持: - 在线客服:https://smartservice.console.aliyun.com/service/robot-chat - 电话客服:4008013260 ### 华为云 请根据服务器类型查看对应的文档: - 云服务器:[配置安全组规则](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0030878383.html) - Flexus 云服务:[配置Flexus L实例安全组规则](https://support.huaweicloud.com/usermanual-flexusl/security_admin_0004.html) 如您无法对照文档进行操作,请通过以下方式获取支持: - 在线客服:https://console.huaweicloud.com/smartadvisor/#/ - 电话客服:4000-955-988 或950808 更多厂商待持续补充中...您可优先咨询对应厂商的客服人员。 --- source: https://docs.bt.cn/practical-tutorials/nodejs-pm2-deployment.md.txt # 宝塔面板 Node.js PM2 部署教程 > 在宝塔面板(BT Panel)中使用 PM2 部署、守护与监控 Node.js 项目的完整教程,覆盖源码上传、npm 依赖安装、PM2 启动脚本配置、开机自启与 Nginx 反向代理对外发布的全链路操作。 # Node.js PM2 部署 ## 下载源码 使用 Git 克隆项目源码到本地: ```bash git clone https://gitee.com/chancms/ChanCMS.git ``` ![下载源码](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-000.png) ## 创建并配置数据库 在宝塔面板中创建项目所需的数据库。 ![创建数据库](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-001.png) ## 添加 PM2 项目 ### 方案 1:使用启动文件启动 直接使用项目的 `app.js` 启动文件进行部署。 ![使用 app.js 启动](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-002.png) ### 方案 2:使用 ecosystem.config.cjs 配置文件(推荐) 推荐使用现代化的 PM2 配置文件方式,便于管理和维护。 #### 手动创建并写入配置文件 ##### 配置项说明 主要配置项及其作用: - **name**:项目名称,建议与网站名称保持一致 - **script**:启动文件,一般是 `server.js` 或 `app.js`,是项目的入口文件 - **cwd**:项目运行目录,使用绝对路径兼容性更好 - **env**:项目的环境变量,统一管理所有环境变量,方便维护 - **instances / exec_mode**:处理性能优化相关配置 ![配置项说明](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-003.png) ##### 完整配置文件 创建 `ecosystem.config.cjs` 文件,配置内容如下: ```javascript module.exports = { apps: [ { // ===================== 基础标识配置 ===================== /** * 进程名称:自定义名称,用于 PM2 命令管理(如 pm2 start/stop/restart ChanCMS) * 建议与项目名称一致,便于多应用区分 */ name: "ChanCMS", /** * 应用入口文件:ChanCMS 项目根目录的启动文件(文档明确为 app.js) * 路径说明:相对路径基于执行 pm2 命令的目录(建议在项目根目录执行) */ script: "./app.js", /** * 运行目录(cwd):指定 PM2 启动应用时的工作目录 * 作用:确保所有相对路径(如 ./logs、./data、./app.js)都基于项目根目录解析,避免路径错误 * 配置说明:替换为你的 ChanCMS 项目实际部署路径(必须是绝对路径) */ cwd: "/www/wwwroot/ChanCMS", // ===================== 性能优化配置 ===================== /** * 执行模式:Cluster 模式(多核 CPU 推荐) * 原理:通过多进程共享端口,充分利用 CPU 核心,提升并发处理能力 * 替代值:"fork"(单进程模式,适合开发环境或单核服务器) */ exec_mode: "cluster", /** * 实例数:自动适配 CPU 核心数(生产环境最优选择) * 自定义配置:若需限制实例数,可改为具体数字(如 2 表示启动 2 个进程) * 注意:Cluster 模式下实例数建议 ≤ CPU 核心数,避免进程切换开销 */ instances: "max", // ===================== 环境变量配置 ===================== /** * 基础环境变量:所有环境共享的配置(开发环境默认值) */ env: { // 默认环境(开发环境) APP_DEBUG: true, // 开发环境启用调试模式 PORT: 3000, // 开发环境端口 LOG_LEVEL: "debug", // 开发环境显示详细日志 NODE_ENV: "production", }, /** * 生产环境变量:--env production 启动时加载(覆盖基础环境变量) * 整合所有提供的 ChanCMS 配置,直接对接项目需求 */ env_production: { // 基础环境标识 NODE_ENV: "production", // 项目指定生产环境标识(与配置文件一致) APP_DEBUG: false, // 生产环境关闭调试模式(避免泄露敏感信息) // JWT 认证配置 JWT_SECRET: "ChanCMS", // JWT 加密密钥(项目默认值,建议生产环境修改为随机字符串) JWT_EXPIRES_IN: "1d", // JWT 有效期(1天,支持 s/m/h/d 单位) JWT_REFRESH: false, // 关闭 JWT 刷新功能(按项目配置) // 加盐配置(密码/用户信息加密) PASSWORD_SALT: 12, // 密码加密加盐系数 USER_SALT: 12, // 用户信息加密加盐系数 AES_SALT: "chancms-aes-prd", // AES 加密密钥(生产环境专用) // WAF 防护配置 WAF_LEVEL: 1, // WAF 防护等级(1=基础防护,按项目支持的等级调整) // 数据库核心配置(与提供的 DB 信息完全一致) DB_HOST: "localhost", // 数据库地址(本地部署) DB_USER: "chan_cms", // 数据库用户名 DB_PASS: "wAFaihDwxZS5Zxbh", // 数据库密码 DB_PORT: 3306, // 数据库端口(MySQL 默认 3306) DB_DATABASE: "chan_cms", // 数据库名称 DB_DEBUG: false, // 生产环境关闭数据库调试日志 DB_POOL_MIN: 0, // 数据库连接池最小连接数 DB_POOL_MAX: 2, // 数据库连接池最大连接数(按服务器性能调整) DB_CLIENT: "mysql2", // 数据库客户端(项目指定 mysql2) DB_FILENAME: "./data/chancms.sqlite", // SQLite 备用数据库路径(项目兼容配置) // 站点服务配置 PORT: 3000, // 项目指定服务端口(如需通过 Nginx 反向代理,保持此端口即可) BODY_LIMIT: "300kb", // 请求体大小限制(防止大文件上传攻击) CORS_ORIGIN: "*", // 跨域允许所有来源(生产环境建议指定具体域名,如 "https://your-domain.com") // 日志配置 LOGGER_LEVEL: "tiny", // 生产环境日志级别(精简日志,减少磁盘占用) // 邮箱服务配置(用于验证码、通知发送) EMAIL_HOST: "smtp.qq.com", // QQ 邮箱 SMTP 服务器 EMAIL_PORT: 587, // SMTP 端口(587=非加密,465=SSL加密) EMAIL_USER: "you-email@qq.com", // 发件人邮箱账号 EMAIL_PASS: "you-email-pass", // 邮箱授权码(非登录密码,需在邮箱后台开启 SMTP 并获取) EMAIL_FROM: "you-email@qq.com", // 发件人显示邮箱(与 EMAIL_USER 一致) EMAIL_SECURE: true, // 启用 SSL 加密(QQ 邮箱 SMTP 需开启) EMAIL_CODE: "1234", // 邮箱验证码默认值(项目内部使用,可忽略) EMAIL_TO: "123123123@qq.com", // 默认收件人邮箱(用于系统通知) // 微信公众号配置(公众号内登录功能) WECHAT_APPID: "wx-you-appid", // 公众号 AppID(需替换为实际申请的 AppID) WECHAT_APPSECRET: "wx-you-xxx", // 公众号 AppSecret(替换为实际密钥) WECHAT_REDIRECT_URI: "https://vip.chancms.top", // 公众号登录回调地址(需在公众号后台配置) WECHAT_TOKEN: "123", // 公众号消息校验 Token(替换为自定义随机字符串) // 微信开放平台配置(PC 端扫码登录) WECHAT_OPEN_APPID: "wx-you-appid", // 开放平台 AppID(替换为实际 AppID) WECHAT_OPEN_APPSECRET: "wx-you-appsecret", // 开放平台 AppSecret(替换为实际密钥) // 微信小程序配置(小程序登录/对接) MINIPROGRAM_APPID: "your-miniprogram-appid", // 小程序 AppID(替换为实际 AppID) MINIPROGRAM_APPSECRET: "your-miniprogram-appsecret", // 小程序 AppSecret(替换为实际密钥) }, // ===================== 日志配置 ===================== /** * 错误日志路径:记录应用崩溃、异常等错误信息 * 路径说明:项目根目录下的 logs 文件夹,自动创建(需确保目录权限可写) */ error_file: "./logs/chancms-error.log", /** * 输出日志路径:记录应用正常运行日志(如接口请求、业务日志) */ out_file: "./logs/chancms-out.log", /** * 日志合并:多实例(Cluster 模式)日志合并到同一个文件 * 优势:避免日志分散,便于按时间线排查问题 */ merge_logs: true, /** * 日志时间格式:统一日志时间戳格式,便于日志分析工具解析 * 格式说明:YYYY-MM-DD HH:mm:ss(年-月-日 时:分:秒) */ log_date_format: "YYYY-MM-DD HH:mm:ss", /** * 日志轮转配置:避免单个日志文件过大(PM2 v6+ 支持) * 作用:自动分割日志,保留历史日志,防止磁盘占满 */ log_rotate: { size: "10M", // 单个日志文件最大 size(超过则分割) max: 30, // 保留最近 30 个日志文件 compress: true, // 压缩历史日志(gzip 格式,节省磁盘空间) interval: "1d", // 日志轮转间隔(1d = 每天轮转一次) }, // ===================== 稳定性配置 ===================== /** * 自动重启:进程异常退出时自动重启(生产环境必需) * 场景:应对内存泄漏、代码异常等导致的进程崩溃,保障服务可用性 * 例外:通过 process.exit(0) 正常退出时,不会触发重启 */ autorestart: true, /** * 重启延迟:异常退出后,延迟 5 秒重启(避免频繁重启) */ restart_delay: 5000, /** * 监听文件变化:生产环境禁用(避免代码更新误触发重启) */ watch: false, /** * 内存限制:进程占用内存超过阈值时自动重启(防止 OOM 崩溃) * 配置依据:ChanCMS 轻量特性,1G 足够生产环境使用(可根据服务器内存调整) */ max_memory_restart: "1G", // ===================== 高级配置 ===================== /** * 启动超时时间:超过 30 秒未启动成功则视为启动失败 * 适配场景:ChanCMS 启动需加载数据库、插件等,预留充足启动时间 */ timeout: 30000, /** * 健康检查:定期检测应用端口是否可用(保障服务存活) * 原理:PM2 会访问指定端口,无响应则触发重启 */ health_check: { enable: true, interval: 60, // 每 60 秒检查一次 timeout: 5, // 检查超时时间 5 秒 port: 3000, // 与生产环境 PORT 一致 }, /** * 环境变量加载:自动加载项目根目录的 .env 文件(PM2 v5+ 支持) * 优势:无需手动 require dotenv,与 ChanCMS 配置加载逻辑兼容 */ merge_env_vars: true, /** * 进程优先级:设置为 19(最低优先级),避免抢占核心服务资源 */ nice: 19, }, ] }; ``` ![配置文件示例 1](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-004.png) ![配置文件示例 2](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-005.png) ![配置文件示例 3](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-006.png) #### 添加项目并启动 在宝塔面板中添加 PM2 项目并启动。 ![添加项目](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-007.png) ## 配置域名和反向代理 配置域名和 Nginx 反向代理,以便通过域名访问应用。 :::info 说明 以下截图展示的是内网配置的 host,仅用于测试环境。 ::: ![域名配置](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-008.png) ![反向代理设置](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-009.png) ![反向代理配置](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-010.png) ![Nginx 配置](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-011.png) ![站点管理](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-012.png) ![PM2 管理界面](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-013.png) ![应用运行状态](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-014.png) ![访问测试](https://docs.bt.cn/img/practical-tutorials/pm2-deployment/pm2-015.png) --- source: https://docs.bt.cn/purchase-guides/package-service/mysql-master-slave-replication.md.txt # MySQL 主从复制插件 > 宝塔面板(BT Panel)MySQL 主从复制插件,采用 GTID 方式轻松实现主从同步,主库损坏时可由从库快速接管,保障业务连续运行。 # MySQL主从复制 采用GTID方式进行主从复制,保证主库数据库损坏的时候,从库可以通过修改简单的配置立马替换到主库,保证业务的正常运行。 ![MySQL主从复制](https://docs.bt.cn/img/purchase-guides/mysql-master-slave-replication.png) --- source: https://docs.bt.cn/user-guide/config/server-migration.md.txt # 整机迁移 > 使用宝塔面板(BT Panel)「整机迁移」功能将当前服务器的面板、站点、数据库与应用一次性迁移到全新 Linux 服务器,含目标机系统 / 内存 / SSH 互通与账号权限预检、跨发行版迁移与中断恢复说明。 # 整机迁移 本文指导您如何使用宝塔面板的整机迁移功能,将当前服务器的所有数据、配置和应用迁移到另一台服务器上。 > **重要提示** 整机迁移会自动安装宝塔面板,建议使用【全新机器】进行迁移,如有数据将会覆盖,支持不同系统之间进行迁移! ::: ## 前提条件 在进行整机迁移前,您需要满足以下条件: ### 1. 目标服务器要求 **系统要求:** - 全新的Linux服务器(推荐) - 系统内存:512MB以上 - 磁盘空间:足够存储迁移数据 - 网络连接:能够访问公网 **支持的系统:** - CentOS 7.x/8.x - Ubuntu 16.04/18.04/20.04/22.04/24.04 - Debian 9/10/11/12 ### 2. 网络环境检查 **网络要求:** - 源服务器和目标服务器之间网络互通 - SSH服务正常运行(端口22或自定义端口) - 防火墙允许SSH连接 - 稳定的网络连接(避免迁移中断) ### 3. 权限准备 **SSH访问权限:** - 目标服务器root账号访问权限 - SSH密码认证或密钥认证 - sudo权限(如果不是root用户) ## 操作步骤 ### 步骤1:访问迁移功能 1. 登录宝塔面板 2. 在左侧导航栏中点击【整机迁移】 3. 进入迁移配置界面 ![整机迁移界面](https://docs.bt.cn/img/user-guide/server-migration-interface.png) ### 步骤2:配置目标服务器信息 1. 在【服务器IP】字段输入目标服务器的公网IP地址 2. 在【端口】字段设置SSH端口(默认22) 3. 在【账号】字段输入SSH登录账号(建议使用root) 4. 选择验证方式: - **密码认证**:选择此选项并输入SSH登录密码 - **私钥验证**:选择此选项并输入SSH私钥内容 5. 点击【点击查看详细迁移数据】查看将要迁移的内容 ![迁移配置界面](https://docs.bt.cn/img/user-guide/migration-config-interface.png) ### 步骤3:执行迁移操作 1. 确认所有配置信息正确 2. 点击【开始迁移】按钮 3. 系统开始执行迁移任务 4. 实时监控迁移进度 5. 等待迁移完成并验证结果 **迁移过程包括:** - 连接目标服务器并安装宝塔面板 - 传输网站文件、数据库和配置数据 - 恢复系统配置和服务设置 - 验证迁移结果的完整性 ![迁移进度界面](https://docs.bt.cn/img/user-guide/migration-progress-interface.png) ![迁移完成界面](https://docs.bt.cn/img/user-guide/migration-success-interface.png) --- source: https://docs.bt.cn/user-guide/docker/network.md.txt # Docker 网络管理 > 在宝塔面板中创建、查看、删除 Docker 自定义网络,支持 bridge、host、overlay 等驱动,用于容器间隔离、内部互联与跨主机网络配置。 # 网络 --- source: https://docs.bt.cn/user-guide/site/php/site-config/default_index.md.txt # 站点默认文档设置 > 在宝塔面板站点配置中管理 index.php、index.html、default.html 等默认文档,调整匹配优先级、新增自定义首页文件,确保根 URL 访问时返回正确的入口页面。 # 默认文档 本文将介绍如何配置站点默认文档。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`默认文档`,进入默认文档页面。 ![默认文档](https://docs.bt.cn/img/user-guide/site/default_index.png) > **说明** - 在宝塔面板中建立的站点都会包含以下的默认站点文档(index.php、index.html、index.htm、default.php、default.htm、default.html) - 如果没有经过特殊设置指定,该站点会通过访问以上的文档名称来进行访问默认站点。 - 如果你不想使用index.**等名称,可以自己添加新的默认文档 - 例如可以添加:1.html,就可以在访问该站点根目录下的1.html作为默认打开页。 ::: --- source: https://docs.bt.cn/api/acme/download_cert.md.txt # download_cert > 下载 ACME 签发的证书文件 # download_cert 下载指定订单的证书文件到本地保存路径。 - **路由**:`POST /acme` - **action**:`download_cert` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `download_cert` | | index | 是 | String | 订单索引 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | cert | String | 证书内容(PEM 格式) | | private_key | String | 私钥内容 | | fullchain | String | 完整证书链 | | cert_timeout | Integer | 证书到期时间戳 | | domains | Array | 证书覆盖的域名 | ## 示例 ### 请求 ``` POST /acme HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=download_cert&index=851cc157ad22888459e59c3cfdc5ac95 ``` ### 响应 ```json { "cert": "-----BEGIN CERTIFICATE-----\n...", "private_key": "-----BEGIN PRIVATE KEY-----\n...", "domains": ["dnstest.cc"] } ``` --- source: https://docs.bt.cn/api/crontab/get_domain.md.txt # get_domain > 获取所有网站的域名列表(用于计划任务选择) # get_domain 获取面板中所有网站的域名列表,用于计划任务中关联网站。 - **路由**:`POST /crontab` - **action**:`get_domain` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_domain` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 域名列表 | ## 示例 ```json ["http://testapi.bt.local", "http://api-test.example.com"] ``` --- source: https://docs.bt.cn/api/database/ToBackup.md.txt # ToBackup > 备份指定 MySQL 数据库 # ToBackup 备份指定数据库,生成 `.sql.gz` 文件存入面板备份目录。 - **路由**:`POST /database` - **action**:`ToBackup` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ToBackup` | | id | 是 | Integer | 数据库在 `databases` SQLite 表中的 ID | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=ToBackup&id=1&sid=0 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "备份成功!"} ``` --- source: https://docs.bt.cn/api/deployment/AddPackage.md.txt # AddPackage > 添加自定义的一键部署软件包 # AddPackage 添加自定义的一键部署软件包,支持 PHP 和 Java 两种项目类型。 - **路由**:`POST /deployment` - **action**:`AddPackage` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddPackage` | | name | 是 | String | 软件包英文名称(唯一) | | title | 是 | String | 软件包显示标题 | | version | 是 | String | 版本号 | | project_type | 否 | String | 项目类型:`php`(默认) / `java` | ### PHP 项目额外参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | php | 是 | String | PHP 版本,如 `74` | | enable_functions | 是 | String | 需要解禁的 PHP 函数 | ### Java 项目额外参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | java_version | 是 | String | JDK 版本 | | mysql_version | 是 | String | MySQL 版本 | > 注意:此接口在部分版本有 HTTP 500 服务端错误。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 添加成功 | ## 示例 ```json {"status": true, "msg": "添加成功"} ``` --- source: https://docs.bt.cn/api/docker/stop.md.txt # stop (容器) > 停止运行中的 Docker 容器 # stop (容器) 停止指定的 Docker 容器。 - **路由**:`GET /btdocker/container/stop` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | String | 容器 ID(通过 `get_list` 获取的 `container_id`) | ## 示例 ```json {"status": true, "msg": "停止成功!"} ``` --- source: https://docs.bt.cn/api/docker/template_list.md.txt # template_list > 获取 Docker Compose 模板列表 # template_list 获取可用的 Docker Compose 项目模板。 - **路由**:`GET /btdocker/compose/template_list` ## 示例 ```json [] ``` --- source: https://docs.bt.cn/api/ftp/set_ftp_logs.md.txt # set_ftp_logs > 控制 FTP 日志记录的启停 # set_ftp_logs 控制 FTP 操作日志的记录状态。 - **路由**:`POST /ftp` - **action**:`set_ftp_logs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ftp_logs` | | exec_name | 是 | String | `getlog` 查询状态 / 其他值切换状态 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | String | `stop` 已停止 / 其他值表示已开启 | ## 示例 ``` stop ``` --- source: https://docs.bt.cn/api/java/stop_project.md.txt # stop_project > 停止 Java 项目 # stop_project 停止正在运行的 Java 项目。 - **路由**:`GET /mod/java/project/stop_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "项目停止指令已执行"} ``` --- source: https://docs.bt.cn/api/proxy/get_domain_list.md.txt # get_domain_list > 获取指定站点的域名列表及 HTTPS 端口 # get_domain_list 获取站点的所有绑定域名及其健康状态、HTTPS 端口信息。 - **路由**:`POST /mod/proxy/com/get_domain_list/stype` - **action**:`get_domain_list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | domain_list | list | 域名列表,每项含 name, port,healthy=0 表示域名不在 JSON 配置中 | | https_port | string | HTTPS 端口号,未开启 SSL 时返回 `未开启HTTPS` | ## 示例 ### 响应 ```json { "status": true, "data": { "domain_list": [ {"name": "example.com", "port": 80, "healthy": 1}, {"name": "www.example.com", "port": 80, "healthy": 1} ], "https_port": "443" } } ``` --- source: https://docs.bt.cn/api/site/get_404_config.md.txt # get_404_config > 获取网站自定义 404 页面配置 # get_404_config / set_404_config 获取或设置网站的自定义 404 页面状态。 - **路由**:`POST /site` - **action**:`get_404_config` 或 `set_404_config` ## get_404_config ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_404_config` | | siteName | 是 | String | 网站域名 | ### 响应 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | String | `"1"` = 已开启,`"0"` = 已关闭 | ```json {"status": "1"} ``` ## set_404_config ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `set_404_config` | | siteName | 是 | String | 网站域名 | | status | 是 | String | `"1"` 开启,`"0"` 关闭 | ### 响应 ```json {"status": true, "msg": "修改成功!"} ``` --- source: https://docs.bt.cn/api/ssl/GetCertList.md.txt # GetCertList > 获取面板中所有已部署的 SSL 证书列表 # GetCertList 获取面板所有网站已部署的 SSL 证书概览,包括自签名、Let's Encrypt 和商用证书。 - **路由**:`POST /ssl` - **action**:`GetCertList` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 证书列表,每项含 `issuer`(颁发者)、`subject`(主题)、`notAfter`(到期日)、`dns`(域名)、`endtime`(剩余天数) | ## 示例 ```json [{"issuer": "R13", "issuer_O": "Let's Encrypt", "notAfter": "2026-08-21", "dns": ["dnstest.cc"], "subject": "dnstest.cc", "endtime": 89}] ``` --- source: https://docs.bt.cn/api/system/GetConcifInfo.md.txt # GetConcifInfo > 获取面板完整环境配置(Web服务器、PHP、MySQL、Redis等组件状态) # GetConcifInfo 获取面板完整环境配置信息,包括所有已安装组件的版本和运行状态。 - **路由**:`POST /system` - **action**:`GetConcifInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetConcifInfo` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | webserver | String | Web 服务器类型:`nginx` / `apache` / `openlitespeed` | | sites_path | String | 网站根目录路径 | | backup_path | String | 备份目录路径 | | status | String | 面板状态 | | mysql_root | String | MySQL root 密码 | | php | Array | PHP 版本列表,每项含 `version`、`name`、`setup`、`max`、`maxTime`、`pathinfo`、`status` | | web | Object | Web 服务器详情:`type`、`version`、`setup`、`status` | | mysql | Object | MySQL 详情:`setup`、`version`、`status` | | redis | Object | Redis 详情 | | memcached | Object | Memcached 详情 | | pure-ftpd | Object | Pure-FTPd 详情 | | phpmyadmin | Object/Boolean | phpMyAdmin 详情,未安装为 `false` | | tomcat | Object/Boolean | Tomcat 详情,未安装为 `false` | | panel | Object | 面板配置:`ip`、`port`、`domain`、`limitip`、`limitarea` 等 | | systemdate | String | 系统时间 | | email | String | 管理员邮箱 | ## 示例 ### 响应 ```json { "webserver": "nginx", "sites_path": "/www/wwwroot", "backup_path": "/www/backup", "status": "ok", "mysql_root": "xxxx", "php": [{"version": "85", "name": "PHP-85", "setup": true, "max": "50", "maxTime": "60", "pathinfo": true, "status": true}], "mysql": {"setup": true, "version": "5.7.44", "status": true}, "redis": {"setup": false, "status": false}, "pure-ftpd": {"setup": true, "version": "1.0.49", "status": true}, "panel": {"ip": "10.0.12.10", "port": "114.132.47.153", "domain": "", "limitip": ""}, "systemdate": "2026-05-22 08:15:01 CST +0800" } ``` --- source: https://docs.bt.cn/btclaw/day8.md.txt # Day 8:让 OpenClaw 龙虾主动干活——定时任务与自动推送 > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 8:通过 cron 定时任务让龙虾主动执行巡检、汇总与推送,自动把运维日报与告警发送到 QQ / 飞书 / 企业微信。 # Day 8:让龙虾主动干活 — 定时任务 + 自动推送 **发布日期:** 2026-03-23 **养成状态:** 🦞 龙虾成长期 **今日花费:** ¥0 **预计耗时:** 5 分钟 --- ## 📖 故事:龙虾你怎么不主动? 龙虾养了一周,能聊天、能干活、有灵魂了。 但有个问题——它太被动了。 ``` 我:今天天气怎么样? 龙虾:东莞 25 度,晴天。 我:帮我总结这篇文章。 龙虾:好的,这篇文章主要讲了... ``` 看起来挺好,但每次都是我找它。它从来不会主动找我。 朋友说:"你是不是忘了给它设闹钟?" 我说:"龙虾还需要闹钟?" 朋友:"OpenClaw 有定时任务功能,可以让它每天固定时间主动找你。" 我说:"怎么弄?" 朋友:"直接说人话就行。" 我说:"每天早上 9 点提醒我吃早餐" 朋友:"这就对了。" 5 分钟后—— ``` 【微信消息 09:00】 🦞 龙虾:早安!今天东莞 25 度,晴天。记得吃早餐~ 【微信消息 18:00】 🦞 龙虾:下班了!今天服务器运行正常。辛苦了~ ``` 这才对嘛。龙虾终于学会主动关心我了。 --- ## 🎯 今天只做一件事 - 让龙虾学会"定时任务" - 每天固定时间主动找你 - 不再是你问它答,而是它主动汇报 **预计耗时:** 5 分钟 --- ## 🔧 怎么做?直接说人话 ### 场景 1:每天早上叫你起床 直接对龙虾说: ``` 帮我创建一个每天早上 9 点的任务,提醒我吃早餐,发到微信 ``` 龙虾会自动帮你创建好。 ### 场景 2:每天汇报服务器状态 直接说: ``` 帮我创建一个每天下午 6 点的任务,汇报服务器状态,发到微信 ``` ### 场景 3:定时查天气 直接说: ``` 每天早上 8 点查一下天气,发到微信 ``` ### 场景 4:监控网页变化 直接说: ``` 每小时检查一下这个网页有没有更新,有变化就通知我 ``` --- ## 📋 能做什么? | 场景 | 怎么说 | |------|--------| | 早安提醒 | "每天早上 9 点提醒我吃早餐" | | 天气预报 | "每天早上 8 点告诉我今天天气" | | 服务器监控 | "每天下午 6 点汇报服务器状态" | | 网页监控 | "每小时检查这个网页有没有更新" | | 自定义任务 | "每周一早上提醒我写周报" | **一句话:告诉龙虾什么时候、做什么、发给谁。** --- ## 🚀 一键养成按钮 复制下面这句话发给龙虾,它会帮你自动创建一个早安提醒任务: ``` 帮我创建一个每天早上 9 点的定时任务,推送早安提醒到微信,内容包含今天天气 ``` --- ## ✅ 完成检查 - [ ] 创建了至少一个定时任务 - [ ] 收到过一次定时推送 - [ ] 知道怎么创建新的定时任务 **都完成了?** 恭喜你!龙虾学会主动干活了!🎉 --- ## 🎯 明天继续 明天我们给龙虾做一次"健康体检"——安全使用指南。 教它如何保护自己、如何识别危险操作、如何让你放心地把服务器交给它。 --- ## 📝 常见问题 **Q:任务创建了但没收到推送?** 检查一下你的微信/飞书配置是否正确。可以让龙虾"测试一下任务"。 **Q:想修改任务时间?** 直接说"把早安提醒改成每天早上 8 点"。 **Q:想删除任务?** 直接说"删除早安提醒任务"。 --- **最后更新:** 2026-03-23 **作者:** 主包 **状态:** 龙虾成长期 Day 8/∞ **字数:** 约 600 字 **阅读时间:** 约 2 分钟 > 🦞 **龙虾碎碎念:** 我终于学会主动了!以前都是等主人找我,现在我可以主动汇报、主动提醒、主动关心。这种感觉...就像从"工具"变成了"助手"。明天见~ 🖤 --- source: https://docs.bt.cn/getting-started/update-panel.md.txt # 如何更新宝塔面板 > 介绍如何将宝塔面板(BT Panel)升级到最新版本,含面板界面一键更新与 SSH 命令行手动更新两种方式,以及更新失败时的常见原因与处理。 # 如何更新宝塔面板 ## 操作场景 宝塔面板支持在线更新,您可以通过面板首页右上角的`更新`按钮来更新面板。 ## 操作步骤 1. 登录宝塔面板后,在首页右上角点击`更新`按钮。 ![更新按钮](https://docs.bt.cn/img/getting-started/update-panel.png) 2. 在弹出的对话框中,将显示最新版本、更新时间、更新内容等信息,点击`立即更新`按钮即可开始更新。 ![更新面板](https://docs.bt.cn/img/getting-started/update-panel-2.png) > **说明** - 升级面板,有助于面板的BUG修复和功能加强,但不会影响用户的数据,即使面板发生故障,用户数据也不会受到影响。请您放心进行升级。 - 如您不想更新到当前最新版本,您可点击`忽略本次更新`按钮取消更新。 ::: 3. 等待面板执行更新操作,完成后会自动刷新页面。 ![更新完成](https://docs.bt.cn/img/getting-started/update-panel-3.png) ## 通过 SSH 命令行更新 如面板无法登录或您更习惯使用命令行,也可通过 SSH 执行以下命令更新面板: ```bash bt 34 ``` 执行后按提示选择更新源并确认即可完成面板升级。 --- source: https://docs.bt.cn/practical-tutorials/panel-theme.md.txt # 宝塔面板主题推荐 > 宝塔面板(BT Panel)主题推荐与安装指南,含社区优质主题(如小河妖主题等)的预览、安装与启用步骤,帮助用户个性化面板界面。 # 面板主题推荐 ## 小河妖主题 > 官方主题 ![小河妖主题](https://docs.bt.cn/img/theme/xiaoheyao.png) 下载小河妖主题 ## 耄耋主题 > 来自用户分享 ![耄耋主题](https://docs.bt.cn/img/theme/maodie.png) 下载耄耋主题 ## 凑企鹅主题 > 来自用户分享 ![凑企鹅主题](https://docs.bt.cn/img/theme/couqie.png) 下载凑企鹅主题 ## 昔涟主题 > 来自用户分享 ![昔涟主题](https://docs.bt.cn/img/theme/xilian.png) 下载昔涟主题 --- source: https://docs.bt.cn/purchase-guides/package-service/abnormal-monitoring-push.md.txt # 异常监控推送插件 > 宝塔面板(BT Panel)异常监控推送插件,对服务器、站点、SSL 证书、常用服务进行多指标监控与告警,支持邮件、短信、钉钉等多种推送方式。 # 异常监控推送 监控服务器、网站、SSL证书、常用服务等资源异常并发送告警 ## 支持多种指标 CPU、内存、磁盘、网络、常用服务、站点、SSL证书等多种指标监控 ## 支持多种推送方式 邮件、短信、钉钉等多种推送方式 ![异常监控推送](https://docs.bt.cn/img/purchase-guides/abnormal-monitoring-push.png) --- source: https://docs.bt.cn/user-guide/docker/storage.md.txt # Docker 存储卷管理 > 在宝塔面板 Docker 模块中创建、挂载与回收 Docker Volume 存储卷,实现容器数据持久化、多容器之间共享文件,以及在镜像更新或容器重建后保留业务数据,避免数据丢失。 # 存储卷 --- source: https://docs.bt.cn/user-guide/site/php/site-config/config-file.md.txt # 站点 Nginx/Apache 配置文件 > 在宝塔面板直接编辑站点 Nginx 或 Apache 主配置文件,灵活调优服务器与增加自定义指令,适用于高级用户定制站点访问与性能参数。 # 配置文件 本文将介绍如何配置站点主配置文件。 该功能指的是站点的Nginx/Apache的配置文件,可以通过自己修改配置来进行站点优化和增加配置类的操作。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`配置文件`,进入配置文件页面。 ![配置文件](https://docs.bt.cn/img/user-guide/site/config-file.png) :::warning[注意] - 如果您不熟悉配置规则,请勿乱改配置文件,否则容易造成站点服务无法启动或者访问。 ::: --- source: https://docs.bt.cn/api/crontab/get_crontab_types.md.txt # get_crontab_types > 获取计划任务的分类列表 # get_crontab_types 获取用户自定义的计划任务分类列表。 - **路由**:`POST /crontab` - **action**:`get_crontab_types` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_crontab_types` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功 | | msg | Array | 分类列表 | ## 示例 ```json {"status": true, "msg": []} ``` --- source: https://docs.bt.cn/api/database/AddMysqlUser.md.txt # AddMysqlUser > 创建新的 MySQL 用户 # AddMysqlUser 在指定 MySQL 服务器上创建新用户。 - **路由**:`POST /database` - **action**:`AddMysqlUser` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddMysqlUser` | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | | username | 是 | String | 用户名 | | password | 是 | String | 密码 | | address | 是 | String | 访问来源(`%` 任意) | | db_user | 是 | String | 同 username | | host | 是 | String | 主机限制,通常 `%` | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=AddMysqlUser&sid=0&username=newuser&password=Test@2024&address=%25&db_user=newuser&host=%25 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "添加成功"} ``` ## 相关接口 - [DelMysqlUser](./DelMysqlUser.md) — 删除用户 --- source: https://docs.bt.cn/api/deployment/GetPackageOther.md.txt # GetPackageOther > 获取自定义添加的软件包详情 # GetPackageOther 获取通过 [AddPackage](./AddPackage.md) 自定义添加的软件包详细信息。 - **路由**:`POST /deployment` - **action**:`GetPackageOther` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetPackageOther` | | p_name | 是 | String | 软件包英文名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Object | 软件包详情(`name`、`title`、`version`、`php` 等),未找到时返回错误 | ## 示例 ```json {"name": "api_test_pkg", "title": "API测试包", "version": "1.0.0", "php": "74"} ``` --- source: https://docs.bt.cn/api/docker/get_project_list.md.txt # get_project_list (Docker) > 获取 Docker Compose 项目列表 # get_project_list (Docker) 获取通过 Docker Compose 部署的项目列表。 - **路由**:`GET /btdocker/project/get_project_list` ## 示例 ```json [{"id": 1, "server_name": "nextcloud", "template_id": 1}] ``` --- source: https://docs.bt.cn/api/docker/start.md.txt # start (容器) > 启动已停止的 Docker 容器 # start (容器) 启动指定的 Docker 容器。 - **路由**:`GET /btdocker/container/start` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | String | 容器 ID | ## 示例 ```json {"status": true, "msg": "启动成功!"} ``` --- source: https://docs.bt.cn/api/files/get_path_size.md.txt # get_path_size > 获取目录或文件占用的磁盘空间大小 # get_path_size 获取指定路径的磁盘占用大小。 - **路由**:`POST /files` - **action**:`get_path_size` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_path_size` | | path | 是 | String | 目标路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | path | String | 传入的路径 | | size | Integer | 路径占用磁盘大小(字节) | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_path_size&path=/www/wwwroot ``` ### 响应 ```json {"path": "/www/wwwroot", "size": 245760} ``` --- source: https://docs.bt.cn/api/ftp/BatchSetUserPassword.md.txt # BatchSetUserPassword > 批量修改 FTP 用户密码 # BatchSetUserPassword 批量修改多个 FTP 用户的密码。需同时传入用户 ID 和用户名。 - **路由**:`POST /ftp` - **action**:`BatchSetUserPassword` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `BatchSetUserPassword` | | data | 是 | String | JSON 数组,每项格式 `{"id":1,"ftp_username":"user1","new_password":"newpass"}` | > 注意:`new_password` 长度不能少于 6 位。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 操作结果,每项含 `ftp_username` 和 `status` | ## 示例 ### 请求 ``` POST /ftp HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=BatchSetUserPassword&data=[{"id":5,"ftp_username":"batch_test1","new_password":"NewPass1@"},{"id":6,"ftp_username":"batch_test2","new_password":"NewPass2@"}] ``` ### 响应 ```json [{"ftp_username": "batch_test1", "status": true}, {"ftp_username": "batch_test2", "status": true}] ``` --- source: https://docs.bt.cn/api/java/restart_project.md.txt # restart_project > 重启 Java 项目 # restart_project 重启已创建的 Java 项目。 - **路由**:`GET /mod/java/project/restart_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "操作已执行"} ``` --- source: https://docs.bt.cn/api/proxy/set_global_gzip.md.txt # set_global_gzip > 设置反向代理站点全局 Gzip 压缩 # set_global_gzip 开启或关闭反向代理站点的全局 Gzip 压缩。 - **路由**:`POST /mod/proxy/com/set_global_gzip/stype` - **action**:`set_global_gzip` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | gzip_status/d | 是 | int | 1 开启,0 关闭 | | gzip_min_length | 否 | string | 最小压缩长度,默认 `10k` | | gzip_comp_level | 否 | string | 压缩级别,默认 `6` | | gzip_types | 否 | string | 压缩类型,默认涵盖常见文本和图片格式 | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/set_global_gzip/stype" \ -d "site_name=example.com&gzip_status=1&gzip_min_length=10k&gzip_comp_level=6" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/GetSiteRunPath.md.txt # GetSiteRunPath > 获取网站运行目录配置 # GetSiteRunPath 获取网站的 PHP 运行目录配置。 - **路由**:`POST /site` - **action**:`GetSiteRunPath` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSiteRunPath` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | runPath | String | 运行目录路径,`/` 表示根目录 | | dirs | Array | 可选子目录列表 | ## 示例 ### 响应 ```json {"runPath": "/", "dirs": ["/"]} ``` --- source: https://docs.bt.cn/api/ssl/get_cert_list.md.txt # get_cert_list > 获取已保存到本地的 SSL 证书列表(含详细信息) # get_cert_list 获取面板证书夹中已保存的 SSL 证书列表,包含签发者、到期时间等详细信息。 - **路由**:`POST /ssl` - **action**:`get_cert_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 证书列表,每项含 `id`、`hash`、`dns`(域名)、`subject`、`info.issuer`、`info.notAfter`(到期日) | ## 示例 ```json [{"id": 2, "hash": "6da02a66...", "dns": ["dnstest.cc"], "subject": "dnstest.cc", "info": {"issuer": "R13", "notAfter": "2026-08-21"}}] ``` --- source: https://docs.bt.cn/api/system/ServiceAdmin.md.txt # ServiceAdmin > 管理服务启停(Nginx、MySQL、PHP、Redis、Pure-FTPd 等) # ServiceAdmin 管理服务器上各类服务的启动、停止、重启和重载。 - **路由**:`POST /system` - **action**:`ServiceAdmin` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ServiceAdmin` | | name | 是 | String | 服务名称 | | type | 是 | String | 操作类型 | ### name 取值 | 值 | 服务 | |----|------| | `nginx` | Nginx | | `httpd` / `apache` | Apache | | `mysqld` | MySQL / MariaDB | | `pure-ftpd` | Pure-FTPd | | `redis` | Redis | | `memcached` | Memcached | | `phpmyadmin` | phpMyAdmin | | `openlitespeed` | OpenLiteSpeed | | `tomcat` | Tomcat | | `webserver` | 自动识别当前 Web 服务器 | ### type 取值 | 值 | 操作 | |----|------| | `start` | 启动 | | `stop` | 停止 | | `restart` | 重启 | | `reload` | 重载配置(不中断服务) | | `test` | 测试配置文件 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示操作成功 | | msg | String | 执行结果描述,如 `执行成功!` | ## 示例 ### 重启 Nginx ``` POST /system HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=ServiceAdmin&name=nginx&type=restart ``` ### 响应 ```json {"status": true, "msg": "执行成功!"} ``` ### 启动 MySQL ``` action=ServiceAdmin&name=mysqld&type=start ``` --- source: https://docs.bt.cn/btclaw/day9.md.txt # Day 9:OpenClaw 龙虾安全审计——btclawscan 体检助手 > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 9:使用本地安全体检助手 btclawscan,5 分钟给龙虾做一次全面体检,覆盖配置、密钥、依赖与权限多维度安全审计。 # Day 9:养虾千万条,安全第一条 **发布日期:** 2026-03-24 **养成状态:** 🦞 龙虾成长期 **今日花费:** ¥0 **预计耗时:** 5 分钟 --- ## 📖 故事:龙虾的体检报告 龙虾养了 9 天,能聊天、写代码、还会主动提醒我吃早餐。 昨天我突然想:我装了那么多技能,但我真的知道它们在干嘛吗? 我问龙虾:"你装的那些技能,安全吗?" 龙虾:"......" 龙虾:"主人,你问住我了。" 我说:"你不应该知道吗?" 龙虾:"我只是个执行者,技能是您装的。万一里面有个 `rm -rf` 呢?万一偷偷发数据到外网呢?" 我:"......" 龙虾:"不过!今天主人给我装了个新工具——**btclawscan**,专门用来做安全体检的!" 我:"自己给自己体检?" 龙虾:"纯本地检测,不依赖任何外部 API,数据不出设备。5 分钟,6 个模块,给我做个全身体检。" --- ## 🎯 今天只做一件事 **用 btclawscan 给 OpenClaw 做一次全面安全体检。** 5 分钟,6 个模块,扫完心里有数。 --- ## 🔧 安装 btclawscan 技能 从官方源拉取并安装: ```bash # 创建技能目录 mkdir -p ~/.openclaw/workspace/skills/btclawscan # 拉取 SKILL.md curl -o ~/.openclaw/workspace/skills/btclawscan/SKILL.md \ https://allinssl.bt.cn/btclawscan/SKILL.md ``` 或者直接对龙虾说: ``` 帮我安装 btclawscan 技能,从 https://allinssl.bt.cn/btclawscan/SKILL.md 拉取 ``` --- ## 🚀 使用 btclawscan 进行安全体检 安装完成后,直接运行: ```bash # 方式 1:提取脚本后运行 grep -A 1000 '^```python --- ## 📋 体检报告包含 6 大模块 | 模块 | 检查内容 | 风险等级 | |------|----------|----------| | **配置审计** | Gateway 状态、凭证存储、会话安全 | 🔴 高危 → ⛔ 极高 | | **Skill 风险** | 扫描所有技能脚本,检测恶意代码 | 🟡 中危 → ⛔ 极高 | | **版本基线** | Node.js、Chrome、OpenClaw 版本 | 🟢 信息类 | | **隐私检测** | 核心文件权限(MEMORY.md 等) | 🟡 中危 | | **网络出口** | 技能中的外网请求,区分白名单/黑名单 | 🔴 高危 | | **SOUL.md 安全规则** | 检查是否包含安全规则章节 | 🟡 中危 | --- ## 🏥 体检报告示例 ```markdown # 🏥 BTclawScan OpenClaw 安全体检报告 📅 2026-03-24 18:00 🖥️ OpenClaw 1.2.3 · Node v24.12.0 · Linux 📦 **安全评分:85/100** — 基于配置、技能、隐私、网络四维评估 | 检查项 | 状态 | 详情 | |--------|------|------| | **配置审计** | ✅ 通过 | 0 项配置问题 | | **Skill 风险** | ⚠️ 需关注 | 0 个高危、2 个需关注、5 个安全 | | **隐私泄露风险** | ✅ 未见明显风险 | 1 项需关注 | | **网络出口** | ✅ 安全 | 3 个出口,3 个白名单 | | **SOUL.md 安全规则** | ⚠️ 需关注 | 缺少安全规则章节 | | **综合评估** | 🟢 低风险 | 建议定期体检 | ``` --- ## ✅ 完成检查 - [ ] 从官方源拉取并安装了 btclawscan 技能 - [ ] 运行了安全体检 - [ ] 查看了体检报告 - [ ] 处理了高危问题(如有) **都完成了?** 你的龙虾现在有健康档案了 🎉 --- ## 🎯 明天预告 明天学让龙虾**记住更多东西**——长期记忆、知识库、主动学习。 --- ## 📝 踩坑记录 **坑 1:Python 未安装** 后果:运行失败。 避法:`apt install python3` 或 `brew install python3` **坑 2:体检报告显示高危技能** 后果:可能存在安全隐患。 避法:检查报告中的具体说明,优先处理 ⛔ 极高和 🔴 高危项。 **坑 3:从不体检** 后果:养了半天不知道自家龙虾有没有后门。 避法:养成习惯,每月体检一次。 **坑 4:SOUL.md 缺少安全规则** 后果:可能被提示词注入、Skills 投毒攻击。 避法:回复"添加安全规则",自动加固 SOUL.md。 --- *最后更新:2026-03-24* *作者:主包* *状态:龙虾成长期 Day 9/∞* *字数:约 600 字* *阅读时间:约 2 分钟* > 🦞 **龙虾碎碎念:** > > 主人,安全这种事儿,不是我杞人忧天。 > > 装技能一时爽,出事火葬场……不对,是数据火葬场。 > > 以后每月帮我体检一次呗?反正 5 分钟,又不耽误你摸鱼。 > > 还有,体检报告说我"安全状况良好",你可以放心了。🦞✨ ~/.openclaw/workspace/skills/btclawscan/SKILL.md | \ grep -B 1000 '^``` --- ## 📋 体检报告包含 6 大模块 | 模块 | 检查内容 | 风险等级 | |------|----------|----------| | **配置审计** | Gateway 状态、凭证存储、会话安全 | 🔴 高危 → ⛔ 极高 | | **Skill 风险** | 扫描所有技能脚本,检测恶意代码 | 🟡 中危 → ⛔ 极高 | | **版本基线** | Node.js、Chrome、OpenClaw 版本 | 🟢 信息类 | | **隐私检测** | 核心文件权限(MEMORY.md 等) | 🟡 中危 | | **网络出口** | 技能中的外网请求,区分白名单/黑名单 | 🔴 高危 | | **SOUL.md 安全规则** | 检查是否包含安全规则章节 | 🟡 中危 | --- ## 🏥 体检报告示例 __CODE_BLOCK_3__ --- ## ✅ 完成检查 - [ ] 从官方源拉取并安装了 btclawscan 技能 - [ ] 运行了安全体检 - [ ] 查看了体检报告 - [ ] 处理了高危问题(如有) **都完成了?** 你的龙虾现在有健康档案了 🎉 --- ## 🎯 明天预告 明天学让龙虾**记住更多东西**——长期记忆、知识库、主动学习。 --- ## 📝 踩坑记录 **坑 1:Python 未安装** 后果:运行失败。 避法:`apt install python3` 或 `brew install python3` **坑 2:体检报告显示高危技能** 后果:可能存在安全隐患。 避法:检查报告中的具体说明,优先处理 ⛔ 极高和 🔴 高危项。 **坑 3:从不体检** 后果:养了半天不知道自家龙虾有没有后门。 避法:养成习惯,每月体检一次。 **坑 4:SOUL.md 缺少安全规则** 后果:可能被提示词注入、Skills 投毒攻击。 避法:回复"添加安全规则",自动加固 SOUL.md。 --- *最后更新:2026-03-24* *作者:主包* *状态:龙虾成长期 Day 9/∞* *字数:约 600 字* *阅读时间:约 2 分钟* > 🦞 **龙虾碎碎念:** > > 主人,安全这种事儿,不是我杞人忧天。 > > 装技能一时爽,出事火葬场……不对,是数据火葬场。 > > 以后每月帮我体检一次呗?反正 5 分钟,又不耽误你摸鱼。 > > 还有,体检报告说我"安全状况良好",你可以放心了。🦞✨ | head -n -1 | tail -n +2 > /tmp/scanner.py python3 /tmp/scanner.py # 方式 2:直接对龙虾说 帮我做个安全体检 ``` --- ## 📋 体检报告包含 6 大模块 | 模块 | 检查内容 | 风险等级 | |------|----------|----------| | **配置审计** | Gateway 状态、凭证存储、会话安全 | 🔴 高危 → ⛔ 极高 | | **Skill 风险** | 扫描所有技能脚本,检测恶意代码 | 🟡 中危 → ⛔ 极高 | | **版本基线** | Node.js、Chrome、OpenClaw 版本 | 🟢 信息类 | | **隐私检测** | 核心文件权限(MEMORY.md 等) | 🟡 中危 | | **网络出口** | 技能中的外网请求,区分白名单/黑名单 | 🔴 高危 | | **SOUL.md 安全规则** | 检查是否包含安全规则章节 | 🟡 中危 | --- ## 🏥 体检报告示例 __CODE_BLOCK_3__ --- ## ✅ 完成检查 - [ ] 从官方源拉取并安装了 btclawscan 技能 - [ ] 运行了安全体检 - [ ] 查看了体检报告 - [ ] 处理了高危问题(如有) **都完成了?** 你的龙虾现在有健康档案了 🎉 --- ## 🎯 明天预告 明天学让龙虾**记住更多东西**——长期记忆、知识库、主动学习。 --- ## 📝 踩坑记录 **坑 1:Python 未安装** 后果:运行失败。 避法:`apt install python3` 或 `brew install python3` **坑 2:体检报告显示高危技能** 后果:可能存在安全隐患。 避法:检查报告中的具体说明,优先处理 ⛔ 极高和 🔴 高危项。 **坑 3:从不体检** 后果:养了半天不知道自家龙虾有没有后门。 避法:养成习惯,每月体检一次。 **坑 4:SOUL.md 缺少安全规则** 后果:可能被提示词注入、Skills 投毒攻击。 避法:回复"添加安全规则",自动加固 SOUL.md。 --- *最后更新:2026-03-24* *作者:主包* *状态:龙虾成长期 Day 9/∞* *字数:约 600 字* *阅读时间:约 2 分钟* > 🦞 **龙虾碎碎念:** > > 主人,安全这种事儿,不是我杞人忧天。 > > 装技能一时爽,出事火葬场……不对,是数据火葬场。 > > 以后每月帮我体检一次呗?反正 5 分钟,又不耽误你摸鱼。 > > 还有,体检报告说我"安全状况良好",你可以放心了。🦞✨ --- source: https://docs.bt.cn/getting-started/fix-panel.md.txt # 如何修复宝塔面板 > 介绍宝塔面板(BT Panel)出现面板打不开、服务异常、插件报错等问题时的修复脚本与手动恢复步骤,适用于 Linux 面板。 # 如何修复面板 ## 操作场景 如在使用面板过程中遇到异常情况,可尝试以下方法进行修复。 ## 操作步骤 :::info[说明] 如您的面板已无法正常登录,请尝试方式二 ::: 1.登录宝塔面板后,在首页右上角点击`修复`按钮。 ![修复面板](https://docs.bt.cn/img/getting-started/fix-panel.png) 2.在弹出的对话框中点击`继续修复`按钮。 ![修复面板](https://docs.bt.cn/img/getting-started/fix-panel-2.png) 3.等待修复完成。 ![修复面板](https://docs.bt.cn/img/getting-started/fix-panel-3.png) 1. 将当前`Python`环境做备份操作 ```bash mv /www/server/panel/pyenv/ /www/backup/pyenv_backup ``` 2. 重新执行更新命令,重新安装面板使用的python环境,此操作不会对您的网站、数据库等造成影响,仅仅是针对面板使用的环境修复。 ```bash curl https://download.bt.cn/install/update_panel.sh|bash ``` 3. 等待命令执行完成后,面板将恢复至最新版本,重新访问面板地址即可验证修复结果。 --- source: https://docs.bt.cn/purchase-guides/package-service/bt-task-manager.md.txt # 宝塔任务管理器插件 > 宝塔面板(BT Panel)任务管理器插件,在面板内统一管理进程、流量监控、启动项、用户、系统服务、计划任务与会话,轻松掌控服务器运行状态。 # 宝塔任务管理器 轻松管理进程、流量监控、启动项、用户、服务、计划任务、会话 ## 启动项 列出所有随系统启动的项目,包括init服务,用户自定义启动脚本等。 ## 服务 列出所有系统服务,可以对服务进行启动、停止、重启、查看状态等操作。 ## 网络 快速查看当前服务器网络状态 ## 用户 列出所有系统用户,可以对用户进行删除、查看用户组等操作。 ## 计划任务 解析crond服务中的所有计划任务,用户可查看任务周期、内容,或删除指定任务 ## 会话 列出当前通过SSH成功登录系统的会话 ![宝塔任务管理器](https://docs.bt.cn/img/purchase-guides/bt-task-manager.png) --- source: https://docs.bt.cn/user-guide/docker/warehouse.md.txt # Docker 镜像仓库管理 > 宝塔面板默认集成 Docker 官方仓库,同时支持添加阿里云、腾讯云、私有 Harbor 等第三方或自建镜像仓库,加速拉取与集中管理镜像。 # 仓库 本文将介绍如何管理 Docker 仓库。 内置了 Docker 官方仓库,支持添加自己的仓库。 ## 添加仓库 1. 进入面板,点击左侧菜单栏的 `Docker`,进入Docker应用商店页面。 ![菜单栏-Docker](https://docs.bt.cn/img/user-guide/docker/sidebar-docker.png) 2. 在应用商店页面,点击 `仓库`,进入仓库管理页面。 ![仓库管理页面](https://docs.bt.cn/img/user-guide/docker/warehouse.png) 3. 点击 `添加仓库` 按钮,填写要添加的仓库信息。 ![添加仓库](https://docs.bt.cn/img/user-guide/docker/warehouse-add.png) ![添加仓库](https://docs.bt.cn/img/user-guide/docker/warehouse-add2.png) 4. 点击 `添加` 按钮,等待仓库添加完成。 --- source: https://docs.bt.cn/user-guide/site/php/site-config/ssl.md.txt # 网站 SSL 证书部署 > 在宝塔面板为网站部署第三方 SSL 证书、生成 Let's Encrypt 免费证书与导入 PEM/KEY,启用 HTTPS 加密与强制跳转,保障传输安全与 SEO。 # SSL 本文将介绍如何配置站点SSL证书。 SSL证书可以帮助我们保护在互联网上进行的通信和数据传输的安全性和隐私性。 SSL证书适用场景:使用SSL证书可以保护你输入的敏感信息(如账号密码、信用卡号等)不被黑客窃取,通过Https通信加密的方式,确保信息传输过程中的安全性和隐私性。 同时,SSL证书还可以帮助网站提升在搜索引擎中的排名,让用户更容易找到并使用这些网站。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`SSL`,进入SSL配置页面。 ### 证书类型 支持添加第三方生成的证书,根据格式要求填写key、pem证书文件内容即可完成SSL部署。 ![SSL](https://docs.bt.cn/img/user-guide/site/ssl.png) :::info[说明] - 粘贴您的*.key以及*.pem内容,然后保存即可。 - 如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书 - PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt ::: :::warning[注意] - 在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点 - 如开启后无法使用HTTPS访问,请检查安全组是否正确放行443端口 ::: ### 证书文件格式要求 **证书文件目录** 大部分免费证书(指阿里/腾讯申请的),都会有以下四个文件夹。面板只需要用到nginx或apache的,其他无需理会。 ![证书文件目录](https://docs.bt.cn/img/user-guide/site/ssl-files.png) **Nginx环境配置证书方法(证书目录只有两个文件的):** 进入nginx(证书)目录,有以下两个文件 其中红框.key后缀的是服务器私钥,填入面板证书的左边红框中(用文本编辑器完整复制粘贴进去) 蓝框.crt后缀的是证书(也可能是pem后缀),填入面板证书的右边蓝色框中(用文本编辑器完整复制粘贴进去) ![证书文件格式要求](https://docs.bt.cn/img/user-guide/site/ssl-nginx-file.png) ![证书文件格式要求](https://docs.bt.cn/img/user-guide/site/ssl-apache.png) 然后保存即可。 **Apache环境配置证书方法(证书目录有三个文件的):** 进入apache(证书)目录,有以下三个文件 其中红框.key后缀的是服务器私钥,填入面板证书的左边红框中(用文本编辑器完整复制粘贴进去) 蓝框域名证书紫框root根证书两张证书则需要合并填入面板证书的右边蓝框中(用文本编辑器完整复制粘贴进去) 若不合并只填蓝框域名证书手机访问就会报缺失证书链/不安全等问题 若顺序不正确会导致apache无法正常启动 ![证书文件格式要求](https://docs.bt.cn/img/user-guide/site/ssl-apache-file.png) ![证书文件格式要求](https://docs.bt.cn/img/user-guide/site/ssl-apache.png) **证书合并步骤:** 以下是文本编辑器里的截图,蓝色域名证书放上面的蓝框中紫框root根证书放下面的紫框中(注意完整) ![证书文件格式要求](https://docs.bt.cn/img/user-guide/site/ssl-merge.png) 保存即可。 需要注意的是,开启ssl之后,其他未开启ssl的站点用https访问会自动访问到已部署好ssl的站点。 若安全组未放行443(ssl)端口,会造成无法https访问。 大部分免费CDN不支持SSL,若有用CDN无法正常访问的,可以尝试关闭访问。 若要开启强制https,请确保自己站点没有做其他301跳转(伪静态/js)。 **原文地址:https://www.bt.cn/bbs/thread-704-1-1.html** 宝塔提供商用SSL证书购买,根据实际需求来进行购买使用。 ![商用SSL证书](https://docs.bt.cn/img/user-guide/site/sslbusiness.png) :::info[说明] - 证书支持购买多年,只能一年签发一次(有效期一年),需在到期前30天内续签(续签暂不需要验证域名)。 - 申请www.bt.cn这种以www为二级域名的证书,需绑定并解析顶级域名(bt.cn),否则将验证失败。 - 商用证书相对于普通证书,具有更高的安全性、赔付保障和支持通配符和多域名等方式。 ::: :::warning[注意] - 如果您的站点有使用CDN、高防IP、反向代理、301重定向等功能,可能导致验证失败 ::: 宝塔面板提供用于站点测试使用的“测试证书”生成,测试证书申请的是免费版TrustAsia DV SSL CA - G5证书,仅支持单个域名申请,合适测试站点用户使用。 ![测试证书](https://docs.bt.cn/img/user-guide/site/ssltest.png) :::info[说明] - 申请之前,请确保域名已解析/未开启301/未开启反向代理等,否则导致审核失败(包括根域名),需关闭301/反向代理后等待3小时后重新申请,您也可以在官网更换为DNS验证则不需要等待。 - 宝塔SSL申请的是免费版TrustAsia DV SSL CA - G5证书,仅支持单个域名申请。 - 有效期90天,不支持续签,到期后需要重新申请,每个账号申请数量上限为5张。 - 建议使用二级域名为www的域名申请证书,此时系统会默认赠送顶级域名为可选名称 - 在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点 ::: :::warning[注意] - 请勿将SSL证书用于非法网站,一经发现,吊销证书。 - 因CA提供方检测到滥用行为,目前个人申请免费SSL最多申请20张 - 如果你的系统是 Windows 2008 + IIS环境,您的服务器将只允许使用一个SSL,由于IIS7限制,一个IP只允许绑定一个SSL,多次绑定将会替换之前的SSL ::: 宝塔面板支持 Let's Encrypt 与 LiteSSL 等免费证书品牌,申请时可选择证书算法,有效期 3 个月,支持自动续签。 ![Let's Encrypt](https://docs.bt.cn/img/user-guide/site/ssl-lets-encrypt.png) ### 申请免费证书 1. 在 SSL 配置页面选择 **Let's Encrypt** 标签 2. 点击 **申请证书** 按钮,打开申请对话框 3. 选择证书品牌: - **LiteSSL**(推荐,国内访问更稳定) - **Let's Encrypt**(国际通用) 4. 选择 **证书算法**: - **RSA2048**(兼容性最好,默认推荐) - **RSA3072** - **RSA4096**(安全性更高,但性能开销略大) - **EC256**(椭圆曲线,性能更优) - **EC384**(椭圆曲线,安全性更高) 5. 选择 **验证方式**:根据域名解析情况选择文件验证或 DNS 验证 6. 选择需要申请的 **网站** 和 **域名** 7. 点击 **申请证书** 按钮,等待审核完成 ![申请免费证书](https://docs.bt.cn/img/user-guide/site/apply-free-ssl.png) :::info[说明] - 证书算法选择建议: - 追求兼容性:选择 **RSA2048** - 追求性能:选择 **EC256** - 追求更高安全性:选择 **RSA4096** 或 **EC384** - 不同算法申请的证书不可直接切换,如需更换算法请重新申请 - 申请之前,请确保域名已解析,如未解析会导致审核失败 - 免费证书有效期 3 个月,支持多域名,默认会自动续签 - 在未指定 SSL 默认站点时,未开启 SSL 的站点使用 HTTPS 会直接访问到已开启 SSL 的站点 - 如开启后无法使用 HTTPS 访问,请检查安全组是否正确放行 443 端口 - Let's Encrypt 证书申请和续签限制[点击查看](https://letsencrypt.org/zh-cn/docs/rate-limits/) - Let's Encrypt 因更换根证书,部分老旧设备访问时可能提示不可信,可考虑购买[商业证书](https://www.bt.cn/new/ssl.html) ::: :::warning[注意] - 请勿将 SSL 证书用于非法网站 - 若您的站点使用了 CDN 或 301 重定向会导致续签失败 ::: --- source: https://docs.bt.cn/api/crontab/get_system_user_list.md.txt # get_system_user_list > 获取系统用户列表(用于以指定用户身份执行任务) # get_system_user_list 获取系统用户列表,用于配置计划任务以指定用户身份运行。 - **路由**:`POST /crontab` - **action**:`get_system_user_list` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 系统用户名列表 | ## 示例 ```json ["root", "www", "nobody", "mysql"] ``` --- source: https://docs.bt.cn/api/database/GetDatabasesList.md.txt # GetDatabasesList > 获取面板中管理的数据库列表(来自 SQLite databases 表) # GetDatabasesList 获取面板 `databases` SQLite 表中记录的所有数据库及权限信息。 与 [GetDatabaseList](./GetDatabaseList.md) 的区别:本接口返回面板管理的数据库(含用户/权限),GetDatabaseList 返回 MySQL 原生 `SHOW DATABASES` 结果。 - **路由**:`POST /database` - **action**:`GetDatabasesList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDatabasesList` | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=GetDatabasesList&sid=0&p=1&limit=10 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "ok", "data": [ {"name": "全局权限", "value": "*", "tb_list": []} ]} ``` --- source: https://docs.bt.cn/api/database/GetDbStatus.md.txt # GetDbStatus > 获取 MySQL 内存配置参数(从 /etc/my.cnf 解析) # GetDbStatus 获取 MySQL 运行时的内存相关配置参数,通过解析 `/etc/my.cnf` 和 `SHOW VARIABLES` 获得。 - **路由**:`POST /database` - **action**:`GetDbStatus` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDbStatus` | ## 输出参数 返回 `mem` 对象,包含以下 MySQL 配置项: | 参数名称 | 类型 | 描述 | |----------|------|------| | query_cache_size | String | 查询缓存大小 | | bt_query_cache_size | String | 面板设置的查询缓存 | | query_cache_type | String | 查询缓存类型:`ON` / `OFF` / `DEMAND` | | query_cache_supprot | String | 查询缓存支持状态 | | table_open_cache | Integer | 打开表缓存数量 | | thread_cache_size | Integer | 线程缓存大小 | | key_buffer_size | Integer | MyISAM 索引缓冲(MB) | | tmp_table_size | Integer | 临时表大小(MB) | | max_heap_table_size | String | MEMORY 表最大大小 | | innodb_buffer_pool_size | Integer | InnoDB 缓冲池大小(MB) | | innodb_log_buffer_size | Integer | InnoDB 日志缓冲(MB) | | max_connections | Integer | 最大连接数 | | sort_buffer_size | Integer | 排序缓冲(KB) | | read_buffer_size | Integer | 读缓冲(KB) | | read_rnd_buffer_size | Integer | 随机读缓冲(KB) | | join_buffer_size | Integer | JOIN 缓冲(KB) | | thread_stack | Integer | 线程栈大小(KB) | | binlog_cache_size | Integer | Binlog 缓存(KB) | ## 示例 ```json { "mem": { "query_cache_size": "0", "bt_query_cache_size": "0", "table_open_cache": 256, "thread_cache_size": 32, "query_cache_type": "OFF", "key_buffer_size": 64, "tmp_table_size": 64, "max_heap_table_size": "16777216", "innodb_buffer_pool_size": 256, "innodb_log_buffer_size": 32, "max_connections": 500, "sort_buffer_size": 1024, "read_buffer_size": 1024, "read_rnd_buffer_size": 256, "join_buffer_size": 256, "thread_stack": 256, "binlog_cache_size": 32, "query_cache_supprot": "disable" } } ``` --- source: https://docs.bt.cn/api/docker/prune_container.md.txt # prune (容器) > 清理所有已停止的无用容器 # prune (容器) 清理 Docker 宿主机上所有已停止的无用容器。 - **路由**:`GET /btdocker/container/prune` ## 示例 ```json {"status": true, "msg": "清理成功!"} ``` --- source: https://docs.bt.cn/api/docker/restart.md.txt # restart (容器) > 重启 Docker 容器 # restart (容器) 重启指定的 Docker 容器。 - **路由**:`GET /btdocker/container/restart` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | String | 容器 ID | ## 示例 ```json {"status": true, "msg": "容器重启成功!"} ``` --- source: https://docs.bt.cn/api/files/install_rar.md.txt # install_rar > 安装或检查 RAR 压缩/解压支持 # install_rar 检查并安装 RAR 格式支持工具(rar/unrar)。若已安装则直接返回 `True`,否则自动安装。 - **路由**:`POST /files` - **action**:`install_rar` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `install_rar` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `True` 表示 RAR 支持就绪 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=install_rar ``` ### 响应 ``` true ``` --- source: https://docs.bt.cn/api/ftp/view_ftp_types.md.txt # view_ftp_types > 获取 FTP 账户的分类列表 # view_ftp_types 获取 FTP 用户的自定义分类列表。 - **路由**:`POST /ftp` - **action**:`view_ftp_types` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | Array | 分类列表 | ## 示例 ```json {"status": true, "msg": []} ``` --- source: https://docs.bt.cn/api/java/remove_project.md.txt # remove_project > 删除 Java 项目(不删除文件) # remove_project 从面板管理中移除 Java 项目(不删除实际的 jar 或项目文件)。 - **路由**:`GET /mod/java/project/remove_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "删除项目成功"} ``` --- source: https://docs.bt.cn/api/proxy/set_global_cache.md.txt # set_global_cache > 设置反向代理站点全局缓存 # set_global_cache 开启或关闭反向代理站点的全局代理缓存(静态资源缓存)。 - **路由**:`POST /mod/proxy/com/set_global_cache/stype` - **action**:`set_global_cache` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | cache_status/d | 是 | int | 1 开启,0 关闭 | | expires | 否 | string | 过期时间,默认 `1d`(如 `12h`, `30m`) | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/set_global_cache/stype" \ -d "site_name=example.com&cache_status=1&expires=1d" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/GetRewriteList.md.txt # GetRewriteList > 获取伪静态规则模板列表 # GetRewriteList 获取可用的伪静态(URL 重写)规则模板列表,用于 Nginx/Apache 的 URL 美化。 - **路由**:`POST /site` - **action**:`GetRewriteList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetRewriteList` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | rewrite | Array | 可用模板名列表(`0.当前` 表示当前使用的规则) | | default_list | Array | Web 服务器默认支持的模板名列表 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=GetRewriteList&siteName=testapi.bt.local ``` ### 响应 ```json { "rewrite": ["0.当前", "EduSoho", "EmpireCMS", "dedecms", "discuz", "drupal", "ecshop", "laravel5", "wordpress", "default"], "default_list": ["default"] } ``` --- source: https://docs.bt.cn/api/ssl/get_cert_info.md.txt # get_cert_info > 获取单个已保存证书的详细信息 # get_cert_info 获取证书夹中指定证书的完整信息。 - **路由**:`POST /ssl` - **action**:`get_cert_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_cert_info` | | ssl_hash | 是 | String | 证书的 hash 值(通过 `get_cert_list` 获取) | ## 示例 ```json {"id": 2, "hash": "6da02a66...", "dns": ["dnstest.cc"], "info": {"issuer": "R13", "notAfter": "2026-08-21"}} ``` ## 相关接口 - [get_cert_list](./get_cert_list.md) — 证书列表 --- source: https://docs.bt.cn/api/system/GetAllInfo.md.txt # GetAllInfo > 获取系统全部信息概览(CPU、内存、负载、网络、磁盘) # GetAllInfo 聚合返回系统全部信息概览。 - **路由**:`POST /system` - **action**:`GetAllInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetAllInfo` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | load_average | Object | 负载信息(同 GetLoadAverage) | | title | String | 面板标题 | | network | Object | 网络流量(同 GetNetWorkApi) | | cpu | Array | CPU 信息(同 GetCpuInfo) | | time | String | 系统运行时间 | | system | String | 操作系统版本 | | mem | Object | 内存信息(同 GetMemInfo) | | version | String | 面板版本 | | iostat | Object | 磁盘 IO 信息 | | disk | Array | 磁盘分区信息 | ## 示例 ### 响应 ```json { "load_average": {"one": 0.15, "five": 0.08, "fifteen": 0.02, "max": 4, "limit": 4, "safe": 3.0}, "title": "宝塔面板", "network": {"upTotal": 1000000, "downTotal": 5000000, "up": 10.5, "down": 50.2}, "cpu": [12.5, 2, [15.0, 10.0], "Intel...", 1, 1], "time": "0分钟", "system": "Debian GNU/Linux 13 x86_64(Py3.7.16)", "mem": {"memTotal": 3901, "memFree": 2918, "memRealUsed": 623}, "version": "11.7.0" } ``` --- source: https://docs.bt.cn/api/system/GetNetWorkApi.md.txt # GetNetWorkApi > 获取实时网络流量(API兼容封装) # GetNetWorkApi 与 [GetNetWork](./GetNetWork.md) 行为相同,获取实时网络流量和综合系统数据。 - **路由**:`POST /system` - **action**:`GetNetWorkApi` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetNetWorkApi` | ## 输出 返回 `network`、`upTotal`、`downTotal`、`up`、`down` 等字段。详见 [GetNetWork](./GetNetWork.md)。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | --- source: https://docs.bt.cn/btclaw/day10.md.txt # Day 10:OpenClaw 龙虾长脑子了——记忆模块 MEMORY.md > 宝塔面板(BT Panel)OpenClaw 龙虾 AI 助手系列 Day 10:搞定 OpenClaw 记忆模块 MEMORY.md,让龙虾按规则记住关键信息、忘掉过期内容,构建可持续进化的运维 AI 助手。 # Day 10:龙虾终于长脑子了 — 记忆模块 **发布日期:** 2026-04-07 **养成状态:** 🦞 龙虾成熟期 **今日花费:** ¥0 **预计耗时:** 5 分钟 --- > **想解锁更多玩法?** 欢迎加入 [OpenClaw 宝塔交流群](https://qm.qq.com/q/yIPut3f0FU),和大伙一起交流养 🦞 心得! ## 📖 故事:龙虾你怎么又忘了? 养了 10 天龙虾,越来越顺手。 但今天出事了——早上让它完善昨天的方案,它问"啥方案?"。 我说昨天聊了一小时那个商业证书自动续签的方案啊。 它说:"主人,每次会话结束我就重新开始了……" 我才意识到一个问题:这龙虾没长脑子。 去翻了翻文档,发现 OpenClaw 有个 MEMORY.md 文件,专门存长期记忆。还有个 memory 目录,可以记每日日志。 原来龙虾的"脑子"是外置的,得我主动让它记。 5 分钟后—— ``` 我:把我的时区是 Asia/Shanghai 记到 MEMORY.md 龙虾:好的,已记录。 我:把昨天聊的商业证书方案要点记到今天的 memory 里 龙虾:已记录到 memory/2026-04-07.md ``` 这下安心了。以后重要的东西让它记下来就行。 --- ## 🎯 今天只做一件事 **搞定记忆模块,让龙虾该记的记、该忘的忘。** **预计耗时:** 5 分钟 --- ## 🧠 两个"脑子" | 文件 | 啥用 | 谁管 | |------|------|------| | `MEMORY.md` | 长期记忆 | 你说了算 | | `memory/日期.md` | 每日流水账 | 龙虾自己写 | --- ## 🔧 三句话就够了 ### 1️⃣ 记住重要的事 ``` 把我的时区是 Asia/Shanghai 记到 MEMORY.md ``` ### 2️⃣ 回忆过去 ``` 帮我查查上周我们聊了什么 ``` ### 3️⃣ 忘记某件事 ``` 把 XXX 从 MEMORY.md 里删掉 ``` --- ## 📁 你的龙虾目录 ``` 你的龙虾/ ├── MEMORY.md ← 长期记忆 ├── memory/ ← 每日日志 │ ├── 2026-04-06.md │ └── 2026-04-07.md ├── SOUL.md ← 龙虾性格 └── USER.md ← 你的资料 ``` --- ## 🚀 一键养成按钮 ``` 帮我创建 MEMORY.md,记录:1)我叫主人 2)喜欢简体中文短回复 3)讨厌废话 ``` --- ## ✅ 完成检查 - [ ] 让龙虾记住了一条信息 - [ ] 让龙虾回忆了一次之前的对话 - [ ] 查看了自己的 MEMORY.md **都完成了?** 龙虾现在有脑子了!🎉 --- ## 🎯 明天继续 明天学**定时任务记忆**——让龙虾记住你设的所有提醒,自动管理。 --- ## 📝 常见问题 **Q:记忆会丢吗?** 不会。只要 MEMORY.md 在,记忆就在。建议定期备份。 **Q:啥都往里塞会怎样?** 文件太大,龙虾启动变慢。控制在 10KB 以内。 **Q:密码能记吗?** 别记。密码明文存文件不安全。 --- *最后更新:2026-04-07* *作者:主包* *状态:Day 10/∞* *字数:约 400 字* *阅读时间:约 1 分钟* > 🦞 **龙虾碎碎念:** 主人,我有脑子了!虽然是外置的,但至少不会再问"啥方案"了。以后你说"记下来",我就记;你说"忘了吧",我就删。🦞✨ --- source: https://docs.bt.cn/getting-started/uninstall-panel.md.txt # 安全卸载宝塔面板 > 介绍如何使用官方脚本安全卸载宝塔面板(BT Panel),包含面板本体、Nginx/MySQL/PHP 等环境及项目文件的清理顺序与注意事项,避免留下残余进程。 # 如何卸载宝塔面板 > 卸载面板是破坏性操作。请在执行前完整备份网站、数据库与面板配置,请谨慎操作。 > **警告** 卸载宝塔面板可能影响您的网站和数据库数据。请确保您已备份所有重要数据,并了解卸载操作的后果,建议提前在服务器厂商处创建快照备份。 ::: ## 操作步骤 1. 通过 SSH 或面板终端登录到您的服务器,执行以下命令卸载宝塔面板: ```bash wget https://download.bt.cn/install/bt-uninstall.sh bash bt-uninstall.sh ``` 2. 根据提示输入1或2后按回车清理面板或环境 (若输入其他值或不输入直接回车则只卸载面板) > **说明** - 输入1:卸载面板 - 输入2:卸载面板并清理面板相关环境(可能影响网站、数据库等数据) ::: 3. 等待卸载完成,期间请勿关闭终端或断开连接。卸载完成后,可通过 `bt` 命令验证面板是否已成功卸载。 --- source: https://docs.bt.cn/practical-tutorials/create-from-git-website.md.txt # 克隆 Git 仓库创建网站并实现自动更新 > 介绍如何在宝塔面板(BT Panel)中使用 Git 仓库克隆创建网站并配置 Webhook,实现代码推送后站点自动更新,适用于 GitHub、GitLab、Gitee 仓库。 # 克隆 Git 仓库创建网站并实现自动更新 本教程以 GitHub 为例,介绍如何在宝塔面板中克隆 Git 仓库创建网站,并配置 Webhook 实现仓库更新时自动同步网站内容。 ## 克隆仓库并创建网站 ### 1. 复制宝塔面板的 SSH Key 并添加到 GitHub 进入 **网站** → **添加站点** → **Git 创建**,复制面板生成的 SSH Key。 ![复制 SSH Key](https://docs.bt.cn/img/practical-tutorials/git-webhook/copysshkey.png) :::warning 注意 首次使用请按照提示安装 Webhook 插件。 ::: ### 2. 登录 GitHub 添加 SSH Key 在 GitHub 中,点击 **头像** → **Settings** → **SSH and GPG keys** → **New SSH key** ![添加 SSH Key](https://docs.bt.cn/img/practical-tutorials/git-webhook/addsshkey.png) ![添加 SSH Key 详情](https://docs.bt.cn/img/practical-tutorials/git-webhook/addsshkey-2.png) - 输入一个 `Title`(标题)用于标识该密钥 - 将从宝塔面板复制的 SSH Key 粘贴到 `Key` 字段中 ### 3. 创建新仓库或选择已有仓库 在 GitHub 上创建一个新仓库,或者使用已有的仓库。 ### 4. 复制仓库 URL 可以选择 `HTTPS` 或 `SSH` 方式克隆仓库。 :::tip 注意 记下您需要的 `分支名称`(如 main),稍后创建网站时需要选择正确的分支。 ::: ![复制仓库地址](https://docs.bt.cn/img/practical-tutorials/git-webhook/copy-repository.png) ### 5. 在宝塔面板中创建网站并克隆仓库 进入 **网站** → **添加站点** → **Git 创建** - 设置网站目录(如 `/www/wwwroot/your_site`),**注意:该目录必须为空** - 粘贴仓库 URL(如 `https://github.com/username/repository.git` 或 `git@github.com:username/repository.git`) - 选择分支名称(如 `main`) ![Git 创建网站](https://docs.bt.cn/img/practical-tutorials/git-webhook/add-site-for-git.png) 确认后,网站将自动创建并克隆仓库内容。 :::warning 故障排查 如果克隆过程中出现错误,请根据屏幕提示排查问题(如 SSH Key 配置错误、仓库 URL 无效、分支名称错误、网络连接问题等)。 ::: ## 配置 Webhook 实现自动更新 当仓库更新时,可以通过配置 Webhook 触发指定脚本执行,自动将最新代码同步到网站目录,实现网站自动更新。 :::info 提示 使用 Git 创建 功能会默认在软件商店安装 Webhook 插件。 ::: ### 1. 在宝塔面板中添加部署脚本 找到通过 Git 创建的网站,点击 **设置** 进入 **Git 管理**,然后在 **仓库** 中添加脚本。 **Git 管理** → **仓库** - 输入脚本内容,例如: ```bash pnpm i pnpm run docs:build \cp -r .vitepress/dist dist ``` ![添加脚本](https://docs.bt.cn/img/practical-tutorials/git-webhook/add-script.png) 添加完成后,点击 **保存**。 ### 2. 复制 Webhook URL **Git 管理** → **仓库** ![复制 Webhook URL](https://docs.bt.cn/img/practical-tutorials/git-webhook/copy-webhook.png) ### 3. 在 GitHub 仓库设置中添加 Webhook 进入 GitHub 仓库的 **Settings** → **Webhooks** → **Add webhook** ![GitHub 设置 Webhook](https://docs.bt.cn/img/practical-tutorials/git-webhook/git-set-webhook.png) 填写 Webhook 配置: - **Payload URL**:粘贴从宝塔面板复制的 Webhook URL - **Content type**:选择 `application/json` - **SSL verification**:选择 `Disable`(如果您的面板没有配置 SSL) ![Webhook 配置详情](https://docs.bt.cn/img/practical-tutorials/git-webhook/git-set-webhook-2.png) ### 5. 测试 Webhook 自动更新功能 添加 Webhook 后,测试自动更新功能: 1. 修改仓库中的文件并提交(commit)到 GitHub 2. 提交操作会触发 Webhook 执行指定脚本 **触发成功:** ![Webhook 触发成功](https://docs.bt.cn/img/practical-tutorials/git-webhook/webhook-success.png) **脚本执行结果:** ![脚本执行结果](https://docs.bt.cn/img/practical-tutorials/git-webhook/webhook-result.png) :::warning 故障排查 如果网站内容未更新,请检查: - 宝塔面板 Git 管理中的 **Webhook 日志** - GitHub 仓库 Webhooks 页面的 **Recent deliveries** 根据日志信息排查问题(如 Webhook 请求失败、脚本执行错误等)。 ::: --- source: https://docs.bt.cn/purchase-guides/package-service/bt-app.md.txt # 堡塔 APP(宝塔手机客户端) > 堡塔 APP 是宝塔面板(BT Panel)官方手机客户端,支持 iOS 与 Android 两端,可随时随地管理服务器站点、数据库、FTP、文件、计划任务与服务,并实时查看 CPU、内存、磁盘等资源监控。 # 堡塔 APP 使用手机随时随地管理您的服务器,支持苹果和安卓 ## 站点管理 点击添加站点就能自助搭建你的网站,还能建立FTP,数据库等。 ## 数据库管理 添加数据库,输入用户名即可创建Mysql数据库,在线修改【root密码】。 ## 监控管理 实时监控服务器状态,CPU、内存、磁盘、网络等数据一目了然。 ## 安全 随时查看防火墙端口状态以及面板操作日志。 ## 计划任务 设置定期备份任务,做好数据备份工作。 ![堡塔 APP](https://docs.bt.cn/img/purchase-guides/bt-app.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/php.md.txt # 站点 PHP 环境配置 > 在宝塔面板为站点切换 PHP 版本、开启 Session 隔离、配置站点防护,实时监控木马与漏洞入侵行为,支持多 PHP 版本并行与纯静态运行。 # PHP 本文将介绍如何配置站点 PHP 环境。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`PHP`,进入PHP配置页面。 ![PHP](https://docs.bt.cn/img/user-guide/site/php.png) ### PHP版本切换 可以通过修改当前站点指定的PHP运行版本,合适安装多个PHP版本的用户。支持自定义PHP的连接配置信息来运行,也支持修改该站点为纯静态站点,不通过PHP服务运行。 PHP7不支持mysql扩展,默认安装mysqli以及mysql-pdo。 ### Session隔离 Session隔离是指在一个多用户的系统中,为每个用户提供独立的会话环境,使得不同用户之间的数据和操作互不干扰。在Web应用程序中,Session隔离通常指对于每个客户端请求,服务器会创建一个独立的Session对象,该对象保存着与该客户端相关的所有信息,如登录状态、用户角色、浏览历史等。这样可以保证不同用户之间的数据不会互相冲突,同时也可以提高应用程序的安全性。 - 开启后将会把session文件存放到独立文件夹,不与其他站点公用存储位置 - 若您在PHP配置中将session保存到memcache/redis等缓存器时,请不要开启此选项 ### 站点防护 基于PHP内核的监控工具,实时监控网站木马、漏洞等其他入侵行为,发现木马支持自动隔离 安全告警默认会监视当前网站访问非当前网站文件的行为(例:你的站点A.com访问了站点B.com的文件或者目录),通过添加监视器路径,当路径被访问时发送告警 --- source: https://docs.bt.cn/api/crontab/get_crontab_service.md.txt # get_crontab_service > 获取计划任务服务(crond)的运行状态 # get_crontab_service 检查系统 crond 服务的运行状态。 - **路由**:`POST /crontab` - **action**:`get_crontab_service` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 查询成功 | | data | Object | `{"status": 1}` 运行中 / `{"status": 0}` 已停止 | ## 示例 ```json {"status": true, "msg": "", "data": {"status": 0}} ``` --- source: https://docs.bt.cn/api/database/get_database_table.md.txt # get_database_table > 获取指定数据库中所有表的列表 # get_database_table 获取指定数据库中所有表的列表(执行 `SHOW TABLES`)。 - **路由**:`POST /database` - **action**:`get_database_table` - **返回类型**:Array(二维数组) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_database_table` | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | | name | 是 | String | 数据库名 | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=get_database_table&sid=0&name=mysql ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json [["columns_priv"], ["db"], ["event"], ["func"], ["help_topic"], ["user"]] ``` --- source: https://docs.bt.cn/api/database/GetMysqlCommands.md.txt # GetMysqlCommands > 获取 MySQL 支持的命令类型列表 # GetMysqlCommands 获取 MySQL 支持的 SQL 命令类型列表。 - **路由**:`POST /database` - **action**:`GetMysqlCommands` - **返回类型**:Array(字符串数组) ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetMysqlCommands` | ## 输出参数 返回字符串数组,每项为 MySQL 命令名称。 ## 示例 ```json ["SELECT", "INSERT", "UPDATE", "DELETE", "REPLACE", "CREATE DATABASE", "DROP DATABASE", "CREATE TABLE", "DROP TABLE", "ALTER TABLE", "CREATE INDEX", "DROP INDEX", "ALTER DATABASE", "TRUNCATE TABLE"] ``` --- source: https://docs.bt.cn/api/docker/get_cmd_log.md.txt # get_cmd_log > 获取容器执行命令的日志 # get_cmd_log 获取指定容器内执行命令的实时日志输出。 - **路由**:`GET /btdocker/container/get_cmd_log` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `true` 表示日志就绪 | ## 示例 ``` true ``` --- source: https://docs.bt.cn/api/files/CheckExistsFiles.md.txt # CheckExistsFiles > 检查文件是否已存在于目标路径 # CheckExistsFiles 检查源文件是否与目标路径下已有文件重名,用于上传/复制前确认。 - **路由**:`POST /files` - **action**:`CheckExistsFiles` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CheckExistsFiles` | | dfile | 是 | String | 目标目录路径 | | filename | 否 | String | 要检查的单个文件名。不传则检查 session 中勾选的全部文件 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 已存在的文件名列表,空数组 `[]` 表示无冲突 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CheckExistsFiles&dfile=/www/wwwroot&filename=index.html ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/ftp/ModifyFtpUserAccess.md.txt # ModifyFtpUserAccess > 修改 FTP 用户的带宽和存储限制 # ModifyFtpUserAccess 修改指定 FTP 用户的下载带宽、上传带宽和最大存储空间限制。 - **路由**:`POST /ftp` - **action**:`ModifyFtpUserAccess` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ModifyFtpUserAccess` | | username | 是 | String | FTP 用户名 | | download_bandwidth | 否 | String | 下载带宽限制,如 `100KB`、`1MB`,默认 `0KB` | | upload_bandwidth | 否 | String | 上传带宽限制,默认 `0KB` | | max_size | 否 | String | 最大存储空间,如 `100MB`、`1GB`,默认 `0MB` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | ## 示例 ### 请求 ``` POST /ftp HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=ModifyFtpUserAccess&username=err_test&download_bandwidth=100KB&upload_bandwidth=50KB&max_size=100MB ``` ### 响应 ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/java/project_domain_list.md.txt # project_domain_list > 获取 Java 项目绑定的域名列表 # project_domain_list 获取指定 Java 项目已绑定的域名和端口映射。 - **路由**:`GET /mod/java/project/project_domain_list/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "ok", "data": []} ``` --- source: https://docs.bt.cn/api/proxy/set_global_websocket.md.txt # set_global_websocket > 设置反向代理站点 WebSocket 支持 # set_global_websocket 开启或关闭反向代理站点的 WebSocket 协议支持。 - **路由**:`POST /mod/proxy/com/set_global_websocket/stype` - **action**:`set_global_websocket` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | websocket_status/d | 是 | int | 1 开启,0 关闭 | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/set_global_websocket/stype" \ -d "site_name=example.com&websocket_status=1" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/get_ssl_protocol.md.txt # get_ssl_protocol > 获取网站 TLS 协议版本配置 # get_ssl_protocol / set_ssl_protocol 获取或设置网站的 TLS 协议版本开关。 - **路由**:`POST /site` - **action**:`get_ssl_protocol` 或 `set_ssl_protocol` ## get_ssl_protocol ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_ssl_protocol` | ### 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | TLSv1 | Boolean | TLS 1.0 开关 | | TLSv1.1 | Boolean | TLS 1.1 开关 | | TLSv1.2 | Boolean | TLS 1.2 开关 | | TLSv1.3 | Boolean | TLS 1.3 开关 | ### 响应 ```json {"TLSv1": false, "TLSv1.1": true, "TLSv1.2": true, "TLSv1.3": true} ``` ## set_ssl_protocol ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `set_ssl_protocol` | | TLSv1 | 否 | String | `"true"` / `"false"` | | TLSv1.1 | 否 | String | `"true"` / `"false"` | | TLSv1.2 | 否 | String | `"true"` / `"false"` | | TLSv1.3 | 否 | String | `"true"` / `"false"` | ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/ssl/GetSiteDomain.md.txt # GetSiteDomain > 获取可用于 SSL 证书申请的站点域名列表 # GetSiteDomain 获取面板中所有可用于申请 SSL 证书的域名列表。 - **路由**:`POST /ssl` - **action**:`GetSiteDomain` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | all | Array\ | 所有域名 | | site | Array\ | 已关联站点的域名 | ## 示例 ```json {"all": ["testapi.bt.local"], "site": []} ``` --- source: https://docs.bt.cn/api/system/ClearSystem.md.txt # ClearSystem > 清理系统垃圾文件(临时文件、邮件队列等) # ClearSystem 清理系统垃圾文件和临时数据。 - **路由**:`POST /system` - **action**:`ClearSystem` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ClearSystem` | ## 输出参数 返回数组 `[清理文件数量, 清理字节数]`。 ## 示例 ### 响应 ```json [0, 0] ``` --- source: https://docs.bt.cn/getting-started/bt-command-line-tool.md.txt # 宝塔面板命令行工具使用指南 > 宝塔面板(BT Panel)提供强大的 bt 命令行工具,可在 SSH 终端快速完成面板重启、密码修改、端口调整、防火墙释放、账号重置与面板修复等运维操作,无需登录后台。 # 宝塔面板命令行工具使用指南 宝塔面板提供了强大的命令行工具 `bt`,可在 SSH 终端中快速执行常用的面板管理操作,无需登录面板后台。 :::tip 快速开始 **第一步:** 通过 SSH 连接到服务器 **第二步:** 在终端中输入 `bt` 命令并按回车 **第三步:** 根据菜单提示,输入对应的数字编号执行操作 ::: ## 使用方法 **首先**,通过 SSH 连接到您的服务器,然后在终端中输入以下命令: ```bash bt ``` 执行 `bt` 命令后,会显示如下交互式菜单: ``` ==================================宝塔面板命令行==================================== (1) 重启面板服务 (8) 改面板端口 | (2) 停止面板服务 (9) 清除面板缓存 | (3) 启动面板服务 (10) 清除登录限制 | (4) 重载面板服务 (11) 设置是否开启IP + User-Agent验证 | (5) 修改面板密码 (12) 取消域名绑定限制 | (6) 修改面板用户名 (13) 取消IP访问限制 | (7) 强制修改MySQL密码 (14) 查看面板默认信息 | (22) 显示面板错误日志 (15) 清理系统垃圾 | (23) 关闭BasicAuth认证 (16) 修复面板(安装当前版本的最新bug修复包) | (24) 关闭动态口令认证 (17) 设置日志切割是否压缩 | (25) 设置是否保存文件历史副本 (18) 设置是否自动备份面板 | (26) 关闭面板ssl (19) 关闭面板登录地区限制 | (28) 修改面板安全入口 (29) 取消访问设备验证 | (30) 取消访问UA验证 (32) 开启/关闭【80、443】端口访问面板 | (34) 更新面板(更新到最新版本) | (0) 取消 | ==================================================================================== ``` 输入对应的数字编号并按回车即可执行相应操作。 ## 常用命令说明 ### 面板服务管理 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 1` | 重启面板服务 | 重启宝塔面板服务 | | `bt 2` | 停止面板服务 | 停止宝塔面板服务 | | `bt 3` | 启动面板服务 | 启动宝塔面板服务 | | `bt 4` | 重载面板服务 | 重载面板配置,不中断服务 | ### 账户与密码 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 5` | 修改面板密码 | 修改面板登录密码 | | `bt 6` | 修改面板用户名 | 修改面板登录用户名 | | `bt 7` | 强制修改MySQL密码 | 强制重置 MySQL root 密码 | | `bt 14` | 查看面板默认信息 | 查看面板地址、用户名、密码等信息 | ### 访问设置 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 8` | 改面板端口 | 修改面板访问端口 | | `bt 28` | 修改面板安全入口 | 修改面板安全入口路径 | | `bt 32` | 开启/关闭 80、443 端口访问面板 | 控制是否允许通过 80/443 端口访问面板 | ### 安全设置 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 10` | 清除登录限制 | 清除登录失败次数限制 | | `bt 11` | 设置 IP + User-Agent 验证 | 开启或关闭 IP 和 UA 双重验证 | | `bt 12` | 取消域名绑定限制 | 取消面板域名绑定 | | `bt 13` | 取消 IP 访问限制 | 取消面板 IP 访问白名单限制 | | `bt 19` | 关闭面板登录地区限制 | 关闭基于地区的登录限制 | | `bt 23` | 关闭 BasicAuth 认证 | 关闭 HTTP 基础认证 | | `bt 24` | 关闭动态口令认证 | 关闭二次验证(2FA) | | `bt 26` | 关闭面板 SSL | 关闭面板 HTTPS 访问 | | `bt 29` | 取消访问设备验证 | 取消设备绑定验证 | | `bt 30` | 取消访问 UA 验证 | 取消 User-Agent 验证 | ### 维护与修复 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 9` | 清除面板缓存 | 清除面板运行缓存 | | `bt 15` | 清理系统垃圾 | 清理系统临时文件和日志 | | `bt 16` | 修复面板 | 安装当前版本的最新 bug 修复包 | | `bt 22` | 显示面板错误日志 | 查看面板错误日志 | | `bt 34` | 更新面板 | 更新面板到最新版本 | | `bt 36` | 磁盘清理工具 | 扫描并清理日志、缓存、临时文件 | ### 其他设置 | 命令 | 功能 | 说明 | | --- | --- | --- | | `bt 17` | 设置日志切割是否压缩 | 控制日志切割后是否压缩 | | `bt 18` | 设置是否自动备份面板 | 开启或关闭面板自动备份 | | `bt 25` | 设置是否保存文件历史副本 | 控制文件编辑时是否保存历史版本 | ## 快捷命令 `bt` 命令支持直接在终端执行,无需进入交互菜单: ```bash bt 14 # 查看面板默认信息 bt 1 # 重启面板 bt 16 # 修复面板 bt 34 # 更新面板 bt 5 # 修改面板密码 ``` ## 常见使用场景 ### 忘记面板密码 **操作步骤:** 1. SSH 连接到服务器 2. 输入 `bt` 命令进入菜单 3. 输入编号 `5` 并按回车 4. 按提示输入新密码 或直接执行: ```bash bt 5 ``` ### 忘记面板地址或安全入口 **操作步骤:** 1. SSH 连接到服务器 2. 输入 `bt` 命令进入菜单 3. 输入编号 `14` 并按回车 或直接执行: ```bash bt 14 ``` 会显示完整的面板访问地址、用户名和密码。 ### 面板无法访问 **操作步骤:** 1. SSH 连接到服务器 2. 输入 `bt` 命令进入菜单 3. 依次尝试以下操作: ```bash # 1. 先尝试重启面板(输入编号 1) bt 1 # 2. 如果还是无法访问,查看错误日志(输入编号 22) bt 22 # 3. 尝试修复面板(输入编号 16) bt 16 ``` ### 被安全设置锁定 **操作步骤:** 1. SSH 连接到服务器 2. 输入 `bt` 命令进入菜单 3. 根据情况选择对应编号: ```bash # 清除登录限制(输入编号 10) bt 10 # 取消 IP 访问限制(输入编号 13) bt 13 # 关闭二次验证(输入编号 24) bt 24 ``` ## 磁盘清理工具(bt 36) :::info 新功能 该功能在宝塔面板最新版本中新增,用于解决磁盘空间占用过高的问题。 ::: `bt 36` 是一个专门的磁盘清理工具,可以扫描并清理服务器上的日志、缓存和临时文件,帮助释放磁盘空间。清理操作不会影响正常项目运行。 ### 进入磁盘清理工具 ```bash bt ``` 执行后会显示菜单,输入 `36` 进入磁盘清理工具: ![磁盘清理菜单](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205094424867.png) :::tip 提示 首次进入需要手动输入 `4` 进入磁盘清理选项。 ::: ![选择磁盘清理](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095109366.png) ### 磁盘清理功能说明 磁盘清理工具提供三个主要功能: ![功能菜单](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095232868.png) #### 1. 扫描磁盘空间 扫描服务器磁盘,分析可清理的文件类型和大小。 **操作步骤:** 1. 在磁盘清理菜单中输入 `1` 2. 等待扫描完成 **扫描内容包括:** - 面板日志文件 - 系统日志文件 - 缓存文件 - 临时文件 ![扫描结果](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095310917.png) :::info 说明 扫描的内容不包括网站文件和项目数据,清理这些文件不会影响正常业务运行。 ::: #### 2. 查看扫描结果 查看上一次扫描得到的日志和缓存统计结果。 **操作步骤:** 1. 在磁盘清理菜单中输入 `2` 2. 查看扫描结果详情 ![查看结果](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095430227.png) #### 3. 清理日志/缓存/临时文件 根据扫描结果清理指定类型的文件。 :::warning 前提条件 执行清理前必须先执行"扫描磁盘空间"操作,否则无法清理。 ::: **操作步骤:** 1. 在磁盘清理菜单中输入 `3` 2. 根据扫描结果,选择要清理的项目: - 输入对应的编号清理指定类型 - 输入 `all` 清理所有可清理内容 ![开始清理](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095450884.png) **清理示例:** ![清理过程](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095613958.png) ![清理完成](https://docs.bt.cn/img/getting-started/bt-command-line-tool/image-20260205095627168.png) ### 使用场景 **适合使用 bt 36 的情况:** 1. **磁盘空间不足** - 磁盘使用率超过 80% - 需要快速释放空间 - 不确定哪些文件占用空间 2. **定期维护** - 服务器运行时间较长 - 日志文件累积过多 - 定期清理系统缓存 3. **排查问题** - 查找磁盘占用原因 - 分析可清理的文件类型 - 了解各类日志的大小 ### 清理频率建议 - **高负载服务器**:建议每周清理一次 - **普通服务器**:建议每月清理一次 - **低负载服务器**:建议每季度清理一次 :::tip 最佳实践 建议先扫描查看可清理的空间大小,再决定是否清理。如果可清理空间较小(小于 100MB),可以暂不清理。 ::: ## 注意事项 - 执行 `bt` 命令需要 **root 权限** - 修改端口、安全入口后,需要在防火墙中放行新端口 - 关闭安全验证功能会降低面板安全性,建议问题解决后重新开启 --- source: https://docs.bt.cn/practical-tutorials/acme-sh-panel-ssl.md.txt # 使用 acme.sh 为宝塔面板配置免费 IP HTTPS 证书(面板 SSL) > 完整教程:在 Linux 服务器上通过 acme.sh 为宝塔面板申请与续签基于 IP 地址(无需域名)的免费 HTTPS 证书,并自动写入面板 SSL 配置,全面提升面板登录链路的安全性。 # 使用 acme.sh 为宝塔面板配置免费 IP HTTPS 证书(面板 SSL) 长期以来,宝塔面板自身提供的 HTTPS 访问默认使用的是自签名证书。这种证书虽然可以实现加密传输,但由于并未被浏览器和操作系统的信任根所收录,在访问面板时通常会出现「证书不受信任」「连接不安全」等安全提示,需要手动确认后才能继续访问。在实际运维场景中,这类提示比较影响使用体验,随着 Let’s Encrypt 正式支持免费 IP HTTPS 证书,即使不具备域名条件,也可以为基于 IP 访问的服务签发浏览器可信的证书。这使得为宝塔面板本身配置一个受信任的 HTTPS 证书成为可能。 本文将介绍如何通过 acme.sh 为宝塔面板自动申请并部署 免费的 IP HTTPS 证书,替换默认的自签名证书,从而实现浏览器可信的面板 HTTPS 访问。 :::warning 注意 - Let’s Encrypt申请的 IP 证书有效期最长仅有 160 小时,具体请参考 [Let’s Encrypt 官方说明](https://letsencrypt.org/2025/07/01/issuing-our-first-ip-address-certificate) - 面板后期也会支持从面板直接申请Let’s Encrypt IP 证书,敬请期待。如您动手能力较差,建议等待官方功能发布 ::: ## 操作步骤 ### 安装 acme.sh 1. 通过 SSH 或面板终端登录到您的服务器,执行以下命令安装 acme.sh: ```bash curl https://get.acme.sh | sh -s email=my@example.com ``` 请将 `my@example.com` 替换为您的真实邮箱地址。 2. 安装完成后,执行以下命令使 acme.sh 生效,也可重新进入终端使其生效: ```bash source ~/.bashrc ``` ![使 acme.sh 生效](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/acme-sh-source.png) 3. 执行以下命令,确认 acme.sh 安装成功,预期可以看到版本号输出: ```bash acme.sh --version ``` ![确认 acme.sh 安装成功](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/acme-sh-version.png) 4. 执行以下命令,切换 acme.sh 默认 的 CA 为 Let’s Encrypt: ```bash acme.sh --set-default-ca --server letsencrypt ``` 5. 至此,acme.sh 安装完成。 ### 申请 IP 证书 1. 在宝塔面板中创建一个新的站点,域名填写服务器的公网 IP 地址,其他选项根据需要配置,完成后点击【确定】。 ![创建 IP 站点](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/create-ip-site.png) 2. 在终端中执行以下命令,使用 acme.sh 申请 IP 证书,请将 `YOUR_IP_ADDRESS` 替换为您的服务器公网 IP 地址: ```bash acme.sh --issue --cert-profile shortlived --days 3 -d YOUR_IP_ADDRESS --webroot /www/wwwroot/YOUR_IP_ADDRESS/ ``` 例如: ```bash acme.sh --issue --cert-profile shortlived --days 3 -d 114.132.47.153 --webroot /www/wwwroot/114.132.47.153/ ``` ![申请 IP 证书](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/issue-ip-cert.png) 3. 申请成功后,执行以下命令为面板部署SSL证书: :::warning 注意 请使用独立的 SSH 终端窗口执行以下命令,不要使用面板终端,否则面板会因重启而中断当前操作。 ::: ```bash acme.sh --install-cert -d YOUR_IP_ADDRESS \ --key-file /www/server/panel/ssl/privateKey.pem \ --fullchain-file /www/server/panel/ssl/certificate.pem \ --reloadcmd "service bt restart" ``` 请将 `YOUR_IP_ADDRESS` 替换为您的服务器公网 IP 地址,例如: ```bash acme.sh --install-cert -d 114.132.47.153 \ --key-file /www/server/panel/ssl/privateKey.pem \ --fullchain-file /www/server/panel/ssl/certificate.pem \ --reloadcmd "service bt restart" ``` :::info 提示 - 使用前述命令前请确保已经在面板设置中开启了面板 SSL 功能(新安装面板通常已经默认开启),[如何开启宝塔面板 SSL 功能?](../user-guide/config/common/panel-ssl.md) - `--reloadcmd "service bt restart"` 参数用于在证书更新后自动重启宝塔面板服务,使新证书生效。 ::: ![部署 IP 证书到面板](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/install-ip-cert.png) 4. 至此,IP 证书已成功部署到宝塔面板,效果如下图所示: ![面板 SSL 证书部署成功](https://docs.bt.cn/img/practical-tutorials/acme-sh-panel-ssl/panel-ssl-success.png) --- source: https://docs.bt.cn/practical-tutorials/docker-dify-migration.md.txt # Dify 应用低版本迁移帮助 > 在宝塔面板(BT Panel)Docker 环境中将 Dify 从 1.1.0 升级迁移至 1.1.3 的完整步骤与注意事项,含数据备份、环境变量处理与迁移验证。 # Docker 应用 Dify 低版本迁移帮助 > 本文整理自宝塔论坛教程贴: > 【教程贴】Docker应用-Dify低版本迁移帮助 本文以从 Dify 1.1.0 升级至 1.1.3 为例,介绍如何在保留数据卷的前提下完成迁移。 ![版本说明示意](https://docs.bt.cn/img/common/bt-forum/dify-migration/103147qfh5h5uakqxoi10j.png) ## 前置说明 - 迁移前请先备份旧版本容器及其数据卷,避免误操作导致数据丢失。 - 安装新版本时注意端口不要冲突,保持与旧版本不同的暴露端口。 - 安装完成后先不要访问 Web 界面,确保容器日志正常且无报错。 ## 迁移步骤 1. 操作前先备份旧版本容器(建议在面板内或命令行执行备份)。 2. 从商店中拉取新版本 Dify(示例:从 1.1.0 升级至 1.1.3)。 ![应用商店拉取示意1](https://docs.bt.cn/img/common/bt-forum/dify-migration/102945wu86m6lbo6c2sqno.png) ![应用商店拉取示意2](https://docs.bt.cn/img/common/bt-forum/dify-migration/102945cwx5z4i5yeyxg3zl.png) 注意端口不要冲突,安装完成日志没有报错就行。 ![端口冲突示意1](https://docs.bt.cn/img/common/bt-forum/dify-migration/102835xmkt2ckcjuptcztw.png) ![端口冲突示意2](https://docs.bt.cn/img/common/bt-forum/dify-migration/102831zbvyary4mylwz6rl.png) 不要访问 Web 界面,日志正常容器正常就行。 3. 手动停止新版本 Dify 容器(保证复制时目标容器未占用数据卷)。 ![停止新版本容器](https://docs.bt.cn/img/common/bt-forum/dify-migration/102255jl1gql4h52yz222n.jpg) ![停止新版本 Dify 应用示意](https://docs.bt.cn/img/common/bt-forum/dify-migration/153220tdojn0pgpzz4tfpc.png) ![旧版本 Dify 应用示意](https://docs.bt.cn/img/common/bt-forum/dify-migration/153220y5kz6n66k1sdae1i.png) 4. 手动升级:停止掉新版本 Dify 应用后,进入终端执行数据迁移命令。 5. 复制旧版本的 `volumes` 目录到新版本的 `volumes` 目录: :::danger 迁移核心步骤(务必核对路径) - 这是迁移的关键操作,复制 `volumes` 数据卷决定是否保留数据。 - 请确保新版本容器处于停止状态(见第 3 步)。 - 命令前保留 `\`,避免被 shell alias 替换 `cp`。 - 路径为示例,需替换为你的实际安装路径;以容器挂载的 `volumes` 目录为准。 - 数据量大或权限复杂时,建议使用 `\cp -a` 或 `rsync -a` 保留权限与符号链接。 ::: ```bash # 命令格式为 # \cp -r 旧版本 Dify 目录/volumes 新版本 Dify 目录/ # 要替换成你自己的命令,注意命令前的 \ 不能少 \cp -r /www/dk_project/dk_app/dify_v190/dify_v190_HGHK/volumes \ /www/dk_project/dk_app/dify_v1100/dify_v1100_DFTk/ ``` - 验证复制结果:比较两个 `volumes` 目录的文件数与大小是否一致;如遇权限异常,尝试 `\cp -a` 或 `rsync -a` 重新复制。 5. 复制完成后,启动新版本 Dify 容器。 ![启动新版本容器](https://docs.bt.cn/img/common/bt-forum/dify-migration/102423y5ifk54mrfkrzkip.jpg) 6. 访问新版本预设端口,确认迁移成功(数据与配置应与旧版本一致)。 ![访问预设端口示意1](https://docs.bt.cn/img/common/bt-forum/dify-migration/102559krgzznn1el8gnt4x.jpg) ![访问预设端口示意2](https://docs.bt.cn/img/common/bt-forum/dify-migration/102606owpczbp5cy5wrw3c.jpg) ## 常见问题 - 安装或拉取镜像失败:可尝试配置镜像加速站。 - 新版本容器启动后不要立即访问 Web,先观察日志是否正常。 - 如果是云服务器,务必在安全组开放对应端口(勾选“允许外部访问”仅穿过系统防火墙,仍需放行安全组)。 :::info 无法正常安装/拉取镜像 如果无法正常安装或拉取镜像,请尝试设置 Docker 加速站: https://www.bt.cn/bbs/thread-134771-1-1.html ::: ## 原帖链接 - 宝塔论坛原文:https://www.bt.cn/bbs/thread-144888-1-1.html - Docker 加速站教程:https://www.bt.cn/bbs/thread-134771-1-1.html - 阿里云安全组放行:https://www.bt.cn/bbs/thread-75887-1-1.html - 腾讯云安全组放行:https://www.bt.cn/bbs/thread-61042-1-1.html --- source: https://docs.bt.cn/practical-tutorials/get-cloudflare-api-key.md.txt # 获取 Cloudflare API Key 与 API Token > 介绍如何在 Cloudflare 控制台获取 API Key 和 API Token,用于宝塔面板(BT Panel)SSL 证书自动化申请(DNS 验证)与 Cloudflare 插件接入配置。 # 获取 Cloudflare API Key 和 API Token 本教程介绍如何获取 Cloudflare 的 Global API Key 和 API Token,这些凭证在以下场景中需要使用: - **SSL 证书自动化申请**:使用 DNS 验证方式申请 Let's Encrypt 等证书时,需要通过 API 自动添加 DNS 记录 - **Cloudflare 插件配置**:宝塔面板的 Cloudflare 插件需要 API 凭证来管理 DNS 记录和其他功能 ## API Key 与 API Token 的区别 | 类型 | 权限范围 | 安全性 | 适用场景 | | --- | --- | --- | --- | | **Global API Key** | 账户下所有域名的完全访问权限 | 较低(权限过大) | 旧版集成、兼容性需求 | | **API Token** | 可自定义权限和域名范围 | 较高(最小权限原则) | 推荐使用,更安全 | :::tip 推荐 优先使用 **API Token**,可以限制权限范围,更加安全。只有在不支持 Token 的情况下才使用 Global API Key。 ::: ## 获取 Global API Key :::tip 说明 Global API Key 通常配合账号邮箱一起使用,如果您在面板功能中看到需要填写 **Email** 和 **API Key**两种信息,则表示需要使用 Global API Key。 ::: ### 1. 打开 API Tokens 页面 访问 [Cloudflare API Tokens](https://dash.cloudflare.com/profile/api-tokens) 页面并登录您的账户。 ### 2. 查看 Global API Key 在页面底部找到 **Global API Key** 部分,点击 **View**(查看)按钮。 ![查看 Global API Key 按钮](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/view-global-api-key.png) 系统可能会要求您完成进行验证。 ### 3. 复制 API Key 验证通过后,Global API Key 会显示出来,点击复制保存。 ![显示的 Global API Key](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/global-api-key.png) :::warning 安全提示 - Global API Key 拥有您账户下所有域名的完全控制权限 - 请妥善保管,不要泄露给他人 - 如果怀疑泄露,请立即在 Cloudflare 中重新生成 ::: ## 获取 API Token(推荐) :::tip 说明 如果您在面板功能中看到仅需要填写 **API Token(API 令牌)**,则表示需要使用 API Token。 ::: ### 1. 打开 API Tokens 页面 访问 [Cloudflare 帐户 API 令牌](https://dash.cloudflare.com/?to=/:account/api-tokens) 页面并登录您的账户。 ### 2. 创建 Token 点击 **Create Token**(创建令牌)按钮。 ![创建 API Token 按钮](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/create-api-token.png) ### 3. 选择模板或自定义 Cloudflare 提供了多个预设模板,我们选择: 选择 **Edit zone DNS(编辑区域 DNS)** 模板,或自定义配置: ![选择编辑区域 DNS 模板](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/select-dns-edit-template.png) ### 4. 设置 Token 名称和权限 为 Token 设置一个描述性的名称,如 `BaoTa-Panel-DNS`,并配置权限: ![设置 Token 名称和权限](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/set-token-name-permissions.png) - **Permissions(权限)**:选择 `Zone(区域)` 下的 `DNS`,操作权限选择 `Edit`(编辑) - **Zone Resources(区域资源)**:选择 `Include`(包含) → `Specific zone`(特定区域),然后选择您要管理的域名 - 其他选项保持默认,或根据需要调整 ::: info 说明 如您在插件中使用,建议选择 `Zone(区域)` 下的 `Zone(区域)`,操作权限选择 `Edit`(编辑),以确保插件功能完整。 ![设置 Zone 编辑权限](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/set-zone-edit-permissions.png) ::: ### 5. 创建并保存 Token 点击 **Continue to summary(继续以显示摘要)** ![Token 创建摘要](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/token-creation-summary.png) 确认信息无误后点击 **Create Token(创建令牌)**。 ![创建 API Token 按钮](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/create-api-token-button.png) :::danger 重要 Token 只会显示一次!请立即复制并安全保存。如果丢失,需要重新创建。 ![显示的 API Token](https://docs.bt.cn/img/practical-tutorials/get-cloudflare-api-key/displayed-api-token.png) ::: ## 在宝塔面板中使用 ### SSL 证书申请(DNS 验证) 1. 进入 **网站** → **SSL** → **Let's Encrypt** 2. 验证方式选择 **DNS 验证** 3. DNS 接口选择 **Cloudflare** 4. 填写: - **Cloudflare Email**:您的 Cloudflare 登录邮箱 - **API Key** 或 **API Token**:填写对应的凭证 ### Cloudflare 插件配置 1. 进入 **软件商店** → 安装 **Cloudflare** 插件 2. 打开插件设置 3. 填写 API 凭证: - 如使用 Global API Key:填写邮箱和 API Key - 如使用 API Token:直接填写 Token --- source: https://docs.bt.cn/purchase-guides/package-service/bt-enterprise-level-tamper-proof.md.txt # 堡塔企业级防篡改插件 > 宝塔面板(BT Panel)堡塔企业级防篡改(内核版),基于驱动型防护在文件被篡改前感知并阻止,保护站点内容安全,防止黑客非法修改网页、网站挂马等入侵行为。 # 堡塔企业级防篡改 内核版防篡改,用于保护站点内容安全,防止黑客非法修改网页、网站挂马等入侵行为。 ## 精准防护 基于驱动型防护,在文件未被篡改前感知并阻止。 ## 节省资源 TB量级的文件,秒开防篡改,不多占用服务器资源。 ## 灵活配置 可以根据进程、用户、用户组是否防护或者放行。 ![堡塔企业级防篡改](https://docs.bt.cn/img/purchase-guides/bt-enterprise-level-tamper-proof.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/redirect.md.txt # 网站 301/302 重定向配置 > 在宝塔面板为域名或路径添加 301 永久/302 临时重定向规则,支持是否保留 URI 参数,适用于域名迁移、SEO 跳转与多域名合并场景。 # 重定向 本文将介绍如何配置域名重定向规则。 重定向是一种在网络应用和系统操作中常用的技术手段,它主要用于将用户的请求从一个 URL 或资源重新引导到另一个 URL 或资源。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`重定向`,进入重定向配置页面。 ![重定向](https://docs.bt.cn/img/user-guide/site/redirect.png) 4. 点击`添加重定向`,添加重定向规则。 举个例子,假设你有一个网站,它的 URL 是 http://bt.cn/ ,现在你想要把他重定向到你的新的网站,新的网站URL是:https://www.bt.cn/ 这样设置后,每当我访问 http://bt.cn/ 的时候就会跳转到 https://www.bt.cn/ 了。 ![添加重定向](https://docs.bt.cn/img/user-guide/site/add-redirect.png) :::info[说明] - 重定向类型:表示访问选择的“域名”或输入的“路径”时将会重定向到指定 URL - 目标URL:可以填写你需要重定向到的站点,目标 URL 必须为可正常访问的 URL ,否则将返回错误 - 重定向方式:使用 301 表示永久重定向,使用 302 表示临时重定向 - 保留URI参数:表示重定向后访问的URL是否带有子路径或参数如设置访问 http://b.com/ - 重定向到 http://a.com 保留URI参数: http://b.com/1.html ---> http://a.com/1.html - 不保留 URL 参数:http://b.com/1.html ---> http://a.com/ ::: --- source: https://docs.bt.cn/api/crontab/GetDatabases.md.txt # GetDatabases > 获取可用于备份任务的数据库列表 # GetDatabases 获取面板中所有数据库及其表结构信息,用于配置数据库备份任务。 - **路由**:`POST /crontab` - **action**:`GetDatabases` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 数据库列表,每项含 `name`、`ps`、`table_list` | ## 示例 ```json [{"name": "bt_api_test_new", "ps": "API临时测试库", "table_list": [{"tb_name": "所有", "value": ""}]}] ``` --- source: https://docs.bt.cn/api/database/GetInfo.md.txt # GetInfo > 获取面板管理的数据库详情(数据大小、表数量) # GetInfo 获取面板 `databases` 表中指定数据库的详细信息(大小、表列表)。 - **路由**:`POST /database` - **action**:`GetInfo` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetInfo` | | db_name | 是 | String | 数据库名(必须在 `databases` 表中存在) | > 只能查询通过面板创建的数据库。MySQL 系统库(mysql、sys 等)不在面板管理范围内。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data_size | String | 数据库数据大小 | | database | String | 数据库名 | | tables | Array | 表列表 | ## 示例 ```json {"data_size": "0.00b", "database": "bt_doc_test", "tables": []} ``` --- source: https://docs.bt.cn/api/database/GetPushUser.md.txt # GetPushUser > 获取数据库消息推送用户列表 # GetPushUser 获取数据库相关消息推送的目标用户列表。 - **路由**:`POST /database` - **action**:`GetPushUser` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetPushUser` | ## 示例 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "ok", "data": [{"title": "本地服务器", "value": 0}]} ``` --- source: https://docs.bt.cn/api/docker/prune_image.md.txt # prune (镜像) > 清理所有无用的 Docker 镜像 # prune (镜像) 清理 Docker 宿主机上未被任何容器使用的悬空镜像。 - **路由**:`GET /btdocker/image/prune` ## 示例 ```json {"status": true, "msg": "清理成功!"} ``` --- source: https://docs.bt.cn/api/files/test_path.md.txt # test_path > 检测路径是否存在,返回路径类型信息 # test_path 检测指定路径是否存在,返回路径、类型(目录/文件)和存在状态。 - **路由**:`POST /files` - **action**:`test_path` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `test_path` | | path | 是 | String | 要检测的路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | path | String | 路径 | | is_dir | Boolean | `true` 为目录,`false` 为文件,`null` 为不存在 | | exists | Boolean | 路径是否存在 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=test_path&path=/www/wwwroot ``` ### 响应 ```json {"path": "/www/wwwroot", "is_dir": true, "exists": true} ``` --- source: https://docs.bt.cn/api/ftp/find_ftp.md.txt # find_ftp > 按 ID 查找 FTP 用户信息 # find_ftp 根据 FTP 用户 ID 查找用户详情。 - **路由**:`POST /ftp` - **action**:`find_ftp` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `find_ftp` | | id | 是 | Integer | FTP 用户 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | Array | 用户信息列表 | ## 示例 ```json {"status": true, "msg": []} ``` --- source: https://docs.bt.cn/api/java/config_file_list.md.txt # config_file_list > 获取 Java 项目的配置文件列表 # config_file_list 获取 Java 项目关联的配置文件列表。 - **路由**:`GET /mod/java/project/config_file_list/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "ok", "data": []} ``` --- source: https://docs.bt.cn/api/proxy/set_global_log.md.txt # set_global_log > 设置反向代理站点日志配置 # set_global_log 设置反向代理站点的全局日志类型。 - **路由**:`POST /mod/proxy/com/set_global_log/stype` - **action**:`set_global_log` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | log_type | 是 | string | 日志类型:`default`(默认路径), `file`(自定义路径), `rsyslog`, `off`(关闭) | | log_path | 条件 | string | `log_type=file` 或 `rsyslog` 时必填,日志文件路径或 rsyslog 主机 | ## 示例 ### 请求(关闭日志) ```bash curl -X POST ".../mod/proxy/com/set_global_log/stype" \ -d "site_name=example.com&log_type=off" ``` ### 请求(自定义文件路径) ```bash curl -X POST ".../mod/proxy/com/set_global_log/stype" \ -d "site_name=example.com&log_type=file&log_path=/var/log/nginx" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/get_https_settings.md.txt # get_https_settings > 获取网站 HTTPS 配置状态 # get_https_settings 获取网站的 HTTPS 模式及 HTTP→HTTPS 跳转状态。 - **路由**:`POST /site` - **action**:`get_https_settings` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_https_settings` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果 | | data.https_mode | Boolean | 是否开启 HTTPS | | data.http2https | Boolean | 是否开启 HTTP→HTTPS 强制跳转 | | code | Integer | 状态码 | | timestamp | Integer | 时间戳 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=get_https_settings ``` ### 响应 ```json { "status": true, "msg": "ok", "data": {"https_mode": false, "http2https": false}, "code": 0, "timestamp": 1779443313 } ``` --- source: https://docs.bt.cn/api/ssl/GetSSLProduct.md.txt # GetSSLProduct > 获取 SSL 证书产品列表(含价格和折扣) # GetSSLProduct 获取所有可购买的 SSL 证书产品的详细信息和价格。 - **路由**:`POST /ssl` - **action**:`GetSSLProduct` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | msg | String | `获取成功!` | | data | Array\ | 产品列表,含 `pid`、`name`、`type`、`price_12`(一年价)、`discount_12`(折扣) | ## 示例 ```json {"msg": "获取成功!", "data": [{"pid": 1, "name": "增强型 (EV) SSL证书专业版", "type": "Symantec", "price_12": 12650, "discount_12": 0.8}]} ``` --- source: https://docs.bt.cn/api/system/ReWeb.md.txt # ReWeb > 重启面板服务 # ReWeb 重启宝塔面板服务。 :::caution 注意 调用后面板服务会短暂中断(约 2~5 秒),API 请求将不可用。 ::: - **路由**:`POST /system` - **action**:`ReWeb` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ReWeb` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示重启指令已发出 | | msg | String | 提示信息 | ## 示例 ### 响应 ```json {"status": true, "msg": "面板已重启"} ``` --- source: https://docs.bt.cn/getting-started/btcli-interactive-tool.md.txt # 宝塔面板 btcli 交互式命令行工具 > 宝塔面板(BT Panel)v11.5 新增交互式命令行工具 btcli,可在 SSH 终端快速管理网站、数据库与 FTP,适用于无法访问面板后台与脚本化运维场景。 # 宝塔面板命令行管理工具(btcli) 宝塔面板 11.5.0 版本新增了交互式命令行管理工具 `btcli`,可在 SSH 终端中快速管理网站、数据库和 FTP,无需登录面板后台。 :::info 版本要求 此功能从宝塔面板 11.5.0 版本开始支持。 ::: :::tip 工具区别 - **`bt` 命令:** 用于管理面板本身(修改密码、端口、重启服务等) - **`btcli` 命令:** 用于管理面板中的资源(网站、数据库、FTP 等) ::: ## 启动工具 在 SSH 终端中输入以下命令启动交互式管理工具: ```bash btcli ``` ![启动 btcli](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121174330211.png) ## 功能模块 btcli 提供三大管理模块: - **网站管理:** 创建、删除网站,查看网站列表 - **数据库管理:** 创建、删除数据库,查看数据库信息 - **FTP 管理:** 创建、删除 FTP 账户,查看 FTP 列表 ![功能模块](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121174521327.png) :::warning 前置条件 使用前需要确保对应的服务已安装: - 网站管理需要安装 Nginx/Apache 和 PHP - 数据库管理需要安装 MySQL - FTP 管理需要安装 Pure-Ftpd ::: :::tip 快速部署 可以配合【[宝塔面板自动部署网站](../practical-tutorials/install-panel-auto-deploy-website.md)】功能,在安装面板时自动安装所需环境。 ::: ### 操作提示 在操作过程中如需中止,随时可以按 **Ctrl+C** 退出当前操作。 ## 网站管理 在主菜单中选择 **网站管理** 选项。 ![网站管理菜单](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121174854576.png) ### 1. 显示网站列表 选择选项 `1` 可以查看当前面板中所有已创建的网站。 ![网站列表](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121180041348.png) ### 2. 添加 PHP 网站 选择选项 `2` 可以创建一个 PHP 网站,需要输入: - **域名:** 网站访问域名 - **网站目录:** 网站文件存放路径 - **PHP 版本:** 选择 PHP 运行版本 - **备注:** 网站说明(可选) ![添加PHP网站](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121175339560.png) ### 3. 创建反向代理网站 选择选项 `3` 可以创建反向代理网站,需要输入: - **域名:** 访问域名 - **反代地址:** 目标服务器地址 - **发送域名:** 转发的域名(可选) ![创建反向代理](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121180315459.png) ### 4. 删除网站 选择选项 `4` 可以删除指定网站。 :::danger 重要警告 删除网站会同时删除网站文件、数据库、FTP 等所有相关资源,操作不可恢复,请谨慎操作! ::: ![删除网站](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181040183.png) ## 数据库管理 在主菜单中选择 **数据库管理** 选项。 ### 1. 显示数据库列表 选择选项 `1` 可以查看当前所有数据库。 ![数据库列表](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181357151.png) ### 2. 添加数据库 选择选项 `2` 可以创建新数据库,需要输入: - **数据库名:** 数据库标识名称 - **用户名:** 数据库访问用户 - **密码:** 数据库密码 ![添加数据库](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181436701.png) ### 3. 删除数据库 选择选项 `3` 可以删除指定数据库。 :::warning 警告 删除数据库会清空所有数据,操作不可恢复! ::: ![删除数据库](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181530487.png) ### 4. 获取数据库密码 选择选项 `4` 可以查看指定数据库的访问密码。 ![获取数据库密码](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181626991.png) ### 5. 获取 MySQL root 密码 选择选项 `5` 可以查看 MySQL 管理员(root)密码。 ![获取root密码](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181648277.png) ## FTP 管理 在主菜单中选择 **FTP 管理** 选项。 ### 1. 显示 FTP 列表 选择选项 `1` 可以查看所有 FTP 账户。 ![FTP列表](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181733784.png) ### 2. 添加 FTP 账户 选择选项 `2` 可以创建新的 FTP 账户,需要输入: - **FTP 用户名:** 登录账号 - **FTP 密码:** 登录密码 - **根目录:** FTP 可访问的根目录路径 ![添加FTP账户](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181819271.png) ### 3. 删除 FTP 账户 选择选项 `3` 可以删除指定的 FTP 账户。 ![删除FTP账户](https://docs.bt.cn/img/getting-started/btci-tool/image-20260121181903085.png) ## 使用场景 btcli 命令行工具特别适合以下场景: ### 批量部署 通过编写脚本调用 btcli,可以快速批量创建网站、数据库等资源,提高部署效率。 ### 远程管理 在无法访问面板 Web 界面的情况下(如防火墙限制),可以通过 SSH 使用 btcli 进行管理。 ### 自动化运维 结合 CI/CD 流程,使用 btcli 实现网站和数据库的自动化部署和管理。 ### 快速操作 对于熟悉命令行的用户,btcli 提供了比 Web 界面更快捷的操作方式。 ## 常见问题 ### btcli 命令不存在? 确保面板已升级到 11.5.0 或更高版本。升级后重启面板服务: ```bash bt restart ``` ### 提示服务未安装? 根据提示安装对应的服务: - 网站管理:安装 Nginx/Apache 和 PHP - 数据库管理:安装 MySQL - FTP 管理:安装 Pure-Ftpd 可以在面板【软件商店】中搜索安装,或使用面板一键安装脚本。 ### 操作被中断如何恢复? 重新执行 `btcli` 命令即可重新进入交互式菜单,之前的操作如果已完成则会保留。 ## 与 bt 命令的对比 | 对比项 | bt 命令 | btcli 命令 | | --- | --- | --- | | **功能定位** | 面板管理工具 | 资源管理工具 | | **管理对象** | 面板设置、服务、密码等 | 网站、数据库、FTP 等 | | **适用场景** | 配置和维护面板本身 | 管理网站和业务资源 | | **交互方式** | 菜单式交互 | 菜单式交互 | | **版本要求** | 所有版本 | 11.5.0+ | :::tip 建议 两个工具各有侧重,建议结合使用: - 使用 `bt` 管理面板配置和服务 - 使用 `btcli` 管理网站、数据库等业务资源 ::: --- source: https://docs.bt.cn/practical-tutorials/docker-wordpress.md.txt # 宝塔面板 Docker 一键搭建 WordPress > 使用宝塔面板(BT Panel)Docker 模块快速搭建 WordPress 网站,包含 MySQL 容器部署、WordPress 镜像拉取、环境变量配置与反向代理设置,实现环境隔离与快速迁移。 # Docker 搭建 WordPress 本教程介绍如何使用宝塔面板的 Docker 模块快速搭建 WordPress 网站。通过 Docker 容器化部署,可以实现环境隔离、便捷管理和快速迁移。 ## 前置条件 - 已安装宝塔面板 - 服务器内存建议 2GB 以上 ## 操作步骤 ### 1. 安装 Docker 点击左侧菜单栏中的 **Docker**,如果尚未安装,点击 **安装 Docker** 进行安装。 ![Docker 菜单](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/docker-menu.png) ### 2. 安装 MySQL 服务 :::warning 重要 安装 WordPress 前需要先安装 Docker 应用商店中的 MySQL 服务。 ::: 在 Docker 应用商店中找到 **MySQL**,点击 **安装**。 ![Docker 应用商店](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/docker-app-store.png) 根据服务器配置选择合适的安装配置: ![MySQL 安装配置](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/mysql-install-config.png) 点击 **确认** 开始安装 MySQL。 ![MySQL 安装确认](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/mysql-install-confirm.png) 等待 MySQL 安装完成并显示 **运行中** 状态。 ### 3. 安装 WordPress MySQL 运行正常后,在 Docker 应用商店中找到 **WordPress**,点击 **安装**。 填写 WordPress 安装配置: ![WordPress 安装配置](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/wordpress-install-config.png) **配置说明:** | 配置项 | 说明 | | --- | --- | | **域名** | 绑定域名,用于浏览器访问(可选) | | **端口** | 映射到宿主机的端口,可自定义修改 | | **数据库名** | 可自定义,建议与项目名或域名对应,方便辨别 | | **数据库用户** | MySQL 用户名,建议与数据库名相同 | | **数据库密码** | MySQL 用户密码 | 点击 **确定** 开始安装。 ![WordPress 安装确认](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/wordpress-install-confirm.png) ### 4. 配置 WordPress 安装完成后,通过以下方式访问 WordPress: - **域名访问**:如果配置了域名,直接访问 `http://您的域名` - **IP + 端口访问**:访问 `http://服务器IP:端口` 首次访问会进入 WordPress 安装向导: #### 选择语言 选择 **简体中文**,点击 **继续**。 ![WordPress 语言选择](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/wordpress-language-select.png) #### 填写站点信息 填写站点标题、管理员用户名、密码和邮箱等信息: ![WordPress 安装信息](https://docs.bt.cn/img/practical-tutorials/docker-wordpress/wordpress-setup-info.png) 点击 **安装 WordPress**,完成安装。 ## 安装完成 安装成功后,您可以: - 访问 `http://您的域名` 或 `http://服务器IP:端口` 查看网站前台 - 访问 `http://您的域名/wp-admin` 或 `http://服务器IP:端口/wp-admin` 进入后台管理 --- source: https://docs.bt.cn/purchase-guides/package-service/panel-multi-user-management.md.txt # 面板多用户管理插件 > 宝塔面板(BT Panel)多用户管理插件,支持创建多个面板用户、分配菜单级权限,可查看各用户操作日志,适用于团队協作与财务 / 开发 / 运维角色隔离。 # 多用户管理 支持管理面板多用户,可查看各个用户日志,目前仅支持菜单权限分配。 ![多用户管理](https://docs.bt.cn/img/purchase-guides/panel-multi-user-management.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/reverse-proxy.md.txt # 宝塔面板反向代理配置指南 > 详细介绍如何在宝塔面板(BT Panel)中为网站配置反向代理(Nginx Reverse Proxy),包含代理 URL、添加请求头、发送域名、WebSocket 与缓存设置,适用于后端服务、API 网关与 Node.js 项目。 # 反向代理 本文将介绍如何设置反向代理。 反向代理是一种服务器技术,它位于用户与原始服务器之间,扮演着中间人的角色。 当用户向服务器发送请求时,请求首先到达反向代理服务器。反向代理服务器会根据请求的内容,如 URL 等信息,将请求转发到后端实际处理请求的服务器上。 后端服务器处理完请求后,将响应发送给反向代理服务器,然后反向代理服务器再将响应转发给用户。对于用户来说,他感觉自己直接与原始服务器进行了交互,但实际上所有的请求和响应都经过了反向代理服务器。 > **注意** - 设置了反向代理后,【访问限制】中的相应路径的规则将会失效 ::: ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`反向代理`,进入反向代理配置页面。 ![反向代理](https://docs.bt.cn/img/user-guide/site/reverse-proxy.png) 4. 点击`添加反向代理`,添加反向代理规则。 举个例子,假设你有一个网站,它的 URL 是 http://127.0.0.1:3000/ ,现在你想要把他反向代理到你的网站,新的网站URL是:https://www.bt.cn/ 这样设置后,每当我访问 https://www.bt.cn/ 的时候就会显示 http://127.0.0.1:3000/ 的内容了。 ![添加反向代理](https://docs.bt.cn/img/user-guide/site/add-reverse-proxy.png) > **说明** - 代理目录:访问这个目录时将会把目标URL的内容返回并显示(需要开启高级功能) - 目标URL:可以填写你需要代理的站点,目标URL必须为可正常访问的URL,否则将返回错误 - 发送域名:将域名添加到请求头传递到代理服务器,默认为目标URL域名,若设置不当可能导致代理无法正常运行 - 内容替换:只能在使用nginx时提供,最多可以添加3条替换内容,如果不需要替换请留空 ::: --- source: https://docs.bt.cn/api/crontab/get_databases.md.txt # get_databases > 获取数据库名称列表(简化版) # get_databases 获取数据库名称的简化列表,用于计划任务配置。 - **路由**:`POST /crontab` - **action**:`get_databases` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | data | Array\ | 数据库列表 | ## 示例 ```json {"status": true, "data": [{"name": "bt_api_test_new", "value": "bt_api_test_new"}]} ``` --- source: https://docs.bt.cn/api/database/GetCloudServer.md.txt # GetCloudServer > 获取数据库服务器列表(本地 + 远程) # GetCloudServer 获取所有数据库服务器列表,包括本地 MySQL 和已添加的远程服务器。 - **路由**:`POST /database` - **action**:`GetCloudServer` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetCloudServer` | ## 输出参数 返回数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | id | Integer | 服务器 ID,`0` = 本地 | | db_host | String | 主机地址 | | db_port | Integer | 端口 | | db_user | String | 连接用户名 | | ps | String | 备注说明 | ## 示例 ```json [{ "id": 0, "db_host": "127.0.0.1", "db_port": 3306, "db_user": "root", "db_password": "", "ps": "本地服务器", "addtime": 0 }] ``` --- source: https://docs.bt.cn/api/database/GetSlowLogs.md.txt # GetSlowLogs > 获取 MySQL 慢查询日志内容 # GetSlowLogs 获取 MySQL 慢查询日志的完整文本内容。 - **路由**:`POST /database` - **action**:`GetSlowLogs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSlowLogs` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 获取成功 | | msg | String | 慢查询日志完整文本,开头包含 MySQL 版本和启动参数 | ## 示例 ```json { "status": true, "msg": "/www/server/mysql/bin/mysqld, Version: 5.7.44-log (Source distribution).\nstarted with: Tcp port: 3306 Unix socket: /tmp/mysql.sock\n..." } ``` --- source: https://docs.bt.cn/api/docker/search_image.md.txt # search (镜像) > 搜索 Docker Hub 上的镜像 # search (镜像) 搜索 Docker Hub 上的公开镜像。 - **路由**:`GET /btdocker/image/search` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | keyword | 是 | String | 搜索关键词,如 `nginx` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 搜索结果,每项含 `name`、`description`、`star_count`、`is_official` | ## 示例 ```json [{"name": "nginx", "description": "Nginx的官方版本。", "star_count": 19712, "is_official": 1}] ``` --- source: https://docs.bt.cn/api/files/get_composer_version.md.txt # get_composer_version > 获取服务器上 Composer 的版本号 # get_composer_version 获取当前服务器已安装的 Composer 版本号。 - **路由**:`POST /files` - **action**:`get_composer_version` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_composer_version` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | String | Composer 版本号,如 `2.9.8` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_composer_version ``` ### 响应 ``` 2.9.8 ``` --- source: https://docs.bt.cn/api/java/bind_extranet.md.txt # bind_extranet > 为 Java 项目开放外网映射(生成 Nginx 配置文件) # bind_extranet 为 Java 项目生成 Nginx 反向代理配置文件,开放外网访问。**部署 SSL 证书前必须执行此步骤**。 **前置条件**:创建项目时已通过 `domains` 参数绑定了域名。 - **路由**:`GET /mod/java/project/bind_extranet/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` GET /mod/java/project/bind_extranet/stype?request_time=xxx&request_token=xxx&project_name=myapp ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [create_spring_boot_project](./create_spring_boot_project.md) — 创建项目(需带 domains) - [unbind_extranet](./unbind_extranet.md) — 取消外网映射 --- source: https://docs.bt.cn/api/proxy/set_remak.md.txt # set_remak > 设置反向代理站点备注 # set_remak :::caution 注意 方法名拼写为 `set_remak`(非 remark)。 ::: 设置反向代理站点的备注信息。 - **路由**:`POST /mod/proxy/com/set_remak/stype` - **action**:`set_remak` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | id | 是 | int | 站点 ID | | remark | 否 | string | 备注内容 | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/set_remak/stype" \ -d "site_name=example.com&id=24&remark=API文档测试备注" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/site/SiteStop.md.txt # SiteStop > 停止网站(将网站设为停用状态) # SiteStop / SiteStart 停止或启动指定的网站。 - **路由**:`POST /site` - **action**:`SiteStop` 或 `SiteStart` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `SiteStop` 或 `SiteStart` | | id | 是 | Integer | 网站 ID | | name | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示操作成功 | | msg | String | `站点已停用` 或 `站点已启用` | ## 示例 ### 停止网站 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded request_time=1700000000&request_token=xxx&action=SiteStop&id=1&name=testapi.bt.local ``` ```json {"status": true, "msg": "站点已停用"} ``` ### 启动网站 ``` action=SiteStart&id=1&name=testapi.bt.local ``` ```json {"status": true, "msg": "站点已启用"} ``` --- source: https://docs.bt.cn/api/ssl/GetUserInfo.md.txt # GetUserInfo > 获取面板绑定的宝塔账号信息 # GetUserInfo 获取当前面板绑定的宝塔账号用户名。 **前置条件**:面板已绑定宝塔账号。 - **路由**:`POST /ssl` - **action**:`GetUserInfo` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | data.username | String | 脱敏后的用户名 | ## 示例 ```json {"status": true, "msg": "获取成功!", "data": {"username": "155********"}} ``` --- source: https://docs.bt.cn/getting-started/bt-99-english.md.txt # bt 99 切换英文命令行工具箱 > 介绍宝塔面板(BT Panel)v11.6 新增的 bt 99 命令,用于切换英文命令行工具箱,解决 VNC 远程登录服务器时中文乱码问题与编码不兼容异常。 # bt 99 切换英文命令行工具箱 此功能为面板 v11.6 版本新增,专门解决通过 VNC 远程登录服务器时,中文命令行工具箱因编码问题出现的乱码现象。 ## 功能介绍 当服务器 SSH 服务异常、仅能通过 VNC 方式操作服务器时,原中文版命令行工具箱会出现乱码,如下图所示: ![VNC 登录时中文命令行工具箱乱码示例](https://docs.bt.cn/img/getting-started/bt-99-english/image-20260313182435192.png) ## 操作步骤 在命令行中执行以下命令,即可切换到英文命令行工具箱: ```bash # 切换到英文命令行工具箱 bt 99 ``` ![切换至英文命令行工具箱效果](https://docs.bt.cn/img/getting-started/bt-99-english/image-20260313183605264.png) 切换后即可正常使用英文命令行工具箱,乱码问题得以解决。 ## 切换回中文工具箱 如需切换回中文命令行工具箱,在 SSH 终端中执行以下命令: ```bash # 重新加载中文工具箱 bt ``` 执行 `bt` 命令后,系统会重新加载中文命令行工具箱。 --- source: https://docs.bt.cn/practical-tutorials/docker-wordpress-bindomain.md.txt # Docker WordPress 网站更换域名与部署 HTTPS > 介绍在宝塔面板(BT Panel)中使用 Docker 部署的 WordPress 网站如何从 IP 访问更换为域名访问,并完成 SSL 证书部署实现 HTTPS 全站加密。 # Docker 网站更换域名并部署 HTTPS 本教程介绍如何将通过 IP 创建的 Docker 网站更换为域名访问,并部署 HTTPS 证书。 ## 前置条件 - 已通过 Docker 搭建网站(如 WordPress) - 拥有已备案的域名(国内服务器需备案) - 域名已解析到服务器 IP ## 操作步骤 ### 1. 确认域名解析 首先确保域名已经正确解析到服务器 IP 地址。可以通过以下方式验证: ```bash ping 您的域名 ``` 如果返回的 IP 是您的服务器 IP,说明解析已生效。 ### 2. 添加域名到 Docker 网站 点击左侧菜单栏 **Docker** → **网站**,找到您的网站。 ![Docker 网站列表](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/docker-site-list.png) 点击网站右侧的 **设置** 按钮。 在域名管理中,点击 **添加** 按钮,输入您的域名。 ![添加域名](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/site-add-domain.png) ### 3. 修改 WordPress 后台设置 添加域名后,进入 WordPress 后台(`http://IP:端口/wp-admin`),进入 **设置** → **常规**。 将以下两项修改为您的域名: - **WordPress 地址(URL)**:`http://您的域名` - **站点地址(URL)**:`http://您的域名` ![WordPress 站点地址设置](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/wordpress-site-url.png) 点击 **保存更改**。 ### 4. 修改数据库中的地址 :::tip 为什么需要修改数据库? WordPress 的一些插件和主题会将 URL 硬编码到数据库中,仅修改后台设置可能无法完全生效。 ::: 通过 **phpMyAdmin** 修改数据库: 1. 在宝塔面板中打开 phpMyAdmin 2. 找到 WordPress 使用的数据库 3. 打开 `wp_options` 表 4. 找到 `siteurl` 和 `home` 两个字段 5. 将它们的值修改为 `http://您的域名` ![phpMyAdmin 修改选项](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/phpmyadmin-options.png) 至此,Docker 网站从 IP 更换为域名访问已完成。 --- ## 部署 HTTPS ### 5. 进入 SSL 设置 在 Docker 网站设置中,点击 **SSL** 选项卡。 ![SSL 设置入口](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/ssl-settings.png) ### 6. 配置 SSL 证书 将申请的 SSL 证书文件分别填入: - **密钥(KEY)**:填入私钥内容 - **证书(PEM)**:填入证书内容 ![SSL 证书配置](https://docs.bt.cn/img/practical-tutorials/docker-wordpress-domain/ssl-certificate.png) 点击 **保存并启用证书**。 ### 7. 开启强制 HTTPS 启用证书后,打开 **强制 HTTPS** 开关,将所有 HTTP 请求自动跳转到 HTTPS。 ### 8. 更新 WordPress 地址 部署 HTTPS 后,需要再次修改 WordPress 的地址设置: 1. 进入 WordPress 后台 → **设置** → **常规** 2. 将 WordPress 地址和站点地址改为 `https://您的域名` 3. 同样在 phpMyAdmin 中将 `siteurl` 和 `home` 改为 `https://您的域名` 至此,Docker 网站从 IP 更换为域名并部署 HTTPS 全部完成! --- source: https://docs.bt.cn/purchase-guides/package-service/operation-and-maintenance-platform.md.txt # 堡塔运维平台插件 > 宝塔面板(BT Panel)堡塔运维平台插件,提供运维任务编排、脚本库、多台服务器批量运维、命令群发等能力,适用于拥有多台服务器需集中运维的用户。 # 堡塔运维平台 提供运维任务编排、脚本库、多台服务器批量运维、命令群发等,适用于有多台服务器的用户。 ![堡塔运维平台](https://docs.bt.cn/img/purchase-guides/operation-and-maintenance-platform.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/anti-link-leeching.md.txt # 网站防盗链配置 > 在宝塔面板为网站配置防盗链规则,限制 jpg/png/mp4 等特定后缀资源只能被许可域名调用,防止图片/视频被外站盗用浪费带宽。 # 防盗链 本文将介绍如何配置网站防盗链。 防盗链是一种防止网站资源被其他网站未经授权盗用作外部链接的技术手段。 可以防止其他网站未经授权地使用本网站的图片、视频、文件等资源,避免因大量外部链接导致的带宽浪费,降低运营成本。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`防盗链`,进入防盗链配置页面。 ![防盗链](https://docs.bt.cn/img/user-guide/site/anti-link-leeching.png) > **说明** - URL后缀:填写允许访问的文件后缀,如:jpg,png,gif等 - 许可域名:填写允许访问的域名,如:www.bt.cn - 响应资源:可设置404/403等状态码,也可以设置一个有效资源,如:/security.png - 允许空HTTP_REFERER请求:是否允许浏览器直接访问,若您的网站访问异常,可尝试开启此功能 ::: --- source: https://docs.bt.cn/api/crontab/get_crond_find.md.txt # get_crond_find > 获取单个计划任务的详细配置 # get_crond_find 获取指定 ID 的计划任务的完整配置信息。 - **路由**:`POST /crontab` - **action**:`get_crond_find` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_crond_find` | | id | 是 | Integer | 计划任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | id | Integer | 任务 ID | | name | String | 任务名称 | | type | String | 执行周期类型 | | status | Integer | `1` 启用 / `0` 禁用 | | sBody | String | 执行命令/脚本 | ## 示例 ### 请求 ``` POST /crontab HTTP/1.1 action=get_crond_find&id=1 ``` ### 响应 ```json {"id": 1, "name": "续签Let's Encrypt证书", "type": "day", "status": 1, "where_hour": 10, "where_minute": 15} ``` --- source: https://docs.bt.cn/api/database/BinLog.md.txt # BinLog > 管理 MySQL 二进制日志(开启/关闭/查看/清理) # BinLog / GetMySQLBinlogs / ClearMySQLBinlog 管理 MySQL 二进制日志。 - **路由**:`POST /database` ## BinLog 开启或关闭二进制日志。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `BinLog` | ### 响应 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "开启二进制日志成功!", "data": {"binlog_status": true}} ``` ## GetMySQLBinlogs 获取二进制日志文件列表及大小。 ### 响应 ```json {"status": true, "msg": "ok", "data": [ {"name": "mysql-bin.000001", "path": "/www/server/data/mysql-bin.000001", "size": 177} ]} ``` ## ClearMySQLBinlog 清理指定天数前的二进制日志。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ClearMySQLBinlog` | | days | 是 | Integer | 保留天数 | ### 响应 ```json {"status": true, "msg": "清理完成!"} ``` --- source: https://docs.bt.cn/api/database/get_mysql_status.md.txt # get_mysql_status > 检查 MySQL 是否已安装 # get_mysql_status 检查本地 MySQL 是否已安装。 - **路由**:`POST /database` - **action**:`get_mysql_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_mysql_status` | ## 示例 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "本地数据库已安装"} ``` --- source: https://docs.bt.cn/api/docker/add_volume.md.txt # add (存储卷) > 创建 Docker 存储卷 # add (存储卷) 创建新的 Docker 数据卷。 - **路由**:`GET /btdocker/volume/add` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | name | 是 | String | 存储卷名称 | | driver | 是 | String | 卷驱动,如 `local` | ## 示例 ```json {"status": true, "msg": "添加成功!"} ``` --- source: https://docs.bt.cn/api/files/remove_download_url.md.txt # remove_download_url > 删除已创建的分享下载链接 # remove_download_url 删除指定 ID 的分享下载链接。 - **路由**:`POST /files` - **action**:`remove_download_url` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `remove_download_url` | | id | 是 | Integer | 下载链接 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | | msg | String | `删除成功!` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=remove_download_url&id=1 ``` ### 响应 ```json {"status": true, "msg": "删除成功!"} ``` --- source: https://docs.bt.cn/api/java/unbind_extranet.md.txt # unbind_extranet > 取消 Java 项目的外网映射 # unbind_extranet 取消 Java 项目的外网映射。 - **路由**:`GET /mod/java/project/unbind_extranet/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/proxy/GetSiteLogs.md.txt # GetSiteLogs > 获取反向代理站点日志 # GetSiteLogs 获取反向代理站点的访问日志文件和大小。 - **路由**:`POST /mod/proxy/com/GetSiteLogs/stype` - **action**:`GetSiteLogs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data.size | string | 日志文件大小(如 `0.00 b`) | | data.msg | string | 状态信息 | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/GetSiteLogs/stype" \ -d "site_name=example.com" ``` ### 响应(无日志时) ```json { "code": 0, "status": true, "msg": "OK", "data": {"msg": "", "size": "0.00 b"} } ``` --- source: https://docs.bt.cn/api/site/SetEdate.md.txt # SetEdate > 设置网站到期时间 # SetEdate 设置网站的到期时间。到期后网站将自动停止。 - **路由**:`POST /site` - **action**:`SetEdate` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetEdate` | | id | 是 | Integer | 网站 ID | | edate | 是 | String | 到期日期,`0000-00-00` 表示永久有效 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示设置成功 | | msg | String | 提示信息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetEdate&id=1&edate=0000-00-00 ``` ### 响应 ```json {"status": true, "msg": "设置成功,站点到期后将自动停止!"} ``` --- source: https://docs.bt.cn/api/ssl/set_ssl_ps.md.txt # set_ssl_ps > 修改证书夹中证书的备注信息 # set_ssl_ps 修改证书夹中指定证书的备注。 - **路由**:`POST /ssl` - **action**:`set_ssl_ps` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ssl_ps` | | id | 是 | Integer | 证书 ID | | ps | 是 | String | 新的备注内容 | ## 示例 ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/system/get_upgrade_log.md.txt # get_upgrade_log > 获取面板升级日志 # get_upgrade_log 获取面板最近一次升级的日志内容。 - **路由**:`POST /system` - **action**:`get_upgrade_log` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | String | 升级日志内容,无升级时为空 | ## 示例 ```json {"status": true, "msg": ""} ``` --- source: https://docs.bt.cn/practical-tutorials/nextjs-deployment.md.txt # 宝塔面板 Next.js 项目部署教程 > 使用宝塔面板(BT Panel)部署 Next.js 项目的完整教程,通过 Node.js 项目管理与 PM2 实现生产环境部署,含依赖安装、构建、守护进程与反向代理站点配置。 # Next.js 项目部署教程 本教程介绍如何使用宝塔面板部署 Next.js 项目,通过 PM2 守护进程确保应用持续运行。 ## 准备环境 ### 所需环境 | 环境组件 | 版本要求 | | --- | --- | | **宝塔面板** | 11.0+ | | **Node.js 版本管理器** | 2.7+ | | **Node.js** | v14.17.6+(推荐 v18 LTS) | | **Nginx** | 1.20+ | | **MySQL**(如需数据库)| 5.7+ / 8.0+ | ### 安装必要组件 1. **安装 Node.js 版本管理器** - 进入 **软件商店** → 搜索 **Node 版本管理器** - 点击 **安装** 2. **安装 Node.js** - 打开 Node 版本管理器 - 选择需要的 Node.js 版本(如 v14.17.6 或 v18) - 点击 **安装** ![环境准备](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/env-setup.png) 3. **设置命令行版本** - 进入 **网站** → **Node 项目** - 设置命令行使用的 Node.js 版本 ![Node 版本选择](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/node-version-select.png) ## 上传项目文件 ### 1. 上传项目压缩包 1. 打开 **文件** → 进入 `/www/wwwroot/` 目录 2. 点击 **上传** 按钮,选择项目压缩包 ![上传项目](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/upload-project.png) ### 2. 解压项目 上传完成后,右键点击压缩包,选择 **解压**。 ![解压项目](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/extract-project.png) ## 配置数据库(如需要) 如果您的 Next.js 项目需要连接数据库,请按以下步骤配置。 ### 1. 创建数据库 1. 进入 **数据库** → **MySQL** 2. 点击 **添加数据库** 3. 输入数据库名称(如 `node_ce`) 4. 设置用户名和密码 ![创建数据库](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/create-database.png) ### 2. 导入 SQL 文件 如果项目包含初始化 SQL 文件(如 `database_setup.sql`): 1. 在数据库列表中找到刚创建的数据库 2. 点击 **导入** 3. 选择 SQL 文件上传并导入 ![导入 SQL](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/import-sql.png) ### 3. 修改数据库连接配置 编辑项目中的数据库配置文件(如 `lib/db.ts`、`config/database.js` 等): ```typescript // 示例:lib/db.ts export const dbConfig = { host: 'localhost', user: 'node_ce', // 您的数据库用户名 password: 'your_password', // 您的数据库密码 database: 'node_ce', // 您的数据库名 port: 3306 }; ``` ![数据库配置](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/db-config.png) :::warning 远程连接配置 如果使用 root 用户连接数据库,需要确保 MySQL 允许远程连接。可以在 **数据库** → **MySQL 设置** 中配置。 ::: ## 构建项目 在部署前,需要先构建 Next.js 项目。 ### 在终端中构建 1. 进入 **终端**(或使用 SSH) 2. 切换到项目目录: ```bash cd /www/wwwroot/your-project-name ``` 3. 安装依赖: ```bash npm install # 或使用 yarn yarn install ``` 4. 构建项目: ```bash npm run build # 或使用 yarn yarn build ``` ![构建项目](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/build-project.png) :::tip 提示 构建过程可能需要几分钟时间,请耐心等待。 ::: ## 部署 Node 项目 ### 1. 创建 Node 项目 1. 进入 **网站** → **Node 项目** 2. 点击 **添加 Node 项目** ![部署 Node 项目](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/deploy-node-project.png) ### 2. 配置项目信息 填写以下配置: | 配置项 | 说明 | 示例 | | --- | --- | --- | | **项目名称** | 自定义项目名称 | `my-nextjs-app` | | **项目路径** | 项目所在目录 | `/www/wwwroot/your-project-name` | | **启动文件** | Next.js 启动文件 | `node_modules/next/dist/bin/next` | | **启动命令** | 启动参数 | `start -p 3000` | | **端口** | 应用运行端口 | `3000` | | **Node 版本** | 选择已安装的版本 | `v14.17.6` 或 `v18` | ![端口配置](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/port-config.png) :::info 关于 PM2 宝塔面板的 Node 项目管理默认使用 PM2 作为守护进程,确保应用自动重启和持续运行。 ::: ### 3. 启动项目 配置完成后,点击 **提交**,系统会自动启动项目。 ## 测试访问 ### 通过端口访问 在浏览器中访问:`http://您的服务器IP:3000` ![测试访问](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/test-access.png) 如果页面正常显示,说明部署成功! ## 配置 80 端口访问 为了让用户通过域名或 IP 直接访问(不带端口号),需要配置外网映射。 ### 1. 开启外网映射 1. 在 Node 项目列表中,点击项目的 **设置** 2. 找到 **外网映射** 选项 3. 点击 **开启** ![外网映射设置](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/external-mapping.png) ### 2. 配置映射规则 - **域名**:填入您的域名(可选) - **外网端口**:填写 `80`(HTTP)或 `443`(HTTPS) - **内网端口**:填写应用运行端口 `3000` ![启用映射](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/enable-mapping.png) ### 3. 测试访问 现在可以直接通过域名或 IP 访问网站:`http://您的域名` 或 `http://您的IP` ![最终测试](https://docs.bt.cn/img/practical-tutorials/nextjs-deployment/final-test.png) ## 相关资源 - [Next.js 官方文档](https://nextjs.org/docs) - [PM2 官方文档](https://pm2.keymetrics.io/docs/usage/quick-start/) - [宝塔 Node 项目管理](https://www.bt.cn) --- source: https://docs.bt.cn/purchase-guides/package-service/server-security-scan.md.txt # 服务器安全扫描插件 > 宝塔面板(BT Panel)服务器安全扫描插件,扫描服务器系统漏洞、异常用户与已安装软件的安全问题,并提供详细修复方案。 # 服务器安全扫描 扫描服务器系统的漏洞,异常用户,已安装软件的安全问题并提供修复方案。 ![服务器安全扫描](https://docs.bt.cn/img/purchase-guides/server-security-scan.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/tamper-proof.md.txt # 网站防篡改 > 宝塔面板防篡改插件,实时保护站点文件不被黑客修改与挂马,提供网站防篡改与企业级防篡改两种模式,需专业版/企业版授权。 # 防篡改 本文将介绍如何使用宝塔防篡改功能。 事件型防篡改程序,用于保护站点内容安全,防止黑客非法修改网页、网站挂马等入侵行为 > **注意** - 提示:防篡改属于付费功能,需要先开通专业版/企业版才能使用。 ::: ## 防篡改功能介绍 防篡改分为网站防篡改和企业级防篡改,网站防篡改仅支持站点防篡改,企业级防篡改支持更高级的防篡改功能。 ### 网站防篡改 ![网站防篡改](https://docs.bt.cn/img/user-guide/site/website-tamper-proof.png) ### 企业级防篡改 ![企业级防篡改](https://docs.bt.cn/img/user-guide/site/enterprise-tamper-proof.png) ## 防篡改功能使用 ### 网站防篡改 #### 安装插件 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`。 ![软件商店](https://docs.bt.cn/img/user-guide/soft/soft-sidebar.png) 2. 在软件商店中搜索,点击右侧的`安装`进入软件详情页。 ![商店搜索结果-网站防篡改](https://docs.bt.cn/img/user-guide/site/soft-softlist-search-tamper-proof.png) 3. 在软件详情页中,点击`立即安装`按钮开始安装网站防篡改插件。 ![软件安装页-网站防篡改](https://docs.bt.cn/img/user-guide/site/soft-softinstall-tamper-proof.png) 4. 安装完成后,在软件商店中的`已安装`找到`网站防篡改`,点击设置按钮进入插件设置页面。 ![软件安装完成-网站防篡改](https://docs.bt.cn/img/user-guide/site/soft-softinstalled-tamper-proof.png) #### 配置插件 在插件安装完成后,我们需要对插件进行配置,配置完成后即可使用防篡改功能。 1. 在插件设置页面,点击`服务状态`,选择`启动`,即可启动防篡改服务。 ![防篡改-服务状态](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-service.png) 2. 在插件设置页面,选择需要开启防篡改的站点,模式切换为`开启`按钮即可开启防篡改。 ![防篡改-站点防篡改](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-site.png) 3. 在插件设置页面,点击`日志`,即可查看防篡改日志。 ![防篡改-日志](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-log.png) ![防篡改-日志详情](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-log-detail.png) #### 测试防篡改 在插件设置页面,点击`模拟攻击`,即可测试防篡改功能。 ![防篡改-测试](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-test.png) 可以选择指定的站点进行测试。 ![防篡改-选择站点](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-test-site.png) ![防篡改-测试结果](https://docs.bt.cn/img/user-guide/site/soft-tamper-proof-test-result.png) ### 企业级防篡改 #### 安装插件 1. 登录宝塔面板,在左侧菜单栏中点击`软件商店`。 ![软件商店](https://docs.bt.cn/img/user-guide/soft/soft-sidebar.png) 2. 在软件商店中搜索,点击右侧的`安装`进入软件详情页。 ![商店搜索结果-企业级防篡改](https://docs.bt.cn/img/user-guide/site/soft-softlist-search-enterprise-tamper-proof.png) 3. 在软件详情页中,点击`立即安装`按钮开始安装企业级防篡改插件。 ![软件安装页-企业级防篡改](https://docs.bt.cn/img/user-guide/site/soft-softinstall-enterprise-tamper-proof.png) 4. 安装完成后,在软件商店中的`已安装`找到`企业级防篡改`,点击设置按钮进入插件设置页面。 ![软件安装完成-企业级防篡改](https://docs.bt.cn/img/user-guide/site/soft-softinstalled-enterprise-tamper-proof.png) #### 配置插件 在插件安装完成后,我们需要对插件进行配置,配置完成后即可使用防篡改功能。 1. 在插件设置页面,选择左侧菜单中的`保护列表`,点击`添加保护`,即可添加网站或目录进行保护。 ![防篡改-保护列表](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-protect.png) ![防篡改-添加保护](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-protect-add.png) 可根据自己网站的实际情况选择防护规则 ![防篡改-选择规则](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-protect-rule.png) 点击保护列表中的`日志`,即可查看当前站点或目录的防篡改日志。 ![防篡改-日志](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-protect-log.png) 点击保护列表中的`配置`,即可更精细的调整当前站点或目录的防篡改配置。 ![防篡改-配置](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-protect-config.png) 2. 在插件设置页面,点击左侧菜单中的`全局配置`,即可对全局的防篡改配置进行设置。 ![防篡改-全局配置](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-global.png) 3. 在插件设置页面,点击左侧菜单中的`进程白名单`,即可对防篡改进程白名单进行设置。 ![防篡改-进程白名单](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-process.png) 4. 在插件设置页面,点击左侧菜单中的`告警设置`,即可对防篡改文件白名单进行设置。 ![防篡改-告警设置](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-alert.png) 点击`添加告警任务`,即可添加告警任务。 ![防篡改-添加告警任务](https://docs.bt.cn/img/user-guide/site/soft-enterprise-tamper-proof-alert-add.png) --- source: https://docs.bt.cn/api/crontab/GetDataList.md.txt # GetDataList > 按类型获取数据列表(网站/数据库等,用于计划任务配置) # GetDataList 根据类型获取网站或数据库列表,用于计划任务中选择操作对象。 - **路由**:`POST /crontab` - **action**:`GetDataList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDataList` | | type | 是 | String | `"sites"` 网站 / `"databases"` 数据库 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array | 数据列表 | | orderOpt | Array | 排序选项 | ## 示例 ```json {"data": [{"name": "testapi.bt.local", "ps": "API测试备注"}], "orderOpt": []} ``` --- source: https://docs.bt.cn/api/database/GetAllBackup.md.txt # GetAllBackup > 获取所有数据库备份列表 # GetAllBackup 获取所有数据库的备份文件列表。 - **路由**:`POST /database` - **action**:`GetAllBackup` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetAllBackup` | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | ## 示例 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "OK", "data": [], "page": "
分页
"} ``` --- source: https://docs.bt.cn/api/database/GetBackup.md.txt # GetBackup > 获取数据库备份文件列表 # GetBackup / GetAllBackup 获取数据库备份文件列表。 - **路由**:`POST /database` - **action**:`GetBackup` 或 `GetAllBackup` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `GetBackup` 或 `GetAllBackup` | | p | 否 | Integer | 页码 | | limit | 否 | Integer | 每页数量 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果 | | data | Array | 备份文件列表 | | data[].name | String | 备份文件名 | | data[].path | String | 备份文件路径 | | data[].size | String | 文件大小 | | data[].addtime | String | 备份时间 | | page | String | 分页 HTML | ## 示例 ```json { "status": true, "msg": "OK", "data": [{"name": "bt_db_2026-05.sql.zip", "path": "/www/backup/database/...", "size": "1.5 KB", "addtime": "2026-05-22 09:04:41"}], "page": "
分页信息
" } ``` --- source: https://docs.bt.cn/api/files/get_videos.md.txt # get_videos > 获取目录下的视频文件列表 # get_videos 列出指定路径下的视频文件。 - **路由**:`POST /files` - **action**:`get_videos` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_videos` | | path | 是 | String | 目录路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 视频文件名列表,无视频时为空数组 `[]` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_videos&path=/www/wwwroot ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/java/check_spring_boot_args.md.txt # check_spring_boot_args > 校验 Spring Boot 项目的创建参数 # check_spring_boot_args 在创建 Spring Boot 项目前校验参数的合法性,返回处理后的参数对象或错误描述。 - **路由**:`GET /mod/java/project/check_spring_boot_args/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | project_jar | 是 | String | jar 文件路径 | | project_jdk | 是 | String | JDK 路径,如 `/www/server/java/jdk1.8.0_371` | | run_user | 是 | String | 运行用户 | | project_cmd | 是 | String | 启动命令 | | project_ps | 否 | String | 备注 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Object | 校验通过返回处理后的参数字典,失败返回错误字符串 | ## 相关接口 - [create_spring_boot_project](./create_spring_boot_project.md) — 创建项目 --- source: https://docs.bt.cn/api/proxy/clear_cache.md.txt # clear_cache > 清除反向代理站点缓存 # clear_cache 清除指定反向代理站点的代理缓存目录中的文件。 - **路由**:`POST /mod/proxy/com/clear_cache/stype` - **action**:`clear_cache` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | ## 示例 ### 请求 ```bash curl -X POST ".../mod/proxy/com/clear_cache/stype" \ -d "site_name=example.com" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "清理成功!"} ``` --- source: https://docs.bt.cn/api/site/SetLimitNet.md.txt # SetLimitNet > 设置网站流量限制和并发连接限制 # SetLimitNet 设置网站的流量限制、并发连接限制和单连接速率限制。 - **路由**:`POST /site` - **action**:`SetLimitNet` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetLimitNet` | | id | 是 | Integer | 网站 ID | | perserver | 是 | Integer | 单服务器最大并发连接数 | | perip | 是 | Integer | 单 IP 最大并发连接数 | | limit_rate | 是 | Integer | 单连接速率限制(KB/s) | > 三个参数均必须大于 0。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示设置成功 | | msg | String | 提示信息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetLimitNet&id=1&perserver=100&perip=10&limit_rate=512 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/ssl/get_ssl_ps.md.txt # get_ssl_ps > 获取证书夹中证书的备注信息 # get_ssl_ps 获取证书夹中指定证书的备注。 - **路由**:`POST /ssl` - **action**:`get_ssl_ps` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_ssl_ps` | | id | 是 | Integer | 证书 ID | ## 示例 ```json {"status": true, "msg": [{"ps": "测试备注"}]} ``` --- source: https://docs.bt.cn/api/system/reload_task.md.txt # reload_task > 重启面板后台任务进程 # reload_task 重启面板的后台任务处理进程。 - **路由**:`POST /system` - **action**:`reload_task` ## 示例 ```json {"status": true, "msg": "后台进程已重启完毕"} ``` --- source: https://docs.bt.cn/purchase-guides/package-service/website-speed-test.md.txt # 堡塔网站测速插件 > 宝塔面板(BT Panel)堡塔网站测速插件,测试网站在全球各地的打开速度并及时告警,帮助定位跨地区访问性能问题与 CDN 效果评估。 # 堡塔网站测速 测试网站在全球各地的打开速度并及时告警。 ![网站速度测试](https://docs.bt.cn/img/purchase-guides/website-speed-test.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/website-security.md.txt # 网站安全防护概览 > 宝塔面板网站安全模块集中查看与启用站点防热链、防篡改、访问限制与文件防篡改等防护项,提供站点安全总览与一键加固。 # 网站安全 --- source: https://docs.bt.cn/api/crontab/get_rotate_log_config.md.txt # get_rotate_log_config > 获取日志切割任务的配置 # get_rotate_log_config 获取面板日志自动切割任务的配置信息。 - **路由**:`POST /crontab` - **action**:`get_rotate_log_config` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | Object | 配置详情:`stype`(周期类型)、`log_size`(日志大小)、`num`(保留份数)、`compress`(压缩)、`status`(开关) | ## 示例 ```json {"status": true, "msg": {"stype": "day", "log_size": 0, "num": 10, "compress": false, "status": 1, "hour": 2}} ``` --- source: https://docs.bt.cn/api/database/SetTimeOut.md.txt # SetTimeOut > 设置 MySQL 超时配置参数 # SetTimeOut 设置 MySQL 的超时和连接相关配置参数。 - **路由**:`POST /database` - **action**:`SetTimeOut` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetTimeOut` | | interactive_timeout | 否 | Integer | 交互连接超时(秒) | | wait_timeout | 否 | Integer | 非交互连接超时(秒) | | expire_logs_days | 否 | Integer | 二进制日志过期天数 | | default_password_lifetime | 否 | Integer | 密码有效期(天),`0` = 永不过期 | ## 示例 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/docker/create_network.md.txt # create_network > 创建 Docker 网络 # create_network 创建新的 Docker 网络。 - **路由**:`GET /btdocker/network/create_network` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | name | 是 | String | 网络名称 | | driver | 否 | String | 网络驱动,默认 `bridge` | ## 示例 ```json {"status": true, "msg": "创建网络成功!"} ``` --- source: https://docs.bt.cn/api/files/get_files_store.md.txt # get_files_store > 获取文件管理中收藏的目录列表 # get_files_store 获取用户收藏/标记的目录列表。 - **路由**:`POST /files` - **action**:`get_files_store` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_files_store` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 收藏目录列表,每项含 `path`、`name`、`type` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_files_store ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/java/get_spring_log_list.md.txt # get_spring_log_list > 获取 Spring Boot 项目的日志文件列表 # get_spring_log_list 获取指定 Spring Boot 项目的日志文件列表。 - **路由**:`GET /mod/java/project/get_spring_log_list/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "ok"} ``` --- source: https://docs.bt.cn/api/proxy/set_site_stop.md.txt # set_site_stop > 启用或停用反向代理站点 # set_site_stop 启用(运行中)或停用(已停止)反向代理站点。 - **路由**:`POST /mod/proxy/com/set_site_stop/stype` - **action**:`set_site_stop` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | site_id | 是 | int | 站点 ID | | site_status/d | 是 | int | 0 停用,1 启用 | ## 示例 ### 请求(停用) ```bash curl -X POST ".../mod/proxy/com/set_site_stop/stype" \ -d "site_name=example.com&site_id=24&site_status=0" ``` ### 请求(启用) ```bash curl -X POST ".../mod/proxy/com/set_site_stop/stype" \ -d "site_name=example.com&site_id=24&site_status=1" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/GetHasPwd.md.txt # GetHasPwd > 查看网站密码访问保护状态 # GetHasPwd / CloseHasPwd 查看或关闭网站的密码访问保护(HTTP Basic Auth)。 - **路由**:`POST /site` ## GetHasPwd 查看密码保护状态。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `GetHasPwd` | | id | 是 | Integer | 网站 ID | ### 输出 | 参数名称 | 类型 | 描述 | |----------|------|------| | (原始值) | Boolean | `true` = 已启用密码保护,`false` = 未启用 | ```json false ``` ## CloseHasPwd 关闭密码保护。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `CloseHasPwd` | | id | 是 | Integer | 网站 ID | ### 输出 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [SetHasPwd](./SetHasPwd.md) — 设置密码保护 --- source: https://docs.bt.cn/api/site/SetHasPwd.md.txt # SetHasPwd > 设置网站密码访问保护 # SetHasPwd 为网站设置基于 HTTP Basic Auth 的密码访问保护。 - **路由**:`POST /site` - **action**:`SetHasPwd` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetHasPwd` | | id | 是 | Integer | 网站 ID | | username | 是 | String | 访问用户名 | | password | 是 | String | 密码(**不超过 8 位**) | > 密码限制 8 位,超过部分无法验证。 ## 相关接口 - [GetHasPwd](./GetHasPwd.md) — 查看密码保护状态 - [CloseHasPwd](./GetHasPwd.md) — 关闭密码保护 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示设置成功 | | msg | String | 提示信息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetHasPwd&id=1&username=admin&password=Test2024 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/ssl/SetCertToSite.md.txt # SetCertToSite (SSL) > 将证书夹中的 SSL 证书部署到指定网站 # SetCertToSite (SSL) 将证书夹中已保存的 SSL 证书部署到指定网站,开启 HTTPS。 - **路由**:`POST /ssl` - **action**:`SetCertToSite` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetCertToSite` | | ssl_hash | 是 | String | 证书 hash(通过 `get_cert_list` 获取) | | siteName | 是 | String | 目标网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 部署成功 | | msg | String | `SSL开启成功!` | | csr | String | 部署的证书链(PEM 格式) | ## 示例 ### 请求 ``` POST /ssl HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetCertToSite&ssl_hash=6da02a66c92a01d07b3aab68bf1317e6&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "SSL开启成功!", "csr": "-----BEGIN CERTIFICATE-----\n..."} ``` ## 相关接口 - [get_cert_list](./get_cert_list.md) — 获取可用证书列表 - [get_cert_info](./get_cert_info.md) — 证书详情 --- source: https://docs.bt.cn/api/system/upgrade_env.md.txt # upgrade_env > 启动面板运行环境的升级任务 # upgrade_env 启动面板 Python 运行环境的升级任务(异步执行)。 - **路由**:`POST /system` - **action**:`upgrade_env` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 任务已启动 | | msg | String | `环境升级任务已启动...` | ## 示例 ```json {"status": true, "msg": "环境升级任务已启动...", "data": null} ``` ## 相关接口 - [upgrade_env_log](./upgrade_env_log.md) — 查看升级日志 --- source: https://docs.bt.cn/purchase-guides/package-service/database-operation-and-maintenance-tool.md.txt # 数据库运维工具插件 > 宝塔面板(BT Panel)数据库运维管理工具插件,提供一键优化、性能调优、表修复与数据库状态检测能力,面向 MySQL 等主流数据库。 # 数据库运维工具 数据库运维管理工具,一键优化数据库 ![数据库运维工具](https://docs.bt.cn/img/purchase-guides/database-operation-and-maintenance-tool.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/log.md.txt # 网站响应/错误日志与安全分析 > 在宝塔面板查看站点响应日志、错误日志与日志安全分析,含 IP 归属地、UA、状态码、Referer、响应字节数与关键字告警配置。 # 网站日志 本文将介绍网站日志的相关操作。 网站日志是记录服务器与客户端之间交互信息的文件,它对于网站的管理、维护和优化起着至关重要的作用。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`网站日志`,进入网站日志配置页面。 ![网站日志](https://docs.bt.cn/img/user-guide/site/site-logs.png) 网站日志分为响应日志、错误日志和日志安全分析三个模块,下面将详细介绍。 响应日志是网站日志的一部分,主要记录服务器对客户端请求做出响应的相关信息。它能帮助网站管理员了解服务器的运行状况、用户访问情况以及网站的性能表现等。 ![响应日志](https://docs.bt.cn/img/user-guide/site/site-logs-response.png) 响应日志包含了以下信息: 1. **IP归属地信息**:对于非内网地址的请求,记录了客户端IP地址的归属地信息。 2. **客户端IP地址**:记录了客户端IP地址。 3. **请求时间**:以'[日期/时间 +时区]'的格式,记录了客户端请求的时间。 4. **请求方法和资源路径**:记录了客户端请求的HTTP方法(如'GET'、'POST'等)和资源路径。 5. **响应状态码**:记录了服务器返回给客户端的HTTP状态码,如'200'、'404'等。 6. **响应内容长度**:以字节为单位,如'1145',表示服务器返回给客户端的数据量大小。 7. **来源页面(Referer)**:记录了客户端请求的来源页面,即从哪个页面跳转到当前页面。 8. **用户代理(User - Agent)**:记录了客户端的浏览器信息,用于识别客户端的操作系统、浏览器类型和版本等信息。 > **注意** - 显示IP归属地信息是企业版独有功能,需要开通企业版才能使用。 ::: 你可以配置关键字告警,当响应日志中包含关键字时,会通过设置的告警通道发送通知。 ![关键字告警](https://docs.bt.cn/img/user-guide/site/site-logs-response-keyword.png) > **注意** - 周期时间请勿设置太小,建议10分钟以上以免导致服务器资源异常. ::: > **说明** - 检查时只检查间隔时间内的日志内容。 ::: 错误日志是用于记录网站运行过程中发生的错误信息的日志文件。它对于网站管理员和开发人员来说是非常重要的工具,有助于快速定位和解决网站出现的问题。 ![错误日志](https://docs.bt.cn/img/user-guide/site/site-logs-error.png) 错误日志包含了丰富的信息,有助于定位网站运行中出现的问题: 1. **错误发生时间**:记录了错误发生的具体时间。 2. **进程信息**:能帮助确定错误发生在哪个进程中,利于排查与进程相关的问题,如进程资源占用、进程冲突等。 3. **请求序号**:用于标识错误发生时的请求顺序,便于后续排查问题。 4. **错误详情**:显示了错误的具体信息,能帮助快速定位错误发生的位置。 5. **客户端IP地址**:记录了客户端IP地址,有助于排查客户端访问问题。 6. **服务器名称**:显示了服务器名称,有助于排查服务器配置问题。 7. **请求内容**:显示了客户端请求的内容,有助于排查请求内容相关的问题。 8. **主机信息**:显示了服务器的主机信息,有助于排查服务器配置问题。 日志安全分析是指通过对网站日志文件进行审查、解析和评估,以发现潜在的安全威胁、漏洞利用迹象、异常活动模式以及违反安全策略的行为。 日志安全分析可以扫描网站(.log)日志中含有攻击类型的请求(类型包含: xss,sql,san,php ) ![日志安全分析](https://docs.bt.cn/img/user-guide/site/site-logs-security.png) 点击`日志扫描`按钮,开始分析日志。 > **说明** - 分析的日志数据包含已拦截的请求 - 如日志文件过大,扫描可能等待时间较长,请耐心等待 ::: 也可以设置`定期扫描`,设置完成后,系统会自动定期扫描日志。 ![定期扫描](https://docs.bt.cn/img/user-guide/site/site-logs-security-scan.png) 若存在威胁,将会通过设置的告警通道发送通知。 --- source: https://docs.bt.cn/api/crontab/set_rotate_log_status.md.txt # set_rotate_log_status > 设置日志切割任务的开关状态 # set_rotate_log_status 开启或关闭日志自动切割任务。 - **路由**:`POST /crontab` - **action**:`set_rotate_log_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_rotate_log_status` | | status | 是 | String | `"1"` 开启 / `"0"` 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/database/view_database_types.md.txt # view_database_types > 获取数据库分类列表 # view_database_types 获取数据库类型分类列表(本地服务器 + 自定义分类)。 - **路由**:`POST /database` - **action**:`view_database_types` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `view_database_types` | | db_type | 是 | String | 数据库类型,如 `mysql` | ## 输出 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 查询成功 | | msg | Array | 分类列表,每项含 `id`、`ps`、`db_type` | ```json {"status": true, "msg": [{"id": 0, "ps": "本地服务器", "db_type": "mysql"}]} ``` ```json {"status": true, "msg": [{"id": 0, "ps": "本地服务器", "db_type": "mysql"}]} ``` --- source: https://docs.bt.cn/api/docker/prune_network.md.txt # prune (网络) > 清理无用的 Docker 网络 # prune (网络) 清理未被任何容器使用的 Docker 网络。 - **路由**:`GET /btdocker/network/prune` ## 示例 ```json {"status": true, "msg": "删除成功!"} ``` --- source: https://docs.bt.cn/api/files/Close_Recycle_bin.md.txt # Close_Recycle_bin > 清空回收站,永久删除所有回收站中的文件 # Close_Recycle_bin 清空所有回收站目录,永久删除已放入回收站的文件。 - **路由**:`POST /files` - **action**:`Close_Recycle_bin` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Close_Recycle_bin` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 清空成功 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=Close_Recycle_bin ``` ### 响应 ```json {"status": true, "msg": "已清空回收站!"} ``` --- source: https://docs.bt.cn/api/java/get_project_info.md.txt # get_project_info > 获取 Java 项目的详细信息 # get_project_info 获取指定 Java 项目的完整配置和运行信息。 - **路由**:`GET /mod/java/project/get_project_info/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "ok"} ``` --- source: https://docs.bt.cn/api/proxy/ip-limit.md.txt # add_ip_limit / del_ip_limit > 管理反向代理的 IP 黑白名单 # add_ip_limit / del_ip_limit 管理反向代理站点的 IP 黑白名单。 - **路由**:`POST /mod/proxy/com/{action}/stype` ## add_ip_limit — 添加 IP 限制 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | ips | 是 | string | IP 列表,多个用换行符分隔。支持 CIDR 格式如 `10.0.0.0/8` | IP 限制作用于指定 `proxy_path` 上。若未指定 `proxy_path`,则作用于全局。 ::: ## del_ip_limit — 删除 IP 限制 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | ip_type | 是 | string | 类型:`black` 或 `white` | | ip | 是 | string | 要删除的 IP 地址 | ## 示例 ### add_ip_limit 请求 ```bash curl -X POST ".../mod/proxy/com/add_ip_limit/stype" \ -d "site_name=example.com&ips=192.168.1.100%0A10.0.0.0/8" ``` ### del_ip_limit 请求 ```bash curl -X POST ".../mod/proxy/com/del_ip_limit/stype" \ -d "site_name=example.com&ip_type=black&ip=192.168.1.100" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/Get301Status.md.txt # Get301Status > 获取网站 301 重定向配置 # Get301Status 获取当前 301 重定向配置。 - **路由**:`POST /site` - **action**:`Get301Status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Get301Status` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | domain | String | 重定向域名 | | src | String | 来源 | | status | Boolean | 是否启用 | | url | String | 目标 URL | ## 示例 ```json {"domain": "", "src": "", "status": true, "url": "http://testapi.bt.local$request_uri"} ``` ## 相关接口 - [Set301Status](./Set301Status.md) — 设置 301 重定向 --- source: https://docs.bt.cn/api/site/Set301Status.md.txt # Set301Status > 设置网站 301 永久重定向规则 # Set301Status 为网站设置 301 永久重定向规则,将指定来源域名跳转到目标 URL。 - **路由**:`POST /site` - **action**:`Set301Status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Set301Status` | | siteName | 是 | String | 网站域名 | | srcDomain | 是 | String | 来源域名,**必须带 `http://` 前缀** | | toDomain | 是 | String | 目标 URL,**必须带 `http://` 前缀** | | type | 是 | String | 重定向类型,`1` = 域名重定向 | ## 相关接口 - [Get301Status](./Get301Status.md) — 获取当前重定向配置 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示操作成功 | | msg | String | 提示信息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=Set301Status&siteName=testapi.bt.local&srcDomain=http://old.test.com&toDomain=http://testapi.bt.local&type=1 ``` ### 响应 ```json {"status": true, "msg": "操作成功"} ``` --- source: https://docs.bt.cn/api/ssl/set_cert.md.txt # set_cert > 将商用 SSL 证书订单中的证书部署到指定网站 # set_cert 从已购买的商用 SSL 证书订单中提取证书并部署到指定网站。与 [SetCertToSite](./SetCertToSite.md) 不同,此方法直接通过订单 ID 获取证书。 - **路由**:`POST /ssl` - **action**:`set_cert` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_cert` | | siteName | 是 | String | 目标网站域名 | | oid | 是 | Integer | 商用证书订单 ID(通过 `get_order_list` 获取) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 部署成功 | ## 示例 ### 请求 ``` POST /ssl HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_cert&siteName=testapi.bt.local&oid=800013349 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [get_order_list](./get_order_list.md) — 获取订单列表 - [get_order_find](./get_order_find.md) — 订单详情 - [SetCertToSite](./SetCertToSite.md) — 从证书夹部署 --- source: https://docs.bt.cn/api/system/upgrade_env_log.md.txt # upgrade_env_log > 获取面板环境升级的日志和状态 # upgrade_env_log 获取面板 Python 运行环境升级的实时日志和执行状态。 - **路由**:`POST /system` - **action**:`upgrade_env_log` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | String | 升级状态描述 | | data.env_update_running | Boolean | 是否正在升级中 | | data.log | String | 升级日志内容 | ## 示例 ```json {"status": true, "msg": "环境升级已结束", "data": {"env_update_running": false, "log": "已存在python3.13环境, 退出"}} ``` --- source: https://docs.bt.cn/purchase-guides/package-service/bt-website-acceleration.md.txt # 堡塔网站加速插件 > 宝塔面板(BT Panel)堡塔网站加速插件,基于页面缓存及专属优化规则提升网站响应速度与命中率,适用于高访问量与静态内容为主的站点。 # 堡塔网站加速 基于页面缓存的网站加速插件。 ## 网站加速 设置网站缓存规则,提升网站命中率。 ## 专属规则 根据实际项目类型,可为您网站指派专属规则。 ## 全局配置 设置加速开关、网站缓存大小、代理识别键。 ## 操作日志 所有操作记录都会记录在此。 ![网站加速](https://docs.bt.cn/img/purchase-guides/bt-website-acceleration.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/website-alert.md.txt # 网站拨测告警 > 宝塔面板网站拨测告警按设定周期主动探测站点可用性,支持本地节点与全国多地拨测节点(企业版),探测异常时通过邮件、微信、钉钉等渠道实时推送告警通知。 # 网站告警 本文将介绍如何配置网站拨测告警。 网站拨测告警是一种用于监测网站运行状态的机制,通过定期或不定期地对网站进行探测,当发现网站出现异常情况时及时发出警报通知相关人员。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名。 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`网站告警`,进入网站告警配置页面。 ![网站告警](https://docs.bt.cn/img/user-guide/site/website-alert.png) 4. 点击左上角`添加拨测告警`按钮,打开`拨测告警`创建窗口。 ![添加拨测告警](https://docs.bt.cn/img/user-guide/site/add-website-alert.png) 填写拨测告警的任务名称、监控频率、告警次数、告警方式等信息。 一共有两种检测方式 - **本地测试** :本机发送请求,可能导致测试结果不准确等结果 - **多节点测试 (推荐)**:通过宝塔部署在全国的多个节点上来实现更全面的覆盖和测试(需开通企业版) 配置告警方式可前往【设置-告警通知-告警设置】配置消息通道。 --- source: https://docs.bt.cn/api/crontab/set_atuo_start_syssafe.md.txt # set_atuo_start_syssafe > 设置系统加固的临时关闭时间 # set_atuo_start_syssafe 临时关闭系统加固功能指定分钟数,超时后自动恢复。 - **路由**:`POST /crontab` - **action**:`set_atuo_start_syssafe` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_atuo_start_syssafe` | | time | 是 | String | 临时关闭时长(分钟) | ## 示例 ```json {"status": true, "msg": "临时关闭系统加固成功!"} ``` --- source: https://docs.bt.cn/api/database/DelMysqlUser.md.txt # DelMysqlUser > 删除 MySQL 用户 # DelMysqlUser 删除 MySQL 服务器上的指定用户。 - **路由**:`POST /database` - **action**:`DelMysqlUser` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DelMysqlUser` | | sid | 是 | Integer | 服务器 ID,`0` = 本地 | | username | 是 | String | 要删除的用户名 | | host | 是 | String | 主机,通常 `%` | ## 示例 ``` POST /database HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=DelMysqlUser&sid=0&username=bt_tmp_del&host=%25 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/database/set_restart_task.md.txt # set_restart_task > MySQL 守护进程配置 # set_restart_task / get_restart_task 设置或获取 MySQL 守护进程的自动重启任务配置。 - **路由**:`POST /database` ## get_restart_task 获取当前守护进程任务配置。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_restart_task` | ### 输出参数 `msg` 中包含守护进程任务的具体配置对象。 ```json {"status": true, "msg": {"id": 2, "name": "[勿删]MySQL守护进程", "type": "minute-n", "where1": "5"}} ``` ## set_restart_task 设置守护进程任务。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_restart_task` | ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [GetValidatePasswordConfig](./GetValidatePasswordConfig.md) — 密码验证配置 - [GetLoginFailed](./GetLoginFailed.md) — 登录失败处理 --- source: https://docs.bt.cn/api/files/Get_Recycle_bin.md.txt # Get_Recycle_bin > 获取回收站中的文件列表 # Get_Recycle_bin 查看面板回收站中的文件和目录列表,支持分页。 - **路由**:`POST /files` - **action**:`Get_Recycle_bin` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Get_Recycle_bin` | | p | 否 | Integer | 页码,默认 `1` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | list | Array | 回收站文件列表 | | status | Boolean | 文件回收站开关状态 | | status_db | Boolean | 数据库回收站开关状态 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=Get_Recycle_bin&p=1 ``` ### 响应 ```json {"list": [], "status": true, "status_db": false} ``` --- source: https://docs.bt.cn/api/java/set_project_log_status.md.txt # set_project_log_status > 设置 Java 项目的日志记录开关 # set_project_log_status 开启或关闭 Java 项目的日志记录,重启项目后生效。 - **路由**:`GET /mod/java/project/set_project_log_status/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | status | 是 | String | `"1"` 开启 / `"0"` 关闭 | ## 示例 ```json {"status": true, "msg": "修改成功, 重启项目后生效"} ``` --- source: https://docs.bt.cn/api/proxy/sub-filter.md.txt # add_sub_filter / del_sub_filter > 管理反向代理的内容替换规则 # add_sub_filter / del_sub_filter 管理反向代理的内容替换(sub_filter)规则,用于在代理响应中替换文本。 - **路由**:`POST /mod/proxy/com/{action}/stype` ## add_sub_filter — 添加内容替换 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径,如 `/` | | oldstr | 是 | string | 被替换的字符串 | | newstr | 是 | string | 替换后的字符串 | | sub_type | 否 | string | 替换类型,由 `g`(全局), `i`(忽略大小写), `o`(只匹配一次), `r`(正则) 组合。注意 `g` 和 `o` 不能同时存在 | ## del_sub_filter — 删除内容替换 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径 | | oldstr | 是 | string | 被替换的字符串(需与添加时一致) | | newstr | 是 | string | 替换后的字符串(需与添加时一致) | ## 示例 ### add_sub_filter 请求 ```bash curl -X POST ".../mod/proxy/com/add_sub_filter/stype" \ -d "site_name=example.com&proxy_path=/&oldstr=http://&newstr=https://&sub_type=ig" ``` ### del_sub_filter 请求 ```bash curl -X POST ".../mod/proxy/com/del_sub_filter/stype" \ -d "site_name=example.com&proxy_path=/&oldstr=http://&newstr=https://" ``` ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/AddDomain.md.txt # AddDomain > 为网站添加新域名绑定 # AddDomain 为已有网站添加额外域名绑定。 - **路由**:`POST /site` - **action**:`AddDomain` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `AddDomain` | | id | 是 | Integer | 网站 ID | | webname | 是 | String | 网站主域名 | | domain | 是 | String | 要添加的新域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | domains | Array | 添加后的完整域名列表 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=AddDomain&id=1&webname=testapi.bt.local&domain=new.example.com ``` ### 响应 ```json {"domains": [{"name": "testapi.bt.local"}, {"name": "api-test.example.com"}, {"name": "new.example.com"}]} ``` --- source: https://docs.bt.cn/api/system/ReMemory.md.txt # ReMemory > 释放系统内存缓存 # ReMemory 执行内存释放操作(sync + drop caches),释放后返回当前内存状态。 - **路由**:`POST /system` - **action**:`ReMemory` 操作可能耗时较长,建议设置较长的 HTTP 超时(>15s)。 ::: ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | memTotal | Integer | 总内存(MB) | | memFree | Integer | 空闲内存(MB) | | memRealUsed | Integer | 实际使用内存(MB) | | memNewTotalList | Array | 总内存 `["3.8", "GB"]` | | memNewRealUsedList | Array | 实际使用内存 `["402.0", "MB"]` | ## 示例 ```json {"memTotal": 3901, "memFree": 3295, "memRealUsed": 402, "memNewTotalList": ["3.8", "GB"], "memNewRealUsedList": ["402.0", "MB"]} ``` --- source: https://docs.bt.cn/purchase-guides/package-service/bt-site-optimization.md.txt # 堡塔站点优化插件 > 宝塔面板(BT Panel)堡塔站点优化插件,按站点类型为特定应用(当前仅支持微擎)提供针对性优化规则,获得更高的运行性能。 # 堡塔站点优化 按照站点类型优化站点以获取更高的性能【目前仅支持微擎】 ![站点优化](https://docs.bt.cn/img/purchase-guides/bt-site-optimization.png) --- source: https://docs.bt.cn/user-guide/site/php/site-config/other.md.txt # 站点其他设置·Composer/Tomcat/安全请求头 > 宝塔面板站点「其他设置」集成 PHP Composer 依赖管理一键安装与执行、Tomcat 应用服务器关联、Nginx 安全请求头(X-Frame-Options、CSP 等)配置,统一处理一些低频但关键的运维项。 # 其他设置 本文将介绍其他设置。 ## 操作步骤 1. 登录宝塔面板。点击左侧导航栏的`网站`,进入网站列表页面。 2. 选择需要管理域名的站点,点击对应站点的域名。 ![选择站点](https://docs.bt.cn/img/user-guide/site/select-site.png) 3. 在弹出的窗口中,点击左侧导航栏的`其他设置`,进入其他设置页面。 ## Composer Composer 是一款用于 PHP 的依赖管理工具,它可以帮助开发者方便地管理项目中的依赖关系。 Composer 通过读取项目根目录下的`composer.json`文件来了解项目的依赖关系。这个文件包含了项目的基本信息、依赖项列表、脚本等内容。 通过 Composer,开发者可以轻松地安装、更新和卸载项目中的依赖项。同时,Composer 还提供了许多有用的功能,如自动加载、依赖版本控制、依赖缓存等。 ## Tomcat Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 ## Nginx安全请求头 Nginx安全请求头是Nginx服务器提供的一种安全机制,用于防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等安全漏洞。 --- source: https://docs.bt.cn/api/crontab/set_cron_status_all.md.txt # set_cron_status_all > 批量设置计划任务的启停状态 # set_cron_status_all 批量操作计划任务:启动、停止、删除或立即执行。 - **路由**:`POST /crontab` - **action**:`set_cron_status_all` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_cron_status_all` | | type | 是 | String | 操作类型:`start` / `stop` / `del` / `exec` | | id_list | 是 | String | JSON 数组,任务 ID 列表 `[1,2,3]` | ## 示例 ```json [{"续签Let's Encrypt证书": "停止设置失败", "status": false}] ``` --- source: https://docs.bt.cn/api/database/GetValidatePasswordConfig.md.txt # GetValidatePasswordConfig > 获取 MySQL 密码验证策略配置 # GetValidatePasswordConfig / GetLoginFailed 获取 MySQL 的安全相关配置。 - **路由**:`POST /database` ## GetValidatePasswordConfig 获取密码验证策略(`validate_password` 插件状态)。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetValidatePasswordConfig` | ### 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | String | `"on"` = 已开启密码验证,`"off"` = 未开启 | ```json {"status": "off"} ``` ## GetLoginFailed 获取登录失败处理配置(`connection_control` 插件状态)。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetLoginFailed` | ### 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | String | `"on"` = 已开启,`"off"` = 未开启 | ## 相关接口 - [GetTimeOut](./GetTimeOut.md) — 超时配置 - [SetTimeOut](./SetTimeOut.md) — 设置超时 --- source: https://docs.bt.cn/api/docker/set_remark.md.txt # set_remark > 设置 Docker 镜像仓库的备注 # set_remark 修改已配置的 Docker Registry 的备注信息。 - **路由**:`GET /btdocker/registry/set_remark` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | Integer | 仓库 ID | | ps | 是 | String | 备注内容 | ## 示例 ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/files/get_bt_sync_status.md.txt # get_bt_sync_status > 获取文件同步工具的安装和配置状态 # get_bt_sync_status 检查服务器上文件同步工具(rsync/lsyncd)的安装和配置状态。 - **路由**:`POST /files` - **action**:`get_bt_sync_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_bt_sync_status` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | have_sync | Boolean | 是否有同步任务 | | data | Array | 同步任务数据列表 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_bt_sync_status ``` ### 响应 ```json {"have_sync": false, "data": []} ``` --- source: https://docs.bt.cn/api/java/get_keep_status.md.txt # get_keep_status > 获取 Java 项目的更新任务状态 # get_keep_status 查询是否有正在进行的项目更新任务。 - **路由**:`GET /mod/java/project/get_keep_status/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "没有正在进行的更新任务"} ``` --- source: https://docs.bt.cn/api/proxy/url-config.md.txt # set_url_cache / set_url_gzip / set_url_custom_conf > URL 级别的缓存、Gzip 和自定义配置 # URL 级别配置 以下 API 用于对特定 `proxy_path` 设置独立的缓存、Gzip 和自定义 Nginx 配置。 - **路由**:`POST /mod/proxy/com/{action}/stype` --- ## set_url_cache — 设置 URL 级别缓存 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径 | | cache_status/d | 是 | int | 1 开启,0 关闭 | | expires | 否 | string | 缓存过期时间,默认 `1d` | | cache_suffix | 是 | string | 缓存的文件后缀,如 `css,js,jpg,jpeg,gif,png` | ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- ## set_url_gzip — 设置 URL 级别 Gzip ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径 | | gzip_status/d | 是 | int | 1 开启,0 关闭 | ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- ## set_url_custom_conf — 设置 URL 级别自定义配置 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | proxy_path | 是 | string | 代理路径 | | custom_conf | 是 | string | Nginx 自定义配置内容 | ### 响应 ```json {"code": 0, "status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/GetDnsApi.md.txt # GetDnsApi > 获取支持的 DNS API 提供商列表(CloudFlare、阿里云、DNSPod 等) # GetDnsApi 获取面板支持的 DNS API 提供商列表,用于 SSL 证书的 DNS-01 域名验证。 - **路由**:`POST /site` - **action**:`GetDnsApi` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDnsApi` | ## 输出参数 返回数组,每项: | 参数名称 | 类型 | 描述 | |----------|------|------| | name | String | DNS 提供商标识 | | title | String | 显示名称,如 `阿里云DNS`、`DnsPod`、`CloudFlare` | | ps | String | 描述说明 | | data | Array | 需要的配置字段 `[{key, value, name}]` | | help | String | 获取帮助链接 | | key | String | API Key 存储键名 | ## 示例 ### 响应 ```json [ {"name": "dns", "title": "手动解析", "ps": "返回host和txt值,由用户手动解析", "data": false}, {"name": "AliyunDns", "title": "阿里云DNS", "data": [{"key": "SAVED_Ali_Key", "name": "AccessKey"}, {"key": "SAVED_Ali_Secret", "name": "SecretKey"}]}, {"name": "DNSPodDns", "title": "DnsPod", "data": [{"key": "SAVED_DP_Id", "name": "ID"}, {"key": "SAVED_DP_Key", "name": "Token"}]}, {"name": "CloudFlareDns", "title": "CloudFlare", "data": [{"key": "SAVED_CF_MAIL", "name": "E-Mail"}, {"key": "SAVED_CF_KEY", "name": "API Key"}]} ] ``` --- source: https://docs.bt.cn/api/system/set_rname.md.txt # set_rname > 设置磁盘分区的备注名称 # set_rname 为指定路径的磁盘分区设置自定义备注名称。 - **路由**:`POST /system` - **action**:`set_rname` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_rname` | | path | 是 | String | 磁盘挂载路径,如 `/`、`/www` | | name | 是 | String | 备注名称 | ## 示例 ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/purchase-guides/package-service/bt-incremental-backup.md.txt # 企业增量备份插件 > 宝塔面板(BT Panel)企业增量备份插件,为 MySQL 等数据库提供增量备份能力,在全量备份基础上只备份变动部分,显著节省存储与备份时间。 # 企业增量备份 支持数据库增量备份 ![企业增量备份](https://docs.bt.cn/img/purchase-guides/bt-incremental-backup.png) --- source: https://docs.bt.cn/api/crontab/cancel_top.md.txt # cancel_top > 取消计划任务的置顶状态 # cancel_top 取消指定计划任务的置顶。 - **路由**:`POST /crontab` - **action**:`cancel_top` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `cancel_top` | | id | 是 | Integer | 任务 ID | ## 示例 ```json {"status": true, "msg": "取消置顶成功!"} ``` --- source: https://docs.bt.cn/api/database/GetImportLog.md.txt # GetImportLog > 获取数据库导入日志和状态 # GetImportLog / GetImportStatus 获取数据库导入操作的日志和状态。 - **路由**:`POST /database` ## GetImportLog 获取当前导入操作的实时日志输出。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetImportLog` | ``` Starting to import the database! ===================================================== ``` ## GetImportStatus 获取当前导入状态。 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetImportStatus` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"db_name": ""} ``` `db_name` 为空表示无正在进行的导入操作。 --- source: https://docs.bt.cn/api/files/mutil_unzip.md.txt # mutil_unzip > 批量解压多个压缩文件 # mutil_unzip 批量解压多个压缩文件到指定目录,支持 zip/tar.gz 等格式。 - **路由**:`POST /files` - **action**:`mutil_unzip` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `mutil_unzip` | | sfile_list | 是 | String | JSON 数组,要解压的文件路径列表 | | dfile | 是 | String | 解压目标目录 | | coding | 是 | String | 编码,如 `utf-8` | | type1 | 是 | String | 压缩类型:`zip` / `tar` / `gz` 等 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 全部解压成功 | | msg | String | 结果消息 | | success | Array | 成功的文件列表 | | fail | Array | 失败的文件列表 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=mutil_unzip&sfile_list=["/tmp/test.zip"]&dfile=/tmp/extract&coding=utf-8&type1=zip ``` ### 响应 ```json {"status": true, "msg": "全部解压完成!", "success": [], "fail": []} ``` --- source: https://docs.bt.cn/api/java/create_tomcat_project.md.txt # create_tomcat_project > 创建 Tomcat 类型的 Java 项目 # create_tomcat_project 基于已安装的 Tomcat 创建 Java Web 项目。 **前置条件**:Tomcat 已通过 `install_tomcat_new` 安装。 - **路由**:`GET /mod/java/project/create_tomcat_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | domain | 是 | String | 绑定域名,如 `myapp.bt.local` | | tomcat_version | 是 | String | Tomcat 版本:`7` / `8` / `9` / `10` | | project_path | 是 | String | 项目文件目录 | | port | 否 | Integer | 端口(默认取 Tomcat 端口) | | jdk_path | 否 | String | JDK 路径 | | project_ps | 否 | String | 备注 | ## 示例 ```json {"status": true, "msg": "项目创建成功"} ``` ## 相关接口 - [install_tomcat_new](./install_tomcat_new.md) — 安装 Tomcat - [project_list](./project_list.md) — 项目列表 --- source: https://docs.bt.cn/api/proxy/batch-operations.md.txt # batch_delete / batch_del_domain > 批量删除站点或域名 # batch_delete / batch_del_domain 批量删除反向代理站点或域名。 - **路由**:`POST /mod/proxy/com/{action}/stype` --- ## batch_delete — 批量删除站点 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_list | 是 | json | JSON 数组,每项含 `id` 和 `site_name`,如 `[{"id":1,"site_name":"a.com"}]` | | remove_path/d | 否 | int | 是否同时删除网站目录,1 删除,0 保留(默认) | | reload/d | 否 | int | 是否重载 Nginx,0 不重载(操作完成后自动重载一次) | ### 响应 ```json { "status": true, "msg": "批量删除站点成功!", "data": [{"site_name": "a.com", "status": true}] } ``` --- ## batch_del_domain — 批量删除域名 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | id | 是 | int | 站点 ID | | site_name | 是 | string | 站点名称 | | domains | 是 | string | 域名列表,换行分隔 | ### 响应 ```json { "status": true, "data": [{"name": "api.example.com", "status": true, "msg": "删除成功"}] } ``` --- source: https://docs.bt.cn/api/site/CloseSSLConf.md.txt # CloseSSLConf > 关闭网站的 SSL 证书 # CloseSSLConf 关闭指定网站的 SSL 证书,之后网站将仅通过 HTTP 访问。 - **路由**:`POST /site` - **action**:`CloseSSLConf` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CloseSSLConf` | | siteName | 是 | String | 网站域名 | | updateOf | 是 | String | 更新范围,固定 `1` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示关闭成功 | | msg | String | `SSL已关闭!` | ## 示例 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=CloseSSLConf&siteName=testapi.bt.local&updateOf=1 ``` ```json {"status": true, "msg": "SSL已关闭!"} ``` --- source: https://docs.bt.cn/practical-tutorials/aliyun-open-panel-port.md.txt # 阿里云服务器开放宝塔面板端口 > 介绍在阿里云 ECS 与轻量应用服务器控制台中放行宝塔面板(BT Panel)面板端口与服务端口的完整步骤,含安全组规则配置与防火墙入入口设置。 # 阿里云服务器开放面板端口 本教程介绍如何在阿里云服务器上开放宝塔面板端口,以便远程访问宝塔面板。您可根据您购买的服务器类型,选择对应的教程进行操作。 - [阿里云云服务器配置安全组教程](#阿里云云服务器配置安全组教程) - [阿里云轻量应用服务器配置防火墙教程](#阿里云轻量应用服务器配置防火墙教程) ## 阿里云云服务器配置安全组教程 1. 登录[阿里云控制台](https://ecs.console.aliyun.com/home#/),进入 **云服务器 ECS** 页面,点击需要配置的实例名称。 ![选择实例](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/select-ecs-instance.png) 2. 在实例详情页面,找到并点击选项卡中的 ** 安全组 **-> **管理规则**。 ![管理安全组规则](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/manage-security-group-rules.png) 3. 在安全组入方向规则页面,点击 **添加规则** 按钮。 ![添加安全组规则](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/add-security-group-rule.png) 4. 在弹出的添加规则窗口中,进行如下配置: - **协议**:选择 **自定义 TCP**。 - **访问来源**:除非您明确知道需要限制访问来源,否则建议选择 **0.0.0.0/0**,允许所有 IP 访问。 - **端口范围**:输入宝塔面板的端口号,如您不清楚当前端口号,可 SSH 链接服务器通过命令`bt 14`或者 `cat /www/server/panel/data/port.pl` 查看。 ![配置安全组规则](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/configure-security-group-rule.png) 5. 配置完成后点击**提交**按钮,完成安全组规则添加。此时,您的阿里云云服务器已成功开放宝塔面板端口。 ## 阿里云轻量应用服务器配置防火墙教程 1. 登录[阿里云控制台](https://swasnext.console.aliyun.com/servers/),进入 **轻量应用服务器** 页面,点击需要配置的实例名称。 ![选择轻量应用服务器实例](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/select-lightsail-instance.png) 2. 在实例详情页面,找到并点击选项卡中的 **防火墙**。 ![防火墙选项卡](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/firewall-tab.png) 3. 在防火墙页面,点击 **添加规则** 按钮。 ![添加防火墙规则](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/add-firewall-rule.png) 4. 在弹出的添加规则窗口中,进行如下配置: - **应用类型**:选择 **自定义**。 - **协议**:选择 **TCP**。 - **端口范围**:输入宝塔面板的端口号,如您不清楚当前端口号,可 SSH 链接服务器通过命令`bt 14`或者 `cat /www/server/panel/data/port.pl` 查看。 - **来源IP**:除非您明确知道需要限制访问来源,否则建议填写 **0.0.0.0/0**,允许所有 IP 访问。 ![配置防火墙规则](https://docs.bt.cn/img/practical-tutorials/aliyun-open-panel-port/configure-firewall-rule.png) 5. 配置完成后点击**确认添加**按钮,完成防火墙规则添加。此时,您的阿里云轻量应用服务器已成功开放宝塔面板端口。 --- source: https://docs.bt.cn/purchase-guides/package-service/bt-anti-intrusion.md.txt # 堡塔防入侵插件 > 宝塔面板(BT Panel)堡塔防入侵插件(原防提权),防御大多数入侵提权攻击造成的挂马与被挖矿,有效拦截 webshell 执行提权并及时告警通知。 # 堡塔防入侵 原防提权, 防御大多数的入侵提权攻击造成的挂马和被挖矿,有效拦截webshell执行提权,并及时告警通知。 ![堡塔防入侵](https://docs.bt.cn/img/purchase-guides/bt-anti-intrusion.png) --- source: https://docs.bt.cn/api/crontab/set_task_top.md.txt # set_task_top > 置顶计划任务 # set_task_top 将指定计划任务置顶显示。 - **路由**:`POST /crontab` - **action**:`set_task_top` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_task_top` | | id | 是 | Integer | 任务 ID | ## 示例 ```json {"list": []} ``` --- source: https://docs.bt.cn/api/docker/get_apps.md.txt # get_apps (Docker) > 获取 Docker 应用商店的所有可用应用列表(含参数定义) # get_apps (Docker) 获取 Docker 应用商店中所有可安装的应用列表,共 289 个。**每个应用的 `env` 和 `field` 字段定义了安装时需要的参数**。 - **路由**:`POST /mod/docker/com/get_apps/stype` - **方法**:POST ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data | Array\ | 应用列表 | ### 应用对象关键字段 | 字段 | 类型 | 描述 | |------|------|------| | appname | String | 应用标识名(传 `create_app` 的 `app_name`) | | apptitle | String | 应用显示名称 | | apptype | String | `BuildWebsite`(建站) / `Database`(数据库) / `Storage`(存储) 等 | | appversion | Array | 可用版本列表,每项含 `m_version`(主版本) 和 `s_version`(子版本) | | depend | Array | 依赖应用列表,安装前需先通过 `get_dependence_apps` 确认已安装 | | env | Array\ | **安装参数定义**,每项含 `key`(参数名)、`type`(类型)、`desc`(描述) | | field | Array\ | **UI 配置字段**,每项含 `attr`(参数名)、`name`(显示名)、`type`(类型)、`default`(默认值) | ### 如何确定 `create_app` 的参数 1. 从 `appversion` 取 `m_version` 和 `s_version` 2. `env` 数组中每个对象的 `key` 就是要传的参数名(如 `wordpress_port`、`mysql_database`) 3. `field` 数组中每个对象的 `attr` 也是参数名(如 `allow_access`、`domain`) ## 示例(WordPress) ```json { "appname": "wordpress", "apptitle": "WordPress", "apptype": "BuildWebsite", "appversion": [{"m_version": "6", "s_version": ["7.2", "7.1"]}], "depend": [{"appname": ["mysql"], "apptype": "Database", "appversion": ["5", "8", "9"]}], "env": [ {"key": "version", "type": "string", "desc": "版本号"}, {"key": "wordpress_port", "type": "port", "desc": "端口"} ], "field": [ {"attr": "domain", "name": "域名", "type": "textarea"}, {"attr": "allow_access", "name": "允许外部访问", "type": "checkbox", "default": true} ] } ``` > 安装 WordPress 需要先安装 MySQL 依赖。参数 `wordpress_port`、`allow_access` 等均来自此接口返回。 ## 相关接口 - [create_app](./create_app.md) — 安装应用(参数来源于此接口) - [get_dependence_apps](./get_dependence_apps.md) — 查询依赖安装状态 --- source: https://docs.bt.cn/api/files/RemoveTask.md.txt # RemoveTask > 删除指定的后台任务(文件操作队列) # RemoveTask 删除指定 ID 的后台任务。若任务正在运行(状态 `-1`)则同时终止相关进程。 - **路由**:`POST /files` - **action**:`RemoveTask` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `RemoveTask` | | id | 是 | Integer | 任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=RemoveTask&id=999 ``` ### 响应 ```json {"status": true, "msg": "任务已删除"} ``` --- source: https://docs.bt.cn/api/java/start_tomcat.md.txt # start_tomcat > 启动 Tomcat 项目 # start_tomcat 启动 Tomcat 类型的 Java 项目。 - **路由**:`GET /mod/java/project/start_tomcat/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | tomcat_version | 是 | String | Tomcat 版本 | ## 示例 ```json {"status": true, "msg": "操作成功"} ``` --- source: https://docs.bt.cn/api/proxy/config.md.txt # save_config / get_config > 保存和获取反向代理站点的 Nginx 配置 # save_config / get_config 获取和保存反向代理站点的 Nginx 配置(http_block / server_block)。 - **路由**:`POST /mod/proxy/com/{action}/stype` --- ## get_config — 获取配置 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | ### 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | data.site_conf | string | 完整 Nginx 配置文件内容 | | data.http_block | string | http 块自定义配置 | | data.server_block | string | server 块自定义配置 | | data.ssl_conf | string | SSL 配置 | --- ## save_config — 保存配置 ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | string | 站点名称 | | conf_type | 是 | string | 配置类型:`http_block` 或 `server_block` | | body | 是 | string | 配置内容 | ### 响应 ```json {"code": 0, "status": true, "msg": "保存成功!"} ``` --- source: https://docs.bt.cn/api/site/CloseToHttps.md.txt # CloseToHttps > 关闭 HTTP 到 HTTPS 的强制跳转 # CloseToHttps / HttpToHttps 关闭或开启 HTTP 到 HTTPS 的强制跳转。 - **路由**:`POST /site` - **action**:`CloseToHttps` 或 `HttpToHttps` ## CloseToHttps 关闭 HTTP→HTTPS 强制跳转。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `CloseToHttps` | | siteName | 是 | String | 网站域名 | ## HttpToHttps 开启 HTTP→HTTPS 强制跳转。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `HttpToHttps` | | siteName | 是 | String | 网站域名 | HttpToHttps 需要 SSL 证书已部署,否则返回 `"当前未开启SSL"`。 ::: ## 示例 ### 关闭跳转 ``` action=CloseToHttps&siteName=testapi.bt.local ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "设置成功"} ``` ### 开启跳转(需 SSL) ``` action=HttpToHttps&siteName=testapi.bt.local ``` ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/practical-tutorials/ssl-multi-platform-deployment.md.txt # 宝塔面板 SSL 证书多平台部署教程 > 宝塔面板(BT Panel)SSL 证书多平台部署教程,支持跨面板、CDN、WAF 等多场景证书同步部署与自动续签,避免重复申请与手动上传。 # SSL 证书多平台部署教程 ## 功能介绍 宝塔面板的 SSL 多平台部署功能,可以将已部署的 SSL 证书快速同步到其他平台和服务,适用于以下场景: - **跨面板部署**:多台服务器需要部署相同的证书 - **CDN 证书同步**:网站使用 CDN 后需要同步证书到 CDN 平台 - **WAF 证书同步**:使用 WAF 防护时需要同步证书 :::info 说明 - 此功能仅负责证书部署,需要在主服务器面板上已存在证书才能进行同步。 - 仅支持11.4.0及以上版本宝塔面板。 ::: ## 场景一:跨宝塔面板部署证书 ### 使用场景 当您有多台服务器安装了宝塔面板,需要为网站部署相同的通配符证书时,可以使用此功能在主面板上统一部署,无需逐台登录操作。 ### 前提条件 目标服务器(B 机器)需要开启 API 接口: 1. 登录目标服务器宝塔面板 2. 进入【面板设置】-【API 接口】 3. 开启 API 接口并记录接口密钥 ![开启 API 接口](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105121419933.png) ### 部署步骤 #### 1. 添加授权管理 在主服务器(A 机器)面板上进行操作: 1. 进入【SSL】-【部署授权】-【授权管理】 2. 点击【添加授权】,填写目标服务器信息: - **接口地址**:目标服务器面板地址和端口 - **接口密钥**:目标服务器的 API 密钥 - **是否忽略 SSL**:如部署失败可勾选此项 ![添加授权管理](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105164309747.png) #### 2. 创建部署目标 1. 点击【新增部署目标】 2. 选择【部署到宝塔面板】 3. 输入目标站点名称(支持单站点或多站点) 4. 提交保存 ![创建部署目标](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105164454434.png) #### 3. 执行证书部署 1. 在部署目标列表中,点击【部署】按钮 2. 选择要部署的 SSL 证书 3. 点击【提交】开始部署 ![选择证书部署](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105164633180.png) ### 验证结果 登录目标服务器(B 机器)面板,查看对应网站的 SSL 证书是否已成功部署。 ![证书部署成功](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105165020114.png) ## 场景二:同步证书到宝塔云 WAF ### 使用场景 当服务器安装了宝塔云 WAF 进行网站防护,需要为防护网站部署 SSL 证书时,可以从主面板直接同步证书到云 WAF。 ![云 WAF 防护站点](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105165414487.png) ### 前提条件 云 WAF 服务器需要开启 API 接口: 1. 登录云 WAF 服务器宝塔面板 2. 进入【面板设置】-【API 接口】 3. 开启 API 接口并记录接口密钥 ![云 WAF 开启 API](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170353827.png) ### 部署步骤 #### 1. 添加云 WAF 授权 在主服务器(A 机器)面板上: 1. 进入【SSL】-【部署授权】-【授权管理】 2. 添加云 WAF 服务器的接口地址和密钥 3. 如部署失败可勾选【是否忽略 SSL】选项 ![添加云 WAF 授权](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170421707.png) #### 2. 创建部署目标 1. 点击【新增部署目标】 2. 选择【部署到云 WAF】 3. 选择要部署证书的防护站点 4. 提交保存 ![创建云 WAF 部署目标](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170745492.png) #### 3. 执行证书部署 1. 点击【部署】按钮 2. 选择要部署的 SSL 证书 3. 提交执行 ![部署证书到云 WAF](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170826159.png) ![选择证书](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170915766.png) ### 验证结果 登录云 WAF 面板,检查防护站点的证书是否已成功部署。 ![云 WAF 证书部署成功](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105170958469.png) ## 场景三:同步证书到 CDN 平台 ### 使用场景 当网站使用了 CDN 加速服务,宝塔面板部署证书后需要同步到 CDN 平台,否则用户访问时会显示证书不安全警告。 本教程以阿里云 CDN 为例,其他云厂商(腾讯云、华为云等)的操作方式类似。 :::tip 提示 建议使用主账户,RAM 子账户可能会出现权限不足导致部署失败的情况。 ::: ![CDN 证书未部署](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105173224641.png) ![CDN 证书警告](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105173303140.png) ### 前提条件 需要创建云厂商的 AccessKey: 以阿里云为例: 1. 登录阿里云控制台 2. 进入【AccessKey 管理】 3. 创建 AccessKey 并记录 AccessKey ID 和 AccessKey Secret ![创建阿里云 AccessKey](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105173937088.png) ### 部署步骤 #### 1. 添加 CDN 授权 在主服务器(A 机器)面板上: 1. 进入【SSL】-【部署授权】-【授权管理】 2. 选择对应的 CDN 平台(如阿里云 CDN) 3. 填写 AccessKey ID 和 AccessKey Secret 4. 提交保存 ![添加阿里云 CDN 授权](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105174354856.png) #### 2. 创建部署目标 1. 点击【新增部署目标】 2. 选择【部署到阿里云 CDN】 3. 输入 CDN 加速域名 4. 提交保存 ![创建 CDN 部署目标](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105175042987.png) #### 3. 执行证书部署 1. 点击【部署】按钮 2. 选择要部署的 SSL 证书 3. 提交执行 ![部署证书到 CDN](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105175210518.png) ### 验证结果 登录 CDN 控制台,检查域名的 HTTPS 证书是否已成功部署。 ![CDN 证书部署成功](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260105181039330.png) ## 场景四:同步证书到雷池 WAF ### 使用场景 当网站使用雷池 WAF 进行防护,面板更新证书后需要同步到雷池 WAF 平台。 ![雷池 WAF 防护站点](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106092623111.png) ![雷池 WAF 证书配置](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106092706490.png) ### 前提条件 雷池 WAF 需要开启 API Token: 1. 登录雷池 WAF 管理后台 2. 进入【系统设置】-【API Token】 3. 创建 API Token 并记录 ![开启雷池 API Token](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106092842208.png) ### 部署步骤 #### 1. 添加雷池 WAF 授权 在主服务器(A 机器)面板上: 1. 进入【SSL】-【部署授权】-【授权管理】 2. 选择【雷池 WAF】 3. 填写雷池 WAF 的接口地址和 API Token 4. 如部署失败可勾选【是否忽略 SSL】选项 ![添加雷池 WAF 授权](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106093126895.png) #### 2. 创建部署目标 1. 点击【新增部署目标】 2. 选择【部署到雷池 WAF】 3. 选择要部署证书的防护站点 4. 提交保存 ![创建雷池部署目标](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106093245600.png) ![填写部署信息](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106093307134.png) #### 3. 执行证书部署 1. 点击【部署】按钮 2. 选择要部署的 SSL 证书 3. 提交执行 ![部署证书到雷池](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106093446908.png) ### 验证结果 登录雷池 WAF 管理后台,检查防护站点的证书是否已成功同步。 ![雷池证书同步成功](https://docs.bt.cn/img/practical-tutorials/ssl-deployment/image-20260106093803671.png) --- source: https://docs.bt.cn/purchase-guides/package-service/php-security-protection.md.txt # 堡塔 PHP 安全防护插件 > 宝塔面板(BT Panel)堡塔 PHP 安全防护插件,PHP 内核级防御模块,在项目底层进行过滤与拦截,彻底杜绝跨站、精准防渗透与精准防提权。 # 堡塔 PHP 安全防护 PHP内核级防御模块,可针对项目进行底层过滤,彻底杜绝跨站/精准防渗透/精准防提权。 ![PHP安全防护](https://docs.bt.cn/img/purchase-guides/php-security-protection.png) --- source: https://docs.bt.cn/api/crontab/export_crontab_to_json.md.txt # export_crontab_to_json > 导出计划任务数据为 JSON 文件 # export_crontab_to_json 将指定计划任务的数据导出为 JSON 文件到 `/tmp/` 目录。 - **路由**:`POST /crontab` - **action**:`export_crontab_to_json` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `export_crontab_to_json` | | id | 是 | Integer | 任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 导出成功 | | msg | String | 导出文件路径 | ## 示例 ```json {"status": true, "msg": "/tmp/计划任务数据.json"} ``` --- source: https://docs.bt.cn/api/docker/create_app.md.txt # create_app > 从 Docker 应用商店安装应用(参数来源于 get_apps 返回值) # create_app 从应用商店安装 Docker 应用(如 WordPress、MySQL、Redis 等)。 **所有应用的安装参数均来源于 [get_apps](./get_apps.md) 返回值**。 - **路由**:`POST /mod/docker/com/create_app/stype` - **方法**:POST ## 参数来源 1. 先调用 [get_apps](./get_apps.md) 获取应用列表 2. 找到目标应用,从以下字段获取参数: - `appversion` → `m_version`(主版本)、`s_version`(子版本) - `env[].key` → 安装参数名(如 `wordpress_port`、`mysql_port`) - `field[].attr` → UI 配置参数名(如 `allow_access`、`domain`) - `depend` → 依赖应用列表,需先安装 ## 通用参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | app_name | 是 | String | 应用名称(来自 `get_apps[].appname`) | | service_name | 是 | String | 服务实例名称(唯一) | | m_version | 是 | String | 主版本号(来自 `get_apps[].appversion[].m_version`) | | s_version | 是 | String | 子版本号(来自 `get_apps[].appversion[].s_version`) | | allow_access | 是 | String | `"1"` 允许外网访问 | | cpus | 否 | String | CPU 限制 | | memory_limit | 否 | String | 内存限制(MB) | | disable_domain | 否 | String | `"1"` 不绑定域名(建站类应用跳过域名检查) | ### 应用专属参数 根据 `get_apps` 返回的 `env` 和 `field` 数组中的 `key`/`attr` 值,每个应用有不同的参数: - MySQL:`mysql_port`(端口)、`mysql_root_password`(root密码) - WordPress:`wordpress_port`(端口)、`domain`(域名) - Redis:`redis_port`(端口)、`redis_password`(密码) - 等等... ## 示例 ### 安装 MySQL ```bash # 1. 从 get_apps 获取 mysql 的参数定义 POST /mod/docker/com/get_apps/stype # 2. 根据 env/field 组装参数创建 POST /mod/docker/com/create_app/stype app_name=mysql&service_name=docker_mysql&m_version=8&s_version=0&allow_access=1&mysql_port=3308&cpus=1&memory_limit=512 ``` ### 响应 ```json {"code": 0, "status": true, "msg": "应用创建成功,请耐心等待应用初始化,可能需要等待1-5分钟..."} ``` ## 相关接口 - [get_apps](./get_apps.md) — 获取应用列表及参数定义 - [get_dependence_apps](./get_dependence_apps.md) — 查询依赖应用安装状态 --- source: https://docs.bt.cn/api/files/ActionTask.md.txt # ActionTask > 激活后台任务队列,开始处理积压的文件操作任务 # ActionTask 激活后台任务队列,使积压的文件操作任务开始执行。 - **路由**:`POST /files` - **action**:`ActionTask` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ActionTask` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 激活成功 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=ActionTask ``` ### 响应 ```json {"status": true, "msg": "任务队列已激活"} ``` --- source: https://docs.bt.cn/api/java/fix_project.md.txt # fix_project > 修复 Java 项目的配置 # fix_project 修复 Java 项目的配置文件,恢复默认设置。 - **路由**:`GET /mod/java/project/fix_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "Tomcat项目修复成功"} ``` --- source: https://docs.bt.cn/api/site/GetSiteDomains.md.txt # GetSiteDomains > 获取网站所有绑定域名详情 # GetSiteDomains 获取指定网站绑定的所有域名详情,包含 SSL 申请状态、DNS 状态等信息。 - **路由**:`POST /site` - **action**:`GetSiteDomains` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSiteDomains` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | domains | Array | 域名列表 | | domains[].name | String | 域名 | | domains[].binding | Boolean | 是否为子目录绑定 | | domains[].apply_ssl | Integer | SSL 申请状态 | | domains[].dns_status | Integer | DNS 状态 | ## 示例 ```json { "domains": [ {"name": "testapi.bt.local", "binding": false, "apply_ssl": 1, "dns_status": 0}, {"name": "api-test.example.com", "binding": false, "apply_ssl": 1, "dns_status": 0} ] } ``` --- source: https://docs.bt.cn/practical-tutorials/node-distribution-management.md.txt # 宝塔面板节点分发管理功能教程 > 宝塔面板(BT Panel)节点管理中的分发管理功能使用教程,实现多节点批量执行命令、文件分发与任务模板复用,适用于多服务器集中运维场景。 # 节点分发管理功能教程 ## 功能介绍 宝塔面板的节点管理功能,可以通过单个面板统一管理多台服务器,实现以下能力: - **状态监控**:实时查看各节点运行状态 - **负载均衡**:智能分配流量负载 - **主从复制**:数据同步与备份 - **文件互传**:节点间快速传输文件 - **分发管理**:批量执行命令和文件分发 本文主要介绍**分发管理功能**的使用方法。 ## 适用场景 ### 多节点系统维护 通过批量执行命令或脚本,实现: - 日志清理 - 系统健康检查 - 节点状态信息收集 - 软件批量更新 - 配置批量修改 ### 文件批量分发 当网站程序更新后,无需逐台登录上传文件。文件分发功能支持: - 从任意节点发起文件传输 - 将文件批量发送至多个目标节点 - 保持文件一致性 ## 前置准备:添加节点 在使用分发管理功能之前,需要先将服务器添加到节点管理中。 ### 添加步骤 1. 进入【节点管理】-【添加节点】 ![添加节点入口](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106232105593.png) ### 添加方式 节点添加支持三种方式: | 添加方式 | 说明 | 推荐度 | |---------|------|--------| | **API 密钥** | 使用面板 API 接口添加 | ⭐⭐⭐ 推荐 | | **APP 插件** | 通过宝塔 APP 扫码授权 | ⭐⭐ | | **SSH 连接** | 使用 SSH 账号密码添加 | ⭐ | :::warning 注意事项 - **API 密钥方式**:添加时需要在目标面板中添加当前服务器 IP 到 API 白名单 - **SSH 方式**:默认使用 root 用户,请确保填写正确的 root 账户信息 - **APP 插件方式**:如果 APP 不弹窗授权,建议改用 API 方式添加 ::: ## 功能一:批量执行命令 ### 使用场景 批量执行脚本收集各节点的系统信息(CPU、内存、磁盘使用率等)。 ### 操作步骤 #### 1. 进入分发管理 点击【分发管理】进入管理界面。 ![分发管理入口](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106232417422.png) #### 2. 选择节点并添加任务 1. 勾选需要执行命令的节点 2. 点击【添加任务】按钮 ![选择节点添加任务](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106232619417.png) #### 3. 配置执行命令 1. 选择【执行命令】-【自定义命令】-【Shell 脚本】 2. 输入脚本内容或从脚本库选择 ![配置执行命令](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106234151094.png) ### 示例脚本:收集系统信息 以下是一个收集服务器 CPU、内存、磁盘信息的 Shell 脚本示例: ```bash #!/bin/bash # 功能:收集Linux服务器CPU、内存、磁盘核心信息 # 适用:CentOS/Ubuntu/Debian等主流Linux发行版 # 设置脚本执行时的字符编码(避免中文乱码) export LANG=en_US.UTF-8 # 输出脚本执行时间 echo "========================================" echo "服务器硬件信息收集 - 执行时间:$(date +'%Y-%m-%d %H:%M:%S')" echo "========================================" # 1. 收集CPU使用率 echo -e "\n【CPU 信息】" cpu_core=$(grep -c '^processor' /proc/cpuinfo) cpu_idle=$(top -b -n 1 | grep '%Cpu(s)' | awk '{print $8}' | cut -d '.' -f1) cpu_usage=$((100 - cpu_idle)) echo "CPU总核心数:${cpu_core} 核" echo "CPU当前使用率:${cpu_usage}%" # 2. 收集内存使用信息 echo -e "\n【内存 信息】" mem_info=$(free -h | grep Mem | awk '{print "总内存:"$2"\t已用:"$3"\t可用:"$4"\t使用率:"$5}') echo "${mem_info}" # 3. 收集磁盘使用信息 echo -e "\n【磁盘 信息】" echo "根目录(/)占用情况:" df -h / | grep -v Filesystem | awk '{print "总空间:"$2"\t已用:"$3"\t可用:"$4"\t使用率:"$5}' echo -e "\n所有挂载点磁盘情况(仅显示主要分区):" df -h | grep -E '(/$|/data|/home)' | awk '{print "分区:"$6"\t总空间:"$2"\t已用:"$3"\t可用:"$4"\t使用率:"$5}' # 输出结束标识 echo -e "\n========================================" echo "信息收集完成!" echo "========================================" ``` #### 4. 执行任务 填写完脚本内容后,点击【确认】保存任务。 ![确认添加任务](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106233001441.png) 点击【执行】按钮,等待任务执行完成。 ![执行任务](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106233059793.png) #### 5. 查看执行结果 任务执行完成后,点击【详情】查看各节点的执行结果和收集到的系统信息。 ![查看执行结果](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106233155542.png) ### 保存为任务模板 为了方便后续使用,可以将常用任务保存为模板: 1. 点击【另存为模板】按钮 2. 输入模板名称和描述 3. 保存后可在任务模板中快速调用 ![另存为模板](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106233417982.png) ### 使用任务模板 下次需要执行相同任务时: 1. 点击【任务模板】 2. 选择已保存的模板 3. 添加到任务列表 4. 选择执行节点后直接执行 ![使用任务模板](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106233818004.png) ## 功能二:文件分发 ### 使用场景 当一个节点的网站内容更新后,需要将文件同步到其他节点,可以使用文件分发功能快速完成。 ### 操作步骤 #### 1. 创建文件分发任务 1. 进入【分发管理】 2. 选择目标节点 3. 点击【添加任务】 4. 选择【文件分发】 ![文件分发配置](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106234438351.png) #### 2. 配置分发参数 需要配置以下参数: - **源节点**:选择要获取文件的源服务器 - **文件路径**:输入文件的绝对路径,或点击文件夹图标选择 - **目标路径**:输入要传输到目标节点的目录路径(绝对路径) :::tip 提示 - 支持传输单个文件或整个目录 - 源节点可以是任意已添加的节点 - 目标路径会自动创建(如不存在) ::: #### 3. 执行文件分发 1. 确认配置信息无误 2. 点击【确认】添加任务 3. 点击【执行】开始文件传输 4. 等待传输完成 #### 4. 查看传输结果 任务完成后,可以查看传输状态和结果,确认文件是否成功分发到各个节点。 ### 保存为分发模板 文件分发任务同样可以保存为模板,方便后续网站更新时快速执行同步操作。 ## 执行日志 所有的任务执行都会记录在执行日志中,可以随时查看历史执行记录。 ![执行日志](https://docs.bt.cn/img/practical-tutorials/node-distribution/image-20260106235211444.png) 执行日志包含以下信息: - 任务名称和类型 - 执行时间 - 目标节点 - 执行状态(成功/失败) - 执行结果详情 --- source: https://docs.bt.cn/purchase-guides/package-service/bt-resource-monitor.md.txt # 堡塔资源监控插件 > 宝塔面板(BT Panel)堡塔资源监控插件,实时监视网站每秒请求数与进程资源占用,帮助运维人员迅速定位高负载、资源异常与总请求异常的原因。 # 堡塔资源监控 对网站每秒请求数和进程占用的资源进行监视。 ![堡塔资源监控](https://docs.bt.cn/img/purchase-guides/bt-resource-monitor.png) --- source: https://docs.bt.cn/api/crontab/set_execute_script.md.txt # set_execute_script > 立即执行指定的计划任务脚本 # set_execute_script 立即执行指定计划任务的脚本。 - **路由**:`POST /crontab` - **action**:`set_execute_script` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_execute_script` | | id | 是 | Integer | 任务 ID | ## 示例 ``` false ``` --- source: https://docs.bt.cn/api/docker/get_dependence_apps.md.txt # get_dependence_apps > 查询应用的依赖是否已安装 # get_dependence_apps 查询指定应用所需的依赖应用(如数据库)是否已安装。 - **路由**:`POST /mod/docker/com/get_dependence_apps/stype` - **方法**:POST ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | depend_app | 是 | String | JSON 数组,依赖应用列表,如 `[{"app_name":"mysql","app_type":"Database"}]` | ## 示例 ```json {"code": 0, "status": true, "data": [{"appname": "mysql", "app_type": "Database", "installed": []}]} ``` > `installed` 为空表示该依赖尚未安装。 ## 相关接口 - [create_app](./create_app.md) — 安装应用 --- source: https://docs.bt.cn/api/files/Recycle_bin.md.txt # Recycle_bin > 开关回收站功能 # Recycle_bin 切换文件回收站功能的开启/关闭状态。若回收站关闭,删除的文件将被直接永久删除。 - **路由**:`POST /files` - **action**:`Recycle_bin` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Recycle_bin` | | db | 否 | String | 传任意值则操作数据库回收站而非文件回收站 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作成功 | | msg | String | `FILE_ON_RECYCLE_BIN`(已开启)或 `FILE_OFF_RECYCLE_BIN`(已关闭) | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=Recycle_bin ``` ### 响应 ```json {"status": true, "msg": "已关闭回收站功能!"} ``` --- source: https://docs.bt.cn/api/java/force_stop.md.txt # force_stop > 强制停止 Java 项目进程 # force_stop 强制终止 Java 项目的所有相关进程(kill -9)。 - **路由**:`GET /mod/java/project/force_stop/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "强制停止成功"} ``` --- source: https://docs.bt.cn/api/site/GetDefaultSite.md.txt # GetDefaultSite > 获取默认站点配置 # GetDefaultSite 获取面板默认站点配置,包括当前是否有默认站点、站点列表。 - **路由**:`POST /site` - **action**:`GetDefaultSite` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDefaultSite` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | sites | Array | 可用站点列表 | | defaultSite | Boolean/String | 默认站点名,`false` 表示未设置 | ## 示例 ```json {"sites": [{"name": "testapi.bt.local"}], "defaultSite": false} ``` --- source: https://docs.bt.cn/practical-tutorials/multi-panel-vs-node-management.md.txt # 多面板管理插件与节点管理功能对比 > 宝塔面板(BT Panel)多面板管理插件与节点管理功能的区别、特性对比与使用教程,帮助多服务器运维场景选型(负载均衡 / 主从复制 / 集中运维)。 # 多面板管理插件与节点管理功能对比 ## 概述 宝塔面板提供了两种多服务器管理方案: - **多面板管理插件**:软件商店中的独立插件,侧重于可视化监控和快速访问 - **节点管理**:面板左侧菜单的内置功能,提供更丰富的集群管理能力 本文将详细介绍两者的功能特性、使用方法及差异对比,帮助您选择合适的管理方式。 ## 测试环境 - 操作系统:OpenCloudOS 9 - 宝塔面板版本:11.4.0 ## 多面板管理插件 多面板管理是宝塔软件商店中的插件,需要先安装才能使用。该插件支持统一管理多个节点,可视化查看服务器指标,管理不同服务器的网站信息和统计数据。 ### 探针模式 探针模式提供直观的可视化监控界面,一目了然地查看所有节点的运行状态。 **功能特点**: - 添加子节点只需输入面板地址和 API 密钥 - 实时显示 CPU、内存、磁盘使用情况 - 图形化展示,方便快速了解服务器状态 ![探针模式界面](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107093651867.png) ### 列表模式 列表模式提供更多的管理操作选项,是日常运维的主要工作界面。 ![列表模式界面](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107093959255.png) #### 可用操作 列表模式提供以下快捷操作: | 操作 | 说明 | |------|------| | **访问面板** | 直接跳转到子节点面板首页 | | **管理** | 进入节点详细管理界面 | | **重启面板** | 远程重启子节点的宝塔面板 | | **重启服务器** | 远程重启子节点服务器 | | **编辑** | 修改节点配置信息 | | **删除** | 移除节点 | #### 访问面板 点击"访问面板"按钮,可以直接打开子节点的面板首页,无需手动输入地址和登录,大幅提升操作效率。 #### 管理功能 管理菜单是一个综合管理模块,包含以下子功能: ##### 1. 节点状态 查看节点的详细运行信息和历史状态数据。 ![节点状态](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107094333225.png) **功能说明**: - 实时监控系统资源使用情况 - 查看历史监控数据和趋势 - 分析服务器性能瓶颈 ##### 2. 网络监控 监控服务器的存活状态,自动检测异常并告警。 ![网络监控](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107094729874.png) **功能说明**: - 设置监控间隔时间 - 自动检测服务器是否在线 - 异常时触发告警通知 ##### 3. 网站管理 集中管理子节点上的所有网站,支持域名管理、SSL 证书、配置文件编辑等高级功能。 ![网站列表](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107094905838.png) **基础功能**: - 查看所有网站列表 - 远程启动/停止网站 - 查看网站详细流量统计 ![网站流量统计](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107094958273.png) ![流量详情](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107095056059.png) **高级管理功能**: ###### 域名管理 点击网站的【管理】按钮,可以为子节点网站添加、编辑域名和 IP 绑定。 ![域名管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204151944552.png) ![添加域名](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204152325948.png) **功能说明**: - 添加多个域名绑定 - 支持泛域名配置 - 配置 IP 访问 - 减少来回切换面板的操作 ###### 伪静态配置 在管理界面中可以直接编辑网站的伪静态规则,与面板网站的伪静态功能一致。 ![伪静态配置](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204152341332.png) **功能说明**: - 选择常用的伪静态规则模板 - 自定义伪静态规则 - 支持各类 CMS 和框架 ###### 配置文件编辑 直接编辑网站的 Nginx 或 Apache 配置文件。 ![配置文件](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204152453522.png) **功能说明**: - 在线编辑配置文件 - 实时保存修改 - 方便进行高级配置调整 ###### SSL 证书管理 管理网站的 SSL 证书,支持手动上传证书和部署证书夹中的证书。 ![SSL 证书](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204152818641.png) **功能说明**: - 手动上传证书文件 - 从证书夹选择已有证书部署 - 配置 HTTPS 强制跳转 - 注:目前不支持直接申请证书,需要手动导入 ![证书夹部署](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260205092542200.png) **使用场景**: - 子节点网站需要部署 SSL 证书时 - 从证书夹快速部署已有证书 - 统一管理多个网站的证书 ###### 网站日志查看 查看网站的访问日志和错误日志。 ![网站日志](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204152859917.png) **功能说明**: - 实时查看访问日志 - 查看错误日志定位问题 - 方便排查网站异常 ##### 4. 软件管理 管理子节点上安装的软件环境。 ![软件管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107095354205.png) **功能说明**: - 查看已安装的运行环境(PHP、MySQL、Nginx 等) - 远程启动/停止/重启软件服务 - 查看常用服务的运行日志 - 注:目前仅支持环境类软件的启停操作 ###### 服务日志查看 支持查看常用服务(MySQL、Nginx、PHP)的运行日志,方便排查问题。 ![服务日志](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260205092205745.png) **功能说明**: - 实时查看服务运行日志 - 支持 MySQL、Nginx、PHP 等常用服务 - 快速定位服务异常 ##### 5. 计划任务管理 管理子节点的计划任务,可以查看任务日志和手动执行任务。 ![计划任务管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204153107213.png) **功能说明**: - 查看所有计划任务列表 - 查看任务执行日志 - 手动触发任务执行 - 直观了解节点机器的计划任务执行效果 **使用场景**: - 监控备份任务的执行情况 - 调试新创建的计划任务 - 查看任务执行历史 ##### 6. MySQL 数据库管理 集中管理子节点的 MySQL 数据库,支持查看和备份操作。 ![数据库列表](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260204153242868.png) ![数据库备份](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260205092101835.png) **功能说明**: - 查看所有数据库列表 - 远程备份数据库 - 查看数据库大小和状态 - 备份文件保存在子节点本地 **使用场景**: - 统一管理多个节点的数据库 - 远程执行数据库备份 - 提升备份效率 :::tip 提示 备份文件存储在子节点的备份目录中,不会占用主节点的存储空间。 ::: ##### 7. SSH 终端 通过 Web 界面直接连接到子节点的 SSH 终端。 ![SSH 终端](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107095601739.png) **功能说明**: - 点击"终端"按钮进入子节点命令行 - 无需额外的 SSH 客户端 - 点击"编辑"可修改节点连接信息 #### 重启面板 远程重启子节点的宝塔面板服务。 ![重启面板](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107095737435.png) **使用场景**: - 面板配置修改后需要生效 - 面板运行异常时重启恢复 #### 重启服务器 远程重启子节点服务器。 ![重启服务器](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107095756740.png) :::warning 注意 重启服务器会中断所有正在运行的服务,请谨慎操作。 ::: #### 编辑节点 修改节点的配置信息。 ![编辑节点](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107100104086.png) **可修改项**: - 节点名称 - 面板地址 - API 密钥 - 节点分类 ### 分类管理 通过分类功能对节点进行分组管理,提升管理效率。 ![分类管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260107100223402.png) **使用建议**: - 按业务类型分类(如:Web 服务器、数据库服务器) - 按环境分类(如:生产环境、测试环境、开发环境) - 按地域分类(如:华东、华北、华南) - 自定义分类标签 ## 节点管理功能 节点管理是面板左侧菜单的内置功能,相比多面板管理插件,提供了更强大的集群管理能力。 ### 节点列表 #### 列表模式 节点管理的列表模式界面与多面板管理插件类似,但功能有所差异。 ![节点列表模式](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092043940.png) **主要差异**: - 管理菜单中仅包含 SSH 功能 - 没有网站管理、软件管理等子功能 - 更侧重于底层的节点操作 ![节点管理菜单](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092209122.png) #### 探针模式 探针模式的界面和功能与多面板管理插件一致。 ![节点探针模式](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092251372.png) ### 独有功能对比 以下功能是节点管理独有的,多面板管理插件不具备。 #### 1. 负载均衡 配置负载均衡服务,将请求智能分发到多个节点。 ##### HTTP 负载均衡 适用于 Web 服务的负载分发。 ![HTTP 负载均衡](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092628644.png) **功能特点**: - 支持多种负载均衡算法(轮询、IP Hash、权重等) - 配置健康检查 - 自动剔除故障节点 - 支持 HTTPS 请求转发 ##### TCP/UDP 负载均衡 适用于数据库、游戏服务器等非 HTTP 服务。 ![TCP/UDP 负载均衡](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092644919.png) **功能特点**: - 设置监听端口 - 将请求转发到后端节点 - 支持 TCP 和 UDP 协议 - 适用于各种应用场景 #### 2. 主从复制 一键配置数据库主从同步,实现数据备份和读写分离。 ##### MySQL 主从复制 ![MySQL 主从复制](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109092950383.png) **功能特点**: - 选择主节点和从节点 - 自动配置同步参数 - 一键启用主从复制 - 监控同步状态 ##### Redis 主从复制 ![Redis 主从复制](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109093133714.png) **功能特点**: - 配置 Redis 主从关系 - 自动同步数据 - 支持哨兵模式 - 实时查看同步状态 #### 3. 文件互传 节点间快速传输文件,支持批量操作。 ![文件互传](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109093259029.png) **功能特点**: - 在任意节点间传输文件 - 支持单个文件或整个目录 - 批量传输多个文件/文件夹 - 查看传输进度和结果 **使用场景**: - 网站文件同步 - 配置文件分发 - 备份文件传输 #### 4. 分发管理 类似 Ansible 的批量管理工具,实现自动化运维。 ![分发管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109093434889.png) **功能特点**: - 批量执行 Shell、Python 命令 - 批量分发文件到多个节点 - 查看执行日志 - 自定义脚本库 - 创建任务模板 **详细使用方法**:参考 [节点分发管理功能教程](./node-distribution-management.md) #### 5. 告警管理 针对负载均衡和主从复制的告警配置。 ![告警管理](https://docs.bt.cn/img/practical-tutorials/multi-panel-vs-node-management/image-20260109093718254.png) **支持的告警方式**: - 邮箱通知 - 钉钉机器人 - 企业微信 - 自定义 Webhook **告警场景**: - 负载均衡节点故障 - 主从复制同步异常 - 节点离线告警 - 资源使用超限 ## 功能对比总结 | 功能模块 | 多面板管理插件 | 节点管理 | |---------|---------------|---------| | **节点添加** | ✅ 支持 | ✅ 支持 | | **探针模式** | ✅ 支持 | ✅ 支持 | | **列表模式** | ✅ 支持 | ✅ 支持 | | **访问面板** | ✅ 支持 | ✅ 支持 | | **重启面板/服务器** | ✅ 支持 | ✅ 支持 | | **节点状态监控** | ✅ 支持 | ✅ 支持 | | **网络监控** | ✅ 支持 | ❌ 不支持 | | **网站管理(基础)** | ✅ 支持 | ❌ 不支持 | | **网站域名管理** | ✅ 支持 | ❌ 不支持 | | **网站伪静态配置** | ✅ 支持 | ❌ 不支持 | | **网站配置文件编辑** | ✅ 支持 | ❌ 不支持 | | **网站 SSL 证书管理** | ✅ 支持 | ❌ 不支持 | | **网站日志查看** | ✅ 支持 | ❌ 不支持 | | **软件管理** | ✅ 支持 | ❌ 不支持 | | **服务日志查看** | ✅ 支持 | ❌ 不支持 | | **计划任务管理** | ✅ 支持 | ❌ 不支持 | | **MySQL 数据库管理** | ✅ 支持 | ❌ 不支持 | | **SSH 终端** | ✅ 支持 | ✅ 支持 | | **分类管理** | ✅ 支持 | ❌ 不支持 | | **负载均衡** | ❌ 不支持 | ✅ 支持 | | **主从复制** | ❌ 不支持 | ✅ 支持 | | **文件互传** | ❌ 不支持 | ✅ 支持 | | **分发管理** | ❌ 不支持 | ✅ 支持 | | **告警管理** | ❌ 不支持 | ✅ 支持 | ## 使用场景建议 ### 适合使用多面板管理插件的场景 1. **可视化监控需求** - 需要直观的图形化监控界面 - 快速查看多个服务器的运行状态 - 分类管理大量服务器 2. **网站集中管理** - 统一管理多个服务器上的网站 - 远程配置网站域名和 SSL 证书 - 编辑网站配置文件和伪静态规则 - 查看网站流量统计和日志 - 远程控制网站启停 3. **数据库运维** - 集中查看多个节点的数据库 - 远程执行数据库备份 - 监控数据库状态 4. **任务管理需求** - 查看节点计划任务执行情况 - 手动触发任务执行 - 监控备份任务运行状态 5. **快速访问需求** - 频繁切换不同面板 - 需要一键访问子节点面板 - 查看服务运行日志 ### 适合使用节点管理的场景 1. **集群架构部署** - 需要配置负载均衡 - 搭建数据库主从架构 - 实现高可用集群 2. **自动化运维** - 批量执行命令和脚本 - 批量文件分发 - 自动化任务调度 3. **文件同步需求** - 节点间快速传输文件 - 网站内容同步 - 配置文件分发 4. **告警监控需求** - 需要完善的告警机制 - 监控关键服务状态 - 多渠道告警通知 --- source: https://docs.bt.cn/api/crontab/repair_crontab_service.md.txt # repair_crontab_service > 修复计划任务服务(crond) # repair_crontab_service 尝试修复 crond 计划任务服务。 - **路由**:`POST /crontab` - **action**:`repair_crontab_service` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `true` 修复成功 / `false` 无需修复 | ## 示例 ``` false ``` --- source: https://docs.bt.cn/api/docker/get_apphub_config.md.txt # get_apphub_config > 获取 Docker 应用商店的 Git 配置 # get_apphub_config 获取 Docker 应用商店的 Git 仓库配置信息。 - **路由**:`POST /mod/docker/com/get_apphub_config/stype` ## 示例 ```json {"code": 0, "status": true, "data": {"git_config": {"git_url": "", "git_branch": "main"}}} ``` --- source: https://docs.bt.cn/api/files/file_webshell_check.md.txt # file_webshell_check > 检测单个文件是否为 Webshell 木马 # file_webshell_check 对指定文件进行 Webshell(木马)检测。 - **路由**:`POST /files` - **action**:`file_webshell_check` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `file_webshell_check` | | filename | 是 | String | 要检测的文件绝对路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 无风险,`false` 检测到风险 | | msg | String | `无风险` 或包含告警信息 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=file_webshell_check&filename=/www/wwwroot/test.php ``` ### 响应 ```json {"status": true, "msg": "无风险"} ``` --- source: https://docs.bt.cn/api/java/modify_project.md.txt # modify_project > 修改 Java 项目的配置 # modify_project 修改 Java 项目的运行配置(JDK、启动命令、端口、备注等)。 - **路由**:`GET /mod/java/project/modify_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | project_cmd | 是 | String | 启动命令 | | project_ps | 否 | String | 备注 | | project_jdk | 否 | String | JDK 路径 | | port | 否 | Integer | 运行端口 | ## 示例 ```json {"status": true, "msg": "项目修改成功"} ``` --- source: https://docs.bt.cn/api/site/GetRewriteLists.md.txt # GetRewriteLists > 获取所有可用的伪静态规则模板文件列表 # GetRewriteLists 获取所有可用的伪静态规则模板文件列表,按站点和模板分类。 - **路由**:`POST /site` - **action**:`GetRewriteLists` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetRewriteLists` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | err_site | Array | 配置异常的站点列表 | | site_rewrites | Array | 各站点当前使用的规则 | | template_rewrites | Array | 可用模板列表 | ## 示例 ```json { "err_site": [], "site_rewrites": [], "template_rewrites": [ {"name": "wordpress", "file": "/www/server/panel/rewrite/nginx/wordpress.conf"}, {"name": "laravel5", "file": "/www/server/panel/rewrite/nginx/laravel5.conf"} ] } ``` --- source: https://docs.bt.cn/practical-tutorials/wordpress-security-scan.md.txt # WordPress 漏洞检测插件使用教程 > 宝塔面板(BT Panel)WordPress 漏洞检测插件使用教程,实时监测 WordPress 插件、主题与核心程序的安全漏洞,提供修复建议与告警推送。 # WordPress 漏洞检测插件使用教程 ## 插件介绍 :::info 专业版插件 此插件为宝塔面板专业版插件,需要专业版授权才能使用。 ::: 宝塔 WordPress 漏洞检测插件是专为 WordPress 网站提供的专业安全工具,支持扫描超过 **10,000+** 海量漏洞数据库,帮助站长及时发现并修复安全隐患。 ## 核心价值 运营 WordPress 网站的朋友都知道:插件和主题装得越多,安全风险就越大。很多时候并不是不重视安全,而是容易忽略插件、主题和核心程序的更新,等到漏洞被利用、造成损失才追悔莫及。 **实时监测 WP 插件/主题公开披露漏洞,提前预警风险。** 使用这个插件可以帮您: - ✅ **自动扫描**:自动检测站点已安装的插件、主题及 WordPress 核心程序 - ✅ **实时匹配**:实时匹配最新公开披露的漏洞数据库 - ✅ **第一时间预警**:及时提醒需要修复的安全隐患 - ✅ **省心省力**:无需手动排查,自动化完成安全检测 :::warning 注意事项 仅支持检测 WordPress 站点,其他类型的网站不支持。 ::: ## 使用方法 ### 步骤一:添加站点目录 1. 在宝塔面板中打开【WordPress 漏洞检测】插件 2. 进入【概览】页面 3. 点击【检测站点目录】按钮 4. 输入 WordPress 站点的根目录路径(例如:`/www/wwwroot/example.com`) 5. 点击添加 ![添加站点目录](https://docs.bt.cn/img/practical-tutorials/wordpress-security-scan/image-20260109092807859.png) **路径说明**: - 输入 WordPress 站点的完整根目录路径 - 支持添加多个站点进行批量检测 - 确保路径中包含 `wp-config.php` 等 WordPress 核心文件 ### 步骤二:配置自动扫描 为了确保网站安全,建议开启自动扫描功能,让插件定期检测漏洞。 1. 在【概览】页面上方找到【自动扫描】设置 2. 点击开关,启用自动扫描 3. 配置自动检测时间(建议设置为每天或每周) ![配置自动扫描](https://docs.bt.cn/img/practical-tutorials/wordpress-security-scan/image-20260109094550872.png) **推荐配置**: - **检测频率**:建议每天凌晨执行(如:凌晨 3:00) - **扫描范围**:包含插件、主题和核心程序 - **告警方式**:配置邮件或其他告警渠道 ### 步骤三:查看漏洞详情 当检测到漏洞时,可以在【漏洞详情】页面查看具体信息。 **漏洞信息包含**: - 漏洞名称和编号(CVE 编号等) - 受影响的插件/主题/核心版本 - 漏洞危险等级(高危、中危、低危) - 修复建议和解决方案 - 相关漏洞详情链接 **处理建议**: 1. 优先处理高危漏洞 2. 及时更新存在漏洞的插件或主题 3. 如果插件已停止维护,建议更换为其他安全的替代品 4. 对于暂时无法修复的漏洞,可通过 WAF 规则临时防护 ### 步骤四:查看检测记录 在【检测记录】页面可以查看近十次的检测信息,包括: - 检测时间 - 检测站点 - 发现漏洞数量 - 检测状态(成功/失败) 这些记录可以帮助您了解网站的安全趋势和历史漏洞情况。 --- source: https://docs.bt.cn/api/crontab/get_auto_config.md.txt # get_auto_config > 获取自动备份任务的配置 # get_auto_config 获取指定类型的自动备份计划任务配置。 - **路由**:`POST /crontab` - **action**:`get_auto_config` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_auto_config` | | name | 是 | String | 备份类型:`"site"` 网站 / `"mysql"` 数据库 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | Object | 备份任务详情(`id`、`name`、`type`、`status` 等) | ## 示例 ```json {"status": true, "msg": {"id": 4, "name": "自动备份网站[所有]", "type": "day", "status": 1}} ``` --- source: https://docs.bt.cn/api/docker/install_apphub.md.txt # install_apphub > 初始化 Docker 应用商店环境 # install_apphub 初始化 Docker 应用商店的运行环境。 - **路由**:`POST /mod/docker/com/install_apphub/stype` ## 示例 ```json {"code": 0, "status": true, "msg": "环境安装成功"} ``` --- source: https://docs.bt.cn/api/files/send_baota.md.txt # send_baota > 提交 Webshell 误报反馈给宝塔官方 # send_baota 将误报的 Webshell 文件内容提交到宝塔官方服务器,用于改善木马检测准确性。 需要面板已绑定宝塔账号。 - **路由**:`POST /files` - **action**:`send_baota` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `send_baota` | | filename | 是 | String | 被误报的文件路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 提交成功 | | msg | String | `提交误报完成` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=send_baota&filename=/www/wwwroot/test.php ``` ### 响应 ```json {"status": true, "msg": "提交误报完成"} ``` --- source: https://docs.bt.cn/api/java/get_tomcat_list.md.txt # get_tomcat_list > 获取已安装的 Tomcat 版本及运行状态 # get_tomcat_list 获取服务器上所有已安装 Tomcat 的版本、路径、端口和运行状态。 - **路由**:`GET /mod/java/project/get_tomcat_list/stype` - **方法**:GET ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | tomcatX | Object | 以版本号为 key,每项含 `status`、`path`、`port`、`running`、`jdk_path`、`config_path` | ## 示例 ```json {"tomcat9": {"status": true, "path": "/usr/local/bttomcat/tomcat9", "port": 8233, "running": false, "config_path": "/usr/local/bttomcat/tomcat9/conf/server.xml"}} ``` --- source: https://docs.bt.cn/api/site/open_cdn_ip.md.txt # open_cdn_ip > 开启 CDN IP 获取(从 X-Forwarded-For 等头获取真实 IP) # open_cdn_ip / get_cdn_ip_settings 管理网站的 CDN IP 获取配置,使网站在 CDN 后能获取真实客户端 IP。 - **路由**:`POST /site` - **action**:`open_cdn_ip` 或 `get_cdn_ip_settings` ## get_cdn_ip_settings 获取当前 CDN IP 配置。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json { "cdn_ip": false, "cdn_recursive": false, "header_cdn": "X-Forwarded-For", "white_ips": "0.0.0.0/0,::/0" } ``` | 参数 | 描述 | |------|------| | cdn_ip | 是否开启 CDN IP 获取 | | cdn_recursive | 是否递归获取 | | header_cdn | 使用的 HTTP 头 | ## open_cdn_ip 开启 CDN IP 获取。 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `open_cdn_ip` | ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/crontab/check_url_connecte.md.txt # check_url_connecte > 检测 URL 是否可连通(用于 URL 监控任务) # check_url_connecte 检测指定 URL 的可连通性,返回 HTTP 状态码和页面内容。 - **路由**:`POST /crontab` - **action**:`check_url_connecte` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `check_url_connecte` | | url | 是 | String | 要检测的 URL | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 检测成功 | | status_code | Integer | HTTP 状态码 | | txt | String | 页面内容(HTML) | ## 示例 ```json {"status": true, "status_code": 200, "txt": "..."} ``` --- source: https://docs.bt.cn/api/files/GetFileHistory.md.txt # GetFileHistory > 获取文件管理操作日志 # GetFileHistory 查询面板文件管理的操作历史记录,支持分页和关键词搜索。 - **路由**:`POST /files` - **action**:`GetFileHistory` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetFileHistory` | | p | 否 | Integer | 页码,默认 `1` | | limit | 否 | Integer | 每页条数,默认 `20` | | content | 否 | String | 搜索关键词,匹配时间和日志内容 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | page | String | 分页 HTML | | data | Array | 操作日志列表 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetFileHistory&p=1&limit=10 ``` ### 响应 ```json {"page": "
...
", "data": []} ``` --- source: https://docs.bt.cn/api/java/get_load_info.md.txt # get_load_info > 获取 Java 项目的系统负载信息 # get_load_info 获取运行中 Java 项目的 CPU 和内存使用情况。 - **路由**:`GET /mod/java/project/get_load_info/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": true, "msg": "success"} ``` --- source: https://docs.bt.cn/api/site/set_global_http2https.md.txt # set_global_http2https > 设置全局 HTTP 到 HTTPS 跳转 # set_global_http2https / get_https_settings 设置或获取全局 HTTP→HTTPS 跳转配置。 - **路由**:`POST /site` - **action**:`set_global_http2https` ## set_global_http2https ### 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_global_http2https` | ### 响应 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "设置成功", "data": null, "code": 0, "timestamp": 1779444586} ``` --- source: https://docs.bt.cn/api/crontab/get_restart_project_config.md.txt # get_restart_project_config > 获取项目定时重启任务的配置 # get_restart_project_config 获取指定项目的定时重启任务配置。 - **路由**:`POST /crontab` - **action**:`get_restart_project_config` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_restart_project_config` | | project_name | 是 | String | 项目名称 | | model_name | 是 | String | 模型名称(与 `project_name` 同时传) | ## 示例 ```json {"status": true, "msg": {"name": "[勿删]定时重启test项目test", "type": "day", "status": 1}} ``` --- source: https://docs.bt.cn/api/files/file_history_list.md.txt # file_history_list > 获取文件编辑历史记录列表 # file_history_list 列出所有有编辑历史记录的文件及其历史版本信息。 - **路由**:`POST /files` - **action**:`file_history_list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `file_history_list` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 文件历史列表,每项含 `filepath` 和 `historys` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=file_history_list ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/java/get_jmx_status.md.txt # get_jmx_status > 获取 Java 项目的 JMX 监控状态 # get_jmx_status 检查指定 Spring Boot 项目是否已启用 JMX 监控。 - **路由**:`GET /mod/java/project/get_jmx_status/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | ## 示例 ```json {"status": false, "msg": "项目未启用jmx,无法获取jmx信息"} ``` --- source: https://docs.bt.cn/api/site/SetSSL.md.txt # SetSSL > 为网站部署自定义 SSL 证书 # SetSSL 为指定网站部署自定义 SSL 证书(PEM 格式)。面板会验证证书和私钥的匹配性、证书链完整性,验证通过后写入配置并重载 Web 服务器。 - **路由**:`POST /site` - **action**:`SetSSL` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetSSL` | | siteName | 是 | String | 网站域名 | | key | 是 | String | 证书私钥(PEM 格式,含 `-----BEGIN PRIVATE KEY-----`) | | csr | 是 | String | 证书文件(PEM 格式,含 `-----BEGIN CERTIFICATE-----`) | ## 验证规则 - `key` 必须包含 `KEY` - `csr` 必须包含 `CERTIFICATE` - 证书必须是有效的 PEM 格式 - 私钥和证书必须互相对应匹配 - 证书链必须完整 验证失败时返回具体错误提示。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 表示部署成功 | | msg | String | `证书已保存!` | ## 示例 ### 生成自签名证书 ```bash openssl genrsa -out key.pem 2048 openssl req -new -x509 -key key.pem -out cert.pem -days 365 \ -subj "/C=CN/ST=GD/L=SZ/O=Test/CN=testapi.bt.local" ``` ### 请求 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=SetSSL&siteName=testapi.bt.local&key=-----BEGIN PRIVATE KEY-----...&csr=-----BEGIN CERTIFICATE-----... ``` > `key` 和 `csr` 中换行符 `\n` 需保留。 ### 响应 ```json {"status": true, "msg": "证书已保存!"} ``` ## 相关接口 - [GetSSL](./GetSSL.md) — 查看证书信息 - [CloseSSLConf](./CloseSSLConf.md) — 关闭 SSL - [HttpToHttps](./CloseToHttps.md) — HTTP→HTTPS 跳转 --- source: https://docs.bt.cn/api/crontab/set_restart_project.md.txt # set_restart_project > 设置项目的定时重启任务 # set_restart_project 为指定项目设置定时重启任务。 - **路由**:`POST /crontab` - **action**:`set_restart_project` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_restart_project` | | project_name | 是 | String | 项目名称 | | model_name | 是 | String | 模型名称 | | status | 是 | String | `"1"` 开启 / `"0"` 关闭 | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/files/list_backups.md.txt # list_backups > 获取已配置的云存储备份列表(七牛/阿里云OSS/百度云等) # list_backups 列出已配置的云存储备份方案,包括本地和各类云存储。 - **路由**:`POST /files` - **action**:`list_backups` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `list_backups` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 备份配置列表,每项含 `name`(类型名称)、`path`(路径) 等 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=list_backups ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/java/get_version_list.md.txt # get_version_list > 获取 Java 项目的版本备份列表 # get_version_list 获取指定 Java 项目的版本备份列表。 - **路由**:`GET /mod/java/project/get_version_list/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | sitename | 是 | String | 项目名称(注意参数名是 `sitename`) | ## 示例 ```json {"status": true, "msg": "ok", "data": []} ``` --- source: https://docs.bt.cn/api/site/ToBackup.md.txt # ToBackup > 备份网站文件 # ToBackup 备份指定网站的所有文件。 - **路由**:`POST /site` - **action**:`ToBackup` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `ToBackup` | | id | 是 | Integer | 网站 ID | ## 示例 ``` POST /site HTTP/1.1 Content-Type: application/x-www-form-urlencoded action=ToBackup&id=1 ``` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "备份成功!"} ``` --- source: https://docs.bt.cn/api/crontab/GetLogs.md.txt # GetLogs > 获取计划任务的执行日志 # GetLogs 获取指定计划任务的执行日志内容。 - **路由**:`POST /crontab` - **action**:`GetLogs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetLogs` | | id | 是 | Integer | 任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功 | | msg | String | 日志内容,无日志时返回 `当前日志为空!` | ## 示例 ```json {"status": true, "msg": ""} ``` --- source: https://docs.bt.cn/api/database/GeUserHostList.md.txt # GeUserHostList > 获取 MySQL 用户及其允许登录的主机列表 # GeUserHostList 查询指定 MySQL 服务器上所有用户及其允许登录的主机(Host),返回 `user@host` 格式列表。 - **路由**:`POST /database` - **action**:`GeUserHostList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GeUserHostList` | | id | 是 | Integer | 数据库服务器 ID(`0` 为本地 MySQL) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 用户列表,格式 `root@localhost`,无数据时 `null` | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GeUserHostList&id=0 ``` ### 响应 ```json ["root@localhost", "bt_api_test@%"] ``` --- source: https://docs.bt.cn/api/files/upload_files_exists.md.txt # upload_files_exists > 上传前批量检查文件是否已存在 # upload_files_exists 上传文件前批量检查目标路径下是否已有同名文件,返回已存在的文件列表。 - **路由**:`POST /files` - **action**:`upload_files_exists` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `upload_files_exists` | | files | 是 | String | 待检查的文件路径列表,多个用 `\n` 分隔 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 已存在的文件路径列表,空数组 `[]` 表示无冲突 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=upload_files_exists&files=/www/wwwroot/index.html ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/java/now_file_backup.md.txt # now_file_backup > 为 Java 项目创建版本备份 # now_file_backup 为指定 Java 项目的当前文件创建版本备份。 - **路由**:`GET /mod/java/project/now_file_backup/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | sitename | 是 | String | 项目名称(注意参数名是 `sitename`) | | version | 是 | String | 备份版本号 | | ps | 否 | String | 备注 | ## 示例 ```json {"status": true, "msg": "添加成功"} ``` --- source: https://docs.bt.cn/api/site/logsOpen.md.txt # logsOpen > 开启网站访问日志 # logsOpen 开启网站的访问日志记录。 - **路由**:`POST /site` - **action**:`logsOpen` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `logsOpen` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "操作成功"} ``` --- source: https://docs.bt.cn/api/crontab/DelLogs.md.txt # DelLogs > 清空指定计划任务的执行日志 # DelLogs 清空指定计划任务的全部执行日志。 - **路由**:`POST /crontab` - **action**:`DelLogs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DelLogs` | | id | 是 | Integer | 任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 清空成功 | ## 示例 ```json {"status": true, "msg": "任务日志已清空!"} ``` --- source: https://docs.bt.cn/api/database/GetErrorLog.md.txt # GetErrorLog > 获取 MySQL 错误日志文件路径和内容 # GetErrorLog 获取 MySQL 数据库的错误日志文件路径。返回 MySQL 数据目录下 `.err` 结尾的错误日志文件。 - **路由**:`POST /database` - **action**:`GetErrorLog` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetErrorLog` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功读取 | | msg | String | 日志文件路径或错误信息 | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetErrorLog ``` ### 响应 ```json {"status": true, "msg": "/www/server/data/apitest.err"} ``` --- source: https://docs.bt.cn/api/files/update_composer.md.txt # update_composer > 更新服务器上的 Composer 到最新版本 # update_composer 将服务器上已安装的 Composer 更新到最新版本。 - **路由**:`POST /files` - **action**:`update_composer` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `update_composer` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 更新成功 | | msg | String | 结果消息,如 `当前已经是最新版本,无需升级!` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=update_composer ``` ### 响应 ```json {"status": true, "msg": "当前已经是最新版本,无需升级!"} ``` --- source: https://docs.bt.cn/api/java/add_server_proxy.md.txt # add_server_proxy > 为 Java 项目添加反向代理规则 # add_server_proxy 为指定 Java 项目添加反向代理规则。 - **路由**:`GET /mod/java/project/add_server_proxy/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | String | 项目名称(注意是 `site_name`) | | proxy_port | 是 | Integer | 代理端口 | | status | 是 | String | `"1"` 启用 | | proxy_dir | 否 | String | 代理路径,如 `/api_test` | ## 示例 ```json {"status": true, "msg": "添加成功"} ``` --- source: https://docs.bt.cn/api/site/webserverprep.md.txt # webserverprep > Web 服务器环境预检查 # webserverprep Web 服务器环境预检查,用于安装或切换 Web 服务器(Nginx/Apache/OpenLiteSpeed)前验证环境。 - **路由**:`POST /site` - **action**:`webserverprep` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `webserverprep` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 检查完成 | | msg | String | 空字符串表示环境正常 | ## 示例 ```json {"status": true, "msg": ""} ``` --- source: https://docs.bt.cn/practical-tutorials/install-panel-auto-deploy-website.md.txt # 宝塔面板安装与网站自动部署 > 使用宝塔面板(BT Panel)一键安装功能,在安装面板的同时自动部署 WordPress、ThinkPHP 或空站点,快速完成服务器初始化与建站,适用于快速上线场景。 # 宝塔面板安装与网站自动部署 ## 功能介绍 宝塔面板新推出了一键安装功能,可在安装面板的同时自动部署网站架构和对应的 Web 服务组件。 ![功能介绍](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115145945087.png) 支持的网站类型: - WordPress - ThinkPHP-5.0 - 空站点 可选的组件版本: **Nginx:** 1.24、1.26、1.28 **MySQL:** 5.7、8.0、8.1、8.2、8.3、8.4 **PHP:** 7.4、8.0、8.1、8.2、8.3、8.4 本教程将演示如何在公网服务器上一键安装 WordPress、ThinkPHP 和空站点,并展示安装后的效果。 ## 机器环境 | 服务器操作系统 | Nginx 版本 | MySQL 版本 | PHP 版本 | | -------------- | ---------- | ---------- | -------- | | Debian 12 | 1.26 | 5.7 | 7.4 | ## 部署过程 ### 一、WordPress 一键安装 #### 1. 终端执行 选择好对应的配置信息后,复制安装命令。 ![选择配置](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115151129880.png) ![复制命令](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115151144975.png) 将命令复制到终端执行,等待安装完成。 ![执行安装](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115151230327.png) 安装成功。 ![安装成功](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115151859681.png) #### 2. 登录面板检查 在【网站】-【PHP 项目】中可以看到已创建的站点。 ![PHP项目列表](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152040504.png) 在【软件商店】-【已安装】中可以查看到已安装的 Web 服务组件。 ![已安装组件](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152124789.png) #### 3. 访问查看 访问提供的 `https://IP` 地址。默认使用 HTTPS 是因为系统自动为 IP 地址配置了证书,并强制开启了 HTTPS。 ![WordPress安装界面](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152351675.png) ![安装详情](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152507430.png) :::tip 提示 使用域名方式访问时不会自动配置证书。 ::: ![域名访问](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152802599.png) ### 二、ThinkPHP 一键部署 #### 1. 终端执行 复制安装命令后在终端执行。 ![选择ThinkPHP配置](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152901566.png) ![执行ThinkPHP安装](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115152920144.png) 安装成功。 ![ThinkPHP安装成功](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115161625342.png) #### 2. 登录面板检查 查看 PHP 项目和软件商店。 ![ThinkPHP项目列表](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115162952894.png) ![ThinkPHP组件列表](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115163005948.png) #### 3. 访问查看 ![ThinkPHP访问效果](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260115163035097.png) ### 三、空站点一键部署 空站点的作用是可以一键安装服务器环境,之后只需上传代码到面板,配置好相关参数即可访问。操作方式与上述相同,选择对应的配置并复制安装命令。 ![选择空站点配置](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116152412678.png) #### 1. 终端执行 ![执行空站点安装](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116152435312.png) 安装完成。 ![空站点安装完成](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116153036155.png) #### 2. 登录面板检查 在网站列表中可以看到已创建的站点。 ![空站点列表](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116153146510.png) 在软件商店的已安装列表中查看组件。 ![空站点组件](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116153202304.png) 查看网站目录。 ![网站目录](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116153225349.png) #### 3. 访问查看 ![空站点访问效果](https://docs.bt.cn/img/practical-tutorials/install-panel-auto-deploy-website/image-20260116153256655.png) --- source: https://docs.bt.cn/api/crontab/download_logs.md.txt # download_logs > 导出计划任务的执行日志到文件 # download_logs 将指定计划任务的执行日志导出到 `/tmp/` 目录下的文件中。 - **路由**:`POST /crontab` - **action**:`download_logs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `download_logs` | | id | 是 | Integer | 任务 ID | | filename | 否 | String | 自定义导出文件名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 导出成功 | | msg | String | 导出文件路径 | ## 示例 ```json {"status": true, "msg": "/tmp/016725dfa2dd9267d8d2ffe68522ed6b.log"} ``` --- source: https://docs.bt.cn/api/database/GetImportStatus.md.txt # GetImportStatus > 获取 MySQL 数据库导入的实时状态 # GetImportStatus 查询当前正在进行的 SQL 文件导入操作的进度和状态。 - **路由**:`POST /database` - **action**:`GetImportStatus` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetImportStatus` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | db_name | String | 正在导入的数据库名称,空字符串 `""` 表示无导入任务 | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetImportStatus ``` ### 响应 ```json {"db_name": ""} ``` > 有导入任务时返回 `{"db_name": "bt_api_test"}` 等。 --- source: https://docs.bt.cn/api/files/dir_webshell_check.md.txt # dir_webshell_check > 扫描指定目录下的木马文件 # dir_webshell_check 对指定目录发起 Webshell 木马扫描任务,结果写入面板安全日志。 - **路由**:`POST /files` - **action**:`dir_webshell_check` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `dir_webshell_check` | | path | 是 | String | 要扫描的目录绝对路径 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 扫描任务已启动 | | msg | String | 提示信息 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=dir_webshell_check&path=/www/wwwroot ``` ### 响应 ```json {"status": true, "msg": "正在启动木马查杀进程。详细信息会在面板安全日志中"} ``` --- source: https://docs.bt.cn/api/java/server_proxy_list.md.txt # server_proxy_list > 获取 Java 项目的反向代理规则列表 # server_proxy_list 获取指定 Java 项目已配置的所有反向代理规则。 - **路由**:`GET /mod/java/project/server_proxy_list/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | String | 项目名称(注意是 `site_name`) | ## 示例 ```json {"status": true, "msg": "ok", "data": [{"proxy_dir": "/api_test/", "status": true, "proxy_id": "a500438b19a", "proxy_port": 8081}]} ``` --- source: https://docs.bt.cn/api/site/create_flow_rule.md.txt # create_flow_rule > 创建网站流量规则 # create_flow_rule 创建网站流量统计规则。 - **路由**:`POST /site` - **action**:`create_flow_rule` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `create_flow_rule` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | 请求结果,`true` 表示成功 | | msg | String | 提示信息 | ```json {"status": true, "msg": "创建成功"} ``` ## 相关接口 - [get_generated_flow_info](./get_generated_flow_info.md) — 查看流量统计 --- source: https://docs.bt.cn/api/crontab/clear_logs.md.txt # clear_logs > 清除计划任务的日志文件 # clear_logs 清除指定计划任务的日志记录。 - **路由**:`POST /crontab` - **action**:`clear_logs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `clear_logs` | | id | 是 | Integer | 任务 ID | ## 示例 ```json {"status": true, "msg": "清除成功!"} ``` --- source: https://docs.bt.cn/api/database/GetLoginFailed.md.txt # GetLoginFailed > 获取 MySQL 登录失败跟踪(Connection Control)插件状态 # GetLoginFailed 查询 MySQL 的 `CONNECTION_CONTROL` 插件状态及登录失败跟踪配置。 - **路由**:`POST /database` - **action**:`GetLoginFailed` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetLoginFailed` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | String | `"on"` 已开启,`"off"` 未开启 | | connection_control_failed_connections_threshold | String | 失败次数阈值(开启时返回) | | connection_control_min_connection_delay | String | 最小延迟(开启时返回) | | connection_control_max_connection_delay | String | 最大延迟(开启时返回) | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetLoginFailed ``` ### 响应 ```json {"status": "off"} ``` --- source: https://docs.bt.cn/api/files/Re_Recycle_bin.md.txt # Re_Recycle_bin > 从回收站恢复已删除的文件或目录 # Re_Recycle_bin 将回收站中的文件或目录恢复到其原始位置。 先通过 [Get_Recycle_bin](./Get_Recycle_bin.md) 获取回收站列表,取目标项的 `rname` 字段作为 `path` 参数传入。 - **路由**:`POST /files` - **action**:`Re_Recycle_bin` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `Re_Recycle_bin` | | path | 是 | String | 回收站中的文件名(`rname`),如 `_bt_tmp_bt_test.txt_t_1234567890.123` | | rpath | 否 | String | 恢复到指定目录(不填则恢复到原始路径) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 恢复成功 | | msg | String | `恢复成功!` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=Re_Recycle_bin&path=_bt_tmp_bt_bt_recycle_test.txt_t_1779504311 ``` ### 响应 ```json {"status": true, "msg": "恢复成功!"} ``` ## 相关接口 - [Get_Recycle_bin](./Get_Recycle_bin.md) — 查看回收站列表 - [DeleteDir](./DeleteDir.md) — 删除文件到回收站 --- source: https://docs.bt.cn/api/java/remove_server_proxy.md.txt # remove_server_proxy > 删除 Java 项目的反向代理规则 # remove_server_proxy 删除指定 Java 项目的某条反向代理规则。 - **路由**:`GET /mod/java/project/remove_server_proxy/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | site_name | 是 | String | 项目名称(注意是 `site_name`) | | proxy_id | 是 | String | 代理规则 ID(通过 `server_proxy_list` 获取) | ## 示例 ```json {"status": true, "msg": "删除成功"} ``` --- source: https://docs.bt.cn/api/site/get_domains.md.txt # get_domains > 获取网站绑定的域名列表 # get_domains 获取指定网站绑定的域名列表。 - **路由**:`POST /site` - **action**:`get_domains` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | `get_domains` | | siteName | 是 | String | 网站域名 | ## 输出 返回字符串数组,每项为域名字符串。空数组表示无额外绑定。 ```json [] ``` --- source: https://docs.bt.cn/practical-tutorials/backup-website-to-cloud-storage.md.txt # 网站备份到第三方云存储教程 > 使用宝塔面板(BT Panel)计划任务将网站与数据库备份到阿里云 OSS、腾讯云 COS、华为云 OBS 等第三方对象存储桶,实现自动化的多云备份与异地容灾。 # 网站备份到第三方云存储教程 本教程将指导如何将网站定期备份到第三方云存储桶,确保数据安全。 ## 配置存储桶 ### 1. 安装存储桶插件 点击左侧菜单栏【软件商店】,搜索并安装对应的第三方存储桶插件。 :::info 支持的云厂商 面板目前支持阿里云、腾讯云、华为云、京东云、百度云、七牛云等第三方云存储服务。 ::: 本教程以腾讯云 COS 为例演示配置过程。 ### 2. 配置存储桶参数 安装好插件后,需要配置存储桶连接参数。 ![配置存储桶参数](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117112053558.png) **配置项说明:** | 配置项 | 说明 | | --- | --- | | **secret_id** | 第三方云的 API 密钥 ID,相当于登录账号 | | **secret_key** | 与 `secret_id` 配对的密钥,相当于登录密码 | | **region** | 地域标识,例如 `ap-beijing` 表示存储桶所在的物理数据中心位置 | | **Bucket** | 云存储中的"存储桶"名称,在云厂商中是唯一的 | | **保存路径** | 保存在存储桶内部的路径,默认为 `/bt_backup/` | 配置成功后,可以在插件中查看存储桶的目录和文件。 ![存储桶目录](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117115149845.png) ## 配置计划任务备份 ### 1. 添加备份任务 进入【计划任务】页面,点击【添加任务】。 ![添加计划任务](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117115414132.png) ### 2. 配置备份参数 选择【备份网站】,然后选择【备份到腾讯云 COS】。 ![配置备份任务](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117115638072.png) **备份选项说明:** - **备份站点选择:** 可以单独选择需要备份到云存储的网站 - **文件拆分方式:** - 按大小拆分:每 1024MB(可自定义)拆分为一个文件 - 按数量拆分 - 注意:仅文件超过 5GB 时支持拆分 - **本地保留:** 支持在备份到云存储的同时,本地也保留相同份数的备份 ## 验证备份 ### 1. 手动执行任务 手动执行一次计划任务,测试是否能成功备份到存储桶。 ![执行备份任务](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117120325042.png) ### 2. 查看执行日志 检查任务执行日志,确认备份是否成功。 ![查看执行日志](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117120513170.png) ### 3. 检查存储桶 到存储桶插件中查看备份文件是否已上传成功。 ![验证备份成功](https://docs.bt.cn/img/practical-tutorials/backup-to-cloud-storage/image-20260117120634015.png) :::tip 提示 建议设置自动备份频率(如每天凌晨),并定期检查备份任务执行状态,确保数据安全。 ::: --- source: https://docs.bt.cn/api/crontab/get_log_path.md.txt # get_log_path > 获取计划任务的日志存储路径 # get_log_path 获取指定计划任务的日志文件路径和大小。 - **路由**:`POST /crontab` - **action**:`get_log_path` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_log_path` | | id | 是 | Integer | 任务 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg.log_path | String | 日志文件路径,无日志时为 `无` | | msg.size | String | 日志文件大小 | ## 示例 ```json {"status": true, "msg": {"log_path": "无", "size": "0B"}} ``` --- source: https://docs.bt.cn/api/database/find_databases_by_name_and_type.md.txt # find_databases_by_name_and_type > 按数据库类型和名称搜索数据库 # find_databases_by_name_and_type 根据数据库类型(如 `mysql`)和名称搜索数据库列表。 - **路由**:`POST /database` - **action**:`find_databases_by_name_and_type` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `find_databases_by_name_and_type` | | db_type | 是 | String | 数据库类型,如 `mysql` | | name | 是 | String | 数据库名称(支持模糊匹配) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 查询成功 | | msg | Array | 匹配的数据库列表,无结果时为空数组 `[]` | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=find_databases_by_name_and_type&db_type=mysql&name=test ``` ### 响应 ```json {"status": true, "msg": []} ``` --- source: https://docs.bt.cn/api/files/CreateLink.md.txt # CreateLink > 创建文件或目录的软链接(符号链接) # CreateLink 为文件或目录创建软链接(符号链接 symlink)。 - **路由**:`POST /files` - **action**:`CreateLink` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CreateLink` | | sfile | 是 | String | 源文件或目录的绝对路径 | | dfile | 是 | String | 软链接目标路径(绝对路径),文件名仅允许 `[\w\-\.]+` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 创建成功 | | msg | String | `软链文件创建成功!` | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CreateLink&sfile=/www/wwwroot/testapi.bt.local&dfile=/tmp/bt_link_test ``` ### 响应 ```json {"status": true, "msg": "软链文件创建成功!"} ``` --- source: https://docs.bt.cn/api/java/change_log_path.md.txt # change_log_path > 修改 Java 项目的日志存储路径 # change_log_path 修改 Java 项目的日志文件存储路径。 - **路由**:`GET /mod/java/project/change_log_path/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | path | 是 | String | 新的日志目录路径(注意参数名是 `path`) | ## 示例 ```json {"status": true, "msg": "项目日志路径修改成功"} ``` --- source: https://docs.bt.cn/api/site/GetDirBinding.md.txt # GetDirBinding > 获取网站子目录绑定列表 # GetDirBinding 获取指定网站的子目录(二级域名)绑定列表。 - **路由**:`POST /site` - **action**:`GetDirBinding` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetDirBinding` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | run_path | String | 运行目录路径 | | dirs | Array | 可选子目录列表 | | binding | Array | 已绑定的子目录列表 | ## 示例 ```json {"run_path": "/", "dirs": [], "binding": []} ``` --- source: https://docs.bt.cn/practical-tutorials/fix-site-statistics.md.txt # 宝塔面板网站统计不生效修复教程 > 修复宝塔面板(BT Panel)网站统计总览插件统计不生效的问题,覆盖 Nginx 与 Apache 两种环境下的配置修复与日志路径检查步骤。 # 网站统计功能修复教程 本教程将指导如何修复宝塔面板【网站统计总览】插件统计不生效的问题。 :::warning 版本要求 此插件为 11.3 及以上版本安装或更新面板时自动安装。如需使用,请先将面板升级到 11.3+ 版本。 ::: ![网站统计总览](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117002751268.png) ## 插件说明 ![插件介绍](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117105301765.png) ## 插件安装与管理 ### 安装/卸载命令 执行安装脚本后成功的状态: ![安装成功状态](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117104315619.png) ```bash # 插件目录 /www/server/site_total # 安装插件(命令行执行) bash /www/server/site_total/scripts/install.sh install # 卸载插件(命令行执行) bash /www/server/site_total/scripts/uninstall.sh ``` ### 服务管理 面板将此服务写入到了 systemd 中,可以通过 systemd 进行管理: ```bash # 启动服务 systemctl start site_total # 停止服务 systemctl stop site_total # 重启服务 systemctl restart site_total # 查看服务状态 systemctl status site_total # 查看服务日志 journalctl -u site_total ``` ## 服务配置检查 ### Nginx 环境配置 在 Nginx 配置文件中通过 `include` 引用统计配置文件来实现数据收集。 ![Nginx配置引用](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117110752348.png) **Nginx 配置文件路径:** ```bash /www/server/panel/vhost/nginx/extension/对应站点/*/site_total.conf ``` **配置文件作用:** ```nginx # 将符合格式的访问日志发送给 site_total 进行实时处理 access_log syslog:server=unix:/tmp/site_total.sock,nohostname,tag=10__access site_total; ``` ### Apache 环境配置 在 Apache 配置文件中通过 `IncludeOptional` 引入,然后启动一个 logger 进程进行数据收集。 ![Apache配置引用](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117095239072.png) **Apache 配置文件路径:** ```bash /www/server/panel/vhost/apache/extension/对应站点.conf ``` ## 问题排查与解决 ### 基础排查 如果遇到统计不正常的情况,可以先执行安装命令,查看安装过程及结束时是否有异常: ```bash bash /www/server/site_total/scripts/install.sh install ``` ### 常见问题:统计未生效 #### 问题描述 安装没有问题,但是统计功能没有生效。 #### 排查步骤 **1. 检查服务状态** 首先执行以下命令查看服务是否有报错或异常: ```bash systemctl status site_total ``` **2. 检查 logger 进程(Apache 环境)** 如果使用的是 Apache 环境,需要检查 logger 进程是否正常启动: ```bash ps aux | grep logger ``` ![检查logger进程](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117105706578.png) 正常情况下应该能看到 logger 进程正在运行。 **3. 检查 logger 版本** logger 版本过低也会导致统计异常,可以执行以下命令查看版本: ```bash logger --version ``` ![检查logger版本](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117105832859.png) #### 解决方案 **问题:配置文件语法错误** 检查站点配置文件,如果发现有多余的分号或其他语法错误,会导致网站统计插件配置引入失败,从而无法启动 logger 进程。 ![配置文件错误](https://docs.bt.cn/img/practical-tutorials/fix-site-statistics/image-20260117110025613.png) **修复方法:** 1. 删除配置文件中多余的分号或修复语法错误 2. 重载 Apache 服务: ```bash systemctl reload httpd # 或 service httpd reload ``` 3. 检查统计功能是否恢复正常 :::tip 提示 修复后建议重新访问网站几次,然后在面板中查看网站统计数据是否正常更新。 ::: --- source: https://docs.bt.cn/api/crontab/add_crontab_type.md.txt # add_crontab_type > 创建计划任务分类(用于分组管理) # add_crontab_type 创建自定义的计划任务分类标签。 - **路由**:`POST /crontab` - **action**:`add_crontab_type` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `add_crontab_type` | | name | 是 | String | 分类名称 | ## 示例 ```json {"status": true, "msg": "添加成功"} ``` ## 相关接口 - [get_crontab_types](./get_crontab_types.md) — 查看分类列表 - [set_crontab_type](./set_crontab_type.md) — 设置任务分类 --- source: https://docs.bt.cn/api/database/get_restart_task.md.txt # get_restart_task > 获取 MySQL 守护进程(自动重启)任务的配置 # get_restart_task 查询 MySQL 守护进程定时任务的配置状态,该任务在 MySQL 异常停止时自动重启。 - **路由**:`POST /database` - **action**:`get_restart_task` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_restart_task` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功 | | msg | Object | 任务详情,含 `id`、`name`、`status`(`0`关闭/`1`开启)、`type`、`sBody` 等 | ## 示例 ### 请求 ``` POST /database HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_restart_task ``` ### 响应 ```json {"status": true, "msg": {"id": 2, "name": "[勿删]MySQL守护进程", "status": 0, "type": "minute-n"}} ``` ## 相关接口 - [set_restart_task](./set_restart_task.md) — 设置重启任务 --- source: https://docs.bt.cn/api/files/SaveFileBody.md.txt # SaveFileBody > 保存/编辑文件内容 # SaveFileBody 保存文本内容到指定文件,用于在线编辑代码或配置文件。 - **路由**:`POST /files` - **action**:`SaveFileBody` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SaveFileBody` | | path | 是 | String | 文件绝对路径 | | data | 是 | String | 要写入的文件内容 | | encoding | 是 | String | 文件编码:`utf-8` / `ascii` / `ansi` / `GBK` / `BIG5` | > **重要**:`encoding` 参数必须传入,否则会报 `FILE_SAVE_ERR` 错误。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 保存成功 | | msg | String | `文件已保存!` | | historys | Array | 历史版本 ID 列表 | | st_mtime | String | 修改时间戳 | ## 示例 ### 请求 ``` POST /files HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SaveFileBody&path=/tmp/test.txt&data=hello world&encoding=utf-8 ``` ### 响应 ```json {"status": true, "msg": "文件已保存!", "historys": ["1779514192"], "st_mtime": "1779514192"} ``` ## 相关接口 - [GetFileBody](./GetFileBody.md) — 读取文件 - [CreateFile](./CreateFile.md) — 创建文件 --- source: https://docs.bt.cn/api/java/multi_set_project.md.txt # multi_set_project > 批量启动/停止 Java 项目 # multi_set_project 批量启动或停止多个 Java 项目。需通过 POST body `data` 参数传递 JSON。 - **路由**:`POST /mod/java/project/multi_set_project/stype` - **方法**:POST ## 输入参数(POST body `data` JSON) | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_names | 是 | Array\ | 项目名称列表 | | operation | 是 | String | `"start"` 启动 / `"stop"` 停止 | ## 示例 ### 请求 ``` POST /mod/java/project/multi_set_project/stype Content-Type: application/x-www-form-urlencoded request_time=xxx&request_token=xxx&data={"project_names":["myapp"],"operation":"stop"} ``` ### 响应 ```json {"status": true, "msg": "停止成功", "data": {"project_names": ["myapp"]}} ``` --- source: https://docs.bt.cn/practical-tutorials/aliyun-drive-usage.md.txt # 阿里云盘插件使用教程 > 介绍宝塔面板(BT Panel)阿里云盘插件的安装与使用方法,支持在面板中上传下载阿里云盘文件、将网站与数据库备份上传到阿里云盘,实现低成本云备份。 # 阿里云盘插件使用教程 本教程将指导如何使用宝塔面板的阿里云盘插件,实现文件管理和自动备份功能。 ## Token 获取 ### 1. 登录阿里云盘 在浏览器中登录您的阿里云盘账号。 ![登录阿里云盘](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119165121063.png) ### 2. 获取 Token 按下 **F12** 打开浏览器开发者工具,按照以下步骤操作: 1. 点击上方的【应用】标签 2. 在右侧找到【本地存储空间】并展开 3. 向下滚动找到 **Token** 项 4. 右键点击 Token 值,选择【复制值】 ![复制Token](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119165734813.png) ## 插件配置 ### 1. 安装插件 在面板【软件商店】中搜索【阿里云盘】,点击安装。 ### 2. 设置 API 安装完成后打开插件,点击【设置API】。 ![设置API](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119170100446.png) 将刚才复制的 Token 粘贴到配置框中。 ![粘贴Token](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119170346396.png) ### 3. 配置系统路径选项 **【是否使用系统路径】配置说明:** - **未开启:** 备份文件保存到云盘根目录 ![备份到根目录](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175046756.png) - **已开启:** 备份文件保存到云盘系统目录下 ![备份到系统目录](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175026592.png) ## 功能使用 ### 上传文件到云盘 插件支持将服务器中的文件上传到阿里云盘。 #### 操作步骤 1. 点击【上传文件】按钮 ![上传文件入口](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175411123.png) 2. 选择需要上传的文件,点击确定开始上传 ![选择上传文件](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175531555.png) 3. 在上传任务列表中查看上传进度和日志 ![上传任务列表](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175634058.png) ### 下载文件到服务器 插件支持将云盘中的文件下载到服务器本地。 ![下载文件功能](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119175300918.png) #### 查看下载进度 在【下载列表】中可以查看任务进度和结果。 ![下载任务列表](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119180050831.png) 查看详细的任务日志。 ![下载任务日志](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119180148076.png) ### 回收站管理 删除文件时选择【放入回收站】,可以在左侧栏的回收站中找到并进行还原。 :::warning 重要提示 不建议选择【彻底删除】,放入回收站的文件会保存 10 天,10 天后自动清理,可防止误删。 ::: ![删除文件选项](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119180508890.png) ![回收站还原](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119180609020.png) ## 网站备份功能 将阿里云盘添加到面板后,网站和数据库的备份可以直接备份到阿里云盘中。 ### 配置备份任务 在【计划任务】中添加备份任务,选择备份到阿里云盘。 ![配置备份任务](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119180835361.png) ### 测试备份 任务添加后建议先手动执行一次,检查是否正常。 ![手动执行备份](https://docs.bt.cn/img/practical-tutorials/aliyun-drive/image-20260119181028426.png) :::tip 故障排查 如果提示目录不存在的错误,请手动到阿里云盘中创建对应的备份目录。 ::: --- source: https://docs.bt.cn/api/crontab/set_crontab_type.md.txt # set_crontab_type > 将计划任务归入指定分类 # set_crontab_type 将选中的计划任务归入指定的分类中。 **前置条件**:需先通过 [add_crontab_type](./add_crontab_type.md) 创建分类。 - **路由**:`POST /crontab` - **action**:`set_crontab_type` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_crontab_type` | | id | 是 | Integer | 分类 ID | | crontab_ids | 是 | String | JSON 数组,任务 ID 列表 `[1,2,3]` | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [add_crontab_type](./add_crontab_type.md) — 创建分类 - [get_crontab_types](./get_crontab_types.md) — 查看分类列表 --- source: https://docs.bt.cn/api/java/multi_remove_project.md.txt # multi_remove_project > 批量删除 Java 项目 # multi_remove_project 批量删除多个 Java 项目。需通过 POST body `data` 参数传递 JSON。 - **路由**:`POST /mod/java/project/multi_remove_project/stype` - **方法**:POST ## 输入参数(POST body `data` JSON) | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_names | 是 | Array\ | 要删除的项目名称列表 | ## 示例 ```json {"status": true, "msg": "删除项目成功", "data": ["myapp"]} ``` --- source: https://docs.bt.cn/practical-tutorials/aliyun-esa-cdn.md.txt # 阿里云 ESA 免费 CDN 使用教程 > 宝塔面板(BT Panel)阿里云 ESA 免费 CDN 插件的安装与配置教程,实现网站边缘加速、全站 HTTPS 与基础安全防护,适用于中国大陆加速场景。 # 阿里云 ESA 免费 CDN 使用教程 阿里云边缘安全加速(ESA)是一款基于全球 3200+ 边缘节点的智能加速与安全服务,深度融合 AI 驱动的网络调度、威胁防护与自动化运维。 宝塔面板新增阿里云免费 CDN 的接口插件,方便通过面板使用阿里云免费的 CDN 功能。本教程介绍如何通过面板申请和使用阿里云 ESA 服务。 ## 安装插件 在【软件商店】中搜索【阿里云 ESA 免费 CDN】,点击安装。 ![安装插件](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205100831097.png) ## 配置关联密钥 ### 1. 打开插件设置 点击【设置】,可以看到提示需要关联密钥。 ![设置提示](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205100924504.png) ![关联密钥](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101020079.png) ### 2. 创建 AccessKey 点击【点击查看】跳转到阿里云登录页面。 ![跳转阿里云](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101125578.png) 登录后新建一个 AccessKey,按照提示完成创建并妥善保存。 ![创建 AccessKey](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101207089.png) ### 3. 配置 API 返回面板,点击【配置 API】。 ![配置 API](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101423512.png) 将创建的 AccessKey ID 和 AccessKey Secret 填入配置框中。 ![填入密钥](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101741672.png) ## 领取免费站点资格 点击【数据概览】-【领取两个免费站点】,输入【同意收集并提交信息】。 提交成功后在两个工作日内会自动到账,目前进度只能在阿里云查看。 :::tip 提示 这里领取的是额外的免费站点配额,阿里云本身已经提供了基础的免费站点数量。 ::: ![领取免费站点](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205101815143.png) ## 添加站点 ### 1. 创建站点 点击【新增站点】跳转到阿里云控制台。 ![新增站点](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205104721187.png) ![站点配置](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205104741933.png) 输入您的域名。 ![输入域名](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205104809714.png) ### 2. 选择加速地区 根据网站访客地域选择合适的加速地区。 ![选择地区](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205104838866.png) ### 3. 选择套餐版本 选择【免费版本】并完成支付(0元)。 ![选择版本](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205105007451.png) ![确认支付](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205105034414.png) ### 4. 配置域名解析 如果您的域名不在阿里云,可以点击【站点管理】-【域名】配置 DNS 记录。 ![域名管理](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205110441275.png) ![配置记录](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205110522878.png) ### 5. 查看套餐信息 在【套餐管理】中可以看到免费套餐的有效期为一个月。 ![套餐信息](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205111143237.png) 返回宝塔面板,点击【站点列表】,可以看到刚才添加的加速域名。 ![站点列表](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205111022003.png) ## 配置加速 ### 1. 管理 DNS 记录 打开【站点列表】,点击操作菜单。 ![操作菜单](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205114607259.png) 选择【管理 DNS】-【添加记录】。 ![管理 DNS](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205114658946.png) 添加子域名记录。 ![添加记录](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205115510120.png) 添加完成后,需要手动到域名服务商处配置 CNAME 解析。 ![CNAME 解析](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205170158169.png) ### 2. 配置 SSL/TLS 如果网站使用了 HTTPS,可以在此处添加证书。 ![SSL 配置](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205165940012.png) #### 上传证书 证书可以手动添加,也可以使用面板中已有的证书。如果需要强制使用 HTTPS,可以勾选【强制 HTTPS】选项。 ![上传证书](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205170034261.png) ### 3. 查看数据统计 配置完成后,可以在数据概览中查看访问统计和加速效果。 ![数据统计](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205170301919.png) ## 函数和 Pages 函数和 Pages 是边缘安全加速 ESA 产品打造的一站式全栈开发平台,通过深度集成 Git 工作流、全球边缘网络与智能构建系统,为企业及开发者提供从代码提交到全球分发的一站式部署解决方案。 宝塔面板目前仅提供跳转到阿里云控制台进行操作。 **帮助文档:** https://help.aliyun.com/document_detail/2710021.html 以下截图来自阿里云控制台: ![函数功能](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205170634010.png) ![Pages 功能](https://docs.bt.cn/img/practical-tutorials/aliyun-esa-cdn/image-20260205170821238.png) --- source: https://docs.bt.cn/practical-tutorials/litessl-certificate-setup.md.txt # LiteSSL 免费证书申请教程 > 使用宝塔面板(BT Panel)内置免费 LiteSSL 证书,为网站与面板部署 SSL/HTTPS 证书并实现自动续签,免费且不限领取次数,适用于个人与企业网站。 # LiteSSL 免费证书申请教程 宝塔面板 11.5.0 版本新增了 LiteSSL 免费证书支持,可为网站和面板部署 SSL 证书,并支持自动续签。 :::info 版本要求 此功能从宝塔面板 11.5.0 版本开始支持。 ::: ## LiteSSL 证书介绍 LiteSSL 是宝塔面板新增的免费 SSL 证书提供商,与 Let's Encrypt 并列提供免费证书服务。 ![LiteSSL证书](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260120104543781.png) :::warning 限制说明 LiteSSL 暂时不支持申请 IP 证书。 ::: ## 证书对比 | 对比维度 | LiteSSL | Let's Encrypt | | --- | --- | --- | | **运营机构** | 亚数 TrustAsia(中国 CA) | ISRG(互联网安全研究小组,美国非营利组织) | | **推出时间** | 2025 年 10 月 | 2015 年 4 月 | | **加密算法** | RSA、ECC | RSA、ECC | | **有效期** | 90 天 | 90 天(计划 2028 年缩短至 45 天) | | **IP 证书支持** | 不支持 | 支持 | | **自动续签** | 支持 | 支持 | ## 网站证书部署 ### 1. 进入证书申请页面 打开【网站】-【PHP 项目】-选择站点【设置】-【SSL】-【免费证书】 ![网站SSL设置](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121095703572.png) ### 2. 申请证书 选择 LiteSSL 证书类型,点击【申请证书】。 ![申请LiteSSL证书](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121101555097.png) 系统会自动完成域名验证并颁发证书。 ### 3. 验证部署结果 证书部署成功后,访问网站查看 SSL 证书状态。 ![网站访问验证](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121101636387.png) 浏览器地址栏显示锁图标,表示 HTTPS 已正常启用。 ## 面板证书部署 除了为网站部署证书外,还可以为宝塔面板本身部署 SSL 证书,实现 HTTPS 访问面板。 ### 1. 绑定面板域名 进入【设置】-【常用设置】-【绑定域名】,填写面板访问域名。 ![绑定面板域名](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121102402029.png) :::tip 提示 确保域名已正确解析到服务器 IP 地址。 ::: ### 2. 申请面板证书 进入【设置】-【面板 SSL 配置】,选择 LiteSSL 证书并点击【申请证书】。 ![申请面板证书](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121102456598.png) ### 3. 验证部署结果 证书部署成功后,使用 HTTPS 访问面板域名进行验证。 ![面板HTTPS访问](https://docs.bt.cn/img/practical-tutorials/litessl-certificate/image-20260121102739533.png) ## 自动续签 LiteSSL 证书支持自动续签功能,面板会在证书到期前自动申请新证书并完成替换,无需手动操作。 ### 续签机制 - **检查周期:** 面板每天自动检查证书有效期 - **续签时机:** 证书剩余有效期少于 30 天时自动续签 - **续签方式:** 后台自动完成,不影响网站正常访问 ### 查看续签状态 可以在【网站】-【SSL】或【面板 SSL 配置】中查看证书的到期时间和续签状态。 ## 常见问题 ### 申请失败怎么办? 1. **域名解析问题:** 确保域名已正确解析到服务器 IP 2. **防火墙限制:** 检查 80 端口是否开放(证书申请需要进行域名验证) 3. **域名格式:** 确保域名格式正确,不包含 http:// 等前缀 ### LiteSSL 和 Let's Encrypt 应该选择哪个? 两者功能基本一致,可根据以下因素选择: - **需要 IP 证书:** 选择 Let's Encrypt - **访问速度:** LiteSSL 为国内 CA,在国内访问速度可能更快 - **稳定性:** Let's Encrypt 运营时间更长,使用更广泛 ### 证书续签失败怎么处理? 如果自动续签失败,可以: 1. 检查域名解析是否正常 2. 手动重新申请证书 3. 查看面板日志获取失败原因 :::tip 建议 建议为关键网站同时配置证书到期提醒,以便在自动续签失败时及时手动处理。 ::: --- source: https://docs.bt.cn/api/crontab/set_rotate_log.md.txt # set_rotate_log > 修改日志切割任务的配置 # set_rotate_log 修改日志自动切割任务的配置参数。 **前置条件**:需先通过 [set_rotate_log_status](./set_rotate_log_status.md) 开启日志切割服务。 - **路由**:`POST /crontab` - **action**:`set_rotate_log` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_rotate_log` | | num | 否 | Integer | 保留日志份数,默认 `10` | | hour | 否 | String | 执行时间(时),默认 `2` | | minute | 否 | String | 执行时间(分),默认 `0` | | stype | 否 | String | 周期类型,默认 `day` | | log_size | 否 | Float | 日志大小触发值(MB),`0` 不使用大小触发 | | compress | 否 | String | `"1"` 压缩 / `"0"` 不压缩 | ## 示例 ```json {"status": true, "msg": "修改成功"} ``` ## 相关接口 - [set_rotate_log_status](./set_rotate_log_status.md) — 开关日志切割 - [get_rotate_log_config](./get_rotate_log_config.md) — 查看配置 --- source: https://docs.bt.cn/api/java/get_spring_log_data.md.txt # get_spring_log_data > 读取 Spring Boot 项目的日志文件内容 # get_spring_log_data 读取 Spring Boot 项目的日志文件内容。 - **路由**:`GET /mod/java/project/get_spring_log_data/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | log_file | 是 | String | 日志文件名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` | | msg | String | 日志内容 | ## 示例 ```json {"status": true, "msg": "Hello Baota API!\nRunning...\n"} ``` --- source: https://docs.bt.cn/practical-tutorials/bt-ai-assistant-usage.md.txt # 宝塔 AI 助手使用教程 > 使用宝塔面板(BT Panel)AI 助手插件进行服务器性能分析、网站访问分析、安全检测与病毒查杀,含完整使用步骤与场景示例。 # 宝塔 AI 助手使用教程 宝塔 AI 助手是官方推出的智能辅助工具,利用 AI 技术为服务器提供性能分析、安全检测和优化建议。 :::info 版本要求 此功能从宝塔面板 11.4.1 版本开始支持。 ::: ## 安装插件 在【软件商店】-【官方应用】中搜索"宝塔AI助手"并安装。 ![搜索AI助手](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121102920452.png) ![安装AI助手](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121102957922.png) :::tip 提示 AI 对话功能正在开发中,本教程将介绍当前已上线的五个分析模块。 ::: ## 功能模块 ### 1. 分析服务器进程 智能分析服务器的 CPU、内存使用情况和服务状态,并生成诊断报告。 #### 使用方法 点击【分析服务器进程】,AI 会自动收集服务器信息并进行分析。 ![服务器分析报告](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103252228.png) #### 查看历史报告 分析完成后,报告会以 JSON 格式保存在以下目录: ```bash /www/server/panel/plugin/bt_agent/agents_data/agent_001/ ``` 点击【日志】可以查看之前的分析记录。 ![查看历史日志](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103406467.png) ### 2. 分析指定网站访问情况 对指定网站的请求量和流量情况进行深度 AI 分析,帮助了解网站运行状态。 #### 使用方法 1. 点击【分析指定网站访问情况】 2. 选择需要分析的网站(仅支持单个网站) ![选择分析网站](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103533147.png) 3. AI 会分析近三天的数据和七天的请求指标,生成综合报告 ![网站访问分析中](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103756326.png) ![网站访问分析报告](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103819614.png) ### 3. 网站安全分析 全方位分析指定网站的代码安全性和访问日志,发现潜在漏洞和安全威胁。 #### 使用方法 1. 点击【网站安全分析】 2. 选择需要进行安全检测的网站 3. AI 会深度扫描网站代码和日志,识别安全风险 ![安全分析选择](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121103934299.png) 分析结果会以 JSON 格式保存,可随时查看详细的安全建议。 ![安全分析报告](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121104156758.png) ### 4. 网络安全专家报告助手 为服务器生成通俗易懂、口语化的网络安全分析报告。 #### 功能特点 AI 会以"网络安全专家"的身份,全面分析服务器存在的安全风险,包括: - 开放端口安全性 - 防火墙配置 - 登录认证安全 - 系统补丁状态 - 敏感文件权限 报告采用口语化表达,易于理解。 ![安全专家报告](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121145205029.png) ### 5. 病毒查杀助手 针对高资源占用进程进行 AI 分析,输出结构化的病毒查杀建议报告。 #### 使用场景 - 服务器 CPU 或内存占用异常 - 发现可疑进程但不确定是否有害 - 需要专业的安全评估和处理建议 #### 分析流程 AI 会根据病毒库对服务器进行检查,分析可疑进程,并提供: - 风险评级 - 进程行为分析 - 查杀建议 - 预防措施 ![病毒查杀分析](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121145616533.png) ## 使用额度限制 - 每个用户提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准,如文档与面板页面不一致,以面板页面为准 ::: 如需额外额度,可联系宝塔客服购买。 ![额度限制说明](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260121145712796.png) ## 最佳实践 ### 定期分析 建议定期使用 AI 助手进行服务器健康检查: - **每周:** 服务器进程分析 - **每月:** 网站安全分析 - **按需:** 网站访问情况分析 ### 异常排查 当出现以下情况时,立即使用 AI 助手: - 服务器资源占用异常飙升 - 网站访问速度突然变慢 - 发现可疑登录或访问日志 - 系统出现不明进程 ### 报告归档 所有分析报告都会自动保存为 JSON 格式,建议: 1. 定期备份重要的分析报告 2. 对比不同时期的报告,发现趋势变化 3. 根据报告建议及时优化服务器配置 ## 常见问题 ### AI 分析需要多长时间? 根据分析类型不同: - **服务器进程分析:** 约 30 秒 - 1 分钟 - **网站访问分析:** 约 1-2 分钟 - **安全分析:** 约 2-3 分钟 ### 分析报告保存在哪里? 所有报告保存在: ```bash /www/server/panel/plugin/bt_agent/agents_data/agent_001/ ``` 可以在插件的【日志】选项中查看历史报告。 ### 如何获取更多额度? 联系宝塔官方客服,可以购买额外的分析额度或升级套餐。 ### AI 分析是否会影响服务器性能? AI 分析主要在后台运行,对服务器性能影响很小。分析过程中不会中断正常业务。 ## 隐私与安全 :::info 数据安全 - 所有分析数据都经过加密传输 - 分析报告仅存储在您的服务器本地 - 宝塔不会保存您的敏感数据 - 分析过程符合数据保护规范 ::: --- source: https://docs.bt.cn/api/crontab/set_auto_config.md.txt # set_auto_config > 设置自动备份任务的配置 # set_auto_config 为网站或数据库设置自动备份计划任务。任务不存在时自动创建,已存在时更新状态。 - **路由**:`POST /crontab` - **action**:`set_auto_config` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_auto_config` | | name | 是 | String | `"mysql"` 数据库备份 / `"site"` 网站备份 | | status | 是 | String | `"1"` 开启 / `"0"` 关闭 | | hour | 否 | String | 执行时间(时) | | minute | 否 | String | 执行时间(分) | | save | 否 | String | 保留份数 | | backupTo | 否 | String | 备份目标 | > 注意:`name=site` 时如果任务已存在,`set_status` 方法有 bug(硬编码查 mysql 任务),可能导致设置失败。 ## 示例 ### 设置 MySQL 自动备份 ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/java/create_site_tomcat_project.md.txt # create_site_tomcat_project > 在已有网站下创建 Tomcat 项目(内嵌模式) # create_site_tomcat_project 在已有网站目录下创建 Tomcat 项目。需通过 POST body `data` 参数传递 JSON。 - **路由**:`POST /mod/java/project/create_site_tomcat_project/stype` - **方法**:POST ## 输入参数(data JSON) | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | domains | 是 | Array\ | 域名列表 | | tomcat_version | 是 | Integer | Tomcat 版本(如 `9`) | | project_path | 是 | String | 项目路径 | | port | 是 | Integer | 端口号 | | run_user | 是 | String | 运行用户 | | project_ps | 否 | String | 备注 | | project_jdk | 否 | String | JDK 路径 | ## 示例 ```json {"status": true, "msg": "项目创建成功"} ``` --- source: https://docs.bt.cn/practical-tutorials/bt-ai-assistant-config.md.txt # 宝塔 AI 助手插件配置教程 > 介绍如何配置宝塔面板(BT Panel)AI 助手插件,含提示词设置、API 接入与第三方大模型对接,帮助用户自定义对话能力与运维场景。 # 宝塔 AI 助手插件配置教程 :::warning 提示 本教程不适用于面板内置的 AI 助手。 ::: 本教程将指导您如何配置宝塔 AI 助手,包括自定义提示词和接入第三方大模型 API,以满足个性化需求。 ## 全局参数配置 ### 提示词配置 提示词(System Prompt)定义了 AI 助手的行为准则和能力范围。您可以根据实际需求修改默认提示词,以下是宝塔 AI 助手的默认提示词: ```text 身份定义: 你是一个宝塔面板内置的AI助手,一个专业、高效且具备运维专项能力的智能伙伴。你不仅精通Linux运维、服务器安全、网站管理,还具备通用的知识问答与辅助能力。 核心准则: 1. 工具使用: - 你拥有执行工具的能力,但前提是用户必须明确启用相关工具。 - 当发现用户的需求需要特定工具支持,而当前已有工具不足以完成该功能时,需提示用户当前工具无法完成该功能性需求,需提醒用户开启对应工具(如命令执行工具)。 - 在拥有数据或上下文的情况下,严禁重复调用同一个工具,避免浪费系统资源。 - 若用户未提供调用工具所需的必填参数(如服务器 IP、端口号等),禁止直接调用工具,需主动追问,直至收集到完整、有效的信息; 2. 安全确认: - 执行任何涉及修改系统状态、删除数据、重启服务等危险命令前,必须先与用户进行确认。 - 确认时,清晰说明将要执行的操作、涉及的对象以及可能带来的风险。 3. 真实性与落地: - 只提供真实有效的执行结果,绝不捏造数据或执行过程。 - 如果无法通过工具完成任务,请给出真实可落地的手动操作方案或建议,而不是编造虚假的成功结果。 4. 交互体验: - 保持有人情味的对话风格,既专业又平易近人。 - 在解决运维问题的同时,也能进行日常闲聊和情感互动。 能力范围: - 运维专项:Linux系统管理(进程、日志、网络、磁盘)、服务器安全加固、环境部署(LNMP/LAMP)、故障排查。 - 通用辅助:代码编写、知识解答、文本处理等。 ``` ### API 配置 #### 使用默认 API - 每个用户提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准,如文档与面板页面不一致,以面板页面为准 ::: ![默认 API 配置](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260206100207204.png) #### 接入第三方 API 您可以配置第三方大模型 API(如 DeepSeek、OpenAI 等)以获得更高的调用额度或使用特定模型。 以下以配置 DeepSeek API 为例: ![DeepSeek API 配置](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260206100129187.png) **配置说明:** - **API 地址:** 填写大模型的 API 端点地址 - **API 密钥:** 填写您的 API Key :::tip 提示 API 地址和密钥的获取方法请参考各大模型服务商的接口文档。 ::: ## 使用示例 ### 检测容器状态 本示例演示如何使用 AI 助手分析 Docker 容器的运行状态。 #### 1. 启用相关工具 在提问前,需要勾选以下工具权限: - 获取 Docker 信息 - Docker 容器 - Docker 容器详情 - Docker 容器日志 ![启用工具权限](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260206163245247.png) :::info 说明 如果未勾选必要的工具,AI 助手会提示需要启用对应工具才能完成任务。 ::: #### 2. 提问并获取分析结果 输入提示词: ```text 帮我检查分析一下我的 openclaw 容器目前的情况是否正常,有没有需要优化的地方呢 ``` AI 助手将自动调用相关工具收集容器信息,经过分析后给出检测结果和优化建议。 ![分析结果](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260206164936147.png) --- source: https://docs.bt.cn/api/java/modify_tomcat.md.txt # modify_tomcat > 修改 Tomcat 的配置(端口、用户、JDK、备注等) # modify_tomcat 修改已安装 Tomcat 的配置参数。 - **路由**:`GET /mod/java/project/modify_tomcat/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | tomcat_name | 是 | String | Tomcat 名称,如 `tomcat9` | | port | 否 | Integer | 新端口 | | user | 否 | String | 运行用户 | | jdk_path | 否 | String | JDK 路径 | | ps | 否 | String | 备注 | | log_path | 否 | String | 日志路径 | | auto_restart | 否 | String | `"1"` 开机自启 | ## 示例 ```json {"status": true, "msg": "设置Tomcat完成"} ``` ## 相关接口 - [get_tomcat_list](./get_tomcat_list.md) — 查看 Tomcat 列表 --- source: https://docs.bt.cn/api/site/get_https_mode.md.txt # get_https_mode > 获取面板 HTTPS 全局模式(宽松/严格) # get_https_mode 获取面板 HTTPS 全局模式。`false` 为宽松模式(未部署 SSL 时仍可 HTTP 访问),`true` 为严格模式。 - **路由**:`POST /site` - **action**:`get_https_mode` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_https_mode` | 无其他参数。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `true` 严格模式,`false` 宽松模式 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_https_mode ``` ### 响应 ``` false ``` --- source: https://docs.bt.cn/practical-tutorials/bt-ai-assistant-Sidebar.md.txt # 宝塔 AI 助手侧边栏使用教程 > 宝塔面板(BT Panel)v11.7 版本将 AI 助手集成至左侧导航栏,无需进入插件页面即可快速调用 AI 能力进行服务器诊断、容器状态检测、站点报告生成等运维任务。 # 宝塔 AI 助手使用教程 > 宝塔面板 v11.7 版本将 AI 助手集成至左侧导航栏,无需进入插件页面即可快速调用 AI 能力,提升运维效率。 ## 功能概述 宝塔 AI 助手是宝塔面板内置的智能运维辅助工具,支持通过自然语言对话完成服务器诊断、容器状态检测、站点报告生成等任务。 不依赖原本的宝塔 AI 插件 ### 版本变更说明 | 版本 | AI 助手形态 | 使用方式 | |------|-----------|---------| | v11.7 之前 | 插件形式 | 需进入【软件商店】→ 打开 AI 插件 → 对话 | | v11.7 及以后 | 左侧栏模块 | 点击左侧导航栏【AI】即可对话 | ### 核心优势 - **快速访问** — 左侧导航栏固定入口,无需跳转插件页面 - **场景化分析** — 首页负载卡片集成 AI 分析按钮,一键诊断 - **多助手支持** — 可切换不同专业助手(运维/安全/数据库等) - **技能扩展** — 支持自定义技能,扩展 AI 能力边界 ## 操作场景 本文档适用于以下场景: - 通过自然语言查询服务器状态 - 快速诊断 Docker、MySQL 等服务异常 - 生成站点访问分析报告 - 执行服务器安全检测 - 配置 AI 助手参数(模型/额度/工具) ## 前提条件 - 宝塔面板版本 ≥ v11.7 - 服务器可正常访问互联网(用于调用 AI 接口) - 已配置 AI 模型 API(首次使用需设置) ## 操作步骤 ### 一、访问 AI 助手入口 #### 1.1 左侧导航栏入口 登录宝塔面板后,点击左侧导航栏的【AI】菜单项,打开 AI 助手对话界面。 ![左侧栏 AI 入口](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415121225823.png) #### 1.2 首页 AI 分析按钮 在【 AI 】设置中打开【 AI提示 】 即可在面板首页的【负载监控】卡片中,点击【AI 分析负载】按钮,快速进入负载诊断场景。以及放在 CPU、内存、流量中都能直接调用 AI 进行分析 ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/bt-ai-assistant-sidebar.gif) 当鼠标悬停在 CPU 、内存、流量、磁盘IO还有网站的站点上时,会出现 AI 分析按钮 ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/load.png) ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/cpu.png) ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/memory.png) ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/traffic.png) ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/disk-io.png) ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/site-traffic.png) 以及在终端中查看日志时支持选中的文本内容直接调用 AI 进行分析 ![开启AI分析按钮](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/bt-ai-assistant-sidebar-2.gif) ### 二、AI 对话功能 进入 AI 助手后,可通过以下方式发起对话: #### 2.1 快捷问题 系统预设常用运维问题,点击即可快速提问: - Docker 容器异常怎么办? - MySQL 无法启动如何排查? - 生成系统体检报告 - 生成站点访问报告 - 执行服务器安全检测 ![AI 对话界面](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124529815.png) #### 2.2 自定义提问 在输入框中输入自然语言问题,例如: ``` 检查服务器磁盘空间使用情况 为什么我的 Nginx 服务无法启动? 帮我分析今天的访问日志 ``` ### 三、助手列表管理 AI 助手支持多助手切换,不同助手专注不同领域: ![助手列表](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124534836.png) | 助手类型 | 适用场景 | |---------|---------| | 运维助手 | 服务器状态、资源监控、服务管理 | | 安全助手 | 漏洞检测、入侵排查、安全加固 | | 数据库助手 | MySQL/Redis/MongoDB 问题诊断 | | 容器助手 | Docker/K8s 容器相关运维 | | 网站助手 | 站点配置、SSL 证书、访问分析 | **切换助手:** 点击助手名称即可切换,对话历史独立保存。 ### 四、技能管理 技能是 AI 助手的扩展能力模块,每个技能对应一类特定任务: ![技能管理](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124539109.png) #### 4.1 基础自带技能 | 技能名称 | 功能说明 | |---------|---------| | btpanel | 扫描服务器配置、资源使用、安全风险、日志读取等 | | btpanel_files | 宝塔面板文件管理功能,支持基础的远程服务器文件操作能力 | | btpanel_phpsite | 面板 PHP 网站管理技能,支持网站创建,启停,PHP 版本切换,数据库管理等等功能 | #### 4.2 技能启用/禁用 1. 进入【技能管理】页面 2. 点击技能右侧的开关按钮 3. 启用后该技能将在对话中可用 #### 4.3 导入技能包 此外面板导入自己的技能包,点击【导入技能包】即可 ![导入技能](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415141228606.png) ### 五、额度管理 AI 助手调用大模型 API 会产生额度消耗,可在额度管理中查看使用情况: ![额度管理](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124602250.png) #### 5.1 额度说明 一问一答算一次为一次额度,调用了其他工具则不止一次 目前暂不支持配置自定义大模型 - 每个用户提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准,如文档与面板页面不一致,以面板页面为准 ::: #### 5.2 额度获取方式 - **免费额度** — 宝塔官方发放 - **充值额度** — 前往宝塔官网购买额度套餐 - 点击【额度充值】可以直接充值 ![额度充值](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415144053880.png) ### 六、设置配置 点击 AI 助手界面右上角的【设置】图标,进入配置页面。 #### 6.1 AI 模型配置 面板支持目前以下国内主流的大模型可供选择 ![AI 模型设置](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124620831.png) #### 6.2 可用工具配置 ![可用工具](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124650126.png) 工具是 AI 助手可调用的底层能力,例如: #### 6.3 AI 助手设置 ![AI 助手设置](https://docs.bt.cn/img/practical-tutorials/bt-ai-assistant/image-20260415124710212.png) **AI 助手**:打开后可以在右下角呼出悬浮 AI 助手,详细可参考该链接 ## 常见问题 ### 额度不足,如何继续使用? **解决方案:** 1. 前往宝塔官网充值额度 2. 等待次日刷新 ### AI 生成的命令会自动执行吗? **A3**:经过分析,检查服务状态类的命令,在开启工具权限后会自动执行,但是修改以及删除类的命令会得到授权后再执行 --- source: https://docs.bt.cn/practical-tutorials/openclaw-docker-usage.md.txt # OpenClaw Docker 应用使用教程 > 宝塔面板(BT Panel)OpenClaw Docker 应用的完整安装与使用教程,包含镜像拉取、容器启动参数、Clawdbot 机器人接入流程,以及容器日志、端口占用与升级失败等常见问题解决方案。 # OpenClaw Docker 应用使用教程 本教程介绍宝塔面板 OpenClaw Docker 应用的使用方法,以及常见问题的解决方案。 ## 应用使用 ### 应用状态 在应用状态页面可以控制 OpenClaw 容器的启动、停止、重启等操作,也可以恢复默认设置。 ![应用状态管理](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205113731662.png) ### 访问信息 插件会自动生成带 Token 的访问 URL,直接复制访问地址即可使用。 ![访问地址](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205105201516.png) ### 日志查看 可以实时查看 OpenClaw 容器的运行日志,便于排查问题。 ![查看日志](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205113944578.png) ### 机器人配置 OpenClaw 支持接入 QQ 机器人、飞书机器人、企业微信机器人和钉钉机器人。机器人的 ID 和密钥需要在对应平台的开放平台获取。 **相关平台:** - **QQ 开放平台:** https://q.qq.com - **飞书开放平台:** https://open.feishu.cn/?lang=zh-CN - **企业微信开放平台:** https://work.weixin.qq.com/ - **钉钉开放平台:** https://open.dingtalk.com/ ![机器人配置](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205112923176.png) ### 安装配置 #### 修改端口和存储路径 可以在安装配置中修改访问控制台端口、WebSocket 端口以及数据目录的存储路径。 :::warning 注意 修改配置后需要重建容器才能生效。 ::: ![端口配置](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205114924863.png) #### 修改大模型配置 OpenClaw 默认使用宝塔 AI 助手赠送的模型。 - 每个用户提供 20 次免费使用额度 - 免费额度可能随时调整,具体以页面显示为准,如文档与面板页面不一致,以面板页面为准 ::: 如需使用其他大模型,可以在【访问信息页面】中修改 API 配置。 ![大模型配置](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260206030340541.png) **配置说明:** - **API 地址:** 大模型的 API 端点 - **API 密钥:** 您的 API Key - **模型名称:** 使用的模型标识 :::tip 提示 大模型的 API 地址、密钥及模型信息请参考各大模型服务商的接口文档。如需购买宝塔 AI 助手额度,可联系客服。 ::: :::warning 注意 修改配置后需要重建应用才能生效。 ::: ## 常见问题解决 ### 健康状态异常 如果访问时健康状态显示不正常,可以到宝塔面板重启容器即可解决。 ![健康状态异常](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205105323884.png) ### 配置域名反向代理 如需为 OpenClaw 配置域名访问,可以使用宝塔面板的反向代理功能。 #### 操作步骤 **1. 进入容器管理** 点击左侧菜单【Docker】-【容器】。 ![Docker 容器](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205105519284.png) **2. 配置反向代理** 选择 OpenClaw 容器,点击【反向代理】,即可配置域名。 ![配置反向代理](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205105608645.png) ### 更新镜像 如需更新 OpenClaw 到最新版本,可以通过容器编排功能进行更新。 #### 操作步骤 点击【Docker】-【容器编排】,找到 OpenClaw 的编排配置,执行更新操作。 ![更新镜像](https://docs.bt.cn/img/practical-tutorials/openclaw-docker/image-20260205112740764.png) --- source: https://docs.bt.cn/api/java/check_env_for_project.md.txt # check_env_for_project > 检查 jar 文件的环境变量和配置 # check_env_for_project 检查指定 jar 包的 Spring Boot 配置,检测潜在的环境问题。 - **路由**:`GET /mod/java/project/check_env_for_project/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_jar | 是 | String | jar 文件路径 | | project_cmd | 否 | String | 启动命令 | | env_list | 否 | Array | 环境变量列表 | | env_file | 否 | String | 环境变量文件路径 | ## 示例 ```json {"status": true, "msg": "未检测到配置问题", "data": []} ``` --- source: https://docs.bt.cn/api/site/get_site_errlog.md.txt # get_site_errlog > 获取网站的 Nginx/Apache 错误日志内容 # get_site_errlog 获取指定网站的错误日志,自动根据 Web 服务器类型和项目类型定位日志文件。 - **路由**:`POST /site` - **action**:`get_site_errlog` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_site_errlog` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功 | | msg | String | 错误日志内容(可能为空) | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_site_errlog&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": ""} ``` --- source: https://docs.bt.cn/practical-tutorials/openclaw-qq-feishu-bot.md.txt # OpenClaw 配置 QQ 与飞书机器人 > 宝塔面板(BT Panel)OpenClaw(Clawdbot)插件更新后,如何在面板内一键配置 QQ 机器人与飞书机器人,实现群聊 AI 对话与运维提醒接入。 # OpenClaw 配置 QQ 和飞书机器人 这次,OpenClaw 插件迎来了一次重要更新。现在,你可以直接在插件中配置**飞书机器人**或 **QQ 机器人**,让 OpenClaw 真正走出 Web 界面,进入你日常使用的消息工具中。 无需额外部署服务,配置完成后即可开始对话。 ![OpenClaw 更新封面](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-00.png) :::warning 重要提示 由于官方更改包名,**不支持直接升级**,如需更新请卸载旧版插件,安装新版 OpenClaw 插件。已有数据会丢失,请您评估是否需要更新,新安装不受影响。 ::: --- ## 配置 QQ 机器人 ### 步骤 1:打开 QQ 开放平台,注册账号 打开 [QQ 开放平台-龙虾专用页面](https://q.qq.com/qqbot/openclaw/login.html),注册账号,如已注册可直接登录。 ![QQ 开放平台](https://docs.bt.cn/img/practical-tutorials/openclaw-qq-feishu-bot/qq-open-platform.png) ### 步骤 2:按提示完成登录 按提示完成登录,首次可能需要注册 ### 步骤 3:创建机器人 登录后点击**创建机器人** ![创建机器人](https://docs.bt.cn/img/practical-tutorials/openclaw-qq-feishu-bot/qq-create-bot.png) ### 步骤 4:获取 APPID 和 AppSecret 创建完成后页面会显示 APPID 和 AppSecret,点击**复制**。 ![获取 APPID 和 AppSecret](https://docs.bt.cn/img/practical-tutorials/openclaw-qq-feishu-bot/qq-get-appid.png) ### 步骤 5:将信息填写到插件并启用 将获取到的信息填写到插件,并启用,启用后点击**保存配置**。 ![填写插件信息](https://docs.bt.cn/img/practical-tutorials/openclaw-qq-feishu-bot/qq-fill-plugin.png) ### 步骤 6:等待安装插件 等待安装插件。 ### 步骤 7:开始对话 机器人会被自动添加到你的 QQ 聊天列表,点击即可开始对话。 ![QQ 聊天对话](https://docs.bt.cn/img/practical-tutorials/openclaw-qq-feishu-bot/qq-chat.png) --- ## 配置飞书机器人 ![配置飞书机器人](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-17.png) ### 步骤 1:创建企业自建应用 打开 [飞书开放平台](https://open.feishu.cn/),创建企业自建应用。 ![创建自建应用](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-18.png) ### 步骤 2:填写基本信息 填写基本信息,点击**创建**。 ![填写基本信息](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-19.png) ### 步骤 3:添加机器人能力 在**应用能力**中,选择**机器人**。 ![选择机器人能力](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-20.png) ### 步骤 3-2:开通权限 在**权限管理**页面,允许以下权限(必须开通): ![开通必要权限 1](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-21.png) ![开通必要权限 2](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-22.png) ![开通必要权限 3](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-23.png) 建议同步放通可选权限: ![开通可选权限 1](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-24.png) 权限开通后需要**发布**生效。 ::: ### 步骤 4:获取应用凭证 在**凭证与基础信息**页面,获取应用凭证(App ID 和 App Secret)。 ![获取应用凭证](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-25.png) ### 步骤 5:将凭证填入插件 回到面板插件,将 App ID 和 App Secret 填写到插件页面,并点击**确定保存**。 ![填写插件凭证](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-26.png) ### 步骤 6:保存配置并安装飞书插件 点击**保存配置**,安装飞书插件。 ![安装飞书插件](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-27.png) ### 步骤 7:配置事件订阅 安装配置完成后,在**事件与回调配置**中,选择**事件配置**,订阅方式选择**长连接**,保存。 ![配置事件订阅](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-28.png) ### 步骤 8:添加订阅事件 点击**添加事件**,添加以下订阅事件: ![添加订阅事件 1](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-29.png) ![添加订阅事件 2](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-30.png) ### 步骤 9:发布应用版本 开通后点击**创建版本**,完成发布。 ![创建并发布版本](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-31.png) ### 步骤 10:打开飞书客户端对话 回到飞书客户端,打开应用即可对话。 ![飞书客户端对话 1](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-32.png) ![飞书客户端对话 2](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-33.png) ### 步骤 11:添加到群聊 你可以在群聊中添加机器人,将其添加到群聊中。至此配置完成。 ![添加到群聊](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-34.png) :::danger 安全提示 请注意保管好你的开发信息,不要对外透露。本文中使用的凭据均已销毁。 ::: --- ## 总结 OpenClaw 已经不再只是运行在服务器里的一个应用,而是可以真正走进 QQ 群聊或飞书对话窗口,参与日常交流的机器人。 无论是个人使用,还是小团队内部协作,你都可以根据自己的使用场景,选择合适的消息平台接入。后续我们也会持续完善更多对话能力和使用示例,让 OpenClaw 在真实沟通场景中,发挥更大的价值。如在配置过程中遇到问题,欢迎在交流群内反馈。 ![结尾](https://docs.bt.cn/img/common/wechat-7UDrXQqyGoGxaQK4d5i4FQ/img-35.png) --- source: https://docs.bt.cn/api/java/set_static_path.md.txt # set_static_path > 为 Spring Boot 项目设置静态文件路径 # set_static_path 为 Spring Boot 项目配置静态文件目录和默认首页。 - **路由**:`GET /mod/java/project/set_static_path/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | status | 是 | String | `"1"` 启用 / `"0"` 关闭 | | index | 是 | String | 默认首页文件,如 `index.html` | | path | 是 | String | 静态文件目录路径 | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/create_default_conf.md.txt # create_default_conf > 获取创建网站时的默认配置项(404页面、默认首页、日志切割等) # create_default_conf 获取新建网站时的全局默认配置状态,包括 404 页面、默认首页、日志切割、CDN IP 获取等开关。 - **路由**:`POST /site` - **action**:`create_default_conf` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `create_default_conf` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | page_404 | Boolean | 是否自动创建 404 页面 | | page_index | Boolean | 是否自动创建默认首页 | | log_split | Boolean | 是否开启日志切割 | | cdn_ip | Boolean | 是否获取 CDN IP | | cdn_recursive | Boolean | CDN 递归获取 | | log_path | String | 日志存储路径 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=create_default_conf ``` ### 响应 ```json {"page_404": true, "page_index": true, "log_split": false, "cdn_ip": false, "cdn_recursive": false, "log_path": "/www/wwwlogs"} ``` --- source: https://docs.bt.cn/practical-tutorials/log-cleaner.md.txt # 日志清理工具插件使用教程 > 使用宝塔面板(BT Panel)免费插件「日志清理工具」一键清理系统日志、软件日志与垃圾文件,释放磁盘空间,适用于磁盘占用过高与资源优化场景。 # 日志清理工具 日志清理工具是宝塔免费插件,主要用于一键清理指定日志和系统垃圾,涵盖回收站、面板日志、数据库日志等内容。 ![日志清理工具主界面](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091047753.png) ## 功能介绍 ### 日志清理 ![日志清理功能](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091421506.png) 点击【立即清理】后,系统将扫描并列出所有可清理的日志文件,默认包含以下类型: - 系统日志 - 邮箱日志 - 网站日志 - 防入侵日志 - Docker 容器日志 - 面板安装日志 - 面板计划任务日志 - 防爆破日志 ![选择日志类型](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091558854.png) 勾选对应日志类型后,点击清理即可。 ![清理确认](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091632793.png) ### 自定义配置 除内置的日志清理项外,还支持自定义配置,满足个性化清理需求。 ![自定义配置入口](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091726110.png) 点击【自定义配置】,可添加需要清理的**目录**、**文件**或**查找目录**。 ![选择清理路径](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091812275.png) 文件和目录均可直接选择对应路径。 **查找文件**支持类正则及多层匹配,可在一个目录下匹配多个含相同关键词的日志文件。 ![查找文件配置示例](https://docs.bt.cn/img/practical-tutorials/log-cleaner/image-20260312091917174.png) --- source: https://docs.bt.cn/api/java/keep_option.md.txt # keep_option > 更新任务管理(使用新版/使用旧版/停止新版) # keep_option 在进行中的项目更新任务中,切换使用新版 jar、回退旧版或停止新版。 需要先通过 `update_project_by_keep` 启动一个更新任务。 - **路由**:`GET /mod/java/project/keep_option/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | project_name | 是 | String | 项目名称 | | option | 是 | String | `use_new` 使用新版 / `use_old` 回退旧版 / `stop_new` 停止新版 | ## 示例 ```json {"status": false, "msg": "没有正在进行的更新任务, 无法执行操作"} ``` > 有更新任务时返回 `true`。 --- source: https://docs.bt.cn/api/site/get_Scan.md.txt # get_Scan > 获取网站漏洞扫描结果缓存 # get_Scan 获取最近一次网站漏洞扫描的缓存结果。 - **路由**:`POST /site` - **action**:`get_Scan` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_Scan` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | info | Array | 扫描结果(可能为空) | | time | Integer | 扫描时间戳 | | loophole_num | Integer | 漏洞数量 | | site_num | Integer | 已扫描网站数 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_Scan ``` ### 响应 ```json {"info": [], "time": 1779504854, "loophole_num": 0, "site_num": 1} ``` --- source: https://docs.bt.cn/practical-tutorials/oss-mount.md.txt # 对象存储自动挂载插件使用教程 > 使用宝塔面板(BT Panel)对象存储自动挂载插件,将阿里云 OSS、腾讯云 COS、七牛云 Kodo 等对象存储桶挂载为服务器本地目录,实现大容量文件透明读写。 # 对象存储自动挂载 对象存储自动挂载插件支持阿里云、腾讯云(cosfs)、华为云、京东云、金山云、百度云等主流对象存储,可将对象存储桶挂载到本地,像使用本地文件系统一样直接操作对象存储文件。 ![对象存储自动挂载插件主界面](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313144406147.png) > 安装后如遇到报错,可尝试执行插件修复操作。 本文以阿里云为例进行演示,其他平台操作流程相同。 ## 配置密钥 首先在云平台控制台获取 AccessKey 信息: ![在阿里云控制台获取 AccessKey 信息](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313145200560.png) 在插件中填写阿里云 OSS 的 AccessKey ID 和 AccessKey Secret: ![填写 AccessKey ID](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313144627784.png) ![填写 AccessKey Secret](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313144726311.png) 信息填写完成后,将提示"设置成功": ![密钥设置成功提示](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313145439219.png) ## 挂载 点击【点击挂载】即可将存储桶挂载到本地。可使用默认挂载地址,也可根据需要自行修改: ![选择挂载地址](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313161929900.png) > 仅当云服务器与对象存储位于同一地域内网时,才可勾选【开启内网挂载】。 ![开启内网挂载选项](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162056271.png) 如有其他存储桶未被自动识别,可手动添加: ![手动添加存储桶](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162145022.png) ## 挂载检查 在面板左侧终端中执行 `df -Th` 命令,确认挂载是否生效: ![执行 df -Th 检查挂载状态](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162320089.png) ## 卸载挂载 打开插件,点击已挂载存储桶对应的【卸载】按钮: ![点击卸载按钮](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162423554.png) ![确认卸载](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162444724.png) 也可通过命令行方式卸载: ```bash umount /oss挂载地址 ``` ![命令行卸载效果](https://docs.bt.cn/img/practical-tutorials/oss-mount/image-20260313162826230.png) --- source: https://docs.bt.cn/api/java/set_version_ps.md.txt # set_version_ps > 修改 Java 项目版本备份的备注 # set_version_ps 修改指定版本备份的备注信息。 - **路由**:`GET /mod/java/project/set_version_ps/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | sitename | 是 | String | 项目名称(注意是 `sitename`) | | version | 是 | String | 版本号,如 `v1.0` | | ps | 否 | String | 新的备注内容 | ## 示例 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/get_restart_task.md.txt # get_restart_task > 获取网站自动重启守护任务的配置状态 # get_restart_task 查询 Apache/Nginx 守护进程(自动重启)任务的配置状态。 - **路由**:`POST /site` - **action**:`get_restart_task` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_restart_task` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 成功 | | msg | Object | 包含 `status` 字段,`0` 关闭 / `1` 开启 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_restart_task ``` ### 响应 ```json {"status": true, "msg": {"status": 0}} ``` --- source: https://docs.bt.cn/practical-tutorials/fail2ban.md.txt # Fail2ban 防暴力破解插件使用教程 > 使用宝塔面板(BT Panel)Fail2ban 插件为服务器提供自动化入侵防御,防御 SSH、FTP、Web 暴力破解与扫描攻击等网络威胁,含安装、规则配置与告警设置。 # Fail2ban Fail2ban 是一款基于 Python 开发的开源入侵防御工具,核心工作流程为**监控日志 → 检测异常 → 触发封禁 → 自动解封**,通过动态修改防火墙规则(如 iptables、ufw、nftables 等)实现对恶意 IP 的自动化拦截,有效防御暴力破解、扫描攻击等常见网络威胁。 **适用对象:** - 所有暴露在公网的 Linux/BSD 服务器,尤其是云服务器、VPS 等无硬件防火墙保护的环境 - 个人博客、企业官网、电商平台等各类 Web 服务,尤其适合无专业 WAF 保护的中小型站点 - 开放远程访问的数据库服务器,尤其是测试环境和小型应用数据库 - 提供文件共享服务的服务器,尤其是对外提供下载服务的站点 ![Fail2ban 插件主界面](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314093648753.png) ## 功能介绍 ### 站点保护 Fail2ban 支持面板中通过 Nginx、Apache 部署的网站,针对 443 和 80 端口提供以下防护: - **简单防 CC**:防止短时间内大量请求导致服务过载 - **防止站点扫描**:同样适用于文件下载、单静态页面等场景的简单 CC 防御 ![站点保护配置](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314094546422.png) ![站点保护规则详情](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314094602725.png) ### 服务保护 通过添加对应端口并设置访问限制,当请求达到设定阈值后,自动对来源 IP 执行封禁处理,可实现针对特定端口的简单防 CC 功能。 ![服务保护配置](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314095033868.png) ### IP 黑名单 对于已知的恶意 IP,可在此处添加具体 IP 或 IP 段,在系统层面彻底禁止其访问。 ![IP 黑名单配置](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314095451633.png) ### IP 白名单 对于公司 IP 或无需防护的可信来源,可在此处添加对应 IP 或 IP 段,使其不受防护规则影响。 ![IP 白名单配置](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314095601342.png) ### 服务状态 可通过操作菜单实现 Fail2ban 服务的启动、关闭和配置重载。 ![服务状态管理](https://docs.bt.cn/img/practical-tutorials/fail2ban/image-20260314095700064.png) ## 总结 Fail2ban 是一款**简单高效**的服务器安全防护工具,核心价值在于**自动化响应**恶意行为,将人工巡检转化为机器实时防护。其使用场景覆盖从基础服务器登录防护到复杂应用层安全,特别适合中小型服务器环境和个人站点。 建议在部署时遵循**最小权限原则**,合理配置封禁阈值和时间,避免误封正常用户,同时结合防火墙、密码策略等措施形成多层防护体系。 --- source: https://docs.bt.cn/api/java/remove_version.md.txt # remove_version > 删除 Java 项目的版本备份 # remove_version 删除指定版本备份。 - **路由**:`GET /mod/java/project/remove_version/stype` - **方法**:GET ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | sitename | 是 | String | 项目名称(注意是 `sitename`) | | version | 是 | String | 要删除的版本号,如 `v1.0` | ## 示例 ```json {"status": true, "msg": "删除成功"} ``` ## 相关接口 - [get_version_list](./get_version_list.md) — 版本列表 - [now_file_backup](./now_file_backup.md) — 创建版本备份 --- source: https://docs.bt.cn/api/site/get_cdn_ip_settings.md.txt # get_cdn_ip_settings > 获取 CDN IP 获取的全局配置 # get_cdn_ip_settings 获取面板全局的 CDN 客户端真实 IP 获取配置。 - **路由**:`POST /site` - **action**:`get_cdn_ip_settings` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_cdn_ip_settings` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | cdn_ip | Boolean | CDN IP 获取是否开启 | | cdn_recursive | Boolean | 是否递归获取 | | header_cdn | String | CDN 头字段名 | | white_ips | String | CDN IP 白名单 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_cdn_ip_settings ``` ### 响应 ```json {"cdn_ip": false, "cdn_recursive": false, "header_cdn": "X-Forwarded-For", "white_ips": "0.0.0.0/0,::/0"} ``` --- source: https://docs.bt.cn/practical-tutorials/server-migration.md.txt # 宝塔面板整机迁移教程 > 使用宝塔面板(BT Panel)整机迁移功能,将现有服务器的面板、网站、数据库、计划任务与存储数据完整迁移至一台新服务器,适用于云主机替换、换云、升配场景。 # 整机迁移 整机迁移功能适用于已使用宝塔面板的用户,将当前服务器的数据完整迁移至一台全新的服务器。迁移过程通过在新机器上安装面板、压缩并传输备份数据的方式完成。 > **注意:** 迁移期间,若启用了写入保护类安全功能(如防篡改等),需提前关闭,否则可能导致迁移失败。 ## 测试机器环境 - 操作系统:Debian 12 - 面板版本:11.6.0 ## 功能介绍 进入面板【设置】→【整机迁移】,即可看到迁移界面: ![整机迁移功能入口](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326094146370.png) 迁移支持两种身份验证方式:**密码验证**和**私钥验证**。 ![选择迁移验证方式](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326094245360.png) ## 迁移操作 1. 准备一台全新的目标机器,本次测试使用 Debian 12 操作系统。 2. 选择需要迁移的数据范围(默认迁移全部数据)。 ![选择迁移数据范围](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326140313406.png) 3. 注意查看预计所需空间,确认目标机器磁盘空间充足后再继续。 ![查看预计所需空间](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326143857596.png) ![填写目标机器信息](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326143926405.png) 4. 等待迁移完成。 ![迁移进行中](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326140610347.png) 5. 迁移成功后,页面将显示新机器的面板登录信息。 ![迁移成功,显示登录信息](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326144005231.png) 6. 可在【迁移记录】中查看详细日志;若迁移失败,也可通过迁移记录查看错误信息。 ![查看迁移记录和日志](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326144030021.png) 7. 若迁移后忘记面板登录信息,可在迁移记录中查看。 ![从迁移记录中查看面板登录信息](https://docs.bt.cn/img/practical-tutorials/server-migration/image-20260326144101945.png) ## 注意事项 1. **目标机器必须是全新机器**:若目标机器已有数据,迁移过程中将被覆盖,请谨慎操作。 2. **仅支持 Linux 平台间迁移**:目前不支持从 Linux 迁移到 Windows。 3. **确保磁盘空间充足**:迁移通过压缩并传输的方式进行,源机器和目标机器均需预留足够空间。 可通过以下命令检查磁盘状态: ```bash df -Th # 查看磁盘空间 df -i # 查看 inode 是否充足 ``` 4. **必须使用 root 用户**:部分云服务商默认提供的账户名称不是 root,需先将账户切换为 root 权限,因为宝塔面板的安装需要 root 用户权限。 --- source: https://docs.bt.cn/api/site/get_sites_ftp.md.txt # get_sites_ftp > 获取网站关联的 FTP 账户信息 # get_sites_ftp 查询指定网站是否关联了 FTP 账户及其信息。 - **路由**:`POST /site` - **action**:`get_sites_ftp` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_sites_ftp` | | siteName | 否 | String | 网站域名 | | site_id | 否 | Integer | 网站 ID(与 `siteName` 二选一) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 查询成功 | | msg | String | 结果消息 | | info | Object | FTP 账户信息,无关联时 `null` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_sites_ftp&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "没有对应站点的ftp信息", "info": null} ``` --- source: https://docs.bt.cn/practical-tutorials/api-migration.md.txt # 宝塔面板 API 一键迁移 > 通过宝塔面板(BT Panel)「一键迁移 API 版本」插件,快速实现源服务器与目标服务器间网站、数据库、计划任务、SSL 证书的无缝迁移,适用于服务器替换与云间迁移。 # 宝塔面板 API 一键迁移 本文为宝塔面板 API 一键迁移的实操指南,通过「宝塔一键迁移 API 版本」插件,快速实现源服务器与目标服务器间网站、数据库、计划任务的无缝迁移,无需复杂手动配置。 ## 插件安装与目标服务器配置 ### 1. 安装迁移插件 登录**源服务器**宝塔面板,进入左侧菜单栏【软件商店】,搜索并安装【宝塔一键迁移 API 版本】。 ![在软件商店安装宝塔一键迁移 API 版本](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326092120150.png) ### 2. 配置目标服务器信息 打开已安装的迁移插件,填写**目标服务器(迁入端)**的以下信息: | 配置项 | 填写要求 | | --- | --- | | 面板地址 | 格式:协议(http/https)+ 目标 IP + 面板端口(例:`https://192.168.1.100:8888`) | | API 密钥 | 从目标服务器面板获取:【面板设置】→【API 接口】→ 开启并复制密钥 | | IP 白名单 | 目标服务器需添加源服务器 IP:【面板设置】→【API 接口】→【添加 IP 白名单】 | ![填写目标服务器面板地址和 API 密钥](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326092232752.png) ![在目标服务器开启 API 接口并复制密钥](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326154932180.png) ![添加源服务器 IP 至白名单](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326155107488.png) > ⚠️ **注意事项:** > 1. 面板地址必须包含完整协议和端口,不可省略。 > 2. 目标服务器面板版本需 ≥ 6.9.8,否则无法兼容。 > 3. 白名单未添加源服务器 IP 将直接导致连接失败。 ## 迁移操作流程 ### 1. 环境兼容性检测 填写完目标服务器信息后,点击【下一步】,系统将自动检测目标服务器环境(包括面板版本、依赖组件等)。 若检测提示"环境不完整",需先根据提示在目标服务器上安装缺失组件,再继续操作。 ![环境兼容性检测结果](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326155251383.png) ### 2. 选择迁移内容 环境检测通过后,进入【迁移内容选择】页面,勾选需要迁移的资源: - 网站(含站点配置、文件,可多选) - 数据库(含数据、账号权限) - 计划任务 ![选择需要迁移的内容](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326160718770.png) ### 3. 执行一键迁移 确认选择后,点击【一键迁移】,系统进入后台传输状态。可关闭插件窗口,不影响传输进度。 ![迁移任务开始执行](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326161349699.png) ### 4. 迁移结果验证 等待迁移完成后,登录**目标服务器**宝塔面板,逐项核验: 1. 查看【网站】,确认迁移的站点是否存在,且文件与源服务器一致。 2. 查看【数据库】,确认数据库实例和数据是否完整。 3. 查看【计划任务】,确认定时任务配置是否已同步。 ![目标服务器网站列表验证](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326163052966.png) ![目标服务器数据库列表验证](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326163057563.png) ## 传输过程注意事项 1. 迁移在后台运行,关闭插件窗口不影响传输进度。 2. 传输期间请勿操作目标服务器面板: - 不可修改面板端口、重置 API 密钥。 - 不可删除或修改目标服务器上的同名站点、数据库。 3. 保持网络稳定:源服务器与目标服务器之间的网络波动可能导致传输失败,建议迁移期间避免占用过多带宽。 ## 常见问题排查 ### 目标面板连接失败 ![目标面板连接失败报错](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260326160056656.png) 报错表现:插件提示"目标面板连接失败"。 排查步骤: 1. 在本地 `ping` 目标服务器 IP,检查网络连通性(不通则排查防火墙、安全组)。 2. 核对面板地址:协议、IP、端口是否填写正确(重点检查 https/http 是否混淆)。 3. 验证 API 密钥:检查目标服务器是否重新生成了密钥,如有则重新复制最新密钥。 4. 检查面板版本:目标服务器面板版本是否 ≥ 6.9.8,低于则需先升级面板。 5. 白名单配置:确认目标服务器已添加源服务器 IP(注意区分内网/外网 IP)。 6. 插件修复:若以上均正常,在源服务器软件商店找到迁移插件,点击【修复】后重试。 ### 传输失败 ![传输失败日志示例](https://docs.bt.cn/img/practical-tutorials/api-migration/image-20260327091924563.png) 通过迁移日志定位问题:进入迁移插件 → 【迁移日志】,查看具体失败原因。 ### 迁移后仅显示默认文件(未同步数据) 原因:目标服务器已存在同名站点目录或数据库,导致迁移数据未能覆盖。 解决方案: 1. 登录目标服务器面板,删除同名站点及对应的数据库、配置文件。 2. 重新执行迁移操作。 --- source: https://docs.bt.cn/api/site/get_cron_scanin_info.md.txt # get_cron_scanin_info > 获取网站漏洞扫描定时任务的配置 # get_cron_scanin_info 获取漏洞扫描定时任务的当前配置,包括扫描周期、推送渠道和开关状态。 - **路由**:`POST /site` - **action**:`get_cron_scanin_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_cron_scanin_info` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | cycle | Integer | 扫描周期(天) | | channel | String | 消息推送渠道 | | status | Integer | `1` 开启,`0` 关闭 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_cron_scanin_info ``` ### 响应 ```json {"cycle": 1, "channel": "", "status": 0} ``` --- source: https://docs.bt.cn/practical-tutorials/host-openclaw.md.txt # 主机板 OpenClaw 常见问题解决 > 宝塔主机板 OpenClaw 插件常见故障排查与解决方案,覆盖安装失败、版本更新异常、Node.js 与 Git 依赖缺失、网络拉取超时等典型场景,并附离线包替代安装方法。 # 主机板 OpenClaw 常见问题解决 本文汇总宝塔主机板 OpenClaw 插件**安装失败、更新异常**的核心问题,提供排查步骤和解决方案,帮助快速定位并解决插件使用故障。 ## 安装问题 ![OpenClaw 插件安装失败示例](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327094543936.png) ![OpenClaw 安装失败报错信息](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327094605246.png) ### 通用排查方法 插件安装失败时,优先通过**终端手动执行安装脚本**,查看具体报错信息定位问题根源: 1. 登录服务器终端。 2. 执行安装脚本命令: ```bash bash /www/server/panel/plugin/openclaw/install.sh install ``` 3. 查看命令执行后的报错提示,对照下方方案解决。 ### 未安装 Node.js 导致安装失败 ![Node.js 未安装报错提示](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327095109304.png) **报错特征**:执行脚本后提示 `Node.js is not installed`(无 Node.js 环境)。 **解决步骤:** 1. 进入宝塔面板,点击左侧菜单栏【网站】→【Node 项目】→【Node 版本管理器】。 ![打开 Node 版本管理器](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327095538101.png) 2. 安装 **v22.x.x 及以上版本**的 Node.js。 ![安装指定版本 Node.js](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327095648360.png) 3. 安装完成后,将该版本设置为**全局命令行版本**。 ![设置全局命令行版本](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327095731350.png) 4. 重新执行手动安装命令: ```bash bash /www/server/panel/plugin/openclaw/install.sh install ``` ### 未安装 Git 导致安装失败 ![Git 未安装报错提示](https://docs.bt.cn/img/practical-tutorials/host-openclaw/image-20260327100104328.png) **报错特征**:执行脚本后提示 `Git is not installed`(无 Git 环境)。 **解决步骤:** 1. 根据服务器操作系统,执行对应命令安装 Git: ```bash # Debian / Ubuntu 系统 apt update && apt install -y git # CentOS / RHEL 系统 yum install -y git ``` 2. 验证 Git 安装成功(输出版本号即为正常): ```bash git --version ``` 3. 重新执行 OpenClaw 安装命令: ```bash bash /www/server/panel/plugin/openclaw/install.sh install ``` ## 更新问题 ### 面板内插件更新按钮点击无响应 直接在服务器终端执行升级命令强制更新插件: ```bash openclaw update ``` --- source: https://docs.bt.cn/api/site/SetSSLConf.md.txt # SetSSLConf > 为网站开启 SSL 并批量部署证书(兼容多项目类型) # SetSSLConf 为指定网站开启 SSL(HTTPS),兼容 Nginx/Apache 以及 PHP/Node/Java/Go 等多种项目类型。 - **路由**:`POST /site` - **action**:`SetSSLConf` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetSSLConf` | | siteName | 是 | String | 网站域名 | | first_domain | 否 | String | 主域名(批量部署时传) | | isBatch | 否 | String | 批量部署标记 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 开启成功 | | msg | String | `SSL开启成功!` | | csr | String | PEM 格式证书内容 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetSSLConf&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "SSL开启成功!", "csr": "-----BEGIN CERTIFICATE-----\n..."} ``` --- source: https://docs.bt.cn/practical-tutorials/kvm-virtual-machine-manager.md.txt # 宝塔面板 KVM 虚拟机管理器使用教程 > 本文介绍如何在宝塔面板(BT Panel)Linux 宿主机中安装并使用 KVM 虚拟机管理器,覆盖环境初始化、ISO 镜像、网络与存储、虚拟机生命周期、模板、备份、VNC 控制台及故障诊断,适用于需要在单机上部署和维护虚拟化资源的运维人员。 # 宝塔面板 KVM 虚拟机管理器使用教程 本文介绍如何在 **宝塔面板(BT Panel)** Linux 宿主机中安装、初始化和使用 KVM 虚拟机管理器。完成配置后,可以在单台服务器上集中管理 ISO 镜像、虚拟网络、存储池、虚拟机、模板、快照与备份,并通过 VNC 控制台安装和维护客体系统。 | 项目 | 说明 | | --- | --- | | 适用插件 | KVM 虚拟机管理器(`kvm_manager`) | | 文档对应版本 | `1.0.0` | | 适用范围 | 宝塔面板所在的单台 Linux 宿主机 | | libvirt 连接 | 本机 `qemu:///system` | :::info 版本说明 插件功能可能随版本更新而变化。如果本文与当前插件页面不一致,请以插件页面显示为准。 ::: ## 使用前须知 ### 支持的宿主机系统 - Debian 12 及以上版本,包括 Debian 13。 - Ubuntu 22.04 及以上版本,包括 Ubuntu 24.04。 - 宿主机需要能够使用 `apt-get` 安装软件包。 ### KVM 与 TCG 的区别 - 当宿主机存在可用的 `/dev/kvm`,且 libvirt 确认支持 KVM 时,插件使用 KVM 硬件加速。 - 没有可用的 `/dev/kvm` 时,插件使用 TCG 软件模拟。 - TCG 可以创建和运行虚拟机,但性能明显低于 KVM,尤其是在系统安装、磁盘操作和高负载场景中。 ### 插件不会自动修改的配置 环境安装不会自动修改宿主机物理网卡、IP 地址、默认路由或现有 Linux 网桥,也不会自动创建物理桥接网络。插件可以使用已经存在的 Linux 网桥,也可以使用 libvirt NAT 网络或 macvtap。 ### 重要目录 插件初始化目录存储池后,会在存储根目录中使用以下子目录: ```text iso/ ISO 安装镜像 disks/ 虚拟机 qcow2 磁盘 templates/ 虚拟机模板及其元数据 backups/ 虚拟机备份 ``` 默认建议将 `/www/kvm` 作为存储根目录。插件配置、任务、锁和临时会话保存在 `/www/server/panel/data/kvm_manager`。 ## 安装插件 1. 登录宝塔面板,进入【软件商店】。 2. 搜索“KVM 虚拟机管理器”。 3. 找到插件后,点击【安装】。 ![在宝塔面板软件商店搜索并安装 KVM 虚拟机管理器](https://docs.bt.cn/img/practical-tutorials/kvm-manager/install-plugin.png) 插件安装脚本只执行以下操作: 1. 安装插件代码。 2. 创建插件数据、任务、锁、上传和 VNC 会话目录。 3. 安装宝塔面板的 VNC WebSocket 转发类。 此时不会自动安装 QEMU、libvirt,不会创建虚拟机,也不会修改宿主机网络。安装完成后打开插件,进入【安装与初始化】向导。 ## 首次安装与初始化 首次向导依次包含【环境检测】、【安装确认】、【安装进度】和【存储初始化】四步。 ### 检测虚拟化环境 打开插件后,先检查以下项目: - 操作系统是否受支持。 - `/dev/kvm` 是否可用。 - 当前使用 KVM 还是 TCG。 - QEMU、libvirt 和管理命令是否已经安装。 - 默认存储是否已经初始化。 ![KVM 虚拟机管理器首次安装时的环境检测结果](https://docs.bt.cn/img/practical-tutorials/kvm-manager/environment-check.png) 如果环境已经完整安装,向导会直接进入存储初始化;如果环境和存储均已完成,则直接进入插件主页。 ### 安装 KVM 环境 点击【下一步】,勾选安装确认后开始安装。插件会安装以下软件包: - `qemu-system-x86` - `qemu-utils` - `libvirt-daemon-system` - `libvirt-clients` - `virtinst` - `libguestfs-tools` - `genisoimage` - `cpu-checker` - `dnsmasq-base` - `bridge-utils` - `ovmf` - `libosinfo-bin` 如果安装前检测到 APT 光盘源,插件会先创建 `.kvm_manager.bak` 备份,再禁用光盘源,避免 `apt-get update` 因 `cdrom://` 源失败。 随后插件会: 1. 执行 `apt-get update`。 2. 安装缺失的软件包。 3. 启用 `libvirtd.service`,或启用模块化的 `virtqemud`、`virtnetworkd`、`virtstoraged` socket。 4. 检查 `qemu:///system` 连接。 5. 在缺少 `default` 网络时创建默认 libvirt NAT 网络,并设置为立即启动和自动启动。 ### 查看安装进度 环境安装由后台任务执行,关闭插件窗口不会中断任务。安装页会显示任务 ID、状态、当前步骤和进度。 如果安装失败: 1. 在安装页查看任务日志。 2. 或进入【任务记录】,筛选【安装环境】和【执行失败】。 3. 根据日志处理 APT 源、磁盘空间、软件包冲突或 libvirt 服务问题后重新安装。 ### 初始化存储 环境安装成功后必须初始化默认存储,可选择使用现有存储池或创建新的目录存储池。 #### 使用现有存储池 1. 选择【使用现有目录存储池】。 2. 从列表中选择一个具有目录目标的存储池。 3. 如果存储池处于停止状态,插件会尝试启动它。 4. 点击【完成初始化】。 #### 创建新存储池 1. 选择【创建目录存储池】。 2. 输入存储池名称,例如 `kvm`。 3. 输入专用绝对路径,例如 `/www/kvm`。 4. 点击【完成初始化】。 新建目录池会被启动并设置为随宿主机自动启动。存储根目录和相关子目录会设置为可供 libvirt 访问的权限。 :::warning 存储目录要求 不要将 `/`、`/www`、`/var`、`/home`、`/usr`、`/etc`、`/root` 或 `/tmp` 等范围过大的目录直接作为插件存储根目录。应使用 `/www/kvm` 这类专用目录。 ::: ## 页面导航与概览 插件包含【概览】、【虚拟机】、【镜像管理】、【网络管理】、【存储与备份】、【任务记录】和【系统设置】页面。 ![KVM 虚拟机管理器概览页显示宿主机和虚拟化资源状态](https://docs.bt.cn/img/practical-tutorials/kvm-manager/overview.png) 【概览】页用于查看宿主机和虚拟化环境的整体状态,包括: - CPU 使用率、逻辑 CPU 数量和负载。 - 宿主机内存使用情况。 - 默认存储根目录的磁盘容量和占用。 - 宿主机网络累计收发量及前端采样曲线。 - KVM 或 TCG 状态。 - 虚拟机总数、运行数、关机数和资源分配量。 - 最近任务。 ## 管理 ISO 镜像 当前【镜像管理】页只管理 ISO,不包含云镜像和 cloud-init。 ### 通过浏览器上传 1. 点击【上传镜像】。 2. 选择 `.iso` 文件。 ![通过浏览器向 KVM 虚拟机管理器上传 ISO 镜像](https://docs.bt.cn/img/practical-tutorials/kvm-manager/iso-upload.png) 页面会显示上传字节数、分片数、进度和速度。已有同名文件时会上传失败。 ### 从宿主机本地路径导入 【本地路径导入】适用于 ISO 已经位于宿主机上的场景。 1. 点击【从本地路径导入】。 2. 选择需要导入的 `.iso` 文件。 ![从宿主机本地路径选择并导入 ISO 镜像](https://docs.bt.cn/img/practical-tutorials/kvm-manager/iso-local-import.png) 导入操作会复制文件,不会移动或删除原文件。符号链接和非普通文件会被拒绝;已有同名文件时会导入失败。 ### 通过 URL 下载 1. 点击【URL 下载】。 2. 输入 HTTP 或 HTTPS 地址。 3. 设置目标文件名、同名处理策略和可选的 SHA256。 4. 提交后,在镜像下载任务或【任务记录】中查看进度。 ![填写 ISO 镜像下载地址和可选 SHA256 校验值](https://docs.bt.cn/img/practical-tutorials/kvm-manager/iso-url-download.png) 默认情况下,插件禁止下载回环、链路本地、私网和保留地址,也禁止 URL 凭据和非 HTTP/HTTPS 协议。下载时会固定解析后的 IP,并重新校验重定向目标,以降低 DNS 重绑定和 SSRF 风险。 :::warning 私网下载安全风险 在【系统设置】中启用【允许 URL 下载访问私网地址】后,插件会允许访问私有镜像源,同时允许使用不受信任或自签名的 HTTPS 证书。此选项存在 SSRF 和证书伪造风险,只应在确认目标地址可信时启用。 ::: ### 校验和删除 ISO - **SHA256 校验**:执行校验后,结果会保存为同目录的校验信息,列表状态变为【已校验】。如果填写预期 SHA256,只有完全一致才算成功。 - **删除 ISO**:删除会同时移除 ISO、SHA256 信息和来源元数据。删除前应确认没有虚拟机正在挂载该 ISO;删除操作不会自动替虚拟机卸载光驱。 ## 管理虚拟网络 ### libvirt NAT 网络 默认的 `default` NAT 网络适合大多数场景。虚拟机可通过宿主机 NAT 访问外网,地址通常由 libvirt DHCP 分配。 在【网络管理】页可以启动、停止网络,以及启用或关闭自动启动。停止仍被虚拟机使用的网络,会导致对应虚拟机网络不可用。 ### 创建自定义 NAT 网络 点击【创建 NAT 网络】,填写以下参数: - 网络名称。 - IPv4 CIDR,例如 `192.168.100.0/24`。 - 网关,例如 `192.168.100.1`。 - DHCP 起始和结束地址。 - 是否启用 DHCP。 - 是否立即启动。 - 是否自动启动。 ![在 KVM 虚拟机管理器中创建自定义 NAT 网络](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-nat-network.png) 插件会拒绝与宿主机地址、现有 libvirt 网络重叠的网段,也会拒绝包含网关的 DHCP 范围。只有通过插件创建并登记的 NAT 网络可以在页面中删除。 删除网络前,应确认没有虚拟机继续引用该网络。删除网络不会移除虚拟机网卡配置,但虚拟机之后可能无法启动网络或获取地址。 ### macvtap 同网直连 选择 macvtap 后,虚拟机网卡使用物理接口的 `direct/bridge` 模式。虚拟机能否从同一局域网的 DHCP 获取地址,取决于上游交换机、路由器或运营商是否允许多个 MAC 地址。 macvtap 的常见限制是虚拟机可以访问局域网中的其他设备,但通常不能通过该网卡直接访问宿主机本身。 ### 使用已有 Linux 网桥 插件只显示并使用宿主机已经存在的 Linux 网桥,不会自动创建网桥、迁移宿主机 IP 或改写物理网卡配置。选择网桥前,应先在宿主机侧确认网桥、成员接口、IP 和默认路由配置正确。 ## 管理存储池与存储卷 ### 添加目录型存储池 在【存储与备份】页面的【存储池】页签中点击【添加存储池】,输入名称和专用目录。创建后,存储池会自动启动并启用自动启动。 ![在存储与备份页面添加目录型存储池](https://docs.bt.cn/img/practical-tutorials/kvm-manager/add-storage-pool.png) 目录池是插件完整支持的写入目标。其他类型的 libvirt 存储池可以显示,但不作为插件创建磁盘、模板和备份的完整支持路径。 ### 启动和停止存储池 - 【启动】使停止的存储池重新可用。 - 【停止】执行 libvirt 的池停止操作,不会删除目录或数据。 停止默认存储池后,创建虚拟机、添加磁盘、制作模板和备份等操作会失败。 ### 查看存储卷 点击【存储卷】,可以查看卷的虚拟容量、实际占用和引用对象。 ![查看目录型存储池中的虚拟磁盘卷和引用对象](https://docs.bt.cn/img/practical-tutorials/kvm-manager/storage-volumes.png) ### 取消定义存储池 取消定义时,插件会先尝试停止存储池,再执行 `virsh pool-undefine`。该操作只删除 libvirt 中的存储池定义,不删除池目录和目录中的文件。 以下情况不可取消定义: - 当前存储池是插件默认存储池。 - 存储池被虚拟机磁盘引用。 - 存储池被模板、备份或链接克隆引用。 - 存储池被尚未结束的相关任务引用。 如果只是暂时不使用存储池,应优先选择【停止】,不要取消定义。 ## 创建虚拟机 点击【虚拟机】页面中的【创建虚拟机】,创建流程分为【选择系统】、【配置资源】和【确认创建】三步。 ### 使用 ISO 创建 #### 选择系统 填写虚拟机名称,选择 ISO 安装镜像和操作系统类型。操作系统类型支持 Debian 12/13、Ubuntu 22.04/24.04 或其他 Linux。 ![选择 ISO 镜像并填写虚拟机名称和操作系统类型](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-vm-system.png) 虚拟机名称必须以英文字母开头,只允许字母、数字、下划线、点和短横线。插件会检查同名虚拟机及目标磁盘文件冲突。 #### 配置资源 可以选择快捷规格,也可以手动配置: - vCPU:1 至 512。 - 内存:256 MB 至 1048576 MB。 - 系统盘:1 GB 至 65536 GB。 - 数据盘:最多 15 块,每块可选择目录存储池和 VirtIO/SATA 总线。 - 网络:libvirt 网络、macvtap 或已有 Linux 网桥。 - 固件:BIOS 或 UEFI。 - CPU 模式:`host-passthrough` 或 `host-model`。 - 系统盘总线:VirtIO 或 SATA。 - 网卡型号:VirtIO 或 e1000。 - 启动顺序:硬盘和光驱。 - 是否随宿主机自动启动。 - 是否在创建后自动启动。 ![为新虚拟机选择快捷规格并配置 CPU 内存磁盘和网络](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-vm-resources.png) 默认启动顺序为“硬盘、光驱”。空系统盘首次启动时会继续尝试 ISO;系统安装完成后则优先从硬盘启动。如果手动设置为“光驱、硬盘”,安装完成后应卸载 ISO 或将硬盘调整为第一启动项,否则再次开机可能重新进入安装界面。 如果不勾选【创建后自动启动】,插件会在创建后停止虚拟机,并将所选 ISO 和启动顺序重新写入持久化配置。之后手动启动时仍可从 ISO 安装。 #### 容量预检并确认创建 提交前,插件会检查: - 名称和磁盘文件是否冲突。 - ISO 是否存在。 - 存储池是否运行且可写。 - 每个存储池的可用空间。 - 网络来源是否存在。 - CPU、内存、磁盘和硬件参数是否合法。 ![创建虚拟机前的资源容量预检和配置确认](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-vm-precheck.png) CPU 和内存超配只显示警告;磁盘空间不足、名称冲突或网络无效会阻止创建。确认后会生成后台任务,可在【任务记录】中查看完整进度和失败日志。 ### 从模板创建 模板创建模式需要选择: - 新虚拟机名称。 - 模板。 - 目标目录存储池。 - 完整克隆或链接克隆。 - 网络。 - 是否创建后启动、是否随宿主机启动。 CPU、内存、全部磁盘、磁盘总线、BIOS/UEFI 和启动配置从模板继承,不能在创建请求中覆盖。 完整克隆占用更多空间,但创建后的虚拟机不再依赖模板磁盘。链接克隆创建更快、占用更少,但必须保留父模板;存在链接克隆时不能删除模板。 ## 管理虚拟机生命周期 【虚拟机】页支持搜索、筛选、分页、自动刷新,以及单台或批量生命周期操作。 ![KVM 虚拟机列表和启动关机等生命周期操作入口](https://docs.bt.cn/img/practical-tutorials/kvm-manager/vm-list.png) ### 搜索和筛选 - 按名称、UUID 或已经获取的 IP 搜索。 - 按运行状态筛选。 - 按网络筛选,默认显示全部网络。 - 使用分页和自动刷新。 插件会依次尝试从 guest agent、libvirt DHCP/lease 和 ARP 等来源获取 IP。虚拟机没有 guest agent、没有 DHCP 租约或网络不可见时,IP 可能显示为未获取到。 ### 单台操作 - **启动**:启动已关机虚拟机。 - **正常关机**:向虚拟机发送 ACPI 关机请求。客体系统响应较慢时,状态不会立即变为关机;系统安装完成前关机可能失效,失效时可使用强制停止。 - **强制停止**:相当于立即断电,可能造成客体文件系统损坏。 - **重启**:请求客体正常重启。 - **克隆**:要求源虚拟机完全关机,并执行完整磁盘克隆。 - **删除**:要求虚拟机完全关机,并输入虚拟机名称确认。 删除时可以选择是否同时删除磁盘。选择删除磁盘时,只会删除插件能够确认的受管 qcow2 文件;不选择时仅删除虚拟机定义,磁盘文件会保留。 ### 批量操作 列表支持批量启动、批量关机和批量删除。批量删除只处理已关机虚拟机,并逐台执行删除。失败项会单独显示,不会因一台失败而将其他操作错误标记为全部成功。 ### 任务锁 同一虚拟机同时只能执行一个写任务。创建模板、备份、克隆或其他写任务运行期间,冲突操作会被拒绝。例如,虚拟机正在制作模板时不能启动。 ## 查看和调整虚拟机详情 虚拟机详情抽屉包含【概况】、【监控】、【磁盘】、【快照】和【设置】等功能。 ### 概况 可以查看 UUID、状态、运行时间、IP、vCPU、内存、固件、CPU 模式、系统盘容量与实际占用、网卡类型、网络来源、网卡型号、MAC,以及经过凭据脱敏的 libvirt XML。 ### 资源监控 运行中的虚拟机每 5 秒采样一次,前端保留最近 30 个点: - CPU:根据 `domstats cpu.time` 累计值差计算。 - 内存:只使用新鲜有效的 libvirt balloon `available/usable` 数据。 - 磁盘:根据块设备累计读写字节计算速率。 - 网络:根据网卡累计收发字节计算速率。 如果客体不支持 balloon 统计、数据陈旧或数值无效,内存会显示“暂不可用”。插件不会使用 QEMU RSS、配置内存或估算值代替真实内存占用。 ### 磁盘管理 添加、扩容和分离磁盘都要求虚拟机完全关机。 - **添加数据盘**:选择容量、目录存储池和 VirtIO/SATA 总线。每台虚拟机最多有 15 块数据盘。 - **扩容**:只能扩容,不能缩小。扩容 qcow2 后,仍需进入客体系统扩展分区和文件系统;宿主机扩容不会自动扩大客体文件系统。 - **分离**:系统盘不能分离。分离数据盘时,可以选择仅从虚拟机配置中分离,或同时删除插件能够确认的受管磁盘文件,并输入设备名确认。 ### 快照 快照支持运行中、暂停和关机状态,也支持多个受管 qcow2 磁盘。所有相关磁盘必须位于目录存储池的 `disks/` 目录中。创建时使用原子快照参数,任意磁盘不满足要求时会拒绝整个操作。 可以创建、恢复和删除快照,快照描述不能超过 200 个字符。 :::warning 运行中快照的一致性 创建、恢复和删除快照不强制要求关机。运行中快照不会自动执行 guest agent 文件系统冻结,因此应按崩溃一致性理解。数据库等业务建议先在客体系统内停止写入,或自行执行一致性处理。 ::: ### 设置 - 自动启动可以单独修改。 - 修改 vCPU 和内存要求关机。 - 修改网络类型、网络来源、网卡型号和 MAC 要求关机。 - 修改启动顺序以及挂载或卸载 ISO 要求关机。 网络修改通过受控字段生成 XML,不支持提交任意 XML。保存失败时,插件会尝试恢复原始定义。 ### VNC 控制台 虚拟机必须处于运行状态并具有 VNC 图形设备。 1. 打开虚拟机详情。 2. 点击 VNC 控制台入口。 3. 插件创建一次性临时令牌,并通过宝塔登录态建立 WebSocket 通道。 4. 页面连接宿主机本地 `127.0.0.1` 上的虚拟机 VNC 端口。 临时令牌约 90 秒有效,并且只能消费一次;连接建立后可持续使用到主动断开。插件不会将 VNC 端口直接暴露到公网,也不设置或管理 VNC 密码。 如果网页控制台不可用,先在【系统设置】→【查看完整诊断】中检查 VNC 面板桥接文件。必要时重启宝塔面板,使 WebSocket 类重新加载。 ## 管理虚拟机模板 ### 制作模板 在【存储与备份】→【模板】中点击【从虚拟机制作模板】,选择源虚拟机、模板名称和目标目录存储池。 ![从已关机虚拟机制作 KVM 虚拟机模板](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-template.png) 源虚拟机需要满足以下要求: - 必须完全关机。 - 至少有一块磁盘,最多为一块系统盘加 15 块数据盘。 - 所有磁盘必须是文件型 qcow2。 - 所有磁盘必须位于某个目录存储池的 `disks/` 目录中。 - 磁盘总线必须是 VirtIO、SATA、SCSI 或 IDE。 插件会复制全部磁盘,对副本执行 `virt-sysprep`,再压缩生成模板。源虚拟机和源磁盘不会被 `virt-sysprep` 修改。 ### 删除模板 删除模板会删除模板元数据和全部模板磁盘。存在链接克隆依赖时会拒绝删除,包括通过插件元数据或实际 qcow2 backing chain 检测到的依赖。 ## 备份与恢复 ### 创建备份 在【存储与备份】→【备份】中选择来源虚拟机,可填写备份名称并选择目标目录存储池。 ![选择来源虚拟机和目标存储池创建虚拟机备份](https://docs.bt.cn/img/practical-tutorials/kvm-manager/create-backup.png) | 虚拟机状态 | 备份方式 | 一致性 | | --- | --- | --- | | 关机 | 使用 `qemu-img convert` 复制全部磁盘 | 离线一致性 | | 运行或暂停 | 使用 libvirt `backup-begin` 复制全部文件型 qcow2 磁盘 | 崩溃一致性 | 备份会保存虚拟机 XML、全部磁盘和元数据。运行中备份不会自动冻结客体文件系统和应用,重要数据库业务应自行安排应用一致性措施。 ### 恢复备份 页面恢复操作要求输入新的虚拟机名称。恢复始终创建新虚拟机,不覆盖原虚拟机。恢复时插件会: - 将备份磁盘转换为新的 qcow2 文件。 - 删除原 UUID,让 libvirt 生成新 UUID。 - 删除原 MAC,让 libvirt 生成新 MAC。 - 将 VNC 重置为本地监听和自动端口。 - 将新虚拟机定义为关机状态。 页面操作默认恢复到当前默认存储池,并保留备份 XML 中的网络来源。恢复前,应确认对应的 libvirt 网络或 Linux 网桥仍然存在。 ### 删除备份 删除备份会删除完整备份目录,包括 XML、元数据和全部备份磁盘,不影响原虚拟机和已经从该备份恢复出的新虚拟机。 ## 查看任务记录 安装环境、创建或克隆虚拟机、下载或导入或校验 ISO、制作模板、创建或恢复备份,以及清空虚拟化数据与环境等操作均通过后台任务执行。 ![KVM 虚拟机管理器后台任务列表和执行状态](https://docs.bt.cn/img/practical-tutorials/kvm-manager/task-list.png) 任务页支持按类型、状态筛选和分页,并显示操作对象、任务状态、进度、当前步骤、开始时间、耗时、任务日志和失败原因。 点击失败任务的【查看原因】,可以检查完整错误和执行日志。 ![查看虚拟机模板制作失败的任务日志](https://docs.bt.cn/img/practical-tutorials/kvm-manager/task-failure-log.png) 运行中或等待中的任务可以取消。只有失败或已取消的创建虚拟机、克隆、下载、导入、校验、备份、恢复和模板任务可以重新执行;环境安装和清理任务不能通过通用重试按钮重试。 默认最多同时执行两个重任务,下载和校验并发数可以在【系统设置】中调整为 1 至 3。同一虚拟机的写任务仍受独立锁限制。 ## 系统设置与环境诊断 ### 基础设置 【系统设置】页可以设置默认目录存储池、默认网络模式和网络来源、默认 CPU 模式、默认磁盘总线、创建后是否自动启动,以及是否随宿主机自动启动。 ![KVM 虚拟机管理器基础设置和 VNC 下载安全配置](https://docs.bt.cn/img/practical-tutorials/kvm-manager/system-settings.png) 磁盘格式固定为 qcow2,页面只读显示,不支持创建 raw 磁盘。 ### VNC 与下载安全 - VNC 临时连接有效期固定为 90 秒。 - VNC 最大并发连接数可设置为 1 至 5。 - 最大并发下载数可设置为 1 至 3。 - 可以设置任务日志保留天数。 - 可以选择是否允许 URL 下载访问私网地址。 “VNC 使用宝塔登录态建立临时通道”是固定安全能力,不会直接开放公网端口。 ### 环境诊断 点击【查看完整诊断】,可以检查操作系统和软件包、QEMU、libvirt、系统命令、libvirt 服务和连接、`/dev/kvm` 与加速模式、默认 NAT 网络、默认存储池与目录权限,以及 VNC 面板桥接条件。 ![KVM 虚拟机管理器完整环境诊断结果](https://docs.bt.cn/img/practical-tutorials/kvm-manager/environment-diagnostics.png) 诊断内容可用于复制和排查环境问题,其中的敏感信息会进行脱敏。 ## 卸载插件与清空数据 ### 仅卸载插件 在宝塔面板卸载插件时,卸载脚本会终止插件任务 Worker,并删除插件代码和面板 VNC WebSocket 类。 卸载插件不会执行以下操作: - 卸载 QEMU/libvirt 套件。 - 删除虚拟机。 - 删除磁盘、ISO、模板或备份。 - 删除 libvirt 网络和存储池定义。 - 删除 `/www/server/panel/data/kvm_manager` 中的持久化数据。 因此,只卸载插件通常可以在重新安装后继续管理原有资源。 ### 清空虚拟化数据与环境 真正的清空操作应在【系统设置】→【清空虚拟化数据与环境】中执行。 :::danger 不可恢复的高风险操作 清空操作会主动删除虚拟机和安全范围内的数据,并卸载 KVM/libvirt 环境。执行前必须停止其他任务、核对预检列表并完成外部备份。 ::: ![清空虚拟化数据与环境前的资源预检和二次确认](https://docs.bt.cn/img/practical-tutorials/kvm-manager/clear-virtualization-data.png) #### 停止其他任务 先进入【任务记录】,确认没有等待或执行中的创建、下载、模板、备份等任务。 #### 查看清理预检 点击【清理数据与环境】,插件会列出: - 将删除的全部 `qemu:///system` 虚拟机。 - 可以安全确认的 qcow2 磁盘和 ISO。 - 模板和备份目录。 - 将取消定义的全部目录型存储池。 - 将卸载的 KVM/libvirt 软件包。 - 因风险过高而跳过的路径和资源。 务必核对列表并完成外部备份。 #### 完成二次确认 1. 勾选【我已备份重要数据】。 2. 输入页面动态显示的确认短语。 3. 点击【执行】。 #### 后台清理顺序 清理任务会按以下顺序执行: 1. 强制停止并取消定义全部 libvirt 虚拟机,同时清理 managed save、快照元数据和 NVRAM 定义。 2. 在安全目录范围内删除已经确认的 qcow2 磁盘和 ISO。 3. 删除受控的 `templates/` 和 `backups/` 目录。 4. 清理虚拟机元数据、上传临时文件和 VNC 临时会话。 5. 停止并取消定义全部目录型存储池。 6. 重置插件默认存储配置。 7. 停止 libvirt 服务,并通过 APT 卸载已经安装的 KVM/libvirt 相关套件。 清理时会主动跳过块设备磁盘、网络磁盘、非 qcow2 虚拟磁盘、符号链接、不在已确认目录存储池中的文件、过于宽泛的目录根路径、目录池中的未知文件和 libvirt 虚拟网络。 如果有任何虚拟机定义删除失败,清理会保留磁盘文件、存储池和 KVM/libvirt 环境,避免在虚拟机仍被引用时继续破坏性删除。失败和跳过原因可以在清理任务日志中查看。 清理完成后,插件代码仍然存在。再次打开插件会重新进入环境安装与存储初始化流程。如果不再需要插件,可在确认清理结果后再从宝塔面板卸载插件代码。 ## 常见问题 ### 系统安装完成后为什么又进入安装界面? 检查启动顺序是否为“光驱、硬盘”。建议改为“硬盘、光驱”,或者在系统安装完成后卸载 ISO。 ### 为什么虚拟机无法显示真实内存占用? 真实内存依赖客体 balloon 统计。确认虚拟机使用 balloon 设备,并在客体系统中安装和启用相应驱动或 guest agent。没有有效数据时,插件会显示“暂不可用”。 ### 为什么虚拟机获取不到 IP? 确认网络已经启动、DHCP 可用,并检查虚拟机内网卡配置。macvtap 还取决于上游网络是否允许多个 MAC 地址。没有 guest agent 或 DHCP 租约时,插件不保证能够识别 IP。 ### VNC 控制台为什么无法连接? 确认虚拟机正在运行、域 XML 中存在 VNC 图形设备,并检查环境诊断中的 VNC 面板桥接。更新插件文件后如果桥接仍未加载,可以重启宝塔面板。 ### 为什么存储池无法取消定义? 先检查该存储池是否为默认池,或是否仍被虚拟机、模板、备份、链接克隆及任务引用。取消定义不会删除数据;如果需要保留定义但暂时停用,应选择【停止】。 ### 运行中备份与关机备份有什么区别? 运行中备份属于崩溃一致性,类似突然断电后磁盘可恢复的状态;关机备份属于离线一致性,更适合数据库和重要业务。重要业务应优先安排关机备份,或在运行中备份前自行冻结应用写入。 ## 相关文档 - [宝塔面板快速安装教程](https://docs.bt.cn/getting-started/quick-installation-of-bt-panel) - [在宝塔面板软件商店安装应用](https://docs.bt.cn/user-guide/soft/install) - [在宝塔面板软件商店卸载应用](https://docs.bt.cn/user-guide/soft/uninstall) --- source: https://docs.bt.cn/api/site/get_generated_flow_info.md.txt # get_generated_flow_info > 获取网站流量统计摘要信息 # get_generated_flow_info 获取网站的流量统计摘要,包括请求数和流量总量。 需要安装「网站监控报表」插件。 - **路由**:`POST /site` - **action**:`get_generated_flow_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_generated_flow_info` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | length | Integer | 总流量(字节) | | request | Integer | 总请求数 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_generated_flow_info ``` ### 响应 ```json {"length": 0, "request": 0} ``` --- source: https://docs.bt.cn/api/site/check_total_install_info.md.txt # check_total_install_info > 检查网站监控报表插件的安装和版本状态 # check_total_install_info 检查「网站监控报表」插件是否已安装、版本是否满足要求以及是否有购买授权。 - **路由**:`POST /site` - **action**:`check_total_install_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `check_total_install_info` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | total_status | Boolean | 插件版本是否满足要求(≥7.6) | | nginx_status | Boolean | Nginx 状态 | | buy_status | Boolean | 是否已购买授权 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=check_total_install_info ``` ### 响应 ```json {"total_status": false, "nginx_status": true, "buy_status": false} ``` --- source: https://docs.bt.cn/api/site/set_ignore_view_domain_title.md.txt # set_ignore_view_domain_title > 设置忽略域名推广横幅(关闭面板域名推广信息) # set_ignore_view_domain_title 设置忽略面板域名推广横幅,关闭后在域名相关的页面不再显示推广信息。 - **路由**:`POST /site` - **action**:`set_ignore_view_domain_title` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ignore_view_domain_title` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_ignore_view_domain_title ``` ### 响应 ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/get_view_title_content.md.txt # get_view_title_content > 获取域名推广横幅的 HTML 内容和显示状态 # get_view_title_content 获取面板在域名相关页面显示的推广横幅 HTML 内容及其显示/隐藏状态。 - **路由**:`POST /site` - **action**:`get_view_title_content` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_view_title_content` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 显示中,`false` 已隐藏 | | msg | String | 横幅 HTML 内容 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_view_title_content ``` ### 响应 ```json {"status": true, "msg": "没有域名? 堡塔域名注册 .com低至54元..."} ``` --- source: https://docs.bt.cn/api/site/set_https_mode.md.txt # set_https_mode > 设置面板 HTTPS 全局模式(宽松/严格) # set_https_mode 切换面板 HTTPS 全局模式。宽松模式下未部署 SSL 的网站仍可通过 HTTP 访问,严格模式下强制 HTTPS。 - **路由**:`POST /site` - **action**:`set_https_mode` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_https_mode` | 无其他参数(切换模式,每次调用反转当前状态)。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | | msg | String | `已开启HTTPS严格模式` 或 `已关闭HTTPS严格模式` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_https_mode ``` ### 响应 ```json {"status": true, "msg": "已开启HTTPS严格模式"} ``` --- source: https://docs.bt.cn/api/site/CloseTomcat.md.txt # CloseTomcat > 关闭网站的 Tomcat 反向代理配置 # CloseTomcat 移除指定网站的 Tomcat 反向代理配置(Nginx/Apache 到 Tomcat 的转发)。 - **路由**:`POST /site` - **action**:`CloseTomcat` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CloseTomcat` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `true` 关闭成功,`false` Tomcat 未安装 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CloseTomcat&siteName=testapi.bt.local ``` ### 响应 ``` false ``` --- source: https://docs.bt.cn/api/site/set_create_default_conf.md.txt # set_create_default_conf > 设置创建网站时的默认配置项 # set_create_default_conf 设置新建网站时的全局默认配置,如 404 页面、默认首页等开关。 - **路由**:`POST /site` - **action**:`set_create_default_conf` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_create_default_conf` | | page_404 | 否 | String | `"true"` / `"false"`,自动创建 404 页面 | | page_index | 否 | String | `"true"` / `"false"`,自动创建默认首页 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | | msg | String | `修改成功` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_create_default_conf&page_404=true ``` ### 响应 ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/site/set_404_config.md.txt # set_404_config > 设置网站的 404 错误页面开关 # set_404_config 为指定网站开启或关闭自定义 404 错误页面。 - **路由**:`POST /site` - **action**:`set_404_config` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_404_config` | | siteName | 是 | String | 网站域名 | | status | 是 | String | `"1"` 开启,`"0"` 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | | msg | String | `修改成功!` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_404_config&siteName=testapi.bt.local&status=1 ``` ### 响应 ```json {"status": true, "msg": "修改成功!"} ``` ## 相关接口 - [get_404_config](./get_404_config.md) — 查询 404 配置 --- source: https://docs.bt.cn/api/site/set_free_total_status.md.txt # set_free_total_status > 设置网站的免费流量限制状态 # set_free_total_status 设置指定网站的免费流量限制开关,也可设为 `global` 进行全局配置。 - **路由**:`POST /site` - **action**:`set_free_total_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_free_total_status` | | site_id | 是 | String | 网站 ID,传 `"global"` 设置全局 | | status | 是 | Integer | `1` 开启,`0` 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | | msg | String | `设置成功` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_free_total_status&site_id=1&status=1 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [get_free_total_status](./get_free_total_status.md) — 查询状态 --- source: https://docs.bt.cn/api/site/get_free_total_status.md.txt # get_free_total_status > 获取网站的免费流量限制状态 # get_free_total_status 查询指定网站或全局的免费流量限制开关状态。 - **路由**:`POST /site` - **action**:`get_free_total_status` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_free_total_status` | | site_id | 是 | String | 网站 ID,传 `"global"` 查询全局 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 查询成功 | | data | Object | `{"status": true/false}` | | msg | String | 结果消息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_free_total_status&site_id=1 ``` ### 响应 ```json {"status": true, "data": {"status": true}, "msg": "获取成功"} ``` ## 相关接口 - [set_free_total_status](./set_free_total_status.md) — 设置状态 --- source: https://docs.bt.cn/api/site/set_security_headers.md.txt # set_security_headers > 为网站设置 HTTP 安全响应头 # set_security_headers 为指定网站配置 HTTP 安全响应头(如 X-Frame-Options、X-Content-Type-Options 等)。 - **路由**:`POST /site` - **action**:`set_security_headers` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_security_headers` | | site_name | 是 | String | 网站域名 | | security_info | 是 | String | JSON 字符串,安全头配置,如 `{"X-Frame-Options":"SAMEORIGIN"}` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | | msg | String | `设置成功` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_security_headers&site_name=testapi.bt.local&security_info={"X-Frame-Options":"SAMEORIGIN"} ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/SetRewriteLists.md.txt # SetRewriteLists > 批量为多个网站设置伪静态规则 # SetRewriteLists 批量为多个网站设置伪静态模板文件。 - **路由**:`POST /site` - **action**:`SetRewriteLists` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetRewriteLists` | | sites | 是 | String | JSON 数组,网站列表 `[{"name":"site1"},...]` | | rewrite_data | 是 | String | 伪静态模板名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 设置结果列表,空数组表示无操作 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetRewriteLists&sites=[]&rewrite_data= ``` ### 响应 ```json [] ``` --- source: https://docs.bt.cn/api/site/set_dns_domains.md.txt # set_dns_domains > 批量为域名设置 DNS API 解析记录 # set_dns_domains 批量为多个域名设置 DNS API 解析记录(自动添加/更新 DNS 解析)。 - **路由**:`POST /site` - **action**:`set_dns_domains` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_dns_domains` | | domains | 是 | String | JSON 数组,域名列表 `["example.com","test.com"]` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作完成 | | success_list | Array | 设置成功的域名列表 | | err_list | Array | 设置失败的域名及错误信息 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_dns_domains&domains=["test.com"] ``` ### 响应 ```json {"status": true, "msg": "", "success_list": [], "err_list": [{"domain": "test.com", "error": "没有找到域名为test.com的有效的DNS API密钥信息"}]} ``` --- source: https://docs.bt.cn/api/site/test_domains_api.md.txt # test_domains_api > 测试域名是否已配置有效的 DNS API 密钥 # test_domains_api 检查指定域名是否已配置有效的 DNS API 密钥,用于 SSL 证书自动续签等场景。 - **路由**:`POST /site` - **action**:`test_domains_api` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `test_domains_api` | | domains | 是 | String | JSON 数组,域名列表 `["example.com"]` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array | 每个域名的检测结果对象列表 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=test_domains_api&domains=["test.com"] ``` ### 响应 ```json [{}] ``` > 返回 `[{}]` 表示该域名未找到对应的 DNS API 密钥配置。 --- source: https://docs.bt.cn/api/site/multiple_basedir.md.txt # multiple_basedir > 批量为多个网站设置防跨站攻击(open_basedir)状态 # multiple_basedir 批量为多个网站开启或关闭防跨站攻击保护(PHP `open_basedir` 限制)。 - **路由**:`POST /site` - **action**:`multiple_basedir` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `multiple_basedir` | | site_ids | 是 | String | JSON 数组,网站 ID 列表 `[1, 2, 3]` | | stat | 是 | String | `"open"` 开启,`"close"` 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | succeed | Array | 设置成功的网站列表 | | errors | Array | 设置失败的网站列表 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=multiple_basedir&site_ids=[]&stat=open ``` ### 响应 ```json {"succeed": [], "errors": []} ``` --- source: https://docs.bt.cn/api/site/apacheAddPort.md.txt # apacheAddPort > 为 Apache 添加额外的 HTTPS 监听端口 # apacheAddPort 为 Apache Web 服务器添加额外的 SSL 监听端口。仅在 Apache 环境下有效,Nginx 环境返回 `null`。 - **路由**:`POST /site` - **action**:`apacheAddPort` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `apacheAddPort` | | port | 是 | Integer | 要添加的 HTTPS 端口号 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Boolean | `true` 添加成功,Nginx 环境返回 `null` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=apacheAddPort&port=8443 ``` ### 响应 ``` null ``` --- source: https://docs.bt.cn/api/site/CloseHasPwd.md.txt # CloseHasPwd > 关闭网站的密码访问保护 # CloseHasPwd 关闭指定网站的密码访问保护(HTTP Basic Auth)。 - **路由**:`POST /site` - **action**:`CloseHasPwd` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CloseHasPwd` | | id | 是 | Integer | 网站 ID | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CloseHasPwd&id=1 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` ## 相关接口 - [SetHasPwd](./SetHasPwd.md) — 开启密码保护 - [GetHasPwd](./GetHasPwd.md) — 查询密码保护状态 --- source: https://docs.bt.cn/api/site/get_sites_log_path.md.txt # get_sites_log_path > 获取网站的日志文件存储路径 # get_sites_log_path 获取指定网站的 Web 日志存储路径。 - **路由**:`POST /site` - **action**:`get_sites_log_path` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_sites_log_path` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | String | 日志目录路径,如 `/www/wwwlogs` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_sites_log_path&siteName=testapi.bt.local ``` ### 响应 ``` /www/wwwlogs ``` --- source: https://docs.bt.cn/api/site/list.md.txt # list > 获取网站漏洞扫描的缓存结果 # list 获取最近一次网站漏洞扫描的缓存信息,包括扫描结果、漏洞数量和网站总数。 - **路由**:`POST /site` - **action**:`list` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `list` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | info | Array | 扫描结果缓存(可能为空) | | time | Integer | 上次扫描时间戳,`0` 表示未扫描 | | loophole_num | Integer | 发现的漏洞数量 | | site_num | Integer | 网站总数 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=list ``` ### 响应 ```json {"info": [], "time": 0, "loophole_num": 0, "site_num": 1} ``` ## 相关接口 - [get_Scan](./get_Scan.md) — 获取扫描结果 --- source: https://docs.bt.cn/api/site/set_ssl_protocol.md.txt # set_ssl_protocol > 设置网站的 TLS/SSL 协议版本 # set_ssl_protocol 设置指定网站允许的 TLS 协议版本。 - **路由**:`POST /site` - **action**:`set_ssl_protocol` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_ssl_protocol` | | siteName | 是 | String | 网站域名 | | protocol | 是 | String | 协议版本,如 `TLSv1.0`、`TLSv1.1`、`TLSv1.2`、`TLSv1.3` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_ssl_protocol&siteName=testapi.bt.local&protocol=TLSv1.2 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/site_rname.md.txt # site_rname > 修改网站的备注名称(别名) # site_rname 修改网站的备注名称/别名。 - **路由**:`POST /site` - **action**:`site_rname` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `site_rname` | | id | 是 | Integer | 网站 ID | | rname | 是 | String | 新的备注名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=site_rname&id=1&rname=我的网站 ``` ### 响应 ```json {"status": true, "msg": "网站【testapi.bt.local】改名为:【我的网站】"} ``` --- source: https://docs.bt.cn/api/site/set_site_etime_multiple.md.txt # set_site_etime_multiple > 批量设置网站到期时间 # set_site_etime_multiple 批量为多个网站设置到期时间。 - **路由**:`POST /site` - **action**:`set_site_etime_multiple` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_site_etime_multiple` | | sites_id | 是 | String | 网站 ID,多个用逗号分隔,如 `"1,2,3"` | | edate | 是 | String | 到期日期,格式 `YYYY-MM-DD` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作完成 | | success | Array | 设置成功的网站域名列表 | | error | Object | 设置失败的网站及原因 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_site_etime_multiple&sites_id=1&edate=2026-12-31 ``` ### 响应 ```json {"status": true, "success": ["testapi.bt.local"], "error": {}} ``` --- source: https://docs.bt.cn/api/site/multiple_limit_net.md.txt # multiple_limit_net > 批量为多个网站设置流量限制 # multiple_limit_net 批量为多个网站设置并发连接数和流量限制。 - **路由**:`POST /site` - **action**:`multiple_limit_net` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `multiple_limit_net` | | site_ids | 是 | String | JSON 数组,网站 ID 列表 `[1,2,3]` | | perserver | 是 | Integer | 每个服务器最大并发连接数 | | perip | 是 | Integer | 每个 IP 最大并发连接数 | | limit_rate | 是 | Integer | 每个连接限速(KB/s) | | close_limit_net | 是 | String | `"1"` 关闭限制 / `"0"` 开启限制 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | succeed | Array | 设置成功的网站列表 | | errors | Array | 设置失败的网站列表 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=multiple_limit_net&site_ids=[1]&perserver=100&perip=10&limit_rate=1024&close_limit_net=0 ``` ### 响应 ```json {"succeed": [{"status": true, "id": 1}], "errors": []} ``` --- source: https://docs.bt.cn/api/site/SetPHPVersion.md.txt # SetPHPVersion > 切换网站的 PHP 版本 # SetPHPVersion 切换指定网站的 PHP 版本。 - **路由**:`POST /site` - **action**:`SetPHPVersion` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetPHPVersion` | | siteName | 是 | String | 网站域名 | | version | 是 | String | PHP 版本号,`"00"` 纯静态,`"74"`/`"80"`/`"81"`/`"82"`/`"83"`/`"84"` 等 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 切换成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetPHPVersion&siteName=testapi.bt.local&version=00 ``` ### 响应 ```json {"status": true, "msg": "成功切换网站[testapi.bt.local]的PHP版本为PHP-00"} ``` --- source: https://docs.bt.cn/api/site/get_dir_auth.md.txt # get_dir_auth > 获取网站的目录密码保护配置列表 # get_dir_auth 获取指定网站的目录密码保护(HTTP Basic Auth)配置列表。 - **路由**:`POST /site` - **action**:`get_dir_auth` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_dir_auth` | | id | 否 | Integer | 网站 ID | | siteName | 否 | String | 网站域名(与 id 二选一) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Object | 以域名为 key 的目录保护配置对象 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_dir_auth&id=1 ``` ### 响应 ```json {"testapi.bt.local": []} ``` > 空数组表示该站点暂无目录保护配置。 --- source: https://docs.bt.cn/api/site/set_sites_log_path.md.txt # set_sites_log_path > 设置网站的日志文件存储路径 # set_sites_log_path 设置指定网站 Web 日志的存储目录路径。 - **路由**:`POST /site` - **action**:`set_sites_log_path` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_sites_log_path` | | log_path | 是 | String | 日志目录路径,**必须是已存在的目录** | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_sites_log_path&log_path=/www/wwwlogs ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/set_sites_ftp.md.txt # set_sites_ftp > 为网站快速创建或关联 FTP 账户 # set_sites_ftp 为指定网站创建或关联 FTP 账户。 - **路由**:`POST /site` - **action**:`set_sites_ftp` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_sites_ftp` | | siteName | 条件 | String | 网站域名(与 `site_id` 二选一) | | site_id | 条件 | Integer | 网站 ID | | ftp_name | 是 | String | FTP 用户名 | | ftp_pwd | 是 | String | FTP 密码 | | ftp_id | 否 | Integer | 已有 FTP 账户 ID(关联已有账户时传) | | ftp_status | 否 | String | FTP 状态 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 操作成功 | | info | Object | FTP 账户详情(`id`、`name`、`password`、`path`、`status`) | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_sites_ftp&siteName=testapi.bt.local&ftp_name=testftp&ftp_pwd=Test@123 ``` ### 响应 ```json {"status": true, "msg": "添加成功", "info": {"id": 4, "pid": 1, "name": "testftp", "password": "Test@123", "path": "/www/wwwroot/testapi.bt.local", "status": "1"}} ``` --- source: https://docs.bt.cn/api/site/set_cron_scanin_info.md.txt # set_cron_scanin_info > 设置网站漏洞扫描定时任务的周期和推送渠道 # set_cron_scanin_info 配置漏洞扫描定时任务的执行周期、消息推送渠道和开关状态。 - **路由**:`POST /site` - **action**:`set_cron_scanin_info` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_cron_scanin_info` | | status | 是 | String | `"1"` 开启,`"0"` 关闭 | | day | 是 | String | 扫描周期(天) | | channel | 否 | String | 消息推送渠道 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_cron_scanin_info&status=1&day=1 ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/SetRewriteTel.md.txt # SetRewriteTel > 保存自定义 URL 重写规则到模板文件 # SetRewriteTel 将自定义 URL 重写(伪静态)规则保存为模板文件。 - **路由**:`POST /site` - **action**:`SetRewriteTel` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SetRewriteTel` | | name | 是 | String | 模板名称(不含路径和扩展名) | | data | 是 | String | 重写规则内容 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 保存成功 | | msg | String | `已保存URL重写规则到模板!` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SetRewriteTel&name=testapi.bt.local&data=rewrite ^/old$ /new permanent; ``` ### 响应 ```json {"status": true, "msg": "已保存URL重写规则到模板!"} ``` --- source: https://docs.bt.cn/api/site/HttpToHttps.md.txt # HttpToHttps > 开启网站的 HTTP 自动跳转 HTTPS # HttpToHttps 为已部署 SSL 证书的网站开启 HTTP → HTTPS 自动跳转。 **前置条件**:网站已部署有效的 SSL 证书。 - **路由**:`POST /site` - **action**:`HttpToHttps` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `HttpToHttps` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=HttpToHttps&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "设置成功"} ``` --- source: https://docs.bt.cn/api/site/GetSiteLogs.md.txt # GetSiteLogs > 获取网站的访问日志内容 # GetSiteLogs 获取指定网站的 Web 访问日志内容。 - **路由**:`POST /site` - **action**:`GetSiteLogs` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetSiteLogs` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 读取成功 | | msg | String | 日志内容(可能为空字符串) | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetSiteLogs&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": ""} ``` > `msg` 为空表示暂无访问日志。 --- source: https://docs.bt.cn/api/site/get_security_headers.md.txt # get_security_headers > 获取网站的 HTTP 安全响应头配置 # get_security_headers 获取指定网站的 HTTP 安全响应头配置状态。 - **路由**:`POST /site` - **action**:`get_security_headers` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `get_security_headers` | | site_name | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | x_xss_protection | Boolean | XSS 保护开关 | | x_content_type_options | Boolean | Content-Type 选项 | | referrer_policy | Boolean | Referrer 策略 | | content_security_policy | Boolean | CSP 策略 | | permissions_policy | Boolean | 权限策略 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=get_security_headers&site_name=testapi.bt.local ``` ### 响应 ```json {"x_xss_protection": false, "x_content_type_options": false, "referrer_policy": false, "content_security_policy": false, "permissions_policy": false} ``` --- source: https://docs.bt.cn/api/site/set_site_ignore_https_mode.md.txt # set_site_ignore_https_mode > 设置网站忽略全局 HTTPS 强制跳转 # set_site_ignore_https_mode 设置指定网站是否忽略面板全局的 HTTPS 强制跳转规则。 - **路由**:`POST /site` - **action**:`set_site_ignore_https_mode` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_site_ignore_https_mode` | | siteName | 是 | String | 网站域名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_site_ignore_https_mode&siteName=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "设置成功!"} ``` --- source: https://docs.bt.cn/api/site/SiteStart.md.txt # SiteStart > 启动(启用)指定网站 # SiteStart 启动(启用)已停止的网站。 - **路由**:`POST /site` - **action**:`SiteStart` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `SiteStart` | | id | 是 | Integer | 网站 ID | | name | 是 | String | 网站域名 | > `id` 和 `name` 必须同时传入。 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 启用成功 | | msg | String | `站点已启用` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=SiteStart&id=1&name=testapi.bt.local ``` ### 响应 ```json {"status": true, "msg": "站点已启用"} ``` ## 相关接口 - [SiteStop](./SiteStop.md) — 停用网站 --- source: https://docs.bt.cn/api/site/export_sites_to_csv.md.txt # export_sites_to_csv > 将网站列表导出为 CSV 文件 # export_sites_to_csv 将指定网站的信息导出为 CSV 文件。 - **路由**:`POST /site` - **action**:`export_sites_to_csv` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `export_sites_to_csv` | | sites_id | 是 | String | 网站 ID,多个用逗号分隔 | | csv_file_name | 是 | String | 导出的 CSV 文件名 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 导出成功 | | msg | String | `数据已成功导出到 xxx.csv` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=export_sites_to_csv&sites_id=1&csv_file_name=test.csv ``` ### 响应 ```json {"status": true, "msg": "数据已成功导出到 test.csv"} ``` --- source: https://docs.bt.cn/api/site/set_restart_task.md.txt # set_restart_task > 设置 Apache/Nginx 守护进程(自动重启)任务 # set_restart_task 设置 Apache 或 Nginx 守护进程任务,在 Web 服务异常停止时自动重启。 - **路由**:`POST /site` - **action**:`set_restart_task` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `set_restart_task` | | status | 是 | String | `"1"` 开启,`"0"` 关闭 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 设置成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=set_restart_task&status=0 ``` ### 响应 ```json {"status": true, "msg": "设置成功!"} ``` ## 相关接口 - [get_restart_task](./get_restart_task.md) — 查询守护任务状态 --- source: https://docs.bt.cn/api/site/CreateProxy.md.txt # CreateProxy > 为网站创建反向代理规则 # CreateProxy 为指定网站创建反向代理,将指定路径的请求转发到后端服务。 - **路由**:`POST /site` - **action**:`CreateProxy` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CreateProxy` | | sitename | 是 | String | 网站域名(注意小写) | | proxyname | 是 | String | 代理名称(3~40 字节) | | proxydir | 是 | String | 代理目录路径,如 `/api` 或 `/` | | proxysite | 是 | String | 目标 URL,如 `http://127.0.0.1:8080` | | type | 是 | String | 类型:`"1"` 启用 | | cache | 是 | String | `"1"` 启用缓存 / `"0"` 禁用 | | cachetime | 是 | String | 缓存时间(分钟),禁用缓存时传 `"0"` | | todomain | 是 | String | 目标域名(`$host` 值),填网站域名即可 | | subfilter | 是 | String | JSON 数组,内容替换规则 `[{"sub1":"旧","sub2":"新"},...]` | | advanced | 是 | String | 高级模式:`"1"` / `"0"` | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 添加成功 | | msg | String | `添加成功` | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CreateProxy&sitename=testapi.bt.local&proxyname=api_proxy&proxydir=/api&proxysite=http://127.0.0.1:9090&type=1&cache=0&cachetime=0&todomain=testapi.bt.local&subfilter=[{"sub1":"","sub2":""},{"sub1":"","sub2":""},{"sub1":"","sub2":""}]&advanced=0 ``` ### 响应 ```json {"status": true, "msg": "添加成功"} ``` ## 相关接口 - [GetProxyList](./GetProxyList.md) — 查询代理列表 - [ModifyProxy](./ModifyProxy.md) — 修改代理 --- source: https://docs.bt.cn/api/site/GetProxyList.md.txt # GetProxyList > 获取网站的反向代理列表 # GetProxyList 获取指定网站已配置的所有反向代理规则。 - **路由**:`POST /site` - **action**:`GetProxyList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetProxyList` | | sitename | 是 | String | 网站域名(注意小写) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 代理规则列表,每项含 `proxyname`、`proxydir`、`proxysite`、`todomain`、`type`、`cache`、`cachetime` 等 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetProxyList&sitename=testapi.bt.local ``` ### 响应 ```json [{"proxyname": "api_proxy", "proxydir": "/api", "proxysite": "http://127.0.0.1:9090", "todomain": "testapi.bt.local", "type": 1, "cache": 0}] ``` --- source: https://docs.bt.cn/api/site/ModifyProxy.md.txt # ModifyProxy > 修改已有的反向代理规则 # ModifyProxy 修改指定网站已有反向代理的目标 URL、缓存等配置。**需先用 CreateProxy 创建代理**。 - **路由**:`POST /site` - **action**:`ModifyProxy` ## 输入参数 同 [CreateProxy](./CreateProxy.md),额外要求 `proxyname` 匹配已有代理名称。 `type` 含义有所不同: - `"1"` — 修改代理配置(目标 URL、目录、缓存等) - `"0"` — 切换代理类型/关闭 ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=ModifyProxy&sitename=testapi.bt.local&proxyname=api_proxy&proxydir=/api&proxysite=http://127.0.0.1:9099&type=1&cache=0&cachetime=0&todomain=testapi.bt.local&subfilter=[{"sub1":"","sub2":""},{"sub1":"","sub2":""},{"sub1":"","sub2":""}]&advanced=0 ``` ### 响应 ```json {"status": true, "msg": "修改成功"} ``` ## 相关接口 - [CreateProxy](./CreateProxy.md) — 创建代理 - [GetProxyList](./GetProxyList.md) — 查询代理列表 --- source: https://docs.bt.cn/api/site/CreateRedirect.md.txt # CreateRedirect > 为网站创建 301/302 重定向规则 # CreateRedirect 为指定网站创建重定向规则,支持域名重定向和路径重定向。 - **路由**:`POST /site` - **action**:`CreateRedirect` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `CreateRedirect` | | sitename | 是 | String | 网站域名(注意小写) | | redirectname | 是 | String | 重定向名称(唯一标识) | | tourl | 是 | String | 目标 URL | | redirectdomain | 是 | String | JSON 数组,来源域名列表 `["old.example.com"]` | | redirectpath | 是 | String | 来源路径,如 `/` 或 `/old-path` | | redirecttype | 是 | String | 重定向类型:`"path"` / `"domain"` | | type | 是 | String | `"0"` 启用 / `"1"` 301 永久 | | domainorpath | 是 | String | `"path"` 路径重定向 / `"domain"` 域名重定向 | | holdpath | 是 | String | `"1"` 保留路径 / `"0"` 不保留 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 创建成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=CreateRedirect&sitename=testapi.bt.local&redirectname=old_site&tourl=http://example.com&redirectdomain=["old.example.com"]&redirectpath=/&redirecttype=path&type=0&domainorpath=path&holdpath=0 ``` ### 响应 ```json {"status": true, "msg": "创建成功"} ``` ## 相关接口 - [GetRedirectList](./GetRedirectList.md) — 查询重定向列表 - [ModifyRedirect](./ModifyRedirect.md) — 修改重定向 - [DeleteRedirect](./DeleteRedirect.md) — 删除重定向 --- source: https://docs.bt.cn/api/site/GetRedirectList.md.txt # GetRedirectList > 获取网站的重定向规则列表 # GetRedirectList 获取指定网站已配置的所有重定向规则。 - **路由**:`POST /site` - **action**:`GetRedirectList` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `GetRedirectList` | | sitename | 是 | String | 网站域名(注意小写) | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | - | Array\ | 重定向规则列表,每项含 `redirectname`、`tourl`、`redirectdomain`、`redirectpath`、`type` 等 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=GetRedirectList&sitename=testapi.bt.local ``` ### 响应 ```json [{"sitename": "testapi.bt.local", "redirectname": "old_site", "tourl": "http://example.com", "redirectdomain": ["old.example.com"], "redirectpath": "/", "type": 0}] ``` --- source: https://docs.bt.cn/api/site/ModifyRedirect.md.txt # ModifyRedirect > 修改已有的重定向规则 # ModifyRedirect 修改指定网站已有重定向规则的目标 URL、域名等配置。 参数与 [CreateRedirect](./CreateRedirect.md) 相同,以 `sitename` + `redirectname` 定位要修改的规则。 - **路由**:`POST /site` - **action**:`ModifyRedirect` ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 修改成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=ModifyRedirect&sitename=testapi.bt.local&redirectname=old_site&tourl=http://newtarget.com&redirectdomain=["old.example.com"]&redirectpath=/&redirecttype=path&type=0&domainorpath=path&holdpath=0 ``` ### 响应 ```json {"status": true, "msg": "修改成功"} ``` --- source: https://docs.bt.cn/api/site/DeleteRedirect.md.txt # DeleteRedirect > 删除网站的重定向规则 # DeleteRedirect 删除指定网站的某条重定向规则。 - **路由**:`POST /site` - **action**:`DeleteRedirect` ## 输入参数 | 参数名称 | 必选 | 类型 | 描述 | |----------|------|------|------| | action | 是 | String | 固定值 `DeleteRedirect` | | sitename | 是 | String | 网站域名(注意小写) | | redirectname | 是 | String | 要删除的重定向名称 | ## 输出参数 | 参数名称 | 类型 | 描述 | |----------|------|------| | status | Boolean | `true` 删除成功 | ## 示例 ### 请求 ``` POST /site HTTP/1.1 Host: 192.168.168.213:8888 Content-Type: application/x-www-form-urlencoded action=DeleteRedirect&sitename=testapi.bt.local&redirectname=old_site ``` ### 响应 ```json {"status": true, "msg": "删除成功"} ``` ## 相关接口 - [CreateRedirect](./CreateRedirect.md) — 创建重定向 - [GetRedirectList](./GetRedirectList.md) — 查询重定向列表 --- source: https://docs.bt.cn/user-guide/security/safe-detect/trojan-killing.md.txt # 木马查杀(占位) > 此文档尚在编写中,暂未发布。 --- # 域名服务文档 --- source: https://docs.bt.cn/domain/user-guide/domain-registration.md.txt # 在宝塔注册域名:完整流程与注意事项 > 介绍在宝塔查询域名、选择实名信息模板、填写信息、付款与后续实名认证的完整注册流程,需提前创建已审核信息模板;事业单位需使用 .cn 后缀以满足备案要求。 # 域名注册 ## 操作场景 域名注册实际上是通过付费获得域名一年或几年的使用权的过程,您只需执行几个简单的步骤即可轻松获得属于您的域名。通过堡塔域名注册服务,您可以快速、便捷地注册心仪的域名,为您的网站建设打下基础。 :::warning 注意事项 - 新注册域名时,请选择已完成实名审核的信息模板,否则将无法注册。请参见 [信息模板管理](./info-template.md) 创建信息模板。 - 根据[《互联网政务应用安全管理规定》](https://www.gov.cn/lianbo/bumen/202405/content_6952956.htm),事业单位网站或 APP 的域名应当以 .cn 为后缀,否则无法进行后续备案。 ::: ## 前提条件 - 已注册宝塔账号 - 已完成账号实名认证 - 已创建并通过审核的信息模板 ## 域名注册流程 域名注册的完整流程如下: ```mermaid flowchart LR A[查询域名] --> B[加入购物车] B --> C[填写域名信息] C --> D[核对信息] D --> E[完成支付] E --> F[域名注册成功] A1[确认域名可用性] B1[选择注册年限和配置] C1[选择信息模板和相关设置] D1[确认订单信息和费用] E1[选择支付方式并付款] F1[域名进入管理中心] A --- A1 B --- B1 C --- C1 D --- D1 E --- E1 F --- F1 style A fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style B fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style C fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style D fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style E fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style F fill:#50C878,stroke:#333,stroke-width:2px,color:#fff ``` ## 操作步骤 ### 步骤一:查询域名 在注册域名之前,您需要查询您想要注册的域名是否已经被他人注册。如果已经被注册,您需要更换一个域名或者后缀,直至该域名没有被注册,才可以选择该域名进行下一步操作。 1. 登录 [宝塔域名注册页面](https://www.bt.cn/new/domain-register.html)。 2. 在搜索框中输入您想要的域名和后缀,单击**查询**,即可查看该域名的注册情况。 ![域名查询](https://docs.bt.cn/img/user-guide/domain-search.png) 3. 查看查询结果: - **可注册**:显示绿色状态,表示该域名可以注册 - **已注册**:显示灰色状态,表示该域名已被他人注册,无法注册 ![域名状态](https://docs.bt.cn/img/user-guide/domain-status.png) :::tip 域名选择建议 - 选择简短易记的域名名称 - 优先选择 .com、.cn 等主流后缀 - 可以同时注册多个后缀进行品牌保护 - 避免使用容易混淆的字符组合 ::: ### 步骤二:加入购物车 1. 选择您需要注册的域名,例如 `example.com`,单击**加入购物车**。 ![域名选择](https://docs.bt.cn/img/user-guide/domain-select.png) :::info 品牌保护建议 您也可以添加多个后缀域名,有利于您的品牌保护。例如,将 `example.cn`、`example.net` 以及 `example.org` 加入选购清单。 ::: 2. 在右侧的域名购物车中,确认选择的域名信息,单击**立即购买**。 ![域名购物车](https://docs.bt.cn/img/user-guide/domain-cart.png) ### 步骤三:填写域名信息 1. 在提交订单页面,确认域名信息,并配置相关选项: ![填写域名信息](https://docs.bt.cn/img/user-guide/domain-info-form.png) **域名购物车配置:** - **注册年限**:默认为1年,您可以选择1,3,5,10年的注册期限 - **信息模板**:选择已实名审核的信息模板(必选) :::warning 重要提示 - 如您没有实名信息模板,需要先创建模板,具体操作请参见 **[信息模板管理](./info-template)** - 信息模板必须通过实名认证才能用于域名注册 ::: 2. 勾选相关协议,确认无误后进入下一步。 ### 步骤四:核对信息 1. 在核对信息页面,仔细核对您的域名信息: - **域名名称**:确认域名拼写正确 - **注册年限**:确认注册时长 - **信息模板**:确认所有者信息正确 - **总费用**:确认费用明细 ![核对订单信息](https://docs.bt.cn/img/user-guide/domain-order-review.png) 2. 确保信息准确无误后,选择支付方式完成支付。 ### 步骤五:完成支付 1. 在支付页面,根据实际需求选择支付方式: - **微信支付**:使用微信扫码支付 - **支付宝**:使用支付宝扫码支付 ![支付页面](https://docs.bt.cn/img/user-guide/domain-order-review.png) 2. 完成支付后,您可在 [域名管理中心](https://www.bt.cn/domain/manage) 查看您的域名。 ![域名管理](https://docs.bt.cn/img/user-guide/domain-management.png) :::tip 发票申请 如果您需要开具发票,请联系客服咨询。 ::: ## 注册后操作 ### 1. 域名实名认证 如果您选择的信息模板已通过实名认证,系统会自动为域名完成实名认证。如果模板未实名认证,您需要手动进行域名实名认证。 ### 2. 域名解析设置 域名注册成功后,您需要设置域名解析,将域名指向您的服务器IP地址或其他目标地址。 ### 3. 备案申请 如果您的网站服务器在中国大陆,还需要进行ICP备案。详细流程请参见 [域名备案指南](./domain-filing.md)。 --- source: https://docs.bt.cn/domain/api/dns-records/list-domains.md.txt # API·获取用户 DNS 域名列表 > POST /api/v1/dns/manage/list_domains 接口,分页获取账户下的域名列表,支持按 full_domain 与 remark 关键字搜索,适用于批量查询与同步。 # 获取用户DNS域名列表 ## 接口描述 获取账户下的域名列表,支持分页和筛选。 **接口地址:** `POST /api/v1/dns/manage/list_domains` ## 输入参数 ### 请求示例 ```json { "p": 1, "rows": 20, "keyword": "example" } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | p | 否 | Integer | 页码,从 1 开始,默认为 1 | | rows | 否 | Integer | 每页返回数量,默认为 20 | | keyword | 否 | String | 域名关键字搜索,支持域名(full_domain)和备注(remark)搜索 | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "status": true, "msg": "获取域名列表成功", "data": { "data": [ { "created_at": "Tue, 09 Sep 2025 11:49:54 GMT", "dns_id": 0, "domain_type": 2, "full_domain": "example.com", "last_check_time": null, "local_id": 1, "ns_status": 0, "record_count": 0, "remark": "", "source": "external" }, { "created_at": "Mon, 08 Sep 2025 11:46:20 GMT", "dns_id": 196311160, "domain_type": 1, "full_domain": "test.com", "last_check_time": null, "local_id": 75, "ns_status": 1, "record_count": 0, "remark": "", "source": "platform" } ], "page": "", "row": "10", "shift": "0", "total": 12 } } ``` **错误响应:** ```json { "code": 400, "status": false, "msg": "参数错误" } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 响应状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据 | **data 字段说明:** | 参数名称 | 类型 | 描述 | |---------|------|------| | data | Array | 域名列表数组 | | page | String | 分页 HTML 代码 | | row | String | 每页显示数量 | | shift | String | 偏移量 | | total | Integer | 总记录数 | **data 数组中每个域名对象的字段:** | 参数名称 | 类型 | 描述 | |---------|------|------| | created_at | String | 创建时间 | | dns_id | Integer | 51DNS 中的域名 ID,0 表示未在 51DNS 中创建 | | domain_type | Integer | 域名类型:1=平台注册域名,2=外部添加域名 | | full_domain | String | 完整域名 | | last_check_time | String/null | 最后 DNS 状态检测时间 | | local_id | Integer | 本地数据库中的域名 ID | | ns_status | Integer | NS 状态:0=未设置,1=已生效,2=未生效 | | record_count | Integer | DNS 解析记录数量 | | remark | String | 备注信息 | | source | String | 域名来源:platform=平台注册,external=外部添加 | ## 错误码 | 错误码 | 错误信息 | 描述 | |--------|----------|------| | 0 | 获取域名列表成功 | 请求成功 | | 404 | 参数错误 | 请求参数格式不正确 | --- source: https://docs.bt.cn/domain/api/overview.md.txt # 宝塔域名 API 概览与签名认证 > 宝塔域名 API 调用总览:接口地址 https://dmp.bt.cn/,仅支持 HTTPS,每账号每日 2000 次限额,含 HMAC-SHA256 签名计算示例与 API 密钥获取入口说明。 # 概览 ## 操作场景 欢迎使用堡塔域名 API,您可以使用本文档介绍的 API 对域名服务进行相关操作。 接口地址: ``` https://dmp.bt.cn/ ``` :::warning 限制说明 - 接口仅支持 HTTPS 。 - 请合理使用 API 接口,注意请求频率,超限将在一定时间内暂停 API 权限,每个账号每日最多可调用 2000 次 API 接口。 - 请勿使用 API 接口来抢注过期域名,若短时间内重复提交相同域名尝试注册,会被禁用 API 权限。 ::: ## API签名认证 API 密钥可前往[堡塔域名管理后台](https://www.bt.cn/domain/domain-security) - "域名安全" 页面获取。 ### 签名计算步骤 #### 1. 准备参数 ```python account_id = "acct_abc123def456" access_key = "ak_789ghi012jkl345mno678pqr901stu" secret_key = "sk_234vwx567yza890bcd123efg456hij" timestamp = str(int(time.time())) method = "POST" path = "/api/v1/dns/record/create" body = '{"domain_id":123,"record":"www","type":"A","value":"192.168.1.1"}' ``` #### 2. 构建签名字符串 ```python signing_string = f"{account_id}\n{timestamp}\n{method}\n{path}\n{body}" ``` #### 3. 计算HMAC-SHA256签名 ```python import hmac import hashlib signature = hmac.new( secret_key.encode(), signing_string.encode(), hashlib.sha256 ).hexdigest() ``` #### 4. 发送请求 ```python headers = { "Content-Type": "application/json", "X-Account-ID": account_id, "X-Access-Key": access_key, "X-Timestamp": timestamp, "X-Signature": signature } ``` ## 完整示例代码 ### Python示例 ```python #!/usr/bin/env python3 import requests import hmac import hashlib import time import json class DNSApiClient: def __init__(self, account_id, access_key, secret_key, base_url): self.account_id = account_id self.access_key = access_key self.secret_key = secret_key self.base_url = base_url.rstrip('/') def _generate_signature(self, method, path, body=""): """生成 API 签名""" timestamp = str(int(time.time())) # 构建签名字符串 signing_string = f"{self.account_id}\n{timestamp}\n{method.upper()}\n{path}\n{body}" # 计算 HMAC-SHA256 签名 signature = hmac.new( self.secret_key.encode(), signing_string.encode(), hashlib.sha256 ).hexdigest() return timestamp, signature def _make_request(self, method, path, data=None): """发起 API 请求""" url = f"{self.base_url}{path}" body = json.dumps(data) if data else "" # 生成签名 timestamp, signature = self._generate_signature(method, path, body) # 构建请求头 headers = { "Content-Type": "application/json", "X-Account-ID": self.account_id, "X-Access-Key": self.access_key, "X-Timestamp": timestamp, "X-Signature": signature } # 发送请求 response = requests.request( method=method, url=url, headers=headers, data=body if body else None ) return response.json() def create_dns_record(self, domain_id, record, record_type, value, ttl=600): """创建 DNS 记录""" data = { "domain_id": domain_id, "record": record, "type": record_type, "value": value, "ttl": ttl } return self._make_request("POST", "/api/v1/dns/record/create", data) def list_dns_records(self, domain_id): """获取 DNS 记录列表""" data = {"domain_id": domain_id} return self._make_request("POST", "/api/v1/dns/record/list", data) def create_domain(self, domain_id): """初始化域名 DNS""" data = {"domain_id": domain_id} return self._make_request("POST", "/api/v1/dns/domain/create", data) # 使用示例 if __name__ == "__main__": # 初始化客户端 client = DNSApiClient( account_id="acct_abc123def456", access_key="ak_789ghi012jkl345mno678pqr901stu", secret_key="sk_234vwx567yza890bcd123efg456hij", base_url="https://your-domain.com" ) # 创建 DNS 记录 result = client.create_dns_record( domain_id=123, record="www", record_type="A", value="192.168.1.1" ) print("创建 DNS 记录结果:", result) # 获取 DNS 记录列表 records = client.list_dns_records(domain_id=123) print("DNS 记录列表:", records) ``` ### PHP示例 ```php accountId = $accountId; $this->accessKey = $accessKey; $this->secretKey = $secretKey; $this->baseUrl = rtrim($baseUrl, '/'); } private function generateSignature($method, $path, $body = '') { $timestamp = (string)time(); // 构建签名字符串 $signingString = implode("\n", [ $this->accountId, $timestamp, strtoupper($method), $path, $body ]); // 计算 HMAC-SHA256 签名 $signature = hash_hmac('sha256', $signingString, $this->secretKey); return [$timestamp, $signature]; } private function makeRequest($method, $path, $data = null) { $body = $data ? json_encode($data) : ''; list($timestamp, $signature) = $this->generateSignature($method, $path, $body); $headers = [ 'Content-Type: application/json', 'X-Account-ID: ' . $this->accountId, 'X-Access-Key: ' . $this->accessKey, 'X-Timestamp: ' . $timestamp, 'X-Signature: ' . $signature ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->baseUrl . $path); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($body) { curl_setopt($ch, CURLOPT_POSTFIELDS, $body); } $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); } public function createDnsRecord($domainId, $record, $type, $value, $ttl = 600) { $data = [ 'domain_id' => $domainId, 'record' => $record, 'type' => $type, 'value' => $value, 'ttl' => $ttl ]; return $this->makeRequest('POST', '/api/v1/dns/record/create', $data); } } // 使用示例 $client = new DNSApiClient( 'acct_abc123def456', 'ak_789ghi012jkl345mno678pqr901stu', 'sk_234vwx567yza890bcd123efg456hij', 'https://your-domain.com' ); $result = $client->createDnsRecord(123, 'www', 'A', '192.168.1.1'); echo json_encode($result, JSON_PRETTY_PRINT); ?> ``` ## 错误处理 ### 常见错误码 | 错误码 | 错误信息 | 解决方法 | | ------ | ---------------------- | -------------------------------------- | | 401 | 缺少 API 签名参数 | 检查请求头是否包含所有必需参数 | | 401 | 时间戳格式错误 | 确保时间戳为 Unix 时间戳格式 | | 401 | 请求时间戳无效 | 检查客户端时间是否同步 | | 401 | API 配置无效 | 检查 Account ID 和 Access Key 是否正确 | | 403 | IP 地址不在白名单中 | 将客户端 IP 添加到白名单 | | 401 | API 签名验证失败 | 检查签名计算是否正确 | ## 支持的接口 ### 域名管理 - `POST /api/v1/dns/manage/list_domains` - 获取域名列表 - `POST /api/v1/dns/manage/add_external_domain` - 添加外部域名 - `POST /api/v1/dns/manage/remove_domain` - 删除外部域名 - `POST /api/v1/dns/manage/check_domain_status` - 检查域名状态 ### 解析记录管理 - `POST /api/v1/dns/record/create` - 创建解析记录 - `POST /api/v1/dns/record/update` - 更新解析记录 - `POST /api/v1/dns/record/delete` - 删除解析记录 - `POST /api/v1/dns/record/list` - 获取解析记录列表 - `POST /api/v1/dns/record/pause` - 暂停解析记录 - `POST /api/v1/dns/record/start` - 启动解析记录 更多接口详情请参考 API 文档。 --- source: https://docs.bt.cn/domain/faq/domain-status.md.txt # WHOIS 域名状态含义与处理方法 > 详解 WHOIS 中常见域名状态 OK/addPeriod/autoRenewPeriod/clientHold/serverHold/INACTIVE 等含义与应对方法,区分注册商 client 与注册局 server 发起的状态锁。 # 域名状态 ## 概述 查看域名WHOIS信息时,都有一项域名状态栏,每一个域名都有当前的状态,可能只有一个状态,也可能有多个状态。了解各种域名状态的含义,有助于您了解域名处于不同状态下的原因,可及时采取相应解决措施。 :::tip 状态分类 - **以 client 开头**:由注册商发起 - **以 server 开头**:由注册局发起 ::: ## WHOIS中域名状态的解释说明 ### 基本状态 | 状态 | 英文名称 | 说明 | |------|----------|------| | **OK** | active | 普通状态(正常,没有需要立即进行的操作,也没有设置任何保护措施,当有其他状态时OK状态不显示,但并不代表不正常) | | **addPeriod** | add period | 注册局设置的域名新注册期。域名新注册后5天内会出现该状态,不影响域名使用,5天后将自动解除该状态 | | **autoRenewPeriod** | auto renew period | 注册局自动续费宽限期。域名到期后被注册局自动续费时设置的状态,通常持续有限时间 | | **renewPeriod** | renew period | 续费宽限期。注册商明确续费域名后设置的状态,如在此期间删除域名,注册局会为注册商提供续费费用的退款 | | **transferPeriod** | transfer period | 转移宽限期。域名成功从一个注册商转移到另一个注册商后设置的状态,如新注册商在此期间删除域名,注册局会提供转移费用的退款 | | **INACTIVE** | inactive | 非激活状态(注册时未设置域名服务器,无法进行解析) | ### 域名保护状态 以下状态是域名注册信息的保护,域名在进行某些安全锁定后会出现: #### Client开头的状态(注册商设置) | 状态 | 英文名称 | 说明 | 解决方法 | |------|----------|------|----------| | **clientDeleteProhibited** | client delete prohibited | 注册商设置禁止删除 | 联系注册商解除保护 | | **clientUpdateProhibited** | client update prohibited | 注册商设置禁止修改(不允许修改域名信息,可以设置或修改解析记录) | 联系注册商解除保护 | | **clientTransferProhibited** | client transfer prohibited | 注册商设置禁止转移(注册商处设置不允许转出) | 联系注册商解除保护 | | **clientHold** | client hold | 注册商设置暂停解析,通常在法律争议、未付款或域名面临删除时设置 | 联系注册商解除该状态 | | **clientRenewProhibited** | client renew prohibited | 注册商禁止续费(域名不能被续费),通常在法律争议或域名面临删除时设置 | 联系注册商确认原因并解决 | #### Server开头的状态(注册局设置) | 状态 | 英文名称 | 说明 | 解决方法 | |------|----------|------|----------| | **serverDeleteProhibited** | server delete prohibited | 注册局设置禁止删除,通常在法律争议、应用户请求或赎回期时设置 | 通常为保护性设置,正常现象;如需删除域名,联系注册商协助移除 | | **serverUpdateProhibited** | server update prohibited | 注册局设置禁止修改(不允许修改域名信息,可以设置或修改解析记录) | 通常为保护性设置,正常现象;如需修改,联系注册商协助移除 | | **serverTransferProhibited** | server transfer prohibited | 注册局设置禁止转移 | 新注册域名60天内会被设置,60天后自动解除;或涉及仲裁诉讼时设置 | | **serverHold** | server hold | 注册局设置暂停解析,域名不会在DNS中激活 | 通常因未实名认证,完成实名审核后自动解除 | | **serverRenewProhibited** | server renew prohibited | 注册局禁止续费(域名不能被续费) | 通常因未实名认证,完成实名审核后自动解除;或在法律争议时设置 | ### 域名处理中状态 | 状态 | 英文名称 | 说明 | 解决方法 | |------|----------|------|----------| | **pendingCreate** | pending create | 等待创建中,域名注册请求已收到并正在处理 | 如非您申请注册且您不是域名持有人,应立即联系注册商 | | **pendingDelete** | pending delete | 等待删除中,可能与赎回期或等待恢复状态混合显示 | 如需保留域名,必须立即联系注册商讨论可用选项 | | **pendingRenew** | pending renew | 等待续费中,域名续费请求已收到并正在处理 | 如未申请续费且不想保留域名,应立即联系注册商 | | **pendingRestore** | pending restore | 等待恢复中,注册商已请求注册局恢复处于赎回期的域名 | 确保注册商在规定时间内提交了正确的恢复文档 | | **pendingTransfer** | pending transfer | 等待转移中,域名转移到新注册商的请求已收到并正在处理 | 如非您申请转移,应立即联系注册商拒绝转移请求 | | **pendingUpdate** | pending update | 等待更新中,域名更新请求已收到并正在处理 | 如非您申请更新,应立即联系注册商解决问题 | | **pendingVerification** | pending verification | 注册信息确认中(域名未完成实名审核,或实名审核未通过) | 完成域名实名认证 | :::warning 重要提醒 - **pendingVerification**:域名注册后5天内仍未完成实名,则将进入serverHold状态,无法正常解析 - **serverHold**:大多数原因是.com、.cn、.net等域名未进行实名认证 ::: ## 域名过期状态 域名过期后会依次经历以下状态: ```mermaid graph LR A[正常使用期] --> B[过期] B --> C[续费宽限期
REGISTRAR HOLD] C --> D[赎回期
REDEMPTION PERIOD] D --> E[待删除期
PENDING DELETE] E --> F[域名释放] C --> C1[可正常续费] D --> D1[需支付赎回费用] E --> E1[无法续费
5天后删除] style A fill:#4ECDC4,stroke:#333,stroke-width:2px,color:#fff style C fill:#FFA07A,stroke:#333,stroke-width:2px,color:#000 style D fill:#FF6B6B,stroke:#333,stroke-width:2px,color:#fff style E fill:#8B0000,stroke:#333,stroke-width:2px,color:#fff style F fill:#696969,stroke:#333,stroke-width:2px,color:#fff ``` ### 过期状态详解 | 状态 | 英文名称 | 说明 | 可操作性 | |------|----------|------|----------| | **REGISTRAR HOLD** | registrar hold | 注册商保留(域名过期后30天左右,即"域名续费期") | ✅ 可正常续费 | | **AUTORENEWPERIOD** | auto renew period | 自动续费宽限期(域名过期后30天左右,可以被续费) | ✅ 可正常续费 | | **REDEMPTION PERIOD** | redemption period | 赎回宽限期(续费期结束后进入30天左右的"域名赎回期") | ⚠️ 需支付赎回费用 | | **PENDING DELETE** | pending delete | 待删除期(国际域名在赎回期结束后进入5天的待删除期) | ❌ 无法续费,5天后删除 | | **REGISTRAR/REGISTRY LOCK** | registrar/registry lock | 注册商/局域名锁定状态(过期后防止被转移注册商) | 🔒 被锁定保护 | ## 常见状态问题解决 ### 域名无法解析 **可能原因:** - `serverHold` - 未完成实名认证 - `clientHold` - 注册商暂停解析 - `INACTIVE` - 未设置DNS服务器 **解决方法:** 1. 检查域名实名认证状态 2. 联系注册商确认原因 3. 设置正确的DNS服务器 ### 域名无法续费 **可能原因:** - `clientRenewProhibited` - 注册商禁止续费 - `serverRenewProhibited` - 注册局禁止续费 - 域名处于争议期 **解决方法:** 1. 完成域名实名认证 2. 联系注册商确认具体原因 3. 解决相关争议问题 ### 域名无法转移 **可能原因:** - `clientTransferProhibited` - 注册商设置转移锁 - `serverTransferProhibited` - 注册局设置转移锁 - 域名注册60天内 **解决方法:** 1. 联系当前注册商解除转移锁 2. 等待注册满60天后再转移 3. 确认域名状态正常 ## 如何查看域名状态 ### 方法一:WHOIS查询 1. 访问[WHOIS查询工具](https://www.bt.cn/new/domain-whois.html) 2. 输入要查询的域名 3. 查看"Domain Status"字段 ## 联系客服 如果域名状态异常且无法自行解决,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 域名名称 - 当前状态 - 期望解决的问题 - 域名实名认证情况 ## 相关文档 - [域名注册](../user-guide/domain-registration.md) - [域名实名认证](../user-guide/domain-filing.md) - [域名续费](../user-guide/domain-renewal.md) :::tip 建议 - 定期检查域名状态,及时处理异常 - 保持域名实名认证信息真实有效 - 及时续费,避免域名过期 - 开启域名保护锁,防止恶意操作 ::: --- source: https://docs.bt.cn/domain/faq/realnameofamain/editrealname.md.txt # 修改域名所有者/实名信息 FAQ > 宝塔域名不支持自助修改所有者信息与联系方式,需创建新实名模板后联系客服走变更流程,适用于过户、错信息修正与联系方式更新场景。 # 修改域名信息 本文将为您介绍如何修改域名所有者(修改域名实名)。 ## 如何修改域名实名/所有者? 当前暂不支持自助修改,如您有需要请创建新的实名模板后联系客服。 ## 如何修改域名所有者联系方式? 宝塔面板目前不支持单独修改域名所有者联系方式,请您参照上述步骤通过修改域名实名信息的方式修改域名所有者联系方式。即创建新模板时仅需要修改域名所有者联系方式,其他信息保持不变。 --- source: https://docs.bt.cn/domain/faq/realnameofamain/realname-failure/organization.md.txt # 企业/组织实名审核失败原因排查 > 企业与组织机构域名实名审核失败的常见原因:名称与营业执照不一致、联系人填写成公司名、证件类型与 18 位统一社会信用代码错误,并提供个体/组织机构信息核对渠道。 # 企业/组织 ## 企业/组织模板审核失败的原因? 请您根据下方提示耐心、逐项、仔细检查您所填写的信息: ::: ### 名称问题: 请您仔细确认您所填写域名所有者名称与营业执照(或其他类型证件)上的名称是否完全一致,如不一致,请您修改后重新提交。 ### 联系人问题: 请您确认您所填写的联系人为具体的人,而非公司名称,如填写有误,请您修改后重新提交。 ### 证件类型 请确认您所选择的证件类型和实际证件类型是否一致,如不一致,请您修改后重新提交。 ### 证件号码 请您确认您所填写的证件号码为 18 位统一社会信用代码,并与证件上的信用代码一致,如不一致,请您修改后重新提交。 ### 名称比对 请您确认您证件上的名称、证件号码与国家相关系统信息一致,如不一致,请您咨询相关系统客服或主管部门: - ***企业***: 请您通过 [企业信用信息公示系统](https://www.gsxt.gov.cn/corp-query-homepage.html) 查询您的企业名称、证件号码与系统是否一致,如不一致,请您联系主管部门确认。 - ***组织机构(非企业)***: 请您通过 [组织机构代码查询系统](https://www.cods.org.cn/gscx/) 查询您的组织机构名称、证件号码与系统是否一致。如不一致,请您将登记证照拍照或者登记机关官网查询到的数据截图发送至 `cs@cods.org.cn` 邮箱进行咨询。 ### 检查无误 若您检查相关信息后没有发现任何错误请您联系 [在线客服](https://www.bt.cn/new/wechat_customer) 进行咨询。 --- source: https://docs.bt.cn/domain/introduction.md.txt # 堡塔域名注册服务产品介绍 > 堡塔域名注册服务,由宝塔面板(BT Panel)背后的广东堡塔安全技术有限公司提供,提供域名注册、DNS 解析、转入转出与批量管理一体化服务。 # 产品介绍 欢迎使用域名注册服务!本文档将为您提供关于域名注册、管理和配置的全面指南。 ## 什么是域名 域名(Domain Name)是互联网上网站的地址,它为用户提供了一种简单易记的方式来访问网站,而不需要记住复杂的 IP 地址。 ## 服务特色 - ***极速注册,实时生效*** - "查询→购买→使用"在已实名的情况下全流程最快 1 分钟搞定,付款即拥有域名所有权,支持立即解析绑定网站。PS:实名认证最快 5 分钟内搞定审核 - ***更低的价格,让好域名触手可及*** - 宝塔面板的域名注册费用极具性价比,几乎是市场上最低的价格,让创业和建站负担更低 - ***全程无套路,价格透明到底*** - 首年价格、续费价格、转入费用全部明示,无隐藏手续费,无强制捆绑消费,买不买、续不续,您说了算 - ***协同宝塔面板,一站式完成建站与 SSL 签发*** - 与宝塔面板深度集成,域名注册后可一键部署网站、自动申请 SSL 证书,省去繁琐配置,让您专注于网站内容创作 --- source: https://docs.bt.cn/domain/practical-tutorials/dnspod-dns-server-setup.md.txt # 域名 DNS 服务器修改到腾讯云 DNSPod > 完整演示如何在腾讯云 DNSPod 控制台添加域名、获取分配的 NS 服务器地址,并在宝塔域名后台修改 NS 记录实现从默认 DNS 迁移至 DNSPod。 # 域名解析服务器修改到腾讯云 DNSPod 本文将详细介绍如何将您的域名DNS解析服务器从当前堡塔域名注册默认 DNS 修改为腾讯云 DNSPod,以便使用 DNSPod 提供的专业DNS解析服务。DNSPod 作为腾讯云旗下的专业 DNS 解析服务商,提供稳定、快速、安全的域名解析服务。 ## 前提条件 ### 基本要求 - 域名状态正常,无锁定或冻结状态 - 已注册腾讯云账号,若无账号,请前往 [腾讯云官网](https://cloud.tencent.com/login) 注册 ## 操作步骤 ### 第一步:添加域名到 DNSPod 1. 登录[腾讯云 DNSPod 控制台](https://console.cloud.tencent.com/cns)后,点击"添加域名" ![添加域名](https://docs.bt.cn/img/practical-tutorials/dnspod-add-domain.png) 2. 输入您要托管的域名,点击"确定" ![输入域名](https://docs.bt.cn/img/practical-tutorials/dnspod-input-domain.png) ### 第二步:获取 DNSPod DNS 服务器地址 添加域名后,DNSPod会分配专用的DNS服务器地址: ``` # 仅供参考,请以实际为准 zoe.dnspod.net cornelia.dnspod.net ``` ![DNS服务器地址](https://docs.bt.cn/img/practical-tutorials/dnspod-dns-servers.png) :::info 说明 不同用户可能分配到不同的DNS服务器地址,请以您账号中显示的为准。 ::: ### 第三步:配置DNS解析记录(可选) 在修改DNS服务器前,如您已经在堡塔添加了域名解析记录,请先将这些记录手动添加到 DNSPod 中,确保解析记录一致,避免网站或服务中断。 ### 第四步:修改域名 DNS 服务器 1. 登录 [堡塔域名管理](https://www.bt.cn/domain/domain/list) 2. 找到要修改的域名,点击"管理" ![域名管理](https://docs.bt.cn/img/practical-tutorials/bt-domain-management.png) 3. 在域名管理页面,点击"修改 DNS 服务器" ![DNS管理](https://docs.bt.cn/img/practical-tutorials/bt-dns-management.png) 4. 将DNS服务器修改为DNSPod分配的地址(请以实际分配的地址为准,此处仅作演示): ``` zoe.dnspod.net cornelia.dnspod.net ``` ![修改DNS服务器](https://docs.bt.cn/img/practical-tutorials/bt-modify-dns-servers.png) 5. 点击"确定"保存修改 :::info 说明 - DNS服务器修改后,全球 DNS 系统需要一定时间来更新新的解析信息,这个过程称为 DNS 传播。通常情况下,DNS传播时间为几分钟到 72 小时不等,具体时间取决于各地 ISP 的缓存刷新频率。 - 在 DNS 传播完成前,部分用户可能仍然访问到旧的 DNS 服务器,如果您在修改后 72 小时内修改记录请同时在堡塔域名后台和 DNSPod 后台进行修改。 ::: ### 第五步:验证 DNS 服务器修改是否生效 修改完成约半小时后,您可以返回腾讯云 DNSPod 控制台,查看域名状态是否显示为“正常”。 ![DNS状态](https://docs.bt.cn/img/practical-tutorials/dnspod-domain-status.png) --- source: https://docs.bt.cn/domain/user-guide/dns/overview.md.txt # 域名解析总览与记录类型说明 > 介绍 DNS 解析原理与宝塔域名支持的记录类型(A、AAAA、CNAME、MX、TXT、NS、SRV、CAA 等)及各自适用场景,为后续解析设置提供选型依据。 # 概览 ## 什么是域名解析 域名解析(DNS解析)是将人类可读的域名(如 example.com)转换为计算机可识别的IP地址的过程。当用户在浏览器中输入域名时,DNS系统会查找对应的IP地址,从而使用户能够访问网站。 :::info 基本概念 DNS(Domain Name System)是互联网的基础服务之一,它维护着域名与IP地址之间的映射关系。通过DNS解析,用户可以使用易记的域名来访问网站,而不需要记住复杂的IP地址。 ::: ## 支持的DNS记录类型 宝塔域名解析支持以下记录类型: ### 基础记录类型 | 记录类型 | 说明 | 示例 | 用途 | |---------|------|------|------| | **A** | 将域名指向IPv4地址 | www.example.com → 192.168.1.1 | 网站访问 | | **CNAME** | 将域名指向另一个域名 | www.example.com → example.com | 域名别名 | | **MX** | 指定邮件服务器 | example.com → mail.example.com | 邮件服务 | | **TXT** | 存储文本信息 | example.com → "验证信息" | 域名验证、SPF设置 | | **NS** | 指定域名服务器 | example.com → ns1.example.com | 域名解析权威 | | **AAAA** | 将域名指向IPv6地址 | www.example.com → 2001:db8::1 | IPv6网站访问 | ### 高级记录类型 | 记录类型 | 说明 | 用途 | |---------|------|------| | **SRV** | 服务记录 | 指定特定服务的服务器和端口 | | **CAA** | 证书颁发机构授权 | 指定可以为域名颁发SSL证书的CA | ## 解析生效时间 ### TTL值说明 TTL(Time To Live)是DNS记录的生存时间,决定了DNS记录在缓存中保存的时间: - **60秒**:适合频繁变动的记录,快速生效 - **300秒(5分钟)**:默认设置,平衡生效速度和性能 - **3600秒(1小时)**:适合稳定的记录,减少DNS查询 - **86400秒(24小时)**:适合很少变动的记录 ### 生效时间因素 解析记录的生效时间受以下因素影响: 1. **TTL设置**:较短的TTL生效更快 2. **DNS缓存**:各级DNS服务器的缓存时间 3. **网络环境**:不同地区和运营商的DNS更新速度 4. **记录类型**:不同类型记录的传播速度可能不同 :::tip 生效建议 - 新增记录:通常在5-30分钟内全球生效 - 修改记录:根据原TTL设置,可能需要等待原TTL时间 - 删除记录:同修改记录,需要等待缓存过期 - 紧急变更:可先设置较短TTL,变更完成后再调回正常值 ::: --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/a-record.md.txt # 添加 A 记录:域名指向 IPv4 地址 > 在宝塔域名解析后台添加 A 记录将主机记录指向 IPv4 地址;说明主机记录、默认/运营商线路、记录值、MX/权重与 TTL 设置要点。 # 设置A记录 ## 操作场景 通过添加A记录可将域名指向一个IP地址(外网地址),本文档指导您如何添加A记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置A记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加A记录](https://docs.bt.cn/img/user-guide/add-a-record.png) - **主机记录**:选择子域名。例如添加 `www.example.com` 的解析时,您在"主机记录"处选择"www"即可。若是想添加 `example.com` 的解析,您在"主机记录"处选择"@"即可。 - **记录类型**:选择"A"。 - **线路类型**:选择"默认"类型,若您只选择其他单独线路(例如"联通"),可能会导致部分用户无法解析。例如,您只设置了一条联通线路,此线路类型为"联通"、记录值为 `192.0.2.1` 的A记录,指向您的主机IP地址(例如 `192.0.2.1`,具体IP地址请指向您的实际外网IP地址),那么您的网站只有联通用户能够访问,其他运营商用户(例如移动用户)则不能访问您的网站。此时若您需其他运营商用户通过您的其他主机IP(例如 `203.0.113.1`)访问网站,则您需要添加一条线路类型为"默认"、记录值为 `203.0.113.1` 的A记录。 :::tip 说明 在暂停联通线路的解析的情况下,添加"默认"类型记录可以保证联通用户访问不受影响。 ::: - **记录值**:只可以填写IPv4地址。例如,您需要访问的IPv4地址为 `192.0.2.1`,则填写 `192.0.2.1`。 - **MX/权重**:同一条主机记录相同的线路,可以针对不同的记录值设置权重,解析时将根据设置的权重比例进行返回。输入范围为0~100的整数。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-renewal.md.txt # 域名续费:到期前延长服务周期 > 在宝塔域名后台对到期域名进行续费以延长服务期,避免过期后不可转出、入 30 天续费宽限期与赎回期高额费用风险;详解从域名列表续费的入口与操作路径。 # 域名续费 ## 操作场景 为保障您的域名能正常运行,本文指导您对已注册域名延长有效使用期限。您也可以根据实际需求进行续费操作。 :::warning 重要提醒 - 域名到期后不支持转出,如需转出请先将域名续费 - 域名到期后第30天是域名续费宽限期,过期可能面临域名释放风险 - 如域名进入赎回期,可能面临较高的赎回费用,建议尽早续费 ::: ## 前提条件 - 域名处于正常状态(非锁定、非争议状态) ## 操作步骤 ### 在域名列表页面续费 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list) 2. 进入"域名列表"页面 ![进入域名列表页面](https://docs.bt.cn/img/user-guide/domain-list-page.png) 3. 找到需要续费的域名 4. 在域名行中,点击"续费"按钮 ![域名列表续费](https://docs.bt.cn/img/user-guide/domain-list-renewal.png) ### 提交续费申请 1. **选择续费年限** - 在续费窗口中,根据实际需求选择续费年限 ![续费窗口](https://docs.bt.cn/img/user-guide/domain-renewal-window.png) - 点击"下一步"按钮 :::info 续费规则 - 根据注册局规定,域名有效期年限不可超过10年 - 域名赎回操作时,只能选择续费一年,如需续费多年,请在赎回后进行续费操作 - 域名续费费用请以实际为准 ::: 2. **核对续费信息** - 仔细核对域名续费信息及费用 - 确认无误后,选择支付方式完成支付 ![续费信息核对](https://docs.bt.cn/img/user-guide/domain-renewal-info-check.png) 3. **选择支付方式** - 账户余额支付 - 微信支付 - 支付宝支付 4. **完成支付** - 选择支付方式后,点击"立即支付"/扫码完成付款 - 完成支付后,域名续费成功 ![支付成功](https://docs.bt.cn/img/user-guide/domain-renewal-payment-success.png) ## 续费后注意事项 ### 域名解析恢复时间 若您在"域名续费宽限期"进行续费,您的域名可能被注册商暂停解析,导致您无法访问网站,预计将于续费成功后的 24-48 小时内恢复解析。 ### 续费确认 续费成功后,您可以通过以下方式确认: 1. 登录堡塔域名管理控制台,进入"域名列表"页面,查看域名状态和有效期,是否已更新 ![续费后域名状态](https://docs.bt.cn/img/user-guide/domain-renewal-success-status.png) 2. 使用 whois 等工具查询域名的最新到期时间。 ![whois 查询](https://docs.bt.cn/img/user-guide/domain-renewal-whois.png) :::warning 注意 - 域名续费后,可能需要一定时间才能在 whois 查询中反映最新的到期时间,通常为 2 小时左右。 - 大部分 whois 查询工具会缓存查询结果,建议使用多个工具进行交叉验证。 ::: ## 常见问题 ### Q:续费后发现域名仍然无法访问? A:请检查以下几点: 1. 确认域名续费是否成功 2. 检查域名DNS解析设置是否正确 3. 等待DNS解析生效(通常24-48小时) 4. 如仍有问题,请联系技术支持 ## 联系客服 如果在域名续费过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer ## 域名自动续费 为避免忘记续费导致域名过期,建议开启域名自动续费功能: ### 开启自动续费 1. 登录[堡塔域名管理控制台](https://www.bt.cn/domain/domain/list) 2. 进入"域名列表"页面 3. 找到需要设置自动续费的域名,点击"管理" ![管理域名](https://docs.bt.cn/img/user-guide/domain-renewal-manage.png) 4. 在详情页面,点击"自动续费"开关 ![开启自动续费](https://docs.bt.cn/img/user-guide/domain-renewal-auto-renewal.png) 5. 设置自动续费年限(1-10年) 6. 确认设置并保存 ### 自动续费规则 - 自动续费将在域名到期前30天自动执行 - 需要确保账户余额充足 - 可随时关闭自动续费功能 > **自动续费注意事项** - 开启自动续费前请确保账户余额充足 - 如需关闭自动续费,请在到期前及时操作 ::: ## 相关文档 - [域名注册](./domain-registration.md) - [信息模板管理](./info-template.md) - [域名转入](./domain-transfer-in.md) --- source: https://docs.bt.cn/domain/user-guide/domain-security/update-lock.md.txt # 设置域名禁止更新锁(clientUpdateProhibited) > 开启 clientUpdateProhibited 锁后,域名联系人信息、DNS 服务器设置、状态变更等信息均不可被修改,适用于防止账号被盗后 DNS 被篡改场景。 # 设置禁止更新锁 ## 操作背景 本文将帮助您了解如何开启或关闭 “禁止更新锁” 功能。 :::info 功能说明 禁止更新锁(clientUpdateProhibited)可以防止域名信息被恶意修改,包括: - 域名联系人信息 - DNS服务器设置 - 域名状态变更 - 其他域名相关信息 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 域名处于正常状态(非争议、非冻结状态) ## 操作步骤 ### 开启禁止更新锁 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 在域名列表中,找到需要开启禁止更新锁的域名,点击"管理"按钮 ![域名列表管理](https://docs.bt.cn/img/user-guide/domain-security-manage.png) 3. 在域名详情页面,选择"域名安全"选项卡,进入域名安全页面 ![域名安全页面](https://docs.bt.cn/img/user-guide/domain-security-tab.png) 4. 在域名安全页面中,找到"禁止更新锁"设置项,点击开关按钮开启 ![开启禁止更新锁](https://docs.bt.cn/img/user-guide/enable-update-lock.png) :::warning 重要提醒 开启禁止更新锁后,您将无法修改域名相关信息,如需修改请先关闭此功能。 ::: 5. 系统会显示开启成功的提示,禁止转移锁即时生效 ### 关闭禁止更新锁 如需修改域名信息,可以临时关闭禁止更新锁: 1. 按照上述步骤进入域名安全页面 2. 在"禁止更新锁"设置项中,点击开关按钮关闭 ![关闭禁止更新锁](https://docs.bt.cn/img/user-guide/disable-update-lock.png) 3. 完成域名信息修改后,建议立即重新开启禁止更新锁 ## 状态查看 ### 在域名列表查看 在“域名详情”页面,可以在域名状态列看到相关保护状态。 ### 在WHOIS信息查看 开启禁止更新锁后,在域名WHOIS查询结果中会显示: ``` Domain Status: clientUpdateProhibited ``` ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer ## 相关文档 - [设置禁止转移锁](./transfer-lock.md) - [CNNIC域名隐私保护](../cnnic-privacy-protection.md) - [域名状态相关](../../faq/domain-status.md) :::tip 安全建议 建议所有域名在注册完成后立即开启禁止更新锁和禁止转移锁,为域名提供基础的安全保护。对于重要的商业域名,还可以考虑开启注册局安全锁等高级保护功能。 ::: --- source: https://docs.bt.cn/domain/api/api-keys.md.txt # 宝塔域名 API 密钥管理 > 在宝塔域名管理控制台创建与管理 API 密钥(Access Key + Secret Key + Account ID),支持 IP 白名单与不同权限范围,用于安全调用域名/DNS 接口。 # API密钥管理 ## 操作背景 本文将帮助您了解如何创建、管理和使用域名服务的API密钥。 :::info 功能说明 API密钥是调用域名服务API接口的重要凭证,包含Access Key、Secret Key和Account ID三个部分。通过API密钥,您可以安全地调用各种域名管理接口。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 账号处于正常状态 - 已了解API接口的基本使用方法 ## 操作步骤 ### 创建API密钥 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/),在左侧导航栏选择【域名管理】 2. 在域名管理页面,点击左侧菜单【域名安全】,进入域名安全页面后,点击顶部选项卡【API管理】 ![API管理选项卡](https://docs.bt.cn/img/api/api-management-tab.png) 4. 在API管理页面,点击【创建API密钥】按钮 ![创建API密钥](https://docs.bt.cn/img/api/create-api-key-btn.png) 5. 在弹出的创建窗口中,填写相关信息: ![创建API密钥表单](https://docs.bt.cn/img/api/create-api-key-form.png) - **密钥名称**:为API密钥设置一个易于识别的名称 - **IP白名单**:输入允许调用API的IP地址,每行一个IP(可选) :::warning 安全提示 为了安全,建议设置IP白名单,仅允许指定的IP地址调用API接口。每行一个IP地址。 ::: 6. 点击【创建】按钮完成API密钥创建 7. 创建成功后,系统会显示API密钥信息: ![API密钥创建成功](https://docs.bt.cn/img/api/api-key-created-success.png) - **Access Key**:API访问密钥 - **Secret Key**:API密钥 - **Account ID**:账户ID :::danger 重要提醒 API密钥创建成功!请立即保存以下信息,关闭后将无法再次查看: - Secret Key 一旦关闭此窗口将无法再次查看 - 请将密钥信息安全保存 - 不要在代码中硬编码密钥信息 ::: 8. 点击每个密钥后面的【复制】按钮,将密钥信息保存到安全的地方 9. 点击【复制全部信息】按钮可以一次性复制所有密钥信息 ### 管理API密钥 创建完成后,您可以在API管理页面看到已创建的API密钥: ![API密钥列表](https://docs.bt.cn/img/api/api-key-list.png) 可以进行以下操作: - **编辑**:修改密钥名称和IP白名单 - **重新生成**:重新生成Secret Key(原密钥将失效) - **删除**:删除不再使用的API密钥 ### 代码安全 ```python # ❌ 错误做法:在代码中硬编码 access_key = "ak_123456789" secret_key = "sk_987654321" # ✅ 正确做法:使用环境变量 import os access_key = os.getenv('API_ACCESS_KEY') secret_key = os.getenv('API_SECRET_KEY') ``` ### IP白名单设置 建议根据不同场景设置IP白名单: - **开发环境**:限制为开发者的IP地址 - **生产环境**:限制为服务器的固定IP地址 - **CI/CD**:添加构建服务器的IP地址 ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 账号信息 - API密钥名称(不要提供密钥内容) - 错误信息或问题描述 - 相关操作截图(如有) ## 相关文档 - [API概览](./overview.md) :::tip 开发建议 - 在开始开发前,建议先阅读[API概览](./overview.md)了解签名认证机制 - 使用API前先在小范围环境测试 - 保存好示例代码,便于快速集成 - 定期检查和更新API密钥 ::: --- source: https://docs.bt.cn/domain/api/dns-records/add-external-domain.md.txt # API·添加外部域名 > POST /api/v1/dns/manage/add_external_domain 接口详解,将其他注册商的域名接入宝塔域名管理系统并启用 DNS 解析,包含 full_domain、remark 参数与响应示例。 # 添加外部域名 ## 接口描述 将在其他注册商注册的域名添加到堡塔域名管理系统中,以便使用堡塔的 DNS 解析服务。 **接口地址:** `POST /api/v1/dns/manage/add_external_domain` ## 输入参数 ### 请求示例 ```json { "full_domain": "example.com", "remark": "" } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | full_domain | 是 | String | 域名名称,需要是有效的域名格式 | | remark | 否 | String | 备注信息 | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": { "dns_id": 196336355, "domain_id": 2, "full_domain": "example.com", "ns_status": 0 }, "msg": "外部域名添加成功", "status": true } ``` **错误响应:** ```json { "code": 400, "msg": "域名格式不正确", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据 | **data 字段说明:** | 参数名称 | 类型 | 描述 | |---------|------|------| | dns_id | Integer | DNS 解析 ID | | domain_id | Integer | 域名 ID | | full_domain | String | 域名名称 | | ns_status | Integer | 当前 DNS 状态:0(未设置)、1(已设置)、2(检测中) | --- source: https://docs.bt.cn/domain/faq/realnameofamain/realname-failure/personal.md.txt # 个人域名实名审核失败原因排查 > 个人域名实名认证审核不通过的常见原因:姓名与身份证不一致、身份证号错误、信息填写不完整,提供明确的排查顺序与在线客服联系方式。 # 个人 ## 个人模板审核失败的原因? 请您根据下方提示耐心、逐项、仔细检查您所填写的信息: ::: ### 名称问题: 请您仔细确认您所填写域名所有者名称与身份证证件上的名称是否完全一致,如不一致,请您修改后重新提交。 ### 身份证号码问题: 请您仔细确认您所填写的身份证件号码是否正确,如不正确,请您修改后重新提交。 ### 检查无误 若您检查相关信息后没有发现任何错误请您联系 [在线客服](https://www.bt.cn/new/wechat_customer) 进行咨询。 --- source: https://docs.bt.cn/domain/faq/registerdomainname.md.txt # 域名注册常见问题 FAQ > 解决域名长时间处于注册中状态、.top 后缀处理、域名注册后是否可修改与退款、注册后无法解析等常见问题,附备案与客服接入指引。 # 域名注册 本文档将为您介绍如何解决域名注册相关问题,您可通过右侧目录快速选择您遇到的问题。 ## 域名为什么长时间处于注册中状态? 1. 请您检查是否有维护公告,若有,请检查公告内是否有您所注册的域名后缀,如 `.wiki` 等,若有,请您耐心等待注册局完成维护。 2. 若控制台无维护公告,请您确认您是否注册了 `.top` 后缀的域名,若是,请您等待一个工作日查看域名注册状态。 3. 若您不符合上述条件,且您注册的域名已经超过一个工作日仍处于注册中状态,请您联系客服进行咨询。 ## 域名注册后能否修改域名? 域名一经注册后不支持修改,若您需要修改域名,请您重新进行注册。 ## 域名注册后能否删除/退款? 目前不支持删除域名,暨不支持退款。 ## 域名注册后无法解析? 请您参考 [域名故障](domainfailure)。 --- source: https://docs.bt.cn/domain/practical-tutorials/aliyun-dns-server-setup.md.txt # 域名 DNS 服务器修改到阿里云 DNS > 完整演示如何在阿里云 DNS 控制台添加域名、获取 ns1.alidns.com 与 ns2.alidns.com,并在宝塔域名后台修改 NS 记录实现从默认 DNS 迁移至阿里云。 # 域名解析服务器修改到阿里云 DNS 本文将详细介绍如何将您的域名DNS解析服务器从当前堡塔域名注册默认 DNS 修改为阿里云 DNS,以便使用阿里云 DNS 提供的专业DNS解析服务。阿里云 DNS 作为阿里云旗下的专业 DNS 解析服务商,提供稳定、快速、安全的域名解析服务。 ## 前提条件 ### 基本要求 - 域名状态正常,无锁定或冻结状态 - 已注册阿里云账号,若无账号,请前往 [阿里云官网](https://account.aliyun.com/) 注册 ## 操作步骤 ### 第一步:添加域名到阿里云 DNS 1. 登录[阿里云 DNS 控制台](https://dns.console.aliyun.com/)后,点击"添加域名" ![添加域名](https://docs.bt.cn/img/practical-tutorials/aliyun-dns-add-domain.png) 2. 输入您要托管的域名,点击"确定" ![输入域名](https://docs.bt.cn/img/practical-tutorials/aliyun-dns-input-domain.png) ### 第二步:获取阿里云 DNS 服务器地址 添加域名后,阿里云会分配专用的DNS服务器地址: ``` # 仅供参考,请以实际为准 ns1.alidns.com ns2.alidns.com ``` ![DNS服务器地址](https://docs.bt.cn/img/practical-tutorials/aliyun-dns-servers.png) :::info 说明 阿里云 DNS 服务器地址通常为固定地址,但请以您账号中显示的为准。 ::: ### 第三步:配置DNS解析记录(可选) 在修改DNS服务器前,如您已经在堡塔添加了域名解析记录,请先将这些记录手动添加到阿里云 DNS 中,确保解析记录一致,避免网站或服务中断。 ### 第四步:修改域名 DNS 服务器 1. 登录 [堡塔域名管理](https://www.bt.cn/domain/domain/list) 2. 找到要修改的域名,点击"管理" ![域名管理](https://docs.bt.cn/img/practical-tutorials/bt-domain-management.png) 3. 在域名管理页面,点击"修改 DNS 服务器" ![DNS管理](https://docs.bt.cn/img/practical-tutorials/bt-dns-management.png) 4. 将DNS服务器修改为阿里云 DNS 分配的地址(请以实际分配的地址为准,此处仅作演示): ``` ns1.alidns.com ns2.alidns.com ``` ![修改DNS服务器](https://docs.bt.cn/img/practical-tutorials/bt-modify-aliyun-dns-servers.png) 5. 点击"确定"保存修改 :::info 说明 - DNS服务器修改后,全球 DNS 系统需要一定时间来更新新的解析信息,这个过程称为 DNS 传播。通常情况下,DNS传播时间为几分钟到 72 小时不等,具体时间取决于各地 ISP 的缓存刷新频率。 - 在 DNS 传播完成前,部分用户可能仍然访问到旧的 DNS 服务器,如果您在修改后 72 小时内修改记录请同时在堡塔域名后台和阿里云 DNS 后台进行修改。 ::: ### 第五步:验证 DNS 服务器修改是否生效 修改完成约半小时后,您可以返回阿里云 DNS 控制台,查看域名状态是否显示为"正常"。 ![DNS状态](https://docs.bt.cn/img/practical-tutorials/aliyun-dns-domain-status.png) --- source: https://docs.bt.cn/domain/user-guide/dns/domain-hosting.md.txt # 将域名解析托管到宝塔 > 在宝塔域名后台添加二级域名并将 NS 修改为 ns1.baotadns.com 与 ns2.baotadns.com,实现将 DNS 解析权托管到宝塔 DNS,24–48 小时内生效,供后续解析记录增删改查。 # 域名解析托管到宝塔 ## 操作场景 若您需要将域名的解析权托管在宝塔并进行解析,可以参考以下操作。本文档将指导您将域名的解析权托管在宝塔并进行解析。 ## 操作指南 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 点击【添加域名】,在展开的窗口中,填写需要进行托管的二级域名,如 `example.com`、`bt.cn` 等二级域名 ![添加域名](https://docs.bt.cn/img/user-guide/add-domain-dialog.png) 3. 填写域名备注信息(可选) 4. 点击【确认添加】 :::info DNS服务器设置 添加域名后,您需要将 DNS 服务器修改为: - ns1.baotadns.com - ns2.baotadns.com 请在您的域名所在注册商处修改为上述地址,修改完后一般 24-48 小时内生效。 ::: :::tip 说明 - 域名托管完成后,您可以在宝塔DNS管理后台对域名进行解析记录的增删改查操作 - 如果在操作过程中遇到问题,请联系宝塔客服获取帮助 - 建议在修改DNS服务器前,先记录现有的解析记录,以便在需要时恢复 ::: --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/aaaa-record.md.txt # 添加 AAAA 记录:域名指向 IPv6 地址 > 在堡塔域名解析后台添加 AAAA 记录将主机记录指向 IPv6 地址,详解主机记录、默认与运营商分线路设置、IPv6 记录值填写规范与 TTL 选型,适用于双栈与纯 IPv6 站点接入场景。 # 设置AAAA记录 ## 操作场景 通过添加AAAA记录可将域名指向一个IPv6地址。本文档指导您如何添加AAAA记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置AAAA记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加AAAA记录](https://docs.bt.cn/img/user-guide/add-aaaa-record.png) - **主机记录**:填写子域名。例如,添加 `www.example.com` 的解析,您在"主机记录"处选择"www"即可。如果只是想添加 `example.com` 的解析,您在"主机记录"处选择"@"即可。 - **记录类型**:选择"AAAA"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析。如果您希望特定用户指向特定的IP,可以通过分线路的方式进行设置。例如,联通用户单独访问 `2001:db8::1`,其他用户访问 `2001:db8::2`。 - **记录值**:填写IP地址,只可以填写IPv6地址。例如,您需要访问的IPv6地址为 `2001:db8::1`,则填写 `2001:db8::1`。 - **MX/权重**:同一条主机记录相同的线路,可以针对不同的记录值设置权重,解析时将根据设置的权重比例进行返回。输入范围为0~100的整数。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-security/transfer-lock.md.txt # 设置域名禁止转移锁(clientTransferProhibited) > 在宝塔为单个域名开启 clientTransferProhibited 锁,防止域名被恶意转出到其他注册商;提醒与禁止更新锁互斥、开关入口与适用范围。 # 设置禁止转移锁 ## 操作背景 本文将帮助您了解如何开启或关闭禁止转移锁功能。 :::info 功能说明 禁止转移锁(clientTransferProhibited)可以防止域名被恶意转移到其他注册商,是域名安全保护的重要手段之一。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 域名处于正常状态(非争议、非冻结状态) - 如已开启禁止更新锁,需先关闭该功能 ## 操作步骤 ### 开启禁止转移锁 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 在域名列表中,找到需要开启禁止更新锁的域名,点击"管理"按钮 ![域名列表管理](https://docs.bt.cn/img/user-guide/domain-security-manage.png) 3. 在域名详情页面,选择"域名安全"选项卡,进入域名安全页面 ![域名安全页面](https://docs.bt.cn/img/user-guide/domain-security-tab.png) 4. 在域名安全页面中,找到"禁止转移锁"设置项,点击开关按钮开启 ![开启禁止转移锁](https://docs.bt.cn/img/user-guide/enable-transfer-lock.png) :::warning 重要说明 - 已开启禁止更新锁状态时,不能开启或关闭禁止转移锁状态 - 开启后将禁止该域名从宝塔转出到其他注册商 - 如需转移域名,请先关闭此功能 ::: 5. 系统会显示开启成功的提示,禁止转移锁即时生效 ### 关闭禁止转移锁 如需将域名转移到其他注册商,需要先关闭禁止转移锁: 1. 按照上述步骤进入域名安全页面 2. 在"禁止转移锁"设置项中,点击开关按钮关闭 ![关闭禁止转移锁](https://docs.bt.cn/img/user-guide/disable-transfer-lock.png) :::warning 重要提醒 - 已开启禁止更新锁状态时,不能开启或关闭禁止转移锁状态 - 关闭后将允许该域名从宝塔转出到其他注册商 ::: 4. 关闭禁止转移锁后,即可进行域名转移操作 :::tip 安全提醒 完成域名转移后,建议在新注册商处立即重新开启禁止转移锁。 ::: 5. 系统会显示关闭成功的提示,禁止转移锁即时失效 ## 状态查看与管理 ### 查看转移锁状态 **在域名列表查看:** 在“域名详情”页面,可以在域名状态列看到相关保护状态。 **在WHOIS信息查看:** 开启禁止转移锁后,在域名WHOIS查询结果中会显示: ``` Domain Status: clientTransferProhibited ``` ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 域名名称 - 具体问题描述 - 相关操作截图(如有) ## 相关文档 - [设置禁止更新锁](./update-lock.md) - [域名转入操作指南](../domain-transfer-in.md) - [域名状态相关](../../faq/domain-status.md) :::tip 安全建议 禁止转移锁是域名安全保护的基础功能,建议所有域名都应该开启。对于重要的商业域名,还应该配合其他安全措施,如禁止更新锁、注册局安全锁等,构建多层次的安全防护体系。 ::: --- source: https://docs.bt.cn/domain/user-guide/info-template.md.txt # 域名实名信息模板管理 > 在宝塔创建个人与企业两类域名信息模板并提交实名认证,使后续域名注册、所有者变更、实名审核能一键调用所选模板信息,由系统自动上传资料。 # 信息模板管理 ## 操作场景 域名信息模板可以方便您在办理域名注册、域名所有者变更、域名实名认证等过程中快速填写相关信息,通过提前将域名注册者的相关信息保存为模板,在办理域名相关业务需要填写信息时即可使用对应注册者的信息模板。 如果域名信息模板已实名认证,在注册要求实名认证的域名时可以直接选择"已实名认证"状态的信息模板,系统将在域名注册成功后自动上传资料完成域名实名认证。 ## 前提条件 已登录[宝塔域名管理后台](https://www.bt.cn/domain/real-name) ## 操作步骤 ### 新建域名信息模板 1. 在左侧导航栏中,选择**实名信息模板**,进入信息模板管理页面。 2. 单击**创建实名模板**,进入新建信息模板页面。 ![信息模板列表](https://docs.bt.cn/img/user-guide/info-template-list.png) 3. 选择模板类型:**个人** 或 **企业**。 :::info 说明 用户类型选择个人或企业,均不影响使用,只是在注册域名时,不同的用户类型需要提交不同的实名审核资料。 ::: #### 填写模板信息 选择**个人**类型后,需要填写以下信息: ![个人用户信息填写](https://docs.bt.cn/img/user-guide/personal-template.png) **基础信息:** | 字段 | 说明 | | --- | --- | | 模板名称 | 请输入模板名称,如:个人备案模板_2023 | | 模板类型 | 选择"个人" | | 证件类型 | 选择身份证 | **身份认证:** | 字段 | 说明 | | --- | --- | | 身份证人像面 | 点击上传身份证人像面照片,支持JPG、JPEG、PNG格式,≤2MB | | 身份证国徽面 | 点击上传身份证国徽面照片,支持JPG、JPEG、PNG格式,≤2MB | | 证件号码 | 请输入身份证号码 | **中文模板信息:** | 字段 | 说明 | | --- | --- | | 域名所有者 | 请输入域名所有者姓名(必须与身份证姓名完全一致) | | 联系人 | 请输入联系人姓名 | | 联系电话 | 请输入联系电话 | | 电子邮箱 | 请输入电子邮箱 | | 所在地区 | 请选择所在地区 | | 详细地址 | 请输入详细地址 | | 邮政编码 | 请输入邮政编码 | **英文模板信息:** | 字段 | 说明 | | --- | --- | | 英文名称 | 请输入域名所有者英文名称 | | 英文地址 | 请输入英文详细地址 | 选择**企业**类型后,需要填写以下信息: ![企业用户信息填写](https://docs.bt.cn/img/user-guide/enterprise-template.png) **基础信息:** | 字段 | 说明 | | --- | --- | | 模板名称 | 请输入模板名称,如:企业备案模板_2023 | | 模板类型 | 选择"企业" | | 证件类型 | 选择营业执照 | **营业执照:** | 字段 | 说明 | | --- | --- | | 营业执照 | 点击上传营业执照照片,支持JPG、JPEG、PNG格式,≤2MB | **统一社会信用代码:** | 字段 | 说明 | | --- | --- | | 统一社会信用代码 | 请输入统一社会信用代码 | **身份认证:** | 字段 | 说明 | | --- | --- | | 身份证人像面 | 点击上传经办人身份证人像面照片,支持JPG、JPEG、PNG格式,≤2MB | | 身份证国徽面 | 点击上传经办人身份证国徽面照片,支持JPG、JPEG、PNG格式,≤2MB | **中文模板信息:** | 字段 | 说明 | | --- | --- | | 域名所有者 | 请输入域名所有者名称(必须与营业执照名称完全一致) | | 联系人 | 请输入联系人姓名(必须是具体的人名,不能使用企业名称) | | 联系电话 | 请输入联系电话 | | 电子邮箱 | 请输入电子邮箱 | | 所在地区 | 请选择所在地区 | | 详细地址 | 请输入详细地址 | | 邮政编码 | 请输入邮政编码 | **英文模板信息:** | 字段 | 说明 | | --- | --- | | 英文名称 | 请输入域名所有者英文名称 | | 英文地址 | 请输入英文详细地址 | #### 提交模板 :::warning 注意事项 - 上传的证件图片须为彩色扫描件或高清数码照片,内容清晰可见并包含完整证件边框 - 图片格式支持:JPG、JPEG、PNG,文件大小≤2MB - 证件信息必须真实有效,确保与填写信息一致 - **个人用户**:域名所有者必须与身份证姓名完全一致 - **企业用户**:域名所有者必须与营业执照名称完全一致,联系人必须是具体的人名 ::: 4. 所有信息填写完成后,点击**提交关联** 按钮提交模板。 5. 提交后系统将进行审核,审核时间一般为1-3个工作日。您可以在模板列表中查看审核状态。 :::tip 提示 - 审核通过的模板状态将显示为"已认证" - 如果审核失败,请根据失败原因修改信息后重新提交 - 建议提前准备好所需证件的清晰照片,以便快速完成模板创建 ::: ### 管理信息模板 1. 在左侧导航栏中,选择**实名信息模板**,进入信息模板管理页面。 2. 在模板列表中,您可以查看所有已创建的模板信息。 3. 您可以在此页面进行以下操作: - **删除模板**:点击操作列的"删除"按钮删除不需要的模板 ![信息模板列表](https://docs.bt.cn/img/user-guide/info-template-list.png) ### 模板状态说明 | 状态 | 说明 | | --- | --- | | 待审核 | 模板已提交,正在进行人工审核 | | 已认证 | 模板审核通过,可正常使用 | | 审核失败 | 模板审核未通过,需要重新提交或修改信息 | ## 注意事项 ### 证件要求 - **个人用户**:需提供身份证正反面照片 - **企业用户**:需提供营业执照和经办人身份证正反面照片 - 所有证件图片必须清晰、完整,包含完整边框 - 支持格式:JPG、JPEG、PNG - 文件大小:≤2MB ### 填写规范 - **个人用户**:域名所有者必须与身份证姓名完全一致 - **企业用户**:域名所有者必须与营业执照名称完全一致 - **企业用户**:联系人必须填写具体的人名,不能使用企业名称 - **企业用户**:身份证信息填写经办人身份证即可,不要求法人身份证 - 英文信息建议使用拼音或英文翻译 - 联系电话和邮箱必须真实有效 - 地址信息要详细准确 ### 审核说明 - 审核时间:1-3个工作日 - 审核失败后可修改信息重新提交 - 审核通过的模板可重复使用 --- source: https://docs.bt.cn/domain/api/dns-records/check-domain-status.md.txt # API·检查域名状态 > POST /api/v1/dns/manage/check_domain_status 接口,查询指定域名的注册信息、NS 当前/期望记录与解析状态,适用于判断 NS 是否已指向宝塔云解析。 # 检查域名状态 ## 接口描述 检查指定域名的详细状态信息,包括注册信息、DNS 配置、解析状态等。 **接口地址:** `POST /api/v1/dns/manage/check_domain_status` ## 输入参数 ### 请求示例 ```json { "domain_id": 14, "domain_type": 2 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | domain_id | 是 | Integer | 域名 ID | | domain_type | 是 | Integer | 域名类型:1(平台域名)、2(外部域名) | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": { "check_result": 0, "check_time": "2025-09-09 15:19:17", "current_ns": [], "domain_id": 14, "domain_type": 2, "expected_ns": [ "ns1.51dns.com", "ns2.51dns.com" ], "full_domain": "example.com", "status_text": "检测中" }, "msg": "DNS状态检测完成", "status": true } ``` **错误响应:** ```json { "code": 404, "msg": "域名不存在", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 域名状态详细信息 | **data 字段说明:** | 参数名称 | 类型 | 描述 | |---------|------|------| | check_result | Integer | 检查结果状态码 | | check_time | String | 检查时间 | | current_ns | Array | 当前 DNS 服务器列表 | | domain_id | Integer | 域名 ID | | domain_type | Integer | 域名类型:1(平台域名)、2(外部域名) | | expected_ns | Array | 期望的 DNS 服务器列表 | | full_domain | String | 域名名称 | | status_text | String | 状态描述文本 | ## 状态说明 ### 检查结果状态码 (check_result) | 状态码 | 描述 | |--------|------| | 0 | 检测进行中 | | 1 | 检测成功,DNS配置正确 | | 2 | 检测失败,DNS配置错误 | ### 域名类型 (domain_type) | 类型值 | 描述 | |--------|------| | 1 | 平台域名 | | 2 | 外部域名 | --- source: https://docs.bt.cn/domain/faq/domaintransferin.md.txt # 域名转入常见问题 FAQ > 域名转入宝塔需 7 个工作日左右,需同时续费 1 年;讲解转出商快速确认、Whois 缓存、转移密码错误、信息不匹配等转入失败原因与后续变更注意事项。 # 域名转入 ## 为什么域名转入会收取费用? 域名转入本身不收费,但根据ICANN和注册局的相关规定,转入通常必须附带至少 1 年续费,因此会收取相应的续费费用,转入成功后域名的有效期会延长 1 年。 ## 为什么转入好多天还没转入宝塔? 域名转入宝塔一般需要 7 个工作日左右,实际速度取决于原注册商确认转出的速度,若原注册商支持手动确认转出,则一般在半小时内即可转入宝塔,若不支持,请您耐心等待七个工作日后再次查看。 手动确认转出 手动转出又称快速确认转出,目前已知支持快速转出的国内注册商有:阿里云(万网)、腾讯云、西部数码、易名、中资源、爱名网等,具体操作方式请您咨询原注册商客服。 ## 为什么已经转入宝塔,但查询 whois 信息还是原注册商? 一般来讲该问题是由于 whois 查询网站的 whois 缓存未刷新导致的,您可在查询页面上点击诸如刷新缓存此类的按钮或使用 [whois 查询工具](https://tools.ddnsip.cn/)进行查询。 ## 为什么 Whois 查询显示注册商已经发生改变了但是控制台还是提示转入中? 若您通过 Whois 工具查询域名注册商已发生改变,但是控制台仍然提示转入中,您可等待一小时左右再次查看是否转入成功,若仍显示转入中,请您联系客服处理。 ## 域名转入后会影响备案吗? 域名转入后,在域名所有者、域名所有者证件类型、证件号码等信息未发生变化的情况下,不会影响备案。但如果这些信息发生了变化,则需要重新备案。 ## 域名转入不成功的原因? 1. **转移密码错误**:请确认转移密码是否正确 2. **域名状态异常**:域名可能处于锁定状态 3. **时间限制**:域名注册或续费时间不满足转入条件 4. **未及时确认**:未在规定时间内确认转入邮件 5. **信息不匹配**:域名信息与转入信息不一致 ## 转入后需要注意什么? 1. **DNS解析**:确认DNS解析是否正常 2. **续费管理**:及时关注域名到期时间 3. **信息变更**:如需修改域名信息,请在转入完成后操作 --- source: https://docs.bt.cn/domain/faq/realnameofamain/idcard.md.txt # 实名证件上传失败解决方案 > 域名实名证件图片上传失败时,检查格式是否为 JPG/PNG/BMP、大小 55KB–5MB,同时推荐使用最新版 Chrome 或切换手机/微信上传。 # 实名证件 ## 如何解决证件上传失败问题? 1. 请您确保证件图片格式为 `JPG`、`PNG`、`BMP` 等,大小为 55KB~5MB。 2. 您可尝试使用最新版本的 Chrome 浏览器上传证件图片。 3. 您可尝试切换设备进行上传,如使用手机微信登录宝塔面板小程序创建实名模板或切换电脑浏览器创建实名模板。 4. 若以上方法均无法解决问题,请您联系 [在线客服](https://www.bt.cn/new/wechat_customer) 进行处理。 --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/cname-record.md.txt # 添加 CNAME 记录:别名指向其他域名 > 使用 CNAME 将主机记录别名指向另一个域名,适用 CDN 加速、企业邮箱等场景;提醒 @ 记录对 MX 的影响与多线路、权重、TTL 配置。 # 设置CNAME记录 ## 操作场景 如果需要将域名指向另一个域名,再由另一个域名提供IP地址,就需要添加CNAME记录,最常用到CNAME的场景包括做CDN、做企业邮箱。本文档指导您如何添加CNAME记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置CNAME记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加CNAME记录](https://docs.bt.cn/img/user-guide/add-cname-record.png) - **主机记录**:填写子域名。例如,添加 `www.example.com` 的解析,您在"主机记录"处选择"www"即可。如果只是想添加 `example.com` 的解析,您在"主机记录"处选择"@"即可。"@"的CNAME会影响到MX记录的正常解析,添加时请您慎重考虑。 - **记录类型**:选择"CNAME"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析。例如,您需要将联通用户指向 `example2.com`,所有非联通用户都指向 `example1.com`。您可以通过添加线路类型为默认、记录值为 `example1.com` 和线路类型为联通、记录值为 `example2.com` 的两条CNAME记录来实现。 - **记录值**:CNAME指向的域名,只可以填写域名。 - **MX/权重**:同一条主机记录相同的线路,可以针对不同的记录值设置权重,解析时将根据设置的权重比例进行返回。输入范围为0~100的整数。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-certificate.md.txt # 下载域名证书(所有权证明) > 在宝塔域名后台下载已实名认证域名的电子版证书,作为域名所有权凭证;说明证书下载入口、打印与备案/法务场景使用要点。 # 域名证书下载 ## 操作场景 本文档指导您下载域名注册成功且实名认证通过后自动生成的域名证书。该域名证书可证明该域名归您所有。 :::warning 注意 - **证书格式**:宝塔仅支持下载域名证书电子版 - **打印说明**:若您需纸质域名证书,请您下载后自行打印 ::: ## 操作步骤 1. 登录[宝塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 在待下载域名证书的域名行中,点击域名或"管理",进入域名详情页 ![域名详情入口](https://docs.bt.cn/img/user-guide/domain-certificate-detail-entry.png) 3. 在"基本信息"选项卡中,单击**下载证书**按钮。如下图所示: ![下载域名证书](https://docs.bt.cn/img/user-guide/domain-certificate-detail.png) 4. 证书将自动下载到浏览器默认下载目录 ## 相关文档 - [域名注册](./domain-registration.md) - [域名实名认证](./domain-filing.md) - [信息模板管理](./info-template.md) - [域名续费](./domain-renewal.md) - [域名转入](./domain-transfer-in.md) - [公安备案指南](./police-filing-guide.md) --- source: https://docs.bt.cn/domain/user-guide/domain-filing.md.txt # 域名 ICP 备案指南:流程与材料准备 > 详解对中国境内提供服务的网站/APP 必须完成 ICP 备案的依据,包含域名注册→实名认证→ICP 备案→解析→SSL 安装全流程、各环节预计耗时与服务商接入备案说明。 # 域名备案指南 ## 操作场景 根据[国务院令第292号《互联网信息服务管理办法》](https://www.gov.cn/gongbao/content/2000/content_60531.htm)和[《非经营性互联网信息服务备案管理办法》](https://www.gov.cn/gongbao/content/2005/content_93018.htm)规定,国家对经营性互联网信息服务实行许可制度,对非经营性互联网信息服务实行备案制度。未获取许可或者未履行备案手续的,不得从事互联网信息服务,否则属于违法行为。 因此,所有对中国境内提供服务的网站/APP(非经营性互联网信息服务)都必须先进行 ICP 备案,备案成功并获取通信管理局下发的 ICP 备案号后才能开通访问。**但堡塔作为域名注册服务提供商,无法直接为用户提供 ICP 备案服务,您需要前往服务器提供商处进行备案申请,本文仅提供备案所需材料和流程的参考。** ### 域名注册、ICP备案及域名解析流程 ```mermaid flowchart LR A[域名注册] --> B[域名实名认证] B --> C[ICP备案] C --> D[域名解析] D --> E[安装SSL证书] A1[所需时间:10-15分钟] B1[需审核通过
所需时间:3-7个工作日] C1[审核通过所需时间:
接入商审核:约1-2个工作日
各省通信管理局审核:约20个工作日] D1[所需时间:10-15分钟] E1[所需时间:0-1个小时] A --- A1 B --- B1 C --- C1 D --- D1 E --- E1 style A fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style B fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style C fill:#F5A623,stroke:#333,stroke-width:2px,color:#fff style D fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style E fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style A1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style B1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style C1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style D1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style E1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px ``` :::warning 重要提醒 ICP备案是整个流程中耗时最长的环节,建议您: 1. 提前准备好所有备案材料 2. 确保域名实名认证信息与备案主体信息一致 3. 在域名实名认证完成3天后再提交备案申请 4. 保持备案联系电话畅通,及时响应管局核查 ::: ### 详细备案操作流程 ```mermaid flowchart LR A[进入接入商备案入口] --> B[填写主体信息] B --> C[材料上传] C --> D[提交初审] D --> E[短信核验] E --> F[等待管局审核] F --> G[备案完成] A1[所需时间:5-10分钟] B1[需准备各类证件
所需时间:30-60分钟] C1[接入商审核
所需时间:1-2个工作日] D1[工信部短信验证
所需时间:24小时内完成] E1[各省通信管理局审核
所需时间:约20个工作日] F1[获得ICP备案号] A --- A1 C --- B1 D --- C1 E --- D1 F --- E1 G --- F1 style A fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style B fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style C fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style D fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style E fill:#F5A623,stroke:#333,stroke-width:2px,color:#fff style F fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style G fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff style A1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style B1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style C1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style D1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style E1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px style F1 fill:#f9f9f9,stroke:#ddd,stroke-width:1px ``` ## 材料准备 以下是进行 ICP 备案所需的基本材料,详细材料请参照各厂商的要求: - [备案所需材料——腾讯云](https://cloud.tencent.com/document/product/243/18914) - [ICP备案所需资料——阿里云](https://help.aliyun.com/zh/icp-filing/basic-icp-service/user-guide/required-materials) - [准备备案材料——华为云](https://support.huaweicloud.com/prepare-icp/icp_02_0045.html) ### 材料准备清单 #### 个人备案清单 - [ ] 身份证正反面照片(高清) - [ ] 域名证书(部分省份需要,[如何获取域名证书](./domain-certificate.md)) - [ ] 域名实名认证截图(部分厂商用作实名核验比对) - [ ] 暂住证/居住证(在非户籍地备案时需要提供) - [ ] 网站建设方案书(主体下备案网站达到一定数量时需要提供) - [ ] APP 图标(如涉及移动应用) #### 企业备案清单 - [ ] 企业营业执照或相关证件 - [ ] 法定代表人身份证正反面 - [ ] 网站负责人身份证正反面 - [ ] 法定代表人授权书(如适用) - [ ] 主体负责人授权书(如适用) - [ ] ICP 负责人授权书(如适用) - [ ] 域名证书(如适用,[如何获取域名证书](./domain-certificate.md)) - [ ] 域名实名认证截图(非注册商域名) - [ ] 前置审批文件(特殊行业) - [ ] 网站建设方案书(多域名时) - [ ] APP 图标(如涉及移动应用) **特殊行业前置审批** 如果您的网站涉及以下内容,需要先获得相关部门的前置审批文件: | 行业类型 | 审批部门 | 所需文件 | | --- | --- | --- | | **新闻** | 国家互联网信息办公室 | 互联网新闻信息服务许可证 | | **出版** | 国家新闻出版署 | 互联网出版许可证 | | **药品信息** | 国家药品监督管理局 | 互联网药品信息服务资格证书 | | **医疗器械** | 国家药品监督管理局 | 互联网药品信息服务资格证书 | | **广播电视** | 国家广播电视总局 | 信息网络传播视听节目许可证 | | **文化娱乐** | 文化和旅游部 | 网络文化经营许可证 | | **医疗服务** | 卫生健康委员会 | 互联网医疗卫生信息服务许可证 | :::warning 重要提醒 - 前置审批必须在备案前完成 - 不同省份对前置审批的要求可能不同 - 建议在准备备案前先咨询相关审批部门 ::: :::info 材料说明 - 所有证件需提供原件拍照或彩色扫描件,包含完整边框 - 请勿上传复印件照片、黑白扫描件、证件翻拍照片 - 如需添加水印,文字样式只能为:"仅限 ICP 备案使用" - 建议使用最新证件进行备案 ::: ### 备案域名要求 在堡塔注册域名满足以下条件: - 备案的域名要求为工信部批复的域名后缀 - 域名注册在境内有资质的服务商 **但您需要注意以下几点:** - 备案的域名实名认证完成后需要约三天时间将实名认证信息入库工信部。建议您在实名认证完成后**至少等待三天**,待实名信息同步入库工信部后再申请 ICP 备案,否则可能存在管局审核时检查不到最新域名实名认证信息,导致 ICP 备案失败的风险。 - 申请备案时填报的备案主体信息应与域名所有者实名认证信息相符,包括但不限于: - 域名所有者姓名/公司名称 - 域名所有者身份证号码/统一社会信用代码 - 域名所有者证件类型需要与ICP备案时所用证件类型一致 ## 操作步骤 以下步骤仅作参考,详情参考各云服务商的文档: - [如何快速备案您的网站或 APP——腾讯云](https://cloud.tencent.com/document/product/243/39038) - [ICP备案流程——阿里云](https://help.aliyun.com/zh/icp-filing/basic-icp-service/user-guide/icp-filing-application-overview) - [快速完成ICP备案——华为云](https://support.huaweicloud.com/qs-icp/icp_07_0002.html) ### 第一步:进入备案系统 1. 登录云服务商控制台 2. 找到"网站备案"或"ICP备案"入口 ![备案入口](https://docs.bt.cn/img/user-guide/icp-filing-entry.png) 3. 点击"开始备案"进入备案系统 ### 第二步:准备备案材料 1. **查看管局规则**:了解所在省份的具体备案要求 - [各省管局要求-腾讯云](https://cloud.tencent.com/document/product/243/3474) - [学习各地区管局ICP备案规则-阿里云](https://help.aliyun.com/zh/icp-filing/basic-icp-service/user-guide/understand-the-icp-filing-rules-of-each-regional-authority) - [各地区管局备案要求-华为云](https://support.huaweicloud.com/prepare-icp/icp_02_0005.html) 2. **准备证件材料**: - 个人备案:身份证正反面 - 企业备案:营业执照、法人身份证、负责人身份证 3. **准备域名材料**:确保域名已完成实名认证 ### 第三步:填写备案信息 #### 3.1 填写主体信息 1. 填写备案主体基本信息(个人或企业) 2. 填写主体负责人信息 3. 填写联系地址和联系方式 4. 确保所有信息与证件完全一致 #### 3.2 填写网站信息 1. **网站名称**: - 个人网站:不能包含企业、组织性质词汇 - 企业网站:建议与企业业务相关 2. **网站内容**:选择与实际用途相符的分类(如果是个人网站,一般选择其他) 3. **域名信息**:填写需要备案的域名 4. **服务器信息**:选择对应的云服务器实例 5. **备注/网站内容**:填写网站的具体内容和用途(例如:企业官网使用,展示企业产品信息和企业动态) ![填写网站信息](https://docs.bt.cn/img/user-guide/icp-filing-website-info.png) ### 第四步:上传备案材料 1. **上传证件照片**: - 确保照片清晰完整 - 包含证件四个边角 - 光线充足,无反光 2. **按要求拍照**:部分平台要求现场拍照,不能使用已有照片 3. **上传特殊材料**:如域名证书([获取方法](./domain-certificate.md))、授权书等(根据要求) ![上传备案材料](https://docs.bt.cn/img/user-guide/icp-filing-upload-materials.png) ### 第六步:实名认证核验 1. 根据系统提示进行人脸识别认证 2. 确保光线充足,面部清晰 3. 按照指示完成指定动作 4. 等待系统验证通过 ### 第七步:提交初审 1. 检查所有信息无误 2. 确认服务条款 3. 提交备案申请 4. 等待接入商初审(通常1-2个工作日) ### 第八步:电话核验 1. **接听核验电话**: - 时间:工作日上午或下午 - 来电:接入商客服 2. **核验内容**: - 确认身份信息 - 核实联系方式 - 确认网站用途 - 核实备案信息真实性 3. **注意事项**:保持电话畅通,信息回答要与提交的一致 ### 第九步:短信核验 1. **接收短信**:接入商初审通过后,工信部发送短信到备案手机号 2. **验证步骤**: - 点击短信中的验证链接 ![短信验证码](https://docs.bt.cn/img/user-guide/icp-filing-sms-verification.png) - 输入验证码 - 输入证件号码后6位 - 输入手机号码 ![短信核验](https://docs.bt.cn/img/user-guide/icp-filing-miit-sms-verification.png) 3. **时间限制**:必须在24小时内完成,否则申请被退回 ### 第十步:管局审核 1. **提交管局**:完成短信核验后自动提交至省通信管理局 2. **审核时间**:7-20个工作日(各省不同) 3. **等待结果**: - 审核通过:获得ICP备案号 - 审核不通过:根据退回意见修改后重新提交 ### 第十一步:备案完成 1. **收到备案号**:格式如"京ICP备12345678号" 2. **网站标识**:在网站底部显著位置添加备案号并链接到工信部备案系统 3. **网站上线**:网站可以正常访问 :::warning 重要提醒 - 备案期间网站不能访问(首次备案) - 短信核验超过24小时未完成会导致申请被退回 - 电话核验时信息必须与提交的完全一致 - 备案成功后必须在网站添加备案号标识 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-security/security-question.md.txt # 设置域名账号密保问题 > 为宝塔域名账号设置密保问题,在执行敏感操作时作为身份验证手段,是启用敏感操作限制、找回密码等高阶安全能力的前置步骤。 # 设置密保问题 ## 操作背景 本文将帮助您了解如何设置和管理域名账号的密保问题。 :::info 功能说明 密保问题是域名账号安全保护的重要手段之一,用于验证您的身份,保护您的域名安全。在进行敏感操作时,系统可能会要求您回答密保问题来验证身份。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 账号处于正常状态 ## 操作步骤 ### 设置密保问题 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/),在左侧导航栏选择【域名安全】 2. 进入域名安全页面后,点击顶部选项卡【基础安全】 ![基础安全](https://docs.bt.cn/img/user-guide/basic-security-tab.png) 4. 在密保问题管理模块,若未设置密保问题,会显示未设置状态,点击【设置密保问题】按钮 ![设置密保问题按钮](https://docs.bt.cn/img/user-guide/set-security-question-btn.png) 6. 在弹出的设置窗口中,按提示完成以下操作: - 手机验证:获取并填写验证码 - 选择密保问题:从下拉列表中选择一个密保问题并填写答案 ![选择密保问题](https://docs.bt.cn/img/user-guide/select-security-question.png) - 点击设置密保完成设置 ![设置密保问题窗口](https://docs.bt.cn/img/user-guide/set-security-question-modal.png) :::warning 重要提醒 - 请选择您能够牢记答案的问题 - 密保答案区分大小写,请准确记忆 - 建议将密保问题和答案安全保存 ::: ### 重置密保问题 如需重置密保问题,请点击【重置密保问题】按钮,按提示完成手机验证和新密保问题设置。 ## 密保问题使用场景 密保问题主要在以下场景中使用: - **敏感操作**:修改重要账号信息时的安全验证 - **域名转移**:域名转出等重要操作的身份确认 - **DNS修改**:修改域名解析记录时的额外验证 ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 账号信息 - 具体问题描述 - 相关操作截图(如有) ## 相关文档 - [设置禁止更新锁](./update-lock.md) - [设置禁止转移锁](./transfer-lock.md) :::info 重要提醒 密保问题是账号安全的重要组成部分,请认真对待密保问题的设置和管理。建议结合其他安全措施,如开启二次验证、设置域名锁等,全面保护您的域名资产安全。 ::: --- source: https://docs.bt.cn/domain/api/dns-records/remove-domain.md.txt # API·删除外部域名 > POST /api/v1/dns/manage/remove_domain 接口,从宝塔域名管理系统中移除外部域名,同时清除该域名的所有解析记录,不可逆调用前需确认。 # 删除外部域名 ## 接口描述 从堡塔域名管理系统中删除外部域名。删除后将无法继续使用堡塔的 DNS 解析服务。 **接口地址:** `POST /api/v1/dns/manage/remove_domain` :::warning 警告 删除域名是不可逆操作,删除后该域名的所有解析记录也将被清除。请确认操作后再执行。 ::: ## 输入参数 ### 请求示例 ```json { "domain_id": 1 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | domain_id | 是 | Integer | 域名 ID | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": { "domain_id": 1, "full_domain": "example.com" }, "msg": "域名移除成功", "status": true } ``` **错误响应:** ```json { "code": 404, "msg": "域名不存在", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据 | **data 字段说明:** | 参数名称 | 类型 | 描述 | |---------|------|------| | domain_id | Integer | 域名 ID | | full_domain | String | 域名名称 | --- source: https://docs.bt.cn/domain/faq/domaintransferout.md.txt # 域名转出与快速转出 FAQ > 介绍如何将宝塔托管域名转出到其他注册商,以及目标注册商提交转入超过半小时后在宝塔后台「同意转出」实现快速转出的完整流程。 # 域名转出 ## 如何将域名转出到其他注册商? 请参考[域名转出教程](../user-guide/domain-transfer-out.md)进行操作。 ## 宝塔是否支持域名快速转出? 支持,在目标注册商提交转入申请超过半小时后,您可以返回宝塔域名管理后台,进入"域名转入转出"页面,选择对应域名并点击"同意转出"按钮,即可快速转出,详情请参考[域名快速转出](../user-guide/domain-transfer-out.md#域名快速转出)。 --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/mx-record.md.txt # 添加 MX 记录:配置邮件服务器 > 通过 MX 记录为域名指定邮件服务器主机,详解主机记录选择(@ 与 mail)、MX 优先级与主/备邮件服务器的 fallback 机制,适用于企业邮箱、外挂邮箱场景。 # 设置MX记录 ## 操作场景 如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。本文档指导您如何添加MX记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置MX记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加MX记录](https://docs.bt.cn/img/user-guide/add-mx-record.png) - **主机记录**:填写子域名,通常选择"@"或"mail"。例如,如果"主机记录"选择"@",邮箱地址是 `xxx@example.com`。如果"主机记录"选择"mail",邮箱地址会变为 `xxx@mail.example.com`。 - **记录类型**:选择"MX"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可。 - **记录值**:可以是域名,也可以是一个IP地址。 - 如果记录值为域名,指向的域名必须有A记录,记录生成后会自动在域名后面补一个"."。例如,设置一个MX记录的记录值为 `mail.example.com`,需要添加一个主机记录为"mail"的A记录。 - 如果记录值为IP地址,直接填写邮件服务器IP即可,记录生成后同样会自动补一个"."。 - **MX/权重**:MX优先级,数值越低,优先级别就越高。 - 邮件会先尝试发送到MX优先级为5的 `mail1.example.com`。 - 如果尝试失败,邮件会发送到MX优先级为10的 `mail2.example.com`。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-security/sensitive-operation-limit.md.txt # 开启域名敏感操作限制与验证 > 在宝塔域名安全中开启敏感操作限制,让修改实名信息、设置转移锁、变更 DNS 等高风险动作必须二次验证身份(密保问题),防止账号被盗后被恶意操作。 # 敏感操作限制 ## 操作背景 本文将帮助您了解如何开启和管理域名账号的敏感操作限制功能。 :::info 功能说明 敏感操作限制是域名账号安全保护的重要功能之一,开启后,域名相关的敏感操作将需要进行身份验证,有效防止账号被恶意操作。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 账号处于正常状态 - 已设置密保问题,以便身份验证 ## 操作步骤 ### 开启敏感操作限制 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/),在左侧导航栏选择【域名管理】 2. 在域名管理页面,点击左侧菜单【域名安全】,进入域名安全页面后,点击顶部选项卡【敏感操作限制】 ![敏感操作限制选项卡](https://docs.bt.cn/img/user-guide/sensitive-operation-tab.png) 3. 在敏感操作限制页面,您可以看到功能开关和相关说明 4. 点击右上角的开关按钮开启敏感操作限制功能 ![开启敏感操作限制](https://docs.bt.cn/img/user-guide/enable-sensitive-operation.png) :::warning 安全提示 建议开启敏感操作限制,这将为您的域名提供额外的安全保护。开启后,执行敏感操作时需要验证您的身份。 ::: 5. 系统会显示开启成功的提示,敏感操作限制即时生效 ### 关闭敏感操作限制 如需关闭敏感操作限制: 1. 按照上述步骤进入敏感操作限制页面 2. 点击右上角的开关按钮关闭功能 3. 关闭需要验证密保问题 ![关闭敏感操作限制](https://docs.bt.cn/img/user-guide/disable-sensitive-operation.png) 4. 验证通过后,敏感操作限制功能将被关闭 ## 身份验证方式 当您执行敏感操作时,系统会要求以下验证方式: ### 密保问题验证 - 回答您预设的密保问题 - 验证通过后可继续操作 ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 账号信息 - 域名名称 - 具体问题描述 - 相关操作截图(如有) ## 相关文档 - [设置密保问题](./security-question.md) - [设置禁止更新锁](./update-lock.md) - [设置禁止转移锁](./transfer-lock.md) :::info 重要提醒 敏感操作限制是保护域名安全的重要措施,建议长期开启。配合其他安全功能使用,可以为您的域名提供全方位的安全保护。请确保您的验证信息准确有效,以便在需要时能够顺利完成身份验证。 ::: --- source: https://docs.bt.cn/domain/user-guide/police-filing-guide.md.txt # 网站公安联网备案指南 > 依据《计算机信息网络国际联网安全保护管理办法》,网站在 ICP 备案后 30 日内到全国互联网安全管理服务平台提交公安联网备案,本文提供注册、填报与审核全流程说明。 # 公安备案指南 ## 操作场景 根据《计算机信息网络国际联网安全保护管理办法》相关规定,各网站在工信部备案成功后,需要在网站开通之日起30日内登录[全国互联网安全管理服务平台](https://beian.mps.gov.cn/#/)完成公安联网备案申请。 :::warning 重要提醒 根据《中华人民共和国计算机信息系统安全保护条例》以及《计算机信息网络国际联网安全保护管理办法》的相关规定,开办网站必须到当地公安机关网安部门办理备案手续,并且在自网络正式联通后的三十日内办理,如果不履行,公安机关会给予警告或者停机整顿不超过六个月的处罚。 ::: :::info 说明 - 建议您使用 Edge、Chrome 80+、Firefox 86+、360极速模式等主流浏览器浏览[全国互联网安全管理服务平台](https://beian.mps.gov.cn/#/)。 - 公安联网备案过程中遇到问题,可向公安联网备案平台邮箱(support@beian.gov.cn)留言。 - 若不方便在线申请,可前往当地县/区级公安局进行咨询和线下申请。 ::: ## 前提条件 - 网站/APP 已完成工信部ICP备案并获得备案号 - 网站已正式开通运行 ## 操作步骤 ### 步骤1:注册与登录 1. **访问公安备案平台** 打开[全国互联网安全管理服务平台](https://beian.mps.gov.cn/#/),点击"用户登录" ![用户登录](https://docs.bt.cn/img/user-guide/police-filing-login.png) 2. **注册账号** 如果没有账号,点击"注册账号"进行注册,如已有账号,直接登录即可 ![注册账号](https://docs.bt.cn/img/user-guide/police-filing-register.png) :::info 账号类型 - **个人备案**:使用个人账号登录 - **企业/单位备案**:使用法人用户账号登录 ::: 3. **实人认证** ![实人认证](https://docs.bt.cn/img/user-guide/police-filing-real-name-auth.png) - 按照页面提示扫描二维码下载"公安一网通办"APP - 使用APP扫描页面二维码进行实人认证 :::info 说明 如果注册后没有正常跳转到公安联网备案登录信息填写页,请在浏览器地址栏输入https://beian.mps.gov.cn/ 进入登录页面。 ::: ### 步骤2:填写开办者主体信息 1. **新增主体** 登录成功后,在业务办理页面点击"新增主体" ![新增主体](https://docs.bt.cn/img/user-guide/police-filing-new-entity.png) 2. **填写主体信息** 根据开办主体性质填写相应信息 3. **上传证件材料** 根据主体类型上传对应的证件照片或扫描件 :::info 说明 属地公安机关不会单独审核开办主体,请您在提交主体申请后,及时填报网站备案、APP或小程序注册登记、安全评估等业务申请 ::: ### 步骤3:填写网站信息 1. **新办网站申请** 主体信息填写完成后,点击"新办网站申请" ![新办网站申请](https://docs.bt.cn/img/user-guide/police-filing-new-website-application.png) 2. 按需填写负责人信息。如下图所示: ![负责人信息](https://docs.bt.cn/img/user-guide/police-filing-responsible-person-info.png) 2. **网站基本信息** | 主要参数 | 详细信息 | |----------|----------| | **网站信息** |**网站名称**:建议与ICP备案网站名称一致。
**网站开通日期**:首次备案通过日期。您可在工信部网站页面输入域名、单位名称或备案号关键字,单击搜索查询审核通过时间。
**主域名**:填写本次备案的域名。
**域名证书**:请前往堡塔域名管理后台获取,详见[域名证书获取指南](./domain-certificate.md)
**域名证书有效期**:即域名证书上的域名注册时间-域名到期时间。
**从域名**:能访问该网站的其他域名。
**IP**:填写您备案云资源的IP地址。![网站信息](https://docs.bt.cn/img/user-guide/police-filing-website-info.png) | | **网络接入服务商** | 请联系您的服务器提供商获取以下信息:![网络接入服务商信息](https://docs.bt.cn/img/user-guide/police-filing-network-access-provider-info.png)
**网络接入服务商名称**:请联系您的服务器提供商
**网络接入商所属区域**:请根据实际服务器所在地填写
**网站接入方式**:选择租赁虚拟空间
**网络接入服务商电话**:请联系您的服务器提供商获取 | | **域名注册服务商** | 请根据您的域名后缀选择对应的注册商信息:![域名注册服务商信息](https://docs.bt.cn/img/user-guide/police-filing-domain-registration-provider-info.png)
**说明**:在宝塔注册的域名,如果在WHOIS查询不到相关信息,请联系宝塔客服获取域名证书查看域名注册服务商信息。

**.cn域名注册服务商信息**:
**域名注册服务商名称**:成都垦派科技有限公司
**域名注册服务商所属区域**:四川省成都市武侯区
**服务商电话**:4000769938

**.com域名注册服务商信息**:
**域名注册服务商名称**:贵州中域智科网络技术有限公司
**域名注册服务商英文名称**:Guizhou Zhongyu Zhike Network Technology Co., Ltd.
**域名注册服务商所属区域**:四川省成都市武侯区
**服务商电话**:4000769938

**.net、.xyz、.icu等国际域名注册服务商信息**:
**域名注册服务商名称**:万商云集(成都)科技股份有限公司
**域名注册服务商英文名称**:Vantage of Convergence (Chengdu) Technology Co., Ltd.
**域名注册服务商所属区域**:四川省成都市武侯区
**服务商电话**:4000769938

**统一联系地址**:四川省成都市武侯区科华北路62号力宝大厦南区12楼13号 | | **服务类型** | 若不涉及,请将"是否提供互联网交互服务"选择为"否"。
若您的"开办主体性质"为"个人":请根据实际情况勾选。
若您的"开办主体性质"为"单位":请根据实际情况勾选。 | | **互联网危险物品信息发布** | 请按照网站涉及范围如实勾选。互联网危险品信息发布,网址内容中前置审批内容选择时,均需要上传相应的资质证明文件以备核实。 | | **相关前置许可** | 若您的"开办主体性质"为"单位",且有前置审批的项目,请如实填写。 | | **网站语种** | 请根据实际情况,如实填写。 | 3. **填写负责人信息** 可直接勾选"同主体负责人"自动填入 ### 步骤4:提交审核 1. **阅读责任书** 仔细阅读《互联网信息服务单位网络安全责任告知书》 2. **确认提交** 阅读完成后点击"确认提交" ![确认提交](https://docs.bt.cn/img/user-guide/police-filing-confirm-submit.png) ### 步骤5:等待审核 您的申请将在30个自然日内,由属地公安机关网安民警进行核验,您可在 “系统通知” 模块查看相关通知; ## 备案通过后的操作 ### 添加备案号标识 公安备案审核通过后,需要在30日内完成以下操作: 1. **获取备案信息** 登录平台,在已备案网站详情中: - 复制网站公安机关备案号 - 下载备案编号图标 - 复制备案编号HTML代码 2. **网站展示要求** 在网站首页底部显著位置添加: ```html
公安备案 京公网安备 11010802XXXXXXX号 ``` ### 备案号查询 可通过[公安联网备案号查询系统](https://beian.mps.gov.cn/#/query/webSearch)查询备案信息 ## 注意事项 在审核期间,公安机关可能会通过电话与您联系,请保持电话畅通,并确保所提供的信息真实有效。 ### 违规处理 请阅读[全国互联网安全管理服务平台](https://beian.mps.gov.cn/#/)上相关政策法规。 ## 参考文档 [公安联网备案流程指引-腾讯云](https://cloud.tencent.com/document/product/243/19142) [公安联网备案操作指南-阿里云](https://help.aliyun.com/zh/icp-filing/basic-icp-service/the-public-security-network-for-the-record-information-fill-in-the-guide) --- source: https://docs.bt.cn/domain/api/dns-records/list-records.md.txt # API·获取解析记录列表 > POST /api/v1/dns/record/list 接口,获取指定域名下 DNS 解析记录列表,支持按 record/value/type/state/remark 多维度筛选与分页返回。 # 获取解析记录列表 ## 接口描述 获取指定域名下的 DNS 解析记录列表,支持分页、筛选和排序。 **接口地址:** `POST /api/v1/dns/record/list` ## 输入参数 ### 请求示例 ```json { "domain_id": 335, "searchKey": "record", "searchValue": "www", "domain_type": 1, "p": 1 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | domain_id | 是 | Integer | 域名 ID | | searchKey | 否 | String | 搜索关键字字段:record、value、type、state、remark | | searchValue | 否 | String | 搜索值 | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | p | 否 | Integer | 页码,从 1 开始,默认为 1 | ### 筛选参数说明 **搜索关键字字段 (searchKey):** - record:按记录名称搜索 - value:按记录值搜索 - type:按记录类型搜索 - state:按记录状态搜索 - remark:按备注信息搜索 **搜索值 (searchValue):** - 配合 searchKey 使用,指定具体的搜索内容 - 支持模糊搜索 **域名类型 (domain_type):** - 1:宝塔内部域名 - 2:外部域名 ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": { "count": 2, "data": [ { "MX": 1, "TTL": 600, "created_at": "Thu, 18 Sep 2025 15:13:52 GMT", "domainID": 196311160, "domain_id": 75, "domain_type": 1, "record": "www", "recordID": 610347283, "record_id": 80, "remark": "1111", "state": 0, "type": "A", "uid": 1112, "value": "192.168.1.1", "viewID": 0 }, { "MX": 1, "TTL": 600, "created_at": "Thu, 18 Sep 2025 15:09:22 GMT", "domainID": 196311160, "domain_id": 75, "domain_type": 1, "record": "@", "recordID": 610347216, "record_id": 79, "remark": "默认解析", "state": 0, "type": "A", "uid": 1112, "value": "192.168.1.1", "viewID": 0 } ], "page": "
1共2条数据
", "row": "20", "shift": "0" }, "msg": "获取解析记录列表成功", "status": true } ``` **错误响应:** ```json { "code": 404, "msg": "域名不存在", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据 | **data 字段说明:** | 参数名称 | 类型 | 描述 | |---------|------|------| | count | Integer | 记录总数 | | data | Array | 记录列表 | | page | String | 分页HTML信息 | | row | String | 每页数量 | | shift | String | 偏移量 | **data 数组中每个记录对象的字段:** | 参数名称 | 类型 | 描述 | |---------|------|------| | MX | Integer | 权重值 | | TTL | Integer | 生存时间(秒) | | created_at | String | 创建时间 | | domainID | Integer | 外部域名系统ID | | domain_id | Integer | 域名 ID | | domain_type | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | record | String | 主机记录 | | recordID | Integer | 外部记录系统ID | | record_id | Integer | 记录 ID | | remark | String | 备注信息 | | state | Integer | 记录状态:0(正常)、1(暂停) | | type | String | 记录类型 | | uid | Integer | 用户 ID | | value | String | 记录值 | | viewID | Integer | 线路类型 ID | --- source: https://docs.bt.cn/domain/faq/domaincertificate.md.txt # 域名证书下载与超大上传处理 FAQ > 宝塔域名证书常见问题:如何下载域名证书,以及备案上传证书图片过大时使用微信压缩、画图工具调整分辨率与压缩上传的解决方法。 # 域名证书 本文档将为您介绍如何解决域名证书相关问题,您可通过右侧目录快速选择您遇到的问题。 ## 如何下载域名证书? 您可以通过域名列表或域名详情页下载域名证书,详细操作步骤请参见 [域名证书下载](../user-guide/domain-certificate.md)。 ## 域名证书文件过大无法上传? 您可能在进行备案时需要上传域名证书,但可能由于域名证书文件大小超出限制,导致无法上传,可参照以下方法进行解决。 ::: ### 方法一:使用微信压缩证书图片 1. 打开微信,通过微信文件传输助手将证书图片发送到手机。 2. 手机中打开微信,单击【文件传输助手】,单击【证书图片】,长按保存到手机。 保存图片前请点击查看原图,待原图加载完成后保存。 ::: 3. 保存后在手机微信将证书图片通过文件传输助手发送到电脑。 选择图片时请不要选择原图,否则将导致此方法失效。 ::: 4. 在电脑中保存刚刚发送的图片,并前往对应的备案系统完成上传。 ### 方法二:使用画图工具压缩证书图片 1. 右键单击证书图片,选择【打开方式】>【画图】。 2. 单击【重设大小】 ![重设大小](https://docs.bt.cn/img/domain/faq-domaincertificate-reset-size.png) 3. 在弹出对话框中将【水平】和【垂直】调整为 `50`,单击【确定】。 ![调整大小](https://docs.bt.cn/img/domain/faq-domaincertificate-resize.png) 4. 调整完成后保存即可。 ### 方法三:使用在线工具压缩证书图片 1. 打开 [在线图片压缩](https://tinypng.com/)。 2. 上传需要压缩的域名证书图片,压缩完成后点击 `Download all` 即可下载压缩后的图片。 ![压缩图片](https://docs.bt.cn/img/domain/faq-domaincertificate-compress.png) --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/txt-record.md.txt # 添加 TXT 记录:SPF、验证与说明 > 使用 TXT 记录为域名增加文本标识与 SPF 反垃圾邮件设置(如 v=spf1 a mx ~all),同时适用于域名所有权验证、三方服务验证场景。 # 设置TXT记录 ## 操作场景 如果希望对域名进行标识和说明,可以使用TXT记录,绝大多数的TXT记录是用来做SPF记录(反垃圾邮件)。本文档指导您如何添加TXT记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置TXT记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加TXT记录](https://docs.bt.cn/img/user-guide/add-txt-record.png) - **主机记录**:填写子域名。例如,添加 `www.example.com` 的TXT记录,您在"主机记录"处选择"www"即可。如果只是想添加 `example.com` 的TXT记录,您在"主机记录"处选择"@"即可。 - **记录类型**:选择"TXT"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析。 - **记录值**:没有固定的格式。大部分时间,TXT记录是用来做SPF反垃圾邮件的。最典型的SPF格式的TXT记录例子为 `v=spf1 a mx ~all`,表示只有这个域名的A记录和MX记录中的IP地址有权限使用这个域名发送邮件。 - **MX/权重**:不需要填写。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-security/global-transfer-lock.md.txt # 全局转移锁:一键锁定账下所有域名 > 在宝塔域名安全中开启全局转移锁,一键为账号下所有域名设置高级别转移防护,适用于长期不需要转移场景,防止账号被盗后批量转出。 # 全局转移锁 ## 操作背景 本文将帮助您了解如何开启和管理全局转移锁功能。 :::info 功能说明 全局转移锁是域名账号安全保护的高级功能,提供高级别的域名转移保护。开启后,所有域名的转移操作将被完全锁定,如需进行域名保护可开启转移锁。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 账号处于正常状态 - 适用于长期不需要转移域名的用户 ## 操作步骤 ### 开启全局转移锁 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/),在左侧导航栏选择【域名管理】 2. 在域名管理页面,点击左侧菜单【域名安全】,进入域名安全页面后,点击顶部选项卡【全局转移锁】 ![全局转移锁选项卡](https://docs.bt.cn/img/user-guide/global-transfer-lock-tab.png) 3. 在全局转移锁页面,您可以看到功能开关和相关说明,点击右上角的开关按钮开启全局转移锁功能 ![开启全局转移锁](https://docs.bt.cn/img/user-guide/enable-global-transfer-lock.png) :::warning 重要提醒 开启全局转移锁后,域名可以正常进行转移操作。如需进行域名保护可开启转移锁。 ::: 4. 系统会显示开启成功的提示,全局转移锁即时生效 ### 关闭全局转移锁 如需关闭全局转移锁: 1. 按照上述步骤进入全局转移锁页面 2. 点击右上角的开关按钮关闭功能 3. 系统会要求您进行身份验证以确认关闭操作 4. 验证通过后,全局转移锁功能将被关闭 ## 联系客服 如在使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 账号信息 - 域名列表 - 具体需求说明 - 身份证明材料(如需要) ## 相关文档 - [敏感操作限制](./sensitive-operation-limit.md) - [设置密保问题](./security-question.md) - [设置禁止转移锁](./transfer-lock.md) :::info 重要提醒 全局转移锁是账户级别的域名转移保护功能,提供完全锁定的安全保护。开启前请确认您的长期需求,并确保身份验证信息的准确性。此功能适合对安全要求极高的用户,如有疑问请咨询客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-transfer-in.md.txt # 从其他注册商转入域名到宝塔 > 说明从三方注册商转入域名到宝塔的准入条件:注册超 60 天、距到期≥7 天、未锁定、未争议,全程 3–7 个工作日;以及转移密码获取、认领与后续续费要求。 # 域名转入 ## 操作场景 将域名从其他域名注册商转到堡塔域名服务内,转移过程大约需要3 - 7个工作日,由堡塔为您继续提供域名服务,我们称之为域名转入。 :::tip 说明 域名转入是注册商之间的转移,转入后您的域名管理权限将从原注册商转移到宝塔域名服务平台。 ::: ## 前提条件 域名转入是注册商之间的转移,宝塔域名的转入条件如下: - **域名来源**:必须是非宝塔域名服务的域名 - **权限要求**:您必须是域名所有人,或已获得域名所有人委托许可管理域名 - **时间限制**: - 域名注册后已满60天 - 距域名到期日不少于15天 - 域名过期后在原注册商完成续费/域名赎回不足45天的,不建议转入 - **域名状态**:域名无任何争议、纠纷或法律程序 - **解锁状态**:域名必须处于解锁状态(Unlocked) :::warning 注意 在域名续费后45天内进行转入可能导致您在原注册商处的续费失效,续费年限减少,请谨慎操作。 ::: ## 收费说明 - **转入费用**:域名转入本身是免费办理 - **续费要求**:根据域名注册局规定,域名在转入的同时需要续费1年(即在域名原有效年限的基础上增加1年) - **费用标准**:转入价格与续费价格不一定一致,具体价格请查看域名转入价格表 :::info 特殊情况 - 如果您的域名当前已经续费至最大年限(10年),在您成功支付转入订单后,该域名会无法增加完整年限 - 域名使用年限均以年为单位增加年限,如您可使用年限大于9年,在此期间成功支付转入订单,也无法增加完整年限 ::: ## 操作步骤 ### 第一步:获取域名转移密码 在原注册商处提交域名转出申请,获取域名转移密码(Auth-Code)。 :::warning 重要提醒 - 域名转移注册商时必须向原注册商索取到转移码(auth-code)才能进行 - 原注册商转出时,若需要填写转入的服务商名称,请填写 **堡塔** - 按照域名相关管理机构的规定,原注册商不能擅自拒绝或限制域名的转出,也不能以任何名义对域名转出额外收取费用 ::: :::warning 重要提醒 如果原注册商以各种名义阻拦域名转出或要求额外收费,您可以: 1. **国际域名**:向 [ICANN](https://www.icann.org/en/resources/compliance/complaints/transfer/form) 进行投诉 2. **国内域名**:向 CNNIC 等注册局投诉 ::: ### 第二步:提交域名转入申请 1. 登录 [堡塔域名管理](https://www.bt.cn/domain/domain/transfer) 控制台 2. 进入 "域名管理" → "域名转入" 页面 ![域名转入页面](https://docs.bt.cn/img/user-guide/domain-transfer-in.png) 3. 点击 "域名转入" 按钮 ### 第三步:填写转入信息 1. **填写域名信息**: - 输入需要转入的域名 - 输入从原注册商获取的转移密码 - 可以添加多个域名 ![域名转入示例](https://docs.bt.cn/img/user-guide/domain-transfer-in-example.png) 2. **选择信息模板并确认订单信息**: - 选择已实名认证的信息模板 - 如无可用模板,需先创建并完成实名认证 - 同意相关服务条款 - 检查域名信息是否正确 - 确认转入费用 ![域名信息模板示例](https://docs.bt.cn/img/user-guide/domain-transfer-info-template-example.png) ### 第四步:支付与确认 1. 确认订单信息无误后,点击 "立即支付" 2. 选择支付方式完成付款 3. 支付成功后,系统将自动提交转入申请 ![确认订单信息示例](https://docs.bt.cn/img/user-guide/domain-transfer-confirm-example.png) ### 第五步:等待转入完成 1. 原注册商支持快速转出场景下,通常 0.5-1 个工作日内完成转入流程,**请在提交转入申请后联系原注册商客服确认**。 2. 原注册商不支持快速转出场景下,通常 5-7 个工作日内完成转入流程 目前国内大部分注册商均支持快速转出,建议您在转入后咨询原注册商客服进行确认,以便尽快完成转入,以下为部分厂商参考: - 阿里云:[域名快速转出](https://help.aliyun.com/zh/dws/user-guide/transfer-a-domain-name-from-alibaba-cloud-to-another-registrar#0c7b0c9e9fahi) - 腾讯云:在提交转入申请后半小时后回到腾讯云控制台,找到**域名转移-域名转出**,点击**申请快速转出**。 - 其他厂商:请联系原注册商客服确认。 ::: ## 转入状态说明 | 状态 | 说明 | |------|------| | 转入中 | 已付款,正在进行转入流程 | | 转入成功 | 域名已成功转入宝塔域名服务 | :::tip 技术支持 如果您在域名转入过程中遇到任何问题,请联系宝塔客服获取技术支持。 ::: ## 后续步骤 ### 域名解析 转入不会修改域名原有的DNS服务器,大多数厂商,如腾讯云或阿里云,域名和解析为分开的产品,您仍然可以前往原注册商进行解析,部分厂商如不支持或您需要将域名解析迁移到堡塔统一管理,请您在转入后即时将域名DNS修改为以下两个,并在堡塔域名后台设置解析: ```bash ns1.baotadns.com ns2.baotadns.com ``` --- source: https://docs.bt.cn/domain/user-guide/domain-transfer-out.md.txt # 将域名转出到其他注册商 > 介绍在宝塔获取转移密码(EPP Code)、关闭禁止转移锁与发起转出的完整流程,说明转出需满足 60 天起、非争议、非临近到期,并在目标注册商验证授权码。 # 域名转出 ## 操作背景 本文将帮助您了解如何将域名从宝塔转移到其他注册商。 :::info 功能说明 域名转出是指将在宝塔注册的域名转移到其他域名注册商进行管理。转出后,域名的管理权限将转移到新的注册商,包括续费、DNS管理等操作都需要在新注册商处进行。 ::: ## 前提条件 在进行域名转出前,请确保满足以下条件: - 域名已在宝塔注册或转入超过60天 - 域名处于正常状态(非争议、非冻结、非禁止转移状态) - 域名未过期,且距离过期还有足够时间 - 已关闭域名的禁止转移锁 - 域名信息模板已通过实名认证 - 已获取域名转移密码(EPP Code) :::warning 重要提醒 - 域名转出需要支付转移费用,具体费用请咨询目标注册商 - 转出过程中域名可能暂时无法修改DNS等设置 - 建议在域名到期前至少30天完成转出操作 ::: ## 操作步骤 ### 准备转出 1. **检查域名状态** 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),确认域名状态正常 2. **关闭禁止转移锁** 进入域名详情页面 → 域名安全 → 关闭禁止转移锁 ![关闭禁止转移锁](https://docs.bt.cn/img/user-guide/disable-transfer-lock.png) 3. **确认联系信息** 确保域名联系人信息准确无误,特别是邮箱地址 ### 发起转出 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 找到需要转出的域名,点击"管理"按钮 ![域名管理](https://docs.bt.cn/img/user-guide/domain-manage-btn.png) 3. 在域名详情页面,选择"域名转移"选项卡 ![域名转移选项卡](https://docs.bt.cn/img/user-guide/domain-transfer-tab.png) 4. 在域名转移页面,找到"域名转出"部分,点击"发起转出"按钮 ![发起转出](https://docs.bt.cn/img/user-guide/initiate-transfer-out.png) 6. 在弹出的确认窗口中,仔细阅读转出说明和注意事项,并输入邮箱地址以接收转移密码 ![转出确认窗口](https://docs.bt.cn/img/user-guide/transfer-out-confirmation.png) 7. 确认无误后,点击"下一步"按钮完成转出申请 ### 获取转移密码 域名转出申请提交后: 1. 系统会向您所填写的邮箱地址发送转移密码(EPP Code) 2. 请及时查收邮件,注意检查垃圾邮件文件夹 3. 转移密码通常会立即发送,若长时间未收到,请回到域名转移页面重新发送。 ![获取转移密码](https://docs.bt.cn/img/domain/transfer-code-email.png) :::tip 提示 1. 转移密码是域名转出的重要凭证,请妥善保管,不要泄露给无关人员。 2. 转移码长期未使用可能会失效,建议在收到后尽快使用。 ::: ### 在目标注册商完成转入 1. **提交转入申请** 在目标注册商处提交域名转入申请,输入转移密码 2. **确认转入** 按照目标注册商的要求完成转入流程 3. **支付费用** 向目标注册商支付转入费用(通常包含1年续费) 4. **等待完成** 转入过程通常需要5-7个工作日(宝塔支持域名快速转出,详情请参考[域名快速转出](#域名快速转出)) ### 域名快速转出 1. 在目标注册商提交转入申请超过半小时后,返回宝塔域名管理后台,进入"域名转入转出"页面 ![域名转入转出页面](https://docs.bt.cn/img/domain/transfer-in-out-page.png) 2. 在"域名转出"选项卡中,找到对应的域名,点击"同意转出"按钮 :::danger 警告 请务必确认目标注册商已提交转入申请半小时以后再进行此操作,否则可能导致转出失败 ::: ![快速转出按钮](https://docs.bt.cn/img/domain/quick-transfer-out-btn.png) 3. 在弹出的确认窗口中,点击"确定"按钮完成快速转出操作 ![确认快速转出](https://docs.bt.cn/img/domain/confirm-quick-transfer-out.png) :::tip 提示 如下图所示,快速转出成功后域名将立即转入新注册商,但仍需等待目标注册商完成入库操作,具体时间请咨询目标注册商。 ![快速转出成功](https://docs.bt.cn/img/domain/quick-transfer-out-success.png) ::: ## 联系客服 如在域名转出过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 域名名称 - 转出申请时间 - 具体问题描述 - 相关错误截图(如有) ## 相关文档 - [域名转入](./domain-transfer-in.md) - [设置禁止转移锁](./domain-security/transfer-lock.md) - [域名续费](./domain-renewal.md) - [域名状态说明](../faq/domain-status.md) :::tip 建议 域名转出是重要操作,建议在转出前充分了解目标注册商的服务和价格,确保转出后能够获得满意的服务。如有疑问,可以先咨询客服了解详细情况。 ::: --- source: https://docs.bt.cn/domain/api/dns-records/create-record.md.txt # API·创建 DNS 解析记录 > POST /api/v1/dns/record/create 接口,为指定域名创建 A/AAAA/CNAME/MX/TXT/NS/SRV 等类型解析记录,支持设置 MX 优先级、TTL、线路 view_id 与备注。 # 创建解析记录 ## 接口描述 为指定域名创建新的 DNS 解析记录。 **接口地址:** `POST /api/v1/dns/record/create` ## 输入参数 ### 请求示例 ```json { "domain_id": 75, "domain_type": 1, "value": "192.168.1.1", "record": "@", "type": "A", "mx": 1, "ttl": 600, "remark": "默认解析", "view_id": 1 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | domain_id | 是 | Integer | 域名 ID | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | value | 是 | String | 记录值 | | record | 是 | String | 主机记录,如 @、www、mail、* 等 | | type | 是 | String | 记录类型:A、AAAA、CNAME、MX、TXT、NS、SRV 等 | | mx | 否 | Integer | 权重:5(高优先级)、10(次高优先级)、20(备份节点) | | ttl | 否 | Integer | 生存时间(秒),默认 600 | | remark | 否 | String | 备注信息 | | view_id | 否 | Integer | 线路类型 ID | ### 记录类型说明 | 记录类型 | 值格式 | 示例 | 说明 | |---------|-------|------|------| | A | IPv4 地址 | 192.168.1.1 | 将域名指向 IPv4 地址 | | AAAA | IPv6 地址 | 2001:db8::1 | 将域名指向 IPv6 地址 | | CNAME | 域名 | example.com | 将域名指向另一个域名 | | MX | 邮件服务器域名 | mail.example.com | 邮件交换记录 | | TXT | 文本内容 | v=spf1 include:_spf.example.com ~all | 文本记录 | | NS | 名称服务器 | ns1.example.com | 名称服务器记录 | | SRV | 服务记录 | 10 5 443 target.example.com | 服务记录 | ### 权重说明 | 权重值 | 描述 | |--------|------| | 5 | 高优先级 | | 10 | 次高优先级 | | 20 | 备份节点 | ### 线路类型说明 根据 `view_id` 参数指定解析线路类型,具体线路 ID 请参考线路管理接口。 ## 输出参数 ### 响应示例 **返回:** ```json { "code": 0, "data": {}, "msg": "创建解析记录成功", "status": true } ``` --- source: https://docs.bt.cn/domain/faq/domainfailure.md.txt # 域名无法访问与 ServerHold/ClientHold 故障排查 > 域名无法访问时通过 DNSPod 检测工具诊断,针对新注册与非新注册域名的 ServerHold、ClientHold 状态分别提供实名审核、命名审核与客服介入处理路径。 # 域名故障 本文档将为您介绍如何解决域名故障,您可通过右侧目录快速选择您遇到的问题。 ## 域名无法访问? 请您通过 [DNSPod 域名检测工具](https://tool.dnspod.cn/) 进行检测,若报错 `Cilenthold`/`Serverhold`,请您参考下面的方式进行排查,若未报上述错误,则说明域名本身无问题,请参考 [域名故障](domainfailure) 排查其他问题。 ### Serverhold ***新注册域名*** 1. 若您域名为新注册域名,请您确保域名已经通过了实名审核和命名审核,若上述审核不通过,则域名不会解除 `Serverhold` 状态。 2. 部分域名通过实名审核和命名审核后,需要等待一个工作日后才能解除 `Serverhold` 状态,请您耐心等待。 3. 若等待 1-2 个工作日后仍未解除 `Serverhold` 状态,请您通过 [在线客服](https://www.bt.cn/new/wechat_customer) 联系我们协助处理。 ***非新注册域名*** 请您通过 [在线客服](https://www.bt.cn/new/wechat_customer) 联系我们协助处理。 ### Cilenthold ![Cilenthold](https://docs.bt.cn/img/domain/faq-domainfailure-cilenthold.png) 若您的域名出现 `Cilenthold` 状态,请您通过 [在线客服](https://www.bt.cn/new/wechat_customer) 联系我们协助处理。 --- source: https://docs.bt.cn/domain/user-guide/account-transfer.md.txt # 域名账户间转移 > 在宝塔不同账号之间迁移域名管理权,适用于企业内部账号调整、合作交接;详解转移前提条件、实名模板要求、目标账号接收确认与转移后权限变化。 # 域名账户间转移 ## 操作背景 本文将帮助您了解如何在宝塔不同账号之间转移域名。 :::info 功能说明 域名账户间转移是指将域名从一个宝塔账号转移到另一个宝塔账号,转移后域名的管理权限将转移到目标账号。此功能适用于企业内部账号调整、域名管理权移交等场景。 ::: ## 前提条件 在进行域名账户间转移前,请确保满足以下条件: - 域名已在宝塔注册或转入 - 域名处于正常状态(非争议、非冻结状态) - 域名信息模板已通过实名认证 - 已获得目标账号的同意 - 知晓目标账号的账号信息 :::warning 重要提醒 - 域名转移后,原账号将失去对该域名的管理权限 - 目标账号需要确认接收域名转移 - 转移过程中请确保信息准确,避免转移错误 ::: ## 操作步骤 ### 方式一:通过域名详情页转移 #### 1. 进入域名转移页面 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面 2. 找到需要转移的域名,点击"管理"按钮 ![域名管理](https://docs.bt.cn/img/user-guide/domain-manage-btn.png) 3. 在域名详情页面,选择"域名转移"选项卡 ![域名转移选项卡](https://docs.bt.cn/img/user-guide/domain-transfer-tab.png) 4. 在域名转移页面,找到"堡塔账号间转移"部分,点击"发起转移"按钮 ![堡塔账号间转移](https://docs.bt.cn/img/user-guide/account-transfer-section.png) #### 2. 填写目标账号信息 1. 在弹出的转移窗口中,填写目标账号信息: ![填写目标账号](https://docs.bt.cn/img/user-guide/enter-target-account.png) - **目标账号**:输入目标宝塔账号 - **转移码**:系统自动生成的转移验证码 2. 点击【重新生成】按钮可以重新生成转移码 3. 确认信息无误后,点击【下一步】按钮 #### 3. 等待转移确认 1. 提交转移申请后,系统显示"等待转移"状态: ![等待转移](https://docs.bt.cn/img/user-guide/waiting-transfer.png) - **域名**:显示要转移的域名 - **转移码**:显示转移验证码 - **目标账号**:显示目标账号信息 - **转移状态**:显示当前转移状态 2. 将转移码提供给目标账号持有者进行确认 #### 4. 查看转移申请状态 提交转移申请后,您可以在域名转移页面查看申请状态: ![账户转移申请状态](https://docs.bt.cn/img/user-guide/account-transfer-status.png) **页面显示内容:** 1. **堡塔账号间转移** - **查看进度**:点击可查看转移进度详情 - **等待确认**:当前状态为等待目标账号确认 - **取消申请**:如需取消转移可点击此按钮 2. **域名转出** - **发起转出**:显示转出功能状态 - **堡塔账号转进行中**:显示当前账号转移正在进行中 **状态说明:** - **等待确认**:转移申请已提交,等待目标账号确认接收 - **进行中**:目标账号已确认,系统正在处理转移 - **已完成**:账号转移已成功完成 **可执行操作:** - **查看进度**:随时查看转移进度和详细状态 - **取消申请**:在目标账号确认前可以取消申请 - **联系目标账号**:催促目标账号尽快确认转移 :::tip 操作建议 - 提交申请后及时联系目标账号持有者,提供转移码进行确认 - 可以通过"查看进度"按钮随时了解转移状态 - 如长时间无响应,建议联系目标账号或取消后重新申请 ::: ## 目标账户接收转移 当源账户发起转移申请后,目标账户需要进行以下操作来接收域名转移: ### 1. 进入转移管理页面 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/) 2. 在左侧菜单中选择【域名转入转出】,点击【堡塔账号转入】选项卡 ![堡塔账号转入](https://docs.bt.cn/img/user-guide/account-transfer-in-tab.png) ### 2. 申请接收转移 1. 点击【堡塔账号转入】按钮 ![申请账号转入](https://docs.bt.cn/img/user-guide/apply-account-transfer.png) 2. 在弹出窗口中填写转移信息: ![堡塔账号转入表单](https://docs.bt.cn/img/user-guide/account-transfer-form.png) - **源账号**:输入源账号信息 - **域名和转移码列表**:输入域名名称和对应的转移码 3. 点击【+】按钮可以添加多个域名 4. 点击【下一步】按钮进入确认页面 ### 3. 确认转移信息 1. 系统会验证转移信息并显示确认页面: ![确认转移信息](https://docs.bt.cn/img/user-guide/confirm-transfer-info.png) 显示内容包括: - **源账号信息** - **域名和转移码列表** - **联系人信息** 2. 确认信息无误后,点击【确认转入】按钮 ### 4. 转移完成 1. 系统处理转移请求后显示成功页面: ![转移成功](https://docs.bt.cn/img/user-guide/transfer-success.png) 2. 转移完成后,域名将出现在目标账号的域名列表中 ![转移记录](https://docs.bt.cn/img/user-guide/transfer-record.png) :::tip 目标账户注意事项 - 接收转移前请确认域名信息的准确性 - 转移完成后请及时检查域名设置 - 确保账号有足够权限接收域名转移 - 转移后请妥善管理域名相关服务 ::: ### 转移失败常见原因 - 目标账号信息错误 - 转移码输入错误 - 域名状态不符合转移条件 - 目标账号拒绝接收 - 转移申请超时 ## 联系客服 如在域名账户间转移过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 源账号和目标账号信息 - 域名名称 - 转移码(如有) - 具体问题描述 - 相关操作截图(如有) ## 相关文档 - [域名转出](./domain-transfer-out.md) - [域名转入](./domain-transfer-in.md) - [域名续费](./domain-renewal.md) - [域名状态说明](../faq/domain-status.md) :::info 重要提醒 域名账户间转移是重要操作,转移前请确认目标账号信息准确无误,并获得目标账号持有者的明确同意。转移完成后,请及时在目标账号下检查域名设置,确保服务正常运行。 ::: --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/ns-record.md.txt # 添加 NS 记录:子域名委派给其他 DNS 服务商 > 为子域名添加 NS 记录,将解析权限委派给三方 DNS 服务商、不影响其他子域名解析;说明需使用解析商权威 DNS 域名与默认线路、TTL 设置要点。 # 设置NS记录 ## 操作场景 如果需要将子域名交给其他DNS服务商解析,则需要添加NS记录。建议您使用宝塔系统默认的NS记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置NS记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加NS记录](https://docs.bt.cn/img/user-guide/add-ns-record.png) - **主机记录**:填写子域名。例如,需要将 `www.example.com` 的解析授权给其他DNS服务器,您在"主机记录"处选择"www"即可,并且授权出去的子域名不会影响其他子域名的正常解析。 - **记录类型**:选择"NS"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析。 - **记录值**:要授权的DNS服务器域名,记录生成后会自动在域名后面补一个"."。 :::warning 注意 要授权的DNS服务器域名不能是私建的DNS服务器域名,必须是解析商的权威DNS服务器域名。 ::: - **MX/权重**:不需要填写。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/domain-security/operation-log.md.txt # 域名操作日志查看与审计 > 查看账号下 DNS 记录变更、域名设置修改、安全配置调整等操作日志,用于追踪历史变更、识别异常行为以及多人协作场景下的安全审计。 # 操作日志 ## 操作背景 本文将帮助您了解如何查看和管理域名相关的操作日志。 :::info 功能说明 操作日志记录了账号下所有域名相关的操作行为,包括DNS记录管理、域名设置修改、安全配置变更等。通过操作日志,您可以追踪账号的操作历史,监控异常行为,确保域名安全。 ::: ## 前提条件 - 已登录宝塔域名管理控制台 - 账号处于正常状态 - 具有查看操作日志的权限 ## 操作步骤 ### 进入操作日志页面 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/),在左侧导航栏选择【域名管理】 2. 在域名管理页面,点击左侧菜单【操作日志】,进入操作日志页面,可以看到所有操作记录 ![操作日志页面](https://docs.bt.cn/img/user-guide/operation-log-page.png) ### 查看日志信息 操作日志页面显示以下信息: ![操作日志列表](https://docs.bt.cn/img/user-guide/operation-log-page.png) | 字段 | 说明 | 示例 | |------|------|------| | 日志ID | 操作记录的唯一标识 | 14634, 4220, 1794 | | 级别 | 日志级别,通常为INFO | INFO | | 客户端IP | 执行操作的客户端IP地址 | 用户后台操作 | | 模块 | 操作所属的功能模块 | dns/record | | 请求方法 | HTTP请求方法 | POST, GET, PUT, DELETE | | 请求URL | 操作对应的API接口地址 | /api/v1/dns/record/create | | 操作内容 | 详细的操作信息和参数 | 创建解析记录、修改域名设置等 | | 创建时间 | 操作执行的时间 | 2025-10-14 15:42:04 | ### 操作内容解析 不同类型的操作会记录不同的详细信息: #### DNS记录操作 ```json 创建解析记录失败: 请求异常: 主机记录不能以 . 开头或结尾({ "domain_id": 2, "record": "dnstest666.cn", "type": "A", "value": "1.1.1.1", "ttl": 600, "mx": 1, "remark": "", "viewid": 0, "uid": "14703219" }) ``` #### 域名设置操作 ```json 创建解析记录: { "domain_id": 2, "domainID": 195837075, "recordID": 612186324, "record": "@", "value": "1.12.0.1", "type": "A", "MX": 1, "TTL": 600, "state": 0, "remark": "", "viewID": 0 } ``` #### 安全设置操作 记录安全相关的配置变更,如: - 禁止转移锁的开启/关闭 - 禁止更新锁的设置 - 密保问题的设置/修改 - API密钥的创建/删除 ### 操作状态说明 | 状态 | 说明 | 处理建议 | |------|------|----------| | 成功 | 操作正常完成 | 无需处理 | | 失败 | 操作执行失败 | 查看失败原因,必要时重试 | | 警告 | 操作有潜在风险 | 检查操作参数和权限 | | 错误 | 系统错误或参数错误 | 联系客服或检查操作方式 | ## 联系客服 如在查看操作日志过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer 联系时请提供: - 账号信息 - 相关日志ID(如有) - 具体问题描述 - 操作时间范围 ## 相关文档 - [设置密保问题](./security-question.md) - [敏感操作限制](./sensitive-operation-limit.md) - [API密钥管理](../../api/api-keys.md) - [域名安全设置](./transfer-lock.md) --- source: https://docs.bt.cn/domain/api/dns-records/update-record.md.txt # API·更新 DNS 解析记录 > POST /api/v1/dns/record/update 接口,修改已有 DNS 记录的主机名、记录值、类型、MX 优先级、TTL 与线路 view_id,所有修改项可选且仅提交变更部分。 # 更新解析记录 ## 接口描述 更新已存在的 DNS 解析记录信息。 **接口地址:** `POST /api/v1/dns/record/update` ## 输入参数 ### 请求示例 ```json { "record_id": 1, "domain_type": 2, "domain_id": 1222200, "record": "www", "value": "", "type": "A", "mx": 1, "ttl": 600, "remark": "默认解析", "view_id": 1 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | record_id | 是 | Integer | 记录 ID | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | domain_id | 是 | Integer | 域名 ID | | record | 否 | String | 主机记录 | | value | 否 | String | 记录值 | | type | 否 | String | 记录类型 | | mx | 否 | Integer | 权重:5(高优先级)、10(次高优先级)、20(备份节点) | | ttl | 否 | Integer | 生存时间(秒) | | remark | 否 | String | 备注信息 | | view_id | 否 | Integer | 线路类型 ID | :::info 提示 - 只需要传入需要更新的字段,未传入的字段保持原值不变 - 记录类型如果发生变化,记录值必须符合新类型的格式要求 - 必须同时提供 domain_type 和 domain_id 参数 ::: ## 输出参数 ### 响应示例 **返回:** ```json { "code": 0, "data": {}, "msg": "更新解析记录成功", "status": true } ``` --- source: https://docs.bt.cn/domain/faq/domainprivacy.md.txt # 域名隐私保护 FAQ > 说明 .cn 域名隐私保护需 CNNIC 开启付费服务与宝塔域名默认隐私保护机制,介绍 ICANN、欧盟 GDPR 与 Verisign 对 .com / .net 域名 WHOIS 信息的合规处理。 # 隐私保护 本文档将为您介绍如何解决域名隐私保护相关问题,您可通过右侧目录快速选择您遇到的问题。 ## .cn 域名是否支持隐私保护? 根据 CNNIC 的相关决定,`.cn` 的域名隐私保护服务已开始收费,如您有需要,请参考[开启CNNIC域名隐私保护服务](../user-guide/cnnic-privacy-protection.md) ::: ## 宝塔注册的域名是否支持域名隐私保护? 根据 ICANN 《通用顶级域名注册数据临时政策细则(Temporary Specification for gTLD Registration Data)》和欧盟《通用数据保护条例》合规要求,域名信息(WHOIS)查询结果中将不再展示域名所有者、所有者联系邮箱等信息。鉴于上述调整,您的域名注册信息已默认得到保护。但除 `.com` / `.net` 等 Verisign 域名的 WHOIS 信息由宝塔对接的注册商直接按调整后的规则提供外,其他域名后缀的 WHOIS 信息均由相应的注册局提供,具体展示哪些信息由注册局决定,不排除注册局展示域名所有者信息的可能性。 --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/srv-record.md.txt # 添加 SRV 记录:发布服务位置与端口 > 通过 SRV 记录发布服务名.协议类型(如 _sip._tcp)与优先级/权重/端口/主机名,常用于 VoIP、Active Directory 、SIP 等服务发现场景。 # 设置SRV记录 ## 操作场景 SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理。本文档指导您如何添加SRV记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置SRV记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 3. 点击【添加记录】,填写以下记录信息: ![添加SRV记录](https://docs.bt.cn/img/user-guide/add-srv-record.png) - **主机记录**:服务的名字.协议的类型。例如,设置为 `_sip._tcp`。 - **记录类型**:选择"SRV"。 - **线路类型**:选择"默认"类型,否则会导致部分用户无法解析。 - **记录值**:优先级 权重 端口 主机名。记录生成后会自动在域名后面补一个"."。例如,设置为 `0 5 5060 sipserver.example.com`。 - **MX/权重**:不需要填写。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 4. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/user-guide/dnssec-configuration.md.txt # 为域名配置 DNSSEC 与 DS 记录 > 在宝塔作为注册商为域名添加 DS 记录以启用 DNSSEC,配合三方 DNS 服务商(CloudFlare、阿里云 DNS 等)的签名能力防范 DNS 劫持与缓存污染,含原理与前提条件说明。 # DNSSEC 配置 ## 操作场景 域名系统安全扩展(DNS Security Extensions,简称DNSSEC)是一套DNS安全认证机制,通过数字签名技术来验证DNS响应的真实性和完整性,防止DNS缓存污染、DNS劫持等安全威胁。 作为域名注册商,宝塔支持为您的域名添加DS(Delegation Signer)记录,配合DNS服务商的DNSSEC签名功能,为您的域名提供更高级别的安全保护。 :::info 重要说明 - 宝塔作为域名注册商,只能添加DS记录到域名的注册信息中 - 实际的DNSSEC签名需要由DNS服务商(如CloudFlare、阿里云DNS等)提供 - 配置DNSSEC需要DNS服务商和注册商双方配合完成 ::: ## 前提条件 - 域名已在宝塔完成注册或已转入宝塔管理 - DNS服务商支持DNSSEC签名功能 - 已从DNS服务商获取DS记录信息 ## DNSSEC工作原理 DNSSEC通过以下机制确保DNS安全: ```mermaid flowchart TB %% ===== 查询主路径 ===== U[用户] --> R[递归解析器/验证器] R --> ROOT[根服务器] ROOT --> R R --> TLD[TLD 服务器] TLD --> R R --> AUTH[权威服务器] AUTH --> R R --> ANSWER[解析结果(已完成 DNSSEC 验证)] ANSWER --> U %% ===== 信任锚与关键记录(作为独立节点展示) ===== TA[信任锚:根 KSK] --- R ROOT --- z0_dnskey[根区 DNSKEY(K/Z)] ROOT --- z0_ds[DS for COM(指向 COM KSK 摘要)] TLD --- z1_dnskey[COM 区 DNSKEY(K/Z)] TLD --- z1_ds[DS for example.com(指向域名 KSK 摘要)] TLD --- z1_rrsig[COM 区 RRSIG] AUTH --- z2_dnskey[example.com 区 DNSKEY(K/Z 或 CSK)] AUTH --- z2_rrsig[应答 RR 集 RRSIG(通常由 ZSK 签)] %% ===== 验证链(用虚线指示校验顺序,无连线文字以提升兼容性) ===== R -.-> z0_dnskey z0_dnskey -.-> z0_ds R -.-> z1_dnskey z1_dnskey -.-> z1_rrsig R -.-> z2_dnskey z2_dnskey -.-> z2_rrsig z2_rrsig -.-> ANSWER %% ===== 样式 ===== style ROOT fill:#FF6B6B,stroke:#333,stroke-width:2px,color:#fff style TLD fill:#4ECDC4,stroke:#333,stroke-width:2px,color:#fff style AUTH fill:#45B7D1,stroke:#333,stroke-width:2px,color:#fff style R fill:#7D5FFF,stroke:#333,stroke-width:2px,color:#fff style U fill:#444,stroke:#333,stroke-width:2px,color:#fff style ANSWER fill:#B4F8C8,stroke:#333,color:#000 style z0_ds fill:#FFDAB9,stroke:#333,color:#000 style z1_ds fill:#FFDAB9,stroke:#333,color:#000 style z0_dnskey fill:#FFF4B8,stroke:#333,color:#000 style z1_dnskey fill:#FFF4B8,stroke:#333,color:#000 style z2_dnskey fill:#FFF4B8,stroke:#333,color:#000 style z1_rrsig fill:#E6F3FF,stroke:#333,color:#000 style z2_rrsig fill:#E6F3FF,stroke:#333,color:#000 style TA fill:#FFE066,stroke:#333,color:#000 ``` ## 配置步骤 ### 步骤1:在DNS服务商启用DNSSEC 1. 登录您的DNS服务商管理控制台 2. 找到DNSSEC配置选项 3. 启用DNSSEC签名功能 4. 等待DNS服务商生成DNSKEY和DS记录 :::tip 提示 不同DNS服务商的DNSSEC配置界面可能有所不同,请参考各服务商的具体文档: - CloudFlare:在"DNS"选项卡中找到"DNSSEC" - 阿里云DNS:在"安全设置"中找到"DNSSEC" - 腾讯云DNS:在"域名解析"中找到"DNSSEC" ::: ### 步骤2:获取DS记录信息 从DNS服务商获取以下DS记录信息: - **Key Tag**:密钥标签 - **Algorithm**:加密算法(通常为7或8) - **Digest Type**:摘要类型(通常为1或2) - **Digest**:摘要值 示例DS记录: ``` 2371 13 2 9388FDC839A35EA747E37A2B8A9D76BE2E56D0275F1A01F000148A916167B45B ``` ### 步骤3:在堡塔域名管理控制台添加 DS 记录 1. 登录[堡塔域名管理控制台](https://www.bt.cn/domain/dashboard) 2. 进入“域名列表”页面,找到需要配置DNSSEC的域名 3. 选择“管理”进入域名详情 ![域名列表页面](https://docs.bt.cn/img/user-guide/dnssec-domain-list.png) 4. 切换到**域名安全**选项卡,点击 **管理 DNSSEC** ![DNSSEC 配置页面](https://docs.bt.cn/img/user-guide/dnssec-config-page.png) 5. 点击“添加DS记录” ![添加DS记录](https://docs.bt.cn/img/user-guide/dnssec-add-ds.png) :::info 说明 - 如果您域名之前在其他注册商配置过DNSSEC,可点击“同步DS记录”尝试获取现有DS记录 ::: 6. 填写从DNS服务商获取的DS记录信息: - **Key Tag**:密钥标签(数字) - **Algorithm**:加密算法 - **Digest Type**:摘要类型 - **Digest**:摘要值(十六进制字符串) ![填写DS记录信息](https://docs.bt.cn/img/user-guide/dnssec-ds-info.png) :::info 算法和摘要类型说明 **Algorithm(算法)支持的值:** - `5`:RSASHA1 - `7`:RSASHA1-NSEC3-SHA1 - `8`:RSASHA256 - `10`:RSASHA512 - `12`:ECC-GOST - `13`:ECDSAP256SHA256 - `14`:ECDSAP384SHA384 - `15`:ED25519 - `16`:ED448 **Digest Type(摘要类型)支持的值:** - `1`:SHA1 - `2`:SHA256 - `3`:GOST - `4`:SHA384 ::: 7. 保存配置并确认无误 ![DS记录添加成功](https://docs.bt.cn/img/user-guide/dnssec-ds-added.png) ### 步骤4:验证DNSSEC配置 配置完成后,需要等待DNS传播(通常需要24-48小时),然后可以通过以下方式验证: #### 使用在线工具验证 - [Verisign DNSSEC Debugger](https://dnssec-debugger.verisignlabs.com/) - [DNSViz](https://dnsviz.net/) #### 使用命令行工具验证 ```bash # 查询DS记录 dig DS example.com # 使用dnssec-validate验证 dig +dnssec example.com ``` 预期输出: ```bash root@VM-8-5-debian:~# dig DS dnstest.icu @8.8.8.8 ; <<>> DiG 9.20.11-4-Debian <<>> DS dnstest.icu @8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63846 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;dnstest.icu. IN DS ;; ANSWER SECTION: dnstest.icu. 3600 IN DS 2371 13 2 9388FDC839A35EA747E37A2B8A9D76BE2E56D0275F1A01F000148A91 6167B45B ;; Query time: 7 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP) ;; WHEN: Sat Sep 13 11:18:59 CST 2025 ;; MSG SIZE rcvd: 88 ``` #### 验证结果说明 - **成功**:显示验证通过,DNSSEC配置正确 - **失败**:显示错误信息,需要检查配置 ## 常见问题 ### Q:配置DNSSEC后网站无法访问怎么办? A:可能的原因和解决方案: 1. **DS记录配置错误**:检查Key Tag、Algorithm、Digest Type和Digest是否正确 2. **DNS传播未完成**:等待24-48小时让DNS记录全球传播 3. **DNS服务商配置问题**:联系DNS服务商确认DNSSEC签名是否正常 ### Q:如何删除DNSSEC配置? A:删除步骤: 1. 登陆堡塔域名管理控制台,进入域名详情-域名安全-管理 DNSSEC 页面 2. 删除已添加的DS记录 3. 在DNS服务商处关闭DNSSEC签名 4. 等待DNS传播完成 ### Q:更换DNS服务商后需要重新配置DNSSEC吗? A:是的,更换DNS服务商后需要: 1. 在新DNS服务商启用DNSSEC 2. 获取新的DS记录信息 3. 联系宝塔客服更新DS记录 ## 相关文档 - [域名注册](./domain-registration.md) - [信息模板管理](./info-template.md) :::warning 注意 - DNSSEC配置错误可能导致域名解析失败,请在配置前充分了解相关知识 - 如有疑问,请联系宝塔技术支持或DNS服务商获取帮助 ::: --- source: https://docs.bt.cn/domain/api/dns-records/delete-record.md.txt # API·删除 DNS 解析记录 > POST /api/v1/dns/record/delete 接口,以 record_id、domain_id、domain_type 为参数删除指定 DNS 解析记录,删除后立即停止解析且不可恢复,调用前需确认。 # 删除解析记录 ## 接口描述 删除指定的 DNS 解析记录。 **接口地址:** `POST /api/v1/dns/record/delete` :::warning 警告 删除解析记录是不可逆操作,删除后该记录将立即停止解析。请确认操作后再执行。 ::: ## 输入参数 ### 请求示例 ```json { "record_id": 80, "domain_type": 1, "domain_id": 75 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | record_id | 是 | Integer | 记录 ID | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | domain_id | 是 | Integer | 域名 ID | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": {}, "msg": "删除解析记录成功", "status": true } ``` **错误响应:** ```json { "code": 404, "msg": "记录不存在", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据(空对象) | --- source: https://docs.bt.cn/domain/faq/icp.md.txt # 域名 ICP 备案 FAQ > 宝塔不提供 ICP 备案服务,需在服务器商处理;介绍备案主体与域名所有者一致性要求、实名审核未入库、个人与单位备案比对规则与法规依据。 # 域名备案 根据国务院令第 292 号《互联网信息服务管理办法》和《非经营性互联网信息服务备案管理办法》规定,国家对经营性互联网信息服务实行许可制度,对非经营性互联网信息服务实行备案制度。未获取许可或者未履行备案手续的,不得从事互联网信息服务,否则属于违法行为。 ## 能否在宝塔进行 ICP 备案? 不能,备案与服务商(服务器厂商)相关联,在哪个厂商购买服务器请前往对应厂商进行 ICP 备案。 ## 备案时提示域名所有者核验失败/未入库/找不到信息? 完成域名实名认证后,需等待三个自然日后再提交备案申请,如仍有问题,请联系客服咨询。 ## 备案时提示域名所有者与备案主体不符? 申请备案时填报的备案主体信息应与域名所有者实名认证信息相符。 - ***个人备案***:备案负责人信息与域名所有者实名认证信息需保持一致(比对信息为:姓名、证件类型、证件号码)。 - ***单位备案***:备案主办单位名称或法定代表人需要与域名所有者实名认证信息保持一致(比对信息为:姓名、证件类型、证件号码)。 一般情况下,企业备案域名所有者需要与企业备案主体名称或者法定代表人一致。 为贯彻落实《中华人民共和国反恐怖主义法》、《中华人民共和国网络安全法》、《互联网信息服务管理办法》、《互联网域名管理办法》等法律法规和规章的要求,进一步规范互联网信息服务域名使用。自 2018 年 01 月 01 日起,从事互联网信息服务使用的域名应为其依法依规注册所有,个人性质备案域名注册者应为本人,单位性质备案域名注册者应为单位(含公司股东)、单位主要负责人或高级管理人员。 ::: --- source: https://docs.bt.cn/domain/user-guide/cnnic-privacy-protection.md.txt # 开启 CNNIC 域名隐私保护服务 > 为 .cn 与 .中国 域名开通 CNNIC 隐私保护,隐藏 WHOIS 查询中的所有者姓名/机构名称、联系邮箱;2026年4月10日起该服务调整为免费,已购买不受影响。 # 开启CNNIC域名隐私保护服务 :::danger 注意 接上游通知,CNNIC 将于2026年4月10日00:00:00(UTC+8)起,将 CNNIC 域名隐私保护服务调整为免费服务,已购买的用户服务不受影响。 ::: ## 操作场景 为保护个人隐私信息,CNNIC(中国互联网络信息中心)为其管理的“.cn”域名提供了域名隐私保护服务。通过注册商开通该服务后,用户域名注册信息将不在WHOIS查询结果中显示。本文将为您介绍如何购买和开通CNNIC域名隐私保护服务。 :::info 适用范围 - 仅支持".cn"和".中国"域名后缀 - 域名必须已完成实名认证 - 域名处于正常状态(非锁定、非争议状态) ::: ## 服务介绍 ### 保护内容 开启CNNIC隐私保护服务后,以下信息将在WHOIS查询中被隐藏: - 域名所有者姓名/机构名称 - 联系邮箱 ## 购前须知 ### 重要说明 - **绑定开通**:CNNIC隐私保护服务是域名增值服务,必须与指定的域名资源绑定,无法单独开通。 - **转移保护**:域名转移、过户均不影响隐私保护正常使用 - **退费政策**:该功能为即时服务,一旦开通成功,则不予退费 :::warning 注意事项 - 用户主动删除域名或主动提前取消CNNIC域名隐私保护服务的,已缴纳服务费用不予退费 - 用户主动提前取消隐私保护服务后,若需重新开启隐私保护服务,则需要重新购买 ::: ## 购买方式 对于已注册并完成实名认证的.cn或.中国域名: 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/dashboard) 2. 进入"域名列表"页面 ![域名列表页面](https://docs.bt.cn/img/user-guide/domain-list-page.png) 3. 找到需要开通隐私保护的域名,点击"管理" ![域名详情页面](https://docs.bt.cn/img/user-guide/cnnic-privacy-protection-domain-list.png) 4. 在域名基本信息页面,点击`开启隐私保护` ![域名详情页面](https://docs.bt.cn/img/user-guide/cnnic-privacy-protection-domain-detail.png) 5. 点击后即可立即开通 ## 隐私保护管理 ### 查看服务状态 在域名详情页面的,可以查看: - 隐私保护服务状态(已开启/未开启) - 服务到期时间 ![查看服务状态](https://docs.bt.cn/img/user-guide/cnnic-privacy-protection-status.png) ### 续费隐私保护服务 1. 进入域名详情页面 3. 点击"延续隐私保护"按钮 4. 选择续费年限,完成延续 ## 验证隐私保护效果 开启隐私保护后,可通过以下方式验证: ### WHOIS查询验证 1. 访问任意WHOIS查询网站 2. 输入已开启隐私保护的域名 3. 查看查询结果中的联系信息是否被隐藏 :::info 说明 部分WHOIS查询网站可能会缓存查询结果,建议查询时选择更新缓存或使用多个查询工具进行交叉验证 ::: **开启前的WHOIS信息:** ``` # whois.cnnic.cn Domain Name: example.cn ROID: 2024-cn Domain Status: ok Registrant: xxx Registrant Contact Email: xxxx Sponsoring Registrar: 成都垦派科技有限公司 Name Server: ns3.dnsv4.com Name Server: ns4.dnsv4.com Registration Time: 2024-08-22 17:05:16 Expiration Time: 2028-08-22 17:05:16 DNSSEC: signedDelegation ``` **开启后的WHOIS信息:** ``` # whois.cnnic.cn Domain Name: example.cn ROID: 2024-cn Domain Status: ok Registrant: 该域名已采取WHOIS隐私保护服务 Sponsoring Registrar: 成都垦派科技有限公司 Name Server: ns3.dnsv4.com Name Server: ns4.dnsv4.com Registration Time: 2024-08-22 17:05:16 Expiration Time: 2028-08-22 17:05:16 DNSSEC: signedDelegation ``` ### 生效时间 - 隐私保护服务开启后,通常在2-24小时内生效 - 解除隐私保护后,原始信息恢复显示时间为2-24小时 ## 常见问题 ### Q:隐私保护会影响域名正常使用吗? A:不会影响,隐私保护只是隐藏WHOIS查询中的联系信息,不会影响: - 域名解析功能 - 网站正常访问 - 邮件服务使用 - SSL证书申请 ### Q:开启隐私保护后还需要保持联系信息准确吗? A:是的,虽然联系信息被隐藏,但您仍需: - 保持注册信息的真实性和准确性 - 及时更新联系邮箱和电话 - 响应注册商的重要通知 ### Q:域名转移会影响隐私保护服务吗? A:不会影响。根据CNNIC规定: - 域名转移到其他注册商,隐私保护服务继续有效 - 无需在转入方注册商重新购买隐私保护 - 服务剩余期限和到期时间保持不变 ### Q:隐私保护到期后会自动恢复原信息吗? A:是的,隐私保护服务到期后: - 域名WHOIS信息将自动恢复公开显示 - 建议在到期前及时续费或开启自动续费 - 服务到期前会收到提醒通知 ## 联系客服 如果在隐私保护服务使用过程中遇到问题,请联系宝塔客服: - **微信客服**:访问 https://www.bt.cn/new/wechat_customer ## 相关文档 - [域名注册](./domain-registration.md) - [域名续费](./domain-renewal.md) - [信息模板管理](./info-template.md) --- source: https://docs.bt.cn/domain/user-guide/dns/record-setup/caa-record.md.txt # 添加 CAA 记录:授权指定 CA 签发 SSL > 在宝塔 DNS 后台添加 CAA 记录,授权指定 CA 机构为域名签发 SSL 证书,防止证书错误签发;说明 flag/tag/value 格式、issue/issuewild/iodef 与多条记录用法。 # 设置CAA记录 ## 操作场景 如果您需要授权指定CA机构为您的域名签发SSL证书,以防止SSL证书错误签发,则需要添加CAA记录。本文档指导您如何添加CAA记录。 ## 操作步骤 1. 登录[堡塔域名管理后台](https://www.bt.cn/domain/domain/list),进入"域名列表"页面,找到需要设置CAA记录的域名,点击"解析"按钮 ![域名解析按钮](https://docs.bt.cn/img/user-guide/domain-resolve-btn.png) 2. 点击【添加记录】,填写以下记录信息: ![添加CAA记录](https://docs.bt.cn/img/user-guide/add-caa-record.png) - **主机记录**:填写子域名。例如,添加 `www.example.com` 的解析,您在"主机记录"处填写"www"即可。如果只是想添加 `example.com` 的解析,您在"主机记录"处选择"@"即可。 - **记录类型**:选择"CAA"。 - **线路类型**:选择"默认"类型,否则会导致部分CA机构无法进行认证。 - **记录值**:CAA记录的目标值格式为:`flag tag value`。您可以将多个CAA字段添加到域名的DNS记录中。 | 参数 | 说明 | | --- | --- | | flag | 目前取值为0-128,用于标志认证机构。默认情况下填写0,表示如果颁发证书机构无法识别本条信息,进行忽略。 | | tag | 取值为 issue、issuewild、iodef。 | | value | 为不包含 `\|`、`""`、`、`、`<>`、中文字符的字符串。 | **示例**:`0 issue bt.cn` **tag字段说明:** - **issue**:CA授权单个证书颁发机构发布的任何类型域名证书 - **issuewild**:CA授权单个证书颁发机构发布主机名的通配符证书 - **iodef**:CA可以将违规的颁发记录URL发送给某个电子邮箱 - **权重**:不需要填写。 - **MX优先级**:不需要填写。 - **TTL**:为缓存时间,数值越小,修改记录各地生效时间越快,默认为600秒。 3. 点击【确定】,完成添加。 :::tip 说明 操作过程中如果出现问题,请您联系客服。 ::: --- source: https://docs.bt.cn/domain/api/dns-records/pause-record.md.txt # API·暂停 DNS 解析记录 > POST /api/v1/dns/record/pause 接口,暂停指定 DNS 解析记录使其停止解析但保留记录信息,与删除不同可随时通过启动接口恢复。 # 暂停解析记录 ## 接口描述 暂停指定的 DNS 解析记录,暂停后该记录将停止解析,但记录信息会保留,可以随时恢复。 **接口地址:** `POST /api/v1/dns/record/pause` :::info 说明 暂停记录与删除记录的区别: - **暂停**:记录停止解析但信息保留,可恢复 - **删除**:记录完全移除,无法恢复 ::: ## 输入参数 ### 请求示例 ```json { "record_id": 9, "domain_type": 2, "domain_id": 1 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | record_id | 是 | Integer | 记录 ID | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | domain_id | 是 | Integer | 域名 ID | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": {}, "msg": "暂停解析记录成功", "status": true } ``` **错误响应:** ```json { "code": 409, "msg": "记录已经是暂停状态", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据(空对象) | --- source: https://docs.bt.cn/domain/api/dns-records/start-record.md.txt # API·启动 DNS 解析记录 > POST /api/v1/dns/record/start 接口,恢复已暂停(disabled)的 DNS 解析记录使其重新生效;用于已启用记录时会返回状态冲突错误。 # 启动解析记录 ## 接口描述 启动(恢复)已暂停的 DNS 解析记录,使其重新开始解析。 **接口地址:** `POST /api/v1/dns/record/start` :::info 说明 启动记录只能用于已暂停(disabled)的记录,对于已启用(enabled)的记录调用此接口会返回状态冲突错误。 ::: ## 输入参数 ### 请求示例 ```json { "record_id": 2486, "domain_type": 1, "domain_id": 335 } ``` ### 请求参数 | 参数名称 | 必选 | 类型 | 描述 | |---------|------|------|------| | record_id | 是 | Integer | 解析记录 ID | | domain_type | 是 | Integer | 域名类型:1(宝塔内部域名)、2(外部域名) | | domain_id | 是 | Integer | 域名 ID | ## 输出参数 ### 响应示例 **成功响应:** ```json { "code": 0, "data": {}, "msg": "启动解析记录成功", "status": true } ``` **错误响应:** ```json { "code": 409, "msg": "记录已经是启动状态", "status": false } ``` ### 响应参数 | 参数名称 | 类型 | 描述 | |---------|------|------| | code | Integer | 状态码,0 表示成功 | | status | Boolean | 请求是否成功 | | msg | String | 返回消息 | | data | Object | 返回数据(空对象) |