From 3dcbd0f17336b28bb001a791345f506a9a23ab76 Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Sat, 1 Nov 2025 18:21:07 +0530 Subject: [PATCH] pypi server README.md changes --- README.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d0fe3bd..4eedece 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ This repository defines a private, self-hosted DevOps stack running on Raspberry * **Drone** for CI/CD automation * **Docker Registry** with **Registry UI** * **Drone Runner** for build execution +* **PyPI Server** for private Python package hosting --- @@ -18,6 +19,7 @@ This repository defines a private, self-hosted DevOps stack running on Raspberry | **drone-runner** | Executes Drone pipelines on local Docker host | — | drone-server | | **registry** | Private Docker registry | 6005 | — | | **registry-ui** | Web UI for browsing and managing the registry images | 6001 | registry | +| **pypi-server** | Private Python package index and repository | 6006 | — | --- @@ -210,6 +212,57 @@ Executes pipeline steps on the Docker host using the Drone RPC secret. --- +### 🐍 **PyPI Server** + +Private Python package index for hosting internal packages and dependencies. + +#### Ports + +* **6006 → 8080** — Accessible via browser or pip client. + +#### Mounts + +* `/mnt/omnissiah-vault/data/pypiserver:/data` — Package storage directory. +* `/mnt/omnissiah-vault/data/pypiserver/auth:/auth (ro)` — Authentication credentials. + +#### Environment + +* **PYPISERVER_AUTH=update,download,list** — Enables controlled access. + +#### Command + +```yaml +command: + - -P + - /auth/htpasswd + - -a + - update,download,list + - /data/packages +``` + +#### Usage + +To upload packages: + +```bash +pip install twine +TWINE_USERNAME= TWINE_PASSWORD= twine upload --repository-url https://pip.aetoskia.com dist/* +``` + +To install packages: + +```bash +pip install --index-url https://:@pip.aetoskia.com/simple +``` + +#### Notes + +* Make sure `/data/packages` exists inside the container. +* The `htpasswd` file controls user access levels. +* Test the endpoint in browser: [https://pip.aetoskia.com](https://pip.aetoskia.com) + +--- + ## 🧬 Network Integration Ensure `/etc/hosts` on all relevant devices (Pi nodes, local dev systems) includes: @@ -218,6 +271,7 @@ Ensure `/etc/hosts` on all relevant devices (Pi nodes, local dev systems) includ 192.168.1.111 git.aetoskia.com 192.168.1.111 drone.aetoskia.com 192.168.1.111 dcr.aetoskia.com +192.168.1.111 pip.aetoskia.com ``` --- @@ -230,18 +284,19 @@ Ensure `/etc/hosts` on all relevant devices (Pi nodes, local dev systems) includ docker compose --profile private-pi up -d ``` * Drone and Gitea must both trust the same SSL certificate chain under `/home/aetos/certs`. -* The `registry-ui` and `drone-runner` depend on hostname resolution between internal services, so avoid using raw IPs in environment variables. +* The `registry-ui`, `drone-runner`, and `pypi-server` depend on hostname resolution between internal services. --- ## ✅ Quick Test Checklist -| Component | URL | Expected Result | -| ---------------- |-----------------------------------------------------------------------------------| ------------------------------------- | -| **Gitea** | [https://git.aetoskia.com](https://git.aetoskia.com) | Gitea login page | -| **Drone** | [https://drone.aetoskia.com](https://drone.aetoskia.com) | Drone CI UI linked to Gitea | -| **Registry UI** | [https://registry.aetoskia.com](https://registry.aetoskia.com) | Authenticated Docker registry browser | -| **Registry API** | [https://dcr.aetoskia.com/v2/_catalog](https://dcr.aetoskia.com/v2/_catalog) | JSON listing of repositories | +| Component | URL | Expected Result | +| ---------------- |------------------------------------------------------------------------------| ------------------------------------- | +| **Gitea** | [https://git.aetoskia.com](https://git.aetoskia.com) | Gitea login page | +| **Drone** | [https://drone.aetoskia.com](https://drone.aetoskia.com) | Drone CI UI linked to Gitea | +| **Registry UI** | [https://registry.aetoskia.com](https://registry.aetoskia.com) | Authenticated Docker registry browser | +| **Registry API** | [https://dcr.aetoskia.com/v2/_catalog](https://dcr.aetoskia.com/v2/_catalog) | JSON listing of repositories | +| **PyPI Server** | [https://pip.aetoskia.com/simple](https://pip.aetoskia.com/simple) | Simple index page | ---