I’m a windows guy. Why do I need a Linux server?

I love to Windows! I can navigate around pretty well and love having the convenience of a GUI as you’ve probably read in my last post. Somewhere along the way, I purchased up a Mac and have been stuck in a world between macOs and Windows running in Parallels and on my desktop. Okay, I think I’m getting the hang of this.

Recently, I’ve been playing a lot with NodeJs and .NET Core. I decided it’s time to change up my hosted web technologies. Previously, I was using HostGator for PHP websites (I built my own MVC framework) and it was great for what I was doing at the time. So taking a look at what would support some of these new toys that I wanted to play with, I’ve realized a VPS sounds like what I wanted but they’re typically expensive. I stumbled across this place called DigitalOcean! They can give you an SSD based VPS for $5/month! Ok, this sounds great, but there’s a catch. All you start with is a Linux box with a bash terminal. That’s it. No CPanel. No GUI. Nuthin.

I’ve decided it’s time to learn how to setup a Linux server!

Honestly, I’m not completely new to the Linux game. I’ve been playing with Raspberry Pi’s since they came out, but most of the time it’s just been downloading an image or copy/pasting commands without completely knowing what they’re doing. I’ve decided to look into how to setup a Linux server. I’m used to Windows servers, so how hard can it be?

At first, I had to refresh on some Linux magix. If you’re starting from scratch with Linux, here’s some things I found useful to learn:

  • Terminal on Mac.
    • I was coming from Windows and CommandPrompt, okay?
  • Linux distros.
    • (Ubuntu, FreeBSD, Fedore, Debian, CoreOS, CentOS, etc.) I personally like Ubuntu for a full environment and CoreOs for more minimalistic setups.
  • Curl.
    • Basically used for HTTP requests. Personally, I find it useful for pinging sites. (Like ping on Windows)
  • apt.
    • (Similary to NPM, NuGet, Bower, etc, but for linux apps.

There’s a whole lot of other things to learn, but these are just some of the basics.

Why I went with Docker!

, I did some research to see how I should setup my server. My options as I saw them were:

  • Setup everything from scratch on a new Linux distro and install all my apps on a single image.
  • Use virtual machines for managing/distributing each of my different apps to run.
  • Use Docker.

Long story short, I went with Docker! My thinking was that, since I don’t know how to perfectly setup everything in Linux, I’m going to make mistakes. If it’s all on the same image, I might break something adding each new service and have to start all over. I’m quite familiar with VM’s, and I know the performance cost and complexity it brings with it. This is where Docker seemed to fit the bill!

If I setup each app in a different container, I can get each app working without affecting the others. Also, I found some good articles on the performance of Docker vs. VM’s. Also, if you’re using DigitalOcean, it integrates nicely with Docker and even has an image pre-built for it! Nice! Sounded good enough for me to try, so I went for it! Let me know what experience you’ve had and your thoughts on Docker vs. Virtual Machines. If you’re interested in trying out Digital Ocean or you want to support me, click this link, sign up, and you’ll get $10! That’s two free months!