Goals
My goal is to help as many people as possible to get away from Big Tech and assist them in self hosting their own stuff, and showing them that it is not so hard as they think.
A proven recipi
If you follow one of the many "howto's" on the internet, it often requires some fiddling, because in the nowto they use a different provider, a different operating system (version), differeent software versions, and so forth. Often these "howto's" are made on an already existing system with a lot of software already installed and running that the author forgets to tell about.
My idea is that with a bunch of people we hire a VPS at the same provider, use the same software, the same versions, etc. For this goal I will hire myself a new VPS, setup a new domain name, and record every single step and command. If one follows this exactly, you will end up with the same system and the same reliable functionality.
Educational
You could just copy all the steps I take during the installation, but I will also explain every step so that you might understand why and what it does, so along the line you will learn a few things. Hopefully it will give you enough background to later self host a few more things than I cover.
Low maintenance
Some people who once ventured into self hosting compain that it was so much work to keep everything working. I don't have that experience, but that is maybe I follow a different approach. I want to keep things simple. So I always aim to set everything up with low maintenance requirements in mind. It also means that I'm updating stuff everytime there is a new update. If things work to satisfaction, why try to fix something that ain't broken? I typically run my servers for years without any updates (with the exception of security updates, which only very rarely break stuff). Software doesn't stop working by itself. Once you have setup a stable system, if you don't mess with it, it will function for a long time to come. If, in a couple of years, you feel you are getting behind and/or really want to make use of some new features, it is always better to hire a new VPS besides the old one, install everything from scratch (while peeking into your old setup to keep as many settings that proved to work), and only once you are satisfied with the new VPS, you cancel the hire of the old one.
Software
I will focus on software I used myself, which has proven to be stable and providing functionality that makes it worth installing and using it. I'm open for suggestions though.
Books
Books 1 and 2 will be mandatory, the rest is optional. Just a rough scetch of the books I have in mind:
Book 1: Infrastructure
In this book we will setup the infrastructure. We need to hire a VPS, register a domain name, and to get it all working together and accessible from your home system.
- SSH keypair, so we can access our VPS in a safe way without the need of a password.
- Domain registration.
- DNS setup at a free host.
- SSH drive, so we can edit setup files from our home system.
- Honeypot. It is fun to catch some offenders and make our new system less attractive to bots right from the beginning.
- Homepage. A simple homepage to lew the world know who is the owner.
Book 2: Essential software
- MySQL. This is going to be our main database that will be used by various services.
- S3. Let's add some external storage so we will have enough for our cloud and backups.
- Backup. We will setup an automatic backup system and use the external storage as a target.
- Docker. We are going to run some Dockerized services for ease of installation.
- Vaultwarden. Time for a reward. This is going to be your first self hosted piece of software. By now you have to remember a lot of passwords for all the stuff we just have installed. But not anymore with this very secure password management system.
Book 3: Cloud
- NextCloud. This is a great system that enables you to use your VPS as a backup system, a "dropbox" system, a file sharing system, a photo management system, a calendar and contacts synchronizer (byebye Google), etc.
Book 4: E-mail
- Postfix. This is the mail interface to the outside world
- Dovecot. This will organize your mail into mailboxes and allow you to read your mail with external clients.
- Mailadmin. Adding new mailboxes will be a piece of cake with this GUI.
- Roundcube. To read your email on the web.
And of course we will setup all the stuff that is required today to get your mail working reliable, such as DMARC, DKIM, etc. and we will also take some very effective measures against spam.