← 知识库 / 运维

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/uploadmultipart,字段 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}

踩过的坑

  1. 删除接口不是 /files/delete,是 /files/del,且必须带 isDir 和 forceDelete 参数,否则 404。
  2. 上传后记得清理临时 zip,否则站点根目录会留下可下载的压缩包。
  3. 解压会覆盖同名文件,所以部署前确认 dst 目录正确。

完整流程

打包 zip → 上传到站点根目录 → 解压 → 删除临时 zip → 本机 curl 验证

这套流程已封装为 deploy/deploy.py,后续所有内容更新都走它。