For hosting, I recommend using a "traditional" non-autoscaling VPS. For specific companies, I will recommend either DigitalOcean or Linode. You can use their $5/month plan to test and upgrade as...
For hosting, I recommend using a "traditional" non-autoscaling VPS. For specific companies, I will recommend either DigitalOcean or Linode. You can use their $5/month plan to test and upgrade as traffic demands. I think these are better for hobbyist (and they are used by real companies!) than something like Azure or AWS because they're simpler and less things can go wrong (you'll never have your AWS key stolen and charged $12,000 because someone was mining bitcoin on your account).
For OS, I would recommend Ubuntu. I'm sure opinions will vary, Debian based is just what I'm used to.
For the software stack, since you're using Django, I would recommend using:
Nginx as your primary web server - set it up to reverse proxy traffic to Gunicorn
Gunicorn as your WSGI server
Let's Encrypt certificates - just install and run certbot and you should have HTTPS traffic in no time.
Edit
Tutorial on this stack I found from DO a little old but nothing has changed
I have this very exact setup and followed this exact tutorial (well, an updated version; they have versions of this tutorial for quite a number of Linux distro) for my very small scale and private...
I would recommend using
I have this very exact setup and followed this exact tutorial (well, an updated version; they have versions of this tutorial for quite a number of Linux distro) for my very small scale and private video sharing website. It's working very well.
Slightly unrelated:
Let's Encrypt certificates - just install and run certbot and you should have HTTPS traffic in no time.
Is it just a matter of following this EFF guide or is there another layer of registration required somewhere ? Also, by "hosting", do they mean the actual host-the-thing-that-produce-html (in my case: DigitalOcean) or host-of-the-adress (in my case: Gandi) ?
Regarding the LetsEncrypt thing, yep, that's correct! Just follow their guide. It's really that simple—it's such an amazing service. They even can auto-renew certs for you every 90 days, and email...
Regarding the LetsEncrypt thing, yep, that's correct! Just follow their guide. It's really that simple—it's such an amazing service. They even can auto-renew certs for you every 90 days, and email you if a cert is about to expire or re-certification failed.
And @stu2b50 likely means your VPS provider, so DigitalOcean (who I use too! Great company), since I presume you've already configured your nameservers for your domain under the DigitalOcean Networking tab with AAAA and A records.
DO is awesome and their API for LE is great. I have wildcards for all of my domains, too. LE is such a blessing. A few weeks ago I tested a bunch of VPS providers with similar specs to the $5...
DO is awesome and their API for LE is great. I have wildcards for all of my domains, too. LE is such a blessing.
A few weeks ago I tested a bunch of VPS providers with similar specs to the $5 plan. I had no idea how easy and clear the DO interface is. It’s not perfect, but at least it’s mostly logical and not stuffed with reused cpanel icons :)
I definitely recommend Heroku. Especially if you’re just getting up to speed on new web tech the last thing you want is to also manage your own infrastructure. We use Heroku at work with...
I definitely recommend Heroku. Especially if you’re just getting up to speed on new web tech the last thing you want is to also manage your own infrastructure. We use Heroku at work with moderately sized applications and it never gives us any trouble. Let me know if you have any specific questions about it.
I'll also recommend Heroku for anything small/hobbyist. It's all AWS under the hood, so it's fairly robust, but it's mostly abstracted away from you. I prefer Java+Spring for backend, but that's...
I'll also recommend Heroku for anything small/hobbyist. It's all AWS under the hood, so it's fairly robust, but it's mostly abstracted away from you.
I prefer Java+Spring for backend, but that's mostly personal preference.
Netlify is great for small applications--ive never had to scale it so I'm not sure how pricing plays out, but for blogs/cms it has a phenomenal free tier. It's replacing any website I would...
Netlify is great for small applications--ive never had to scale it so I'm not sure how pricing plays out, but for blogs/cms it has a phenomenal free tier. It's replacing any website I would normally use github pages for. It supports many of the currently popular frameworks like Gatsby, next.js, jekyll etc. I would recommend staying away from Gatsby and using Jekyll or WordPress, the current wave of node.js frameworks is a nightmare to learn for someone fresh to javascript.
In terms of hosting your own, if you're into that you can dramatically undercut digital ocean prices by checking out smaller local hosting services. I frequent lowendbox.com and currently host things on a server costing me 30$/year.
AWS isn't bad. Between the different services in there: EC2 (like renting backspace in the old days) to the more specialized services like SQS, DynamoDB, etc. they've got almost everything you need.
AWS isn't bad. Between the different services in there: EC2 (like renting backspace in the old days) to the more specialized services like SQS, DynamoDB, etc. they've got almost everything you need.
stu2b50's answer is fine and should serve you well. I'll just add: A few years ago, I stopped making apps with all-server-side frameworks like Rails or Django. These days, I use a backend-frontend...
stu2b50's answer is fine and should serve you well. I'll just add: A few years ago, I stopped making apps with all-server-side frameworks like Rails or Django. These days, I use a backend-frontend architecture. Backend is a REST API that interacts with the database, frontend is JS a framework. Something for you to consider. There are a variety of tech options for both sides. REST APIs can be done in Ruby, Python, Node.js, or others. JS frameworks include Vue.js, Angular, React, and more. If you're unsure about DB choice, I recommend PostgreSQL. I may be old school, but I second the recommendation to use a VPS instead of AWS, Azure or Docker. I've found VPSes much simpler and more straightforward, with far less frustration and bewilderment.
I wouldn't recommend this. (Unless OP is also ready to learn how to set up and manage server-side-rendering with their framework of choice) Especially for a question-and-answer style site (which...
These days, I use a backend-frontend architecture. Backend is a REST API that interacts with the database, frontend is JS a framework.
I wouldn't recommend this. (Unless OP is also ready to learn how to set up and manage server-side-rendering with their framework of choice)
Especially for a question-and-answer style site (which is what OP seems to be doing), most visits will be read-only, which (at least in my opinion) should always work without JS.
It will also be a little bit more performant, as the browser is doing less (though that's a pretty small difference if you're using a modern browser and don't mess it up like New Reddit)
[...] but I second the recommendation to use a VPS instead of AWS, Azure or Docker.
I agree with what you're saying here, but just to be a little pedantic:
Both AWS and Azure have VPS offerings (with a pretty neat mark-up because "scalability"), and Docker is just software to be used on top of a regular server. It's kinda useful if you want to organize your stuff (and maybe other things like portability too, that's just how I used it), though for OP's case a single server w/o any Docker/container mess will probably be enough for a while.
For hosting, I recommend using a "traditional" non-autoscaling VPS. For specific companies, I will recommend either DigitalOcean or Linode. You can use their $5/month plan to test and upgrade as traffic demands. I think these are better for hobbyist (and they are used by real companies!) than something like Azure or AWS because they're simpler and less things can go wrong (you'll never have your AWS key stolen and charged $12,000 because someone was mining bitcoin on your account).
For OS, I would recommend Ubuntu. I'm sure opinions will vary, Debian based is just what I'm used to.
For the software stack, since you're using Django, I would recommend using:
Nginx as your primary web server - set it up to reverse proxy traffic to Gunicorn
Gunicorn as your WSGI server
Let's Encrypt certificates - just install and run certbot and you should have HTTPS traffic in no time.
Edit
Tutorial on this stack I found from DO a little old but nothing has changed
https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
This is the usual stack I use for small python based projects
Yup. I accidentally committed an AWS credential to GitHub once, exactly this happened. Except the bill was only $5400...
I have this very exact setup and followed this exact tutorial (well, an updated version; they have versions of this tutorial for quite a number of Linux distro) for my very small scale and private video sharing website. It's working very well.
Slightly unrelated:
Is it just a matter of following this EFF guide or is there another layer of registration required somewhere ? Also, by "hosting", do they mean the actual host-the-thing-that-produce-html (in my case: DigitalOcean) or host-of-the-adress (in my case: Gandi) ?
Regarding the LetsEncrypt thing, yep, that's correct! Just follow their guide. It's really that simple—it's such an amazing service. They even can auto-renew certs for you every 90 days, and email you if a cert is about to expire or re-certification failed.
And @stu2b50 likely means your VPS provider, so DigitalOcean (who I use too! Great company), since I presume you've already configured your nameservers for your domain under the DigitalOcean Networking tab with AAAA and A records.
DO is awesome and their API for LE is great. I have wildcards for all of my domains, too. LE is such a blessing.
A few weeks ago I tested a bunch of VPS providers with similar specs to the $5 plan. I had no idea how easy and clear the DO interface is. It’s not perfect, but at least it’s mostly logical and not stuffed with reused cpanel icons :)
If you want a Debian-based server it’s probably better to go with Debian stable over Ubuntu.
I definitely recommend Heroku. Especially if you’re just getting up to speed on new web tech the last thing you want is to also manage your own infrastructure. We use Heroku at work with moderately sized applications and it never gives us any trouble. Let me know if you have any specific questions about it.
I'll also recommend Heroku for anything small/hobbyist. It's all AWS under the hood, so it's fairly robust, but it's mostly abstracted away from you.
I prefer Java+Spring for backend, but that's mostly personal preference.
Netlify is great for small applications--ive never had to scale it so I'm not sure how pricing plays out, but for blogs/cms it has a phenomenal free tier. It's replacing any website I would normally use github pages for. It supports many of the currently popular frameworks like Gatsby, next.js, jekyll etc. I would recommend staying away from Gatsby and using Jekyll or WordPress, the current wave of node.js frameworks is a nightmare to learn for someone fresh to javascript.
In terms of hosting your own, if you're into that you can dramatically undercut digital ocean prices by checking out smaller local hosting services. I frequent lowendbox.com and currently host things on a server costing me 30$/year.
AWS isn't bad. Between the different services in there: EC2 (like renting backspace in the old days) to the more specialized services like SQS, DynamoDB, etc. they've got almost everything you need.
stu2b50's answer is fine and should serve you well. I'll just add: A few years ago, I stopped making apps with all-server-side frameworks like Rails or Django. These days, I use a backend-frontend architecture. Backend is a REST API that interacts with the database, frontend is JS a framework. Something for you to consider. There are a variety of tech options for both sides. REST APIs can be done in Ruby, Python, Node.js, or others. JS frameworks include Vue.js, Angular, React, and more. If you're unsure about DB choice, I recommend PostgreSQL. I may be old school, but I second the recommendation to use a VPS instead of AWS, Azure or Docker. I've found VPSes much simpler and more straightforward, with far less frustration and bewilderment.
I wouldn't recommend this. (Unless OP is also ready to learn how to set up and manage server-side-rendering with their framework of choice)
Especially for a question-and-answer style site (which is what OP seems to be doing), most visits will be read-only, which (at least in my opinion) should always work without JS.
It will also be a little bit more performant, as the browser is doing less (though that's a pretty small difference if you're using a modern browser and don't mess it up like New Reddit)
I agree with what you're saying here, but just to be a little pedantic:
Both AWS and Azure have VPS offerings (with a pretty neat mark-up because "scalability"), and Docker is just software to be used on top of a regular server. It's kinda useful if you want to organize your stuff (and maybe other things like portability too, that's just how I used it), though for OP's case a single server w/o any Docker/container mess will probably be enough for a while.
I use Clever Cloud because I’m French.
It’s like Heroku, but better.