blackthorn-interstellar/pypiron

GitHub: blackthorn-interstellar/pypiron

用 Rust 编写的超高性能自托管 PyPI 服务器与镜像,兼顾极速吞吐、弹性扩展与默认供应链安全防护。

Stars: 4 | Forks: 0

# pypiron logo pypiron [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/blackthorn-interstellar/pypiron/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/pypi/v/pypiron.svg)](https://pypi.org/project/pypiron/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Docs](https://img.shields.io/badge/docs-pypiron-bf5a2e.svg)](https://pypiron.com/) 一个超快的 Python 包服务器,使用 Rust 编写。 pypiron 是目前最快、最可靠的 PyPI 服务器(及镜像)。

Max sustained install throughput: pypiron vs bandersnatch, pypiserver, pypicloud, devpi, proxpi

- **比任何 PyPI 服务器快 100 倍。** 在 2 个 vCPU 上实现每秒 8,288 次验证安装。([基准测试](docs/reference/benchmarks.md)) - **默认安全。** 新版本发布需等待 7 天,已知恶意软件绝不会被安装,无依赖混淆,支持物理隔离。基于 2024 年以来知名 PyPI 包的入侵事件测试:首发日(Day 0)拦截率为 34%,配合 30 天冷却期可达 86%。([防御机制](docs/concepts/supply-chain.md)) - **极其严苛的测试。** [模糊测试](dev/TESTING.md#fuzzing)、[混沌工程](dev/TESTING.md#chaos-and-crash-consistency)、[确定性仿真](dev/TESTING.md#deterministic-simulation-the-vopr)、[模型检测](dev/TESTING.md#machine-checked-models-stateright)、[真实云环境](dev/TESTING.md#real-cloud-backends)、[性能测试](dev/TESTING.md#performance-testing),以及 [PyPI 上的所有 1700 万个文件](src/corpus_check.rs)。 - **无限扩展。** 单台 8 vCPU 机器:可应对 PyPI 真实索引流量,达 200,000 请求/秒,p99 低于 3 毫秒。或者在一个 bucket 上运行任意数量的节点。([流量重放](dev/bench/replay/)) - **从容应对宕机。** 跨区域、跨云平台(S3 + GCS + Azure),自动故障转移,零数据丢失。([多区域](docs/guides/multi-region.md)) - **兼容一切。** uv, pip, poetry, pdm, pipenv, hatch, flit, twine。 **状态:beta。** 一个年轻的项目,却有着像老牌项目一样严苛的测试 —— 运行它,破坏它, [提交 issue](https://github.com/blackthorn-interstellar/pypiron/issues)。 ## 快速入门

Demo: uvx pypiron serve, uv publish, uv pip install — a working private index in seconds

``` # 1. 启动服务器 (serves http://localhost:8080) — native binary… uvx pypiron serve --admin-pass "$ADMIN" # …或者在容器中 (storage at /data, built-in healthcheck): docker run -p 8080:8080 -e PYPIRON_ADMIN_PASS="$ADMIN" \ ghcr.io/blackthorn-interstellar/pypiron:latest # 2. Publish uv publish --publish-url http://localhost:8080/legacy/ \ --username admin --password "$ADMIN" dist/* # 3. Install uv add --default-index http://localhost:8080/simple/ acme-widgets ``` 仅设置了 `--admin-pass`:写入操作需要管理员凭据,读取操作保持公开。 pip, twine 和 poetry 的等效命令:。 ## 进阶指南 - [设置](docs/guides/setup.md) — 私有包、公开代理、同步镜像、S3 - [配置](docs/reference/configuration.md) — 每个 flag 及其对应的 `PYPIRON_*` 环境变量 - [基准测试](docs/reference/benchmarks.md) — 上述数据的测量方式 - [面向 AI 代理](docs/for-agents.md) — 一份决策指南,以代理的口吻写给代理 ## 像对待生命线一样严苛测试 任何人都能贴出一张基准测试图。pypiron 经过了端到端、对抗性以及持续不断的验证 —— 下文的每一项声明都附有你可以亲自运行的检验链接。 - **真实的生态系统全景。** 每次测试运行都会通过 HTTP 驱动真实服务器,并使用八个真实的客户端 —— uv, pip, poetry, pdm, pipenv, hatch, flit, twine。不是 mocks:而是[你的团队正在使用的真实工具](dev/TESTING.md#client-compatibility-matrix)。 - **涵盖整个 PyPI。全覆盖。** 解析器完整处理[PyPI 上上传过的每一个文件 —— 全部 1700 万个](src/corpus_check.rs) —— 并与每一个文件的基准事实进行匹配。 - **频繁 Kill -9 直到习以为常。** 我们在每次写入的每个步骤中杀死服务器,在 upload 中途杀死集群节点,并向其输入截断的、损坏的以及哈希不匹配的上游响应。它每次都能收敛到一个一致、可安装的状态([崩溃扫描](tests/test_crash_consistency.py)、[集群混沌](tests/test_chaos_fleet.py)、[上游故障](tests/test_chaos_upstream.py))。 - **收敛性由机器验证,而非采样。** 模型检测器对写入协议和多 bucket 合并进行了详尽验证,覆盖了写入者、工作进程、崩溃以及分区形态冲突的*所有*有限交叉情况 —— 运行的是服务器发布的相同决策函数,受[一致性测试](dev/TESTING.md#machine-checked-models-stateright)约束,以确保代码和模型不会产生偏离([模型详情](tests/model_replication.rs))。 - **每晚进行“瓶中集群”测试。** 确定性仿真在虚拟时间下以单线程方式运行整个多节点集群 —— 每晚大约执行十万个带有随机种子的崩溃/故障/重启计划,每个故障都可以[通过 8 字节的种子复现](dev/TESTING.md#deterministic-simulation-the-vopr)([仿真器详情](examples/vopr.rs))。 - **每晚模糊测试,每次 PR 安全审计。** 覆盖率引导的模糊测试工具每晚重击那些处理攻击者控制字节的解析器[(每晚执行)](.github/workflows/fuzz.yml);依赖树中出现的任何新安全公告都会[导致构建失败](.github/workflows/ci.yml)。 - **持续审计直到无漏洞可报。** Fable 5 —— Anthropic 的前沿模型 —— 执行了一轮又一轮的安全审计,直到最终返回完全无漏洞的结果。总计而言,投入了价值超过 7,000 美元的前沿模型计算(按 API 列表价格计算)用于构建和强化 pypiron。 - **毫无保留的基准测试。** 上面的图表来自于所有五个竞品的[已发布的 docker-compose 配置](dev/bench/install/)。你可以重新运行它。我们等你。 ## 横向对比 如果你的 Markdown 渲染器支持,将鼠标悬停在勾选标记上可查看补充说明。 | 功能 | pypiron | bandersnatch | pypiserver | pypicloud | devpi | proxpi | | --- | :---: | :---: | :---: | :---: | :---: | :---: | | 易于设置 | | — | | — | — | | | 速度快 | | | — | — | — | — | | 私有包托管 | | — | | | | — | | 缓存 PyPI 代理 | | — | — | | | | | 同步镜像 | | | — | — | — | — | | 依赖冷却期 | | — | — | — | — | — | | 恶意软件拦截 | | — | — | — | — | — | | 无依赖混淆 | | — | — | — | | — | | 漏洞审计 | | — | — | — | — | — | | 无需数据库即可扩展 | | | — | — | — | — | | 多区域 / 多云故障转移 | | — | — | — | | — | | 易读的包页面 | | — | — | | | — | | 下载统计 | | — | — | — | — | — | | 磁盘支持 | | | | | | | | 云存储支持 | | | — | | — | — | 完整分析 —— pypiron 对比 devpi、pypiserver 和 Artifactory,以及哪款工具 适合哪种任务:。 ## 许可证 MIT — 查看 [LICENSE](LICENSE)。
标签:DevSecOps, PyPI镜像, Python, Rust, 上游代理, 包管理, 可视化界面, 文档安全, 无后门, 漏洞探索, 网络流量审计, 请求拦截, 通知系统