首页/网络/常用端口速查/3141 devpi Python 包索引服务

3141 devpi Python 包索引服务

Python 私有包索引工具 devpi 的默认端口:内含 pypi 镜像与 devpi-server,常用于内网离线依赖托管。

常用端口速查网络更新于 2026-10-13

3141 是什么

3141 是 Python 私有包索引工具 devpi 的默认端口:devpi-server 对外提供索引服务,内网 pip 通过它拉取依赖,同时它还能镜像上游 PyPI,在离线或受限网络中承担依赖分发。访问 http://host:3141 可以看到索引列表,其中常见的是作为公共源镜像使用的路径。

私有源的风险集中在上传通道

私有源的价值是可控与可缓存,风险同样集中在这里:如果允许匿名上传,供应链投毒只需要一个脚本,就能把与知名库同名的伪造包推到内网索引上,其他主机安装时静默中招。因此上传通道必须有账号与索引级权限隔离。

基本信息

服务devpi-server
协议TCP 3141
用途内网 PyPI 镜像与私有包托管
鉴权用户与索引级权限,需显式配置
安全等级仅内网研发网段

典型使用场景

  • 为离线或受限网络提供依赖源,缓存上游包以减少外网依赖
  • 托管企业内部的私有 Python 包,供构建与部署环境安装
  • 排查依赖安装失败时确认索引地址与镜像同步状态
  • 统一依赖来源,避免不同机器装到不一致的版本
  • 资产核查时确认私有源是否对非研发网段开放

服务与索引检查

服务与索引检查
ss -lntp | grep 3141                          # 确认监听地址
curl -s http://127.0.0.1:3141/ | head -c 200   # 查看索引首页
pip config list                                # 确认客户端实际使用的索引地址

客户端与权限配置

客户端与权限配置
# ~/.pip/pip.conf 或 /etc/pip.conf
# [global]
# index-url = http://devpi.internal:3141/root/pypi/+simple/
# trusted-host = devpi.internal
# devpi 侧:创建独立上传账号与私有索引
# devpi user -c ci password=<口令>
# devpi index -c private bases=root/pypi

常见路径含义

路径含义说明
root/pypi上游镜像索引代理公共源并缓存
root/<索引名>私有索引存放企业内部包
+simple/简单索引接口包管理工具默认访问的路径
上传权限必须收敛到专用账号:允许匿名或研发共用一个账号上传,等于把依赖供应链交给所有能连到 3141 的主机,投毒后很难在安装日志里发现。

与构建缓存的关系

私有索引常与构建机或持续集成环境的本地缓存配合:命中缓存直接复用已下载的包,未命中才回源拉取并写入索引。缓存目录被清理或索引不可达时,构建会集体变慢甚至失败,排查时要先区分是哪一侧出了问题。

运维建议:给索引服务配置磁盘用量告警,定期核对上游镜像的同步状态;升级前先备份索引数据目录,恢复时只需把目录放回原位,不必重新下载全部依赖。

易错点

  • 允许匿名上传:任何人都能推同名伪造包,下游机器安装时静默执行恶意代码
  • 把私有源暴露到公网:内部包名与版本号泄露,还可能成为投毒的目标
  • 只做镜像不做一致性校验:上游包被替换后缓存一并污染,回滚困难
  • 客户端未统一固定索引地址:部分机器仍走公共源,出现版本不一致的隐蔽故障

数据来源与参考

  • devpi 官方文档(默认端口 3141)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌