Question:
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?
Answer:
I would go to Azure WebApp on Linux:
- https://learn.microsoft.com/en-us/azure/app-service/containers/app-service-linux-intro
- https://learn.microsoft.com/en-us/azure/app-service/containers/quickstart-custom-docker-image
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:password@pypi.myserver.com/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)