1Panel API 全自动部署实战
通过 1Panel REST API 实现网站文件的全自动上传、解压与清理,绕开 MCP 2048 字符限制。
本文记录 Hodiki 网站实际使用的部署通道:1Panel API 上传 → 解压 → 清理,全程一条命令完成。
背景
用 MCP 远程命令传文件有 2048 字符上限,大文件很难传。1Panel 提供了完整的 REST API,配合 API Key(HMAC-SHA256 签名),可以全自动完成文件上传与解压。
鉴权方式
import hmac, hashlib, time
api_key = '你的-API-Key'
ts = str(int(time.time()))
token = hmac.new(api_key.encode(), ('1panel:' + ts).encode(), hashlib.sha256).hexdigest()
# 请求头:1Panel-Token: token, 1Panel-Timestamp: ts
核心接口
| 操作 | 接口 | 说明 |
|---|---|---|
| 上传 | POST /api/v2/files/upload | multipart,字段 path + file |
| 解压 | POST /api/v2/files/decompress | {path, dst, type:"zip"} |
| 删除 | POST /api/v2/files/del | {path, isDir:false, forceDelete:true} |
| 列目录 | POST /api/v2/files/search | {path, page, pageSize} |
踩过的坑
- 删除接口不是
/files/delete,是/files/del,且必须带isDir和forceDelete参数,否则 404。 - 上传后记得清理临时 zip,否则站点根目录会留下可下载的压缩包。
- 解压会覆盖同名文件,所以部署前确认
dst目录正确。
完整流程
打包 zip → 上传到站点根目录 → 解压 → 删除临时 zip → 本机 curl 验证
这套流程已封装为 deploy/deploy.py,后续所有内容更新都走它。