# 00. Introduction

There are several ways to host your server, shared hosting, private vps, personal server etc. For now we're just going to cover the first one. We're going to set up our server on Heroku and our database on mLab. I personally prefer using a vps, but it requires a little bit more set up and costs a monthly fee, which doesn't thrill me.&#x20;

I've been using Heroku/mLab for a few weeks and the only "issue" I encounter is the startup lag when the app goes to sleep because I don't really like using a service to ping the backend to keep and alive. If you want to do that that's cool, but it's just not my thing. I'm also in the process of testing the server on a Raspberry Pi and if all goes well I'll write instructions for that too, but for now, let's get going with Heroku and mLab.

The complete setup seems like a lengthy process, I know, but one of the reasons it came out to be the length it did was because I decided to explain a lot of extra little details throughout the process. My advice is to just take it slow and stick with it. I think you'll realize it's not as painful as it seems.

Also, since this entire project is based off the guide in Michael Bazzell's book, and he suggests setting up a Linux machine with Ubuntu, I tried to base all the commands to be compatible for Debian based systems. I'd also like to add, If you've been using Ubuntu for a while and are getting familiar with Linux and enjoy the way it works, I highly suggest checking out Manjaro. Most of the terminal commands are the same and I've included some of the Manjaro/Arch commands too so you should be able to follow with either. For reference in case you're wondering: Ubuntu = Debian. Manjaro = Arch. It's ok if you don't really understand what that means, but I will refer to them as Debian/Arch in the docs.

Now that we've got all that out of the way, let's make sure we have two of the basic packages we'll be using.

One last thing - I know some dummy is gonna try to play hackerman and fool around so I'll just say it now: All the example data I'm using is not real and won't work so don't waste your time copying the Twilio SID from the examples thinking you're gonna get something out of it.

&#x20;
