What's in a Cloud?
When I decided to begin hosting my own cloud services and get off Google, Microsoft, etc., the first thing I did was start documenting the things I absolutely needed.
I ended up with a list of things that I think most people care about:
- Contacts
- Calendar
- File storage
- Kanban board for projects
- A blog platform (hi!)
And then some things that are important to me as an Engineer:
- A Git server and web interface
- Single Sign On
- Automated build server
In addition, I wanted to have some way of easily managing my media:
- Automated photo uploads and online viewing
- Streaming movies and music from home
The length of the list was the first sign that this was not going to be easy. Even figuring out where to begin was a bit of a struggle. I decided to start with finding somewhere to put all this "stuff".
My digital home away from home...
With the easy part done, I decided it's time to get down to finding somewhere to actually run these services. I had a Rasbperry Pi (a small computer), so that was an option, but I don't really want to be limited by my home internet service provider (ISP) or worry about power or a failure at home and losing everything. I decided I would look for some cheap hosting provider. I really wanted either a Virtual Private Server (VPS) or a bare metal server somewhere. Since I was only interested in hosting for myself, a single user, I was looking for a provider that leaned towards the lower power, high affordability side. This lead me to both Scaleway and Vultr. Due to pricing I ended up picking Scaleway, but I use Vultr from time to time as well.
... and home at home
That said, there are times when I want my data to be hosted even closer to home. Or rather, from my home itself. I don't really want to be paying for upload or downloads for my entire photo library to some server in Europe. It's also not a big deal if my photo library is unreachable for some short period of time. For those reasons I decided on using my Raspberry Pi and a NAS (basically a small computer with a stack of harddrives) to host a few services out of my home.
So, what's my cloud really made of?
Ok. So now I had a list of capabilities I wanted and places to put them. I went about hosting them according to availability and privacy needs and ended up with the following:
Scaleway VPS1
- Running an instance of Cloudron.io
- Email server
- Railoop (webmail)
- Ghost (blog)
- Nextcloud (files, contacts, calendar)
- Wekan (kanban board)
- Gitea (git server)
- Tiny Tiny RSS (news reader)
- Bitwarden (password manager)
- CodiMD (documentation, presentations)
Scaleway VPS2
- Drone (build server for dev projects)
- A bunch of other small dev projects
Home Raspberry Pi
- Home Assistant (home automation hub)
- Node-RED (advanced automation home rules)
Home QNAP NAS
- Airsonic (music streaming)
- Plex (photo backups, music, movies, tv)
- MotionEye (home camera monitoring/recording)
This represents pretty much everything that I use. There are other smaller things like Minitor and Dockron that keep things running smoothly, but they've been explained at length already.
If you're interested in an explanation of how I am managing everything, check out my past post: Docker Orchestration from the Couch