index

Welcome!

This is a (mostly static) website intended to collect my thoughts and much of my life into one place. This page will serve as a quick introduction to the website and details on how I put it together - partially for other people but mostly for me in case I want to do it again!

Me

My name is Sanchit Sharma, sometimes also referred to as:

I'm a software developer, devops person and all-round nerdy person. Head on over to my personal page for more info.

The Site

This website is running off a microserver sitting next to my desk. I've done everything from scratch - from hosting to the domain to writing the code myself, by hand. Mostly this has been a learning exercise - I'm not sure I would do things the same way in the future - but I do enjoy the idea that I'm able to host things from my own home!

So how does it work? The code is hosted on github so feel free to browse at your leisure. The code is licensed under the Apache-2.0 license, so copy, reuse, mess around with whatever you feel like. If you have suggestions, feel free to open pull requests or issues.

The Server

I own a HPE ProLiant MicroServer Gen8 which currently lives next to my desk. Aside from being a small and low-powered device, it's easily quiet enough to sit in my bedroom, which is a massive plus. Inside is currently a single 2TB spinning-platter drive, though I plan to increase that to a second for RAID and then potentially two more for increased storage.

The server itself is running Fedora Server 25, and I run updates daily with an ansible playbook that manages all of my hardware. Whenever a new kernel is pushed to the repositories, I immediately install it and reboot into the new kernel.

Since this site is currently running on the single server (no HA yet!), this results in relatively high downtime. For me, this is a satisfactory tradeoff as the site has little traffic at the moment. However, I've also covered the details of how to install and run Openshift in HA mode - multiple masters, multiple nodes, and multiple etcd nodes.

The OS has the minimum installed: Openshift, Ansible and a few other utilities aside from the basic install of Fedora Server.

Openshift

All my code runs in Openshift. This means everything hosted on this server. I do this for security and also a little bit for convenience. My main project (which contains this site) has a route set up inside of Openshift that forwards traffic to the primary container.

That container is a simple Docker container based on the HTTPD image with my website and a slightly edited conf file inside (see the Dockerfile).

Server + Openshift

My server on the left, the Openshift web client on the right.

Technically, Openshift is overkill for what I'm trying to do here. However, I've taken this on as a learning exercise and I expect that Openshift will be useful for some of the things that I want to host here in the future, so I've stuck with it.

To make my life a bit simpler, the hosts file on my dev machine allows me to directly access my server, so I can see how things differ when accessing it internally vs from the outside world.

Since I don't want to allow ports other than 80 and 443 through my router, I haven't set up build hooks. This means that I have to manually build the site container when I update it, but I think this is a fair compromise as once the site is fully built it won't be updated more than once every month or so.

Gandi

My registrar is Gandi, although it annoys me that they spelled Gandhi wrong :p

They've been pretty easy to work with and have a good corporate philosophy in my opinion. Although my mail is not currently running, I plan to use their services for it as I'm not interested in setting up a mail server from scratch just yet.