PyPI Registry (DevPI)

Private Python package index powered by DevPI.

URL: pypi.registry.hochguertel.work

Features

  • Private Python package hosting
  • Mirrors and caches PyPI (pypi.org) packages
  • Web UI for browsing packages
  • User and index management via CLI
  • Supports pip, setuptools, and twine

Quick Start

Install from Private Index

pip install --index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/ mypackage

Configure Globally

pip config set global.index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/

Upload Packages

pip install devpi-client
devpi use https://pypi.registry.hochguertel.work
devpi login root --password <password>
devpi upload

Developer Guide

Configure pip

# Set as default index
pip config set global.index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/

# Or per-project in pip.conf / requirements.txt
echo "--index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/" > requirements.txt

Install Packages

# Install from private index (falls back to PyPI)
pip install mypackage

# Install specific package from private index
pip install --index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/ mypackage

Upload Packages

Using devpi-client

pip install devpi-client
devpi use https://pypi.registry.hochguertel.work
devpi login root --password <admin-password>

# Create a custom index
devpi index -c root/myindex bases=root/pypi

# Upload a package
cd /path/to/package
devpi upload

Using twine

pip install twine
twine upload --repository-url https://pypi.registry.hochguertel.work/root/pypi/ dist/*

Configure in ~/.pypirc:

[distutils]
index-servers =
    hochguertel

[hochguertel]
repository = https://pypi.registry.hochguertel.work/root/pypi/
username = root
password = <admin-password>

CI/CD Integration

pip install --index-url https://pypi.registry.hochguertel.work/root/pypi/+simple/ -r requirements.txt

Or in pyproject.toml:

[[tool.uv.index]]
url = "https://pypi.registry.hochguertel.work/root/pypi/+simple/"

DevOps Guide

Architecture

DevPI runs as a single container with devpi-server and devpi-web.

  • Image: Custom build (pypi/Dockerfile)
  • Components: devpi-server, devpi-web (UI), devpi-client
  • Port: 3141 (internal)
  • Storage: Bind mount at data/pypi/

Management

cd /opt/services/registries

task up:pypi
task down:pypi
task logs:pypi

# Health check
curl -sf https://pypi.registry.hochguertel.work/+api

User Management

pip install devpi-client
devpi use https://pypi.registry.hochguertel.work
devpi login root --password <admin-password>

# Create a user
devpi user -c myuser password=mypassword email=myuser@example.com

# Create an index for the user
devpi index -c myuser/stable bases=root/pypi

Backup

tar -czf pypi-backup-$(date +%Y%m%d).tar.gz data/pypi/