The Apache Libcloud blog announces releases and drivers for Libcloud, a Python library with one interface to many cloud providers.
Commenters recommend Libcloud as a provider-agnostic abstraction over varied IaaS APIs for multi-cloud setups and mixed infrastructure.
Cool! I like to see the cookie-cutter stuff. I used pydanny's cookie-cutter back in the day.
However, as I've become more comfortable in the Django and python ecosystem, I have been cutting closer and closer to the stock install.
I think the cookie-cutter stuff is great for when you have a highly-opinionated way to do things (specific test frameworks, databases, patterns, etc).
Some feedback:
Authentication:
I looked at your way of authentication, and I kindly ask you take a look at djoser [1]. They have a nice authentication system for DRF with a password reset flow.
Or also maybe an integration with Auth0?
Storage:
If you replace boto3 with Apache's libcloud [2], then you make this project a little more platform agnostic. I say this as someone who works across multiple platforms. I see that django-storages even plays nicely with it also [3].
And to be honest I'm not so thrilled with Heroku as the deployment target. Maybe just beef up the README with instructions on getting started just on my laptop with pip, cookie-cutter, and docker-compose?
All in all, nice job. I'll add my star to your project and consider it next time the use case arises.
[1] - https://github.com/sunscrapers/djoser
[2] - https://libcloud.apache.org/
[3] - https://django-storages.readthedocs.io/en/latest/backends/apache_libcloud.html
I think you could easily start with forks of
ZeroNet (distributed TOR hosting):
https://zeronet.io
https://github.com/HelloZeroNet/ZeroNet
and either:
SecureDrop:
https://securedrop.org
https://github.com/freedomofpress/securedrop
or
NextCloud:
https://nextcloud.com
https://github.com/nextcloud
Though basically you're just routing .onion at a bucket.
Another thing to look at would be building on https://libcloud.apache.org/
https://libcloud.readthedocs.io/en/latest/supported_providers.html
or
https://jclouds.apache.org/
https://jclouds.apache.org/reference/providers/
And providing a storage target. Though you have to consider the possibility of seizure of the host[s] by the service providers state.
See:
https://www.deepdotweb.com/2017/06/10/french-police-seized-tor-relays-wannacry-investigation/
https://www.bleepingcomputer.com/news/security/french-police-seize-two-tor-relays-in-wannacry-investigation/
You can comment freely what you feel right, you work for google doesn’t take away logical arguments and that’s what the debate is about. I am not a Microsoft fanboy, they are no different and so is amazon when it comes to cloud lock-in.
I would have hoped in yester years that instead of Amazon api for cloud, companies would have adopted an open source standard, or just use API from openstack and extend them.
But that didn’t happen now cloud API are new windows kind of platform lock-in of old Microsoft. Personally I use apache-libcloud [1] to make my service as cloud agnostic as possible.
Also try to use a non USA company as backup mostly in Europe given strong privacy laws unlike US firms.
[1] https://libcloud.apache.org/
Project Awesome is an HTTP proxy which means it's even a higher abstraction than a Ruby library :)
In any case, you should have a look at Libcloud (http://libcloud.apache.org/), jclouds (http://jclouds.org), deltacloud (http://deltacloud.apache.org/) and other libraries. Deltacloud exposes a similar functionality through an HTTP interface. We have recently also started working on "Libcloud REST" which will expose all the Libcloud functionality through an HTTP interface which means you will be able to talk to it through an arbitrary language which can speak HTTP.
There are some libraries you can use to abstract away differences between VPS providers:
https://jclouds.apache.org/
https://libcloud.apache.org/
https://developer.rackspace.com/blog/gophercloud/
http://www.openstack4j.com/
For playing with JVM stuff I found openstack4j easier to use from Scala and Clojure than jclouds.
I didn't downvote you, but I figure someone thought you were too off topic.
If you use cloud services, a crucial scenario in your disaster recovery planning is "what if a cloud provider suddenly cuts us off?". It's a single point of failure akin to "what if a DC gets demolished by a hurricane?" or "what if a sysadmin gets hit by a bus?". If you don't have a plan for those scenarios, you're playing with fire.
https://libcloud.apache.org/