Search code examples
pythonazureamazon-web-servicespypipypiserver

How to host a private python package manager in Azure or AWS


I work in a small team of Python developers and we aim to create a private package manager to store our packages. I came cross pypicloud and following its tutorial I've successfully been able to upload and install packages stored in AWS-S3. That's fantastic.

However, the private package manager is launched and hosted locally typing pserve server.ini in the terminal. The package manager is then accessible at http://0.0.0.0:6543/#/. Ideally, I want this server to be:

  • hosted in the cloud (possibly Azure but AWS is fine)
  • up and running 24/7
  • secure. Users must authenticate in order to see the package manager and the packages.
  • not hosted in a operative system but something higher level (e.g. docker container or Azure function app?) since it would be much easier to maintain, geo-replicate etc

Question: How to get a secure and private server (python package manager) always up and running in the cloud?


Solution

  • I would go to Azure WebApp on Linux:

    This is roughly just a simple way to deploy a container without the burden of Kubernetes. ACS might be best if you really want a dedicated container solution (there is several orchestrators).

    For the authentication part, htaccess file with basic authentication is supported by pip. This allow to do something like extra-index-url = https://login:[email protected]/simple/. I don't have a prefered tutorial, but google/bing something like "pip private repository" you will have no issue to find answers.

    (full disclosure, I work at MS in the Azure Python SDK team)