This entire website is hosted for free on my home server!
There are quite a few tools and solutions that I’ve had to use in order to make this possible:
- Unraid – This is the software that my home server runs on. I originally built my server as a way to store and backup my photos at home (with built in redundancy). Originally, I learned about Unraid by watching YouTube videos from Linus Tech Tips. It’s fairly easy to setup and maintain, but the Unraid platform can do so much more.
- Cloudflare – This is a must! It’s a free CDN that protects the security of my computer, doesn’t waste my bandwidth, and makes this site IPv6 compatible! It’s the secret sauce that serves my website to the world. Without it, the performance of my website would be terrible and I wouldn’t be able to self host at all.
- Community Apps / Docker – Here’s where the power of Unraid can really be utilized. There are tons of free Docker apps that once up and running are very easy to update and maintain. These dockers make hosting this site possible. I’ll be discussing them as follows.
- CloudFlareDDNS – This docker communicates with Cloudflare, and automatically updates their DNS records to be able to send traffic to your home server. A crucial step, is that you’ll need to configure your network’s router to route incoming web traffic to your Unraid server. Incidentally, the Comcast Xfinity modem/router wouldn’t allow this, so I had to change my network setup to include a third party Netgear Orbi router.
- NginxProxyManager – Once the traffic is routed to your machine, it has to be pointed at a specific subnet address. NgingProxyManager does that. With it, you can have countless domains and subdomains all pointed to your home network and serve as many separate sites as you could possibly wish. This software also makes it incredibly easy to get an encryption certificate for a root domain that you can apply to all of your subdomains. Quite remarkable!
- MariaDB – A free and easy to use MySQL replacement. A database is necessary for WordPress and Ghost dockers (see below) to operate. It only takes a few lines of code to configure it and set it up for your blogs, then can be left alone.
- WordPress – WordPress actually does everything I need it to do, looks fine. It’s just kludgy and requires a million different plugins to get it to do what you want. It’s just a big bloated beast. I don’t enjoy posting on it at all. It’s so unenjoyable, I’ve actually posted way less than I would like to because it’s such an unpleasant experience.
B2 Cloud Storage: Backblaze B2 storage is an affordable place to host large files that I don’t want using up my bandwidth. Their pricing model is easy to understand and relatively inexpensive compared to the competition. You can see their pricing here.
Akismet Anti-Spam: It’s free and blocks spammers. I haven’t had any issues with it at all.
Disable Generate Thumbnails: This is probably the most controversial section of this page. WordPress and themes generate a ridiculous amount of lower resolution images for everything from thumbnails to the media gallery to any and all images displayed on a web page. While this makes very good sense for reducing page load times, it has many disadvantages too:
- Lowers the quality fo the images displayed – horrible on a photography blog like this one.
- Creates thousands of images that are never used.
- Wastes tons of precious server space.
I optimize my own images using Lightroom. I want them displayed on this website in high resolution – even if that slows down the page. It’s a sacrifice that I’m willing to make in order to preserve quality. The thumbnails for image galleries are created with Justified Image Grid, so I have no need for WordPress to create tons of images automatically in addition to my preferred plugins. The only previews I want created are for the backend media library within WordPress. Here’s a screen shot of the options I have enabled/disabled within the plugin:
Justified Image Grid (JIG): This is the photo gallery plugin I use all over this site. It creates high quality thumbnails for galleries in its own cache separate from the default WordPress thumbnails – hence why I use the above referenced Disable Generate Thumbnails plugin. JIG has PhotoSwipe as an option (the best lightbox ever). One really awesome aspect of it, is that it’s a one time purchase of $27.
Presto Player: As of March 5th, 2021, I do not recommend this plugin. I’m using it for self hosted videos, but it’s not really necessary. Also, currently there are quite a few bugs. I purchased it during their soft release – early adopter sale. I’ve got lifetime support with it and can use it on a number of sites going forward. I hope it wasn’t a mistake as it has a lot of neat features. Stay tuned for updates…
Yoast: This is a plugin that I basically use in auto mode and ignore most of what it does. It helps with site maps, cover images for social media, etc. It’s free. It doesn’t seem to hurt anything. So, I use it.
Site Kit by Google: I mainly use this this to integrate with Google Analytics. Like many other plugins, it’s free and works.
WPvivid Backup Plugin: This is a free plugin that backs up my WordPress to Google Drive. I mainly use this for a secondary backup – just in case something happens with Digital Ocean or my installation completely gets corrupted.
WPFastestCache: I paid for the pro version, and these are the settings I use. I’ve found that they work well with my other plugins and settings.
Image Optimization Settings: I’ve tested out many settings and many different compression programs / algorithms. For any article newer than 3/13/21, most images displayed on this site will be resized to 2400 pixels wide and 40% compression as exported by Adobe Lightroom. Screen sharpening will be set to standard.