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/