How I Self Host
Aug 13, 2026
This website is self hosted on a machine I affectionately call debby. You'll see why I named her that in a minute.
Here I will explain my process and reasoning behind self hosting.
DISCLAIMER: I am no expert, and I am simply sharing my process for self hosting and the reasons for what I do. Take everything I say with a grain of salt.
Why Self Host?
Self hosting is a fulfilling process that ends up teaching you a lot of technical skills.
You are not beholden to anyone. You have the freedom to do what you want with your tech.
What You Need

- A spare computer
- An internet connection
- A lot of spoons/gummy bears
On the Topic of Software
I use linux to power my homelab. I personally don't use a selfhosting linux operating system. Reasons:
- You don't learn how to use a command line as much
- It limits you on what you can host on your machine
- They usually take up the ports you need for reverse-proxy (which I HIGHLY recommend you do)
Instead, I use a basic linux distrobution that doesn't have a desktop environment. The desktop environment tends to take up unnecessary resources on your computer that are better spent homelabbing and adding more features.
Some good ones include:
- Debian without a desktop environment (what I use)
- Ubuntu server
- Arch Linux (Not for beginners, but I like to use it for personal computers because I like pain)
I also use docker and docker compose to organize my programs. This allows me to use software with conflicting ports and keep all my software contained.
Intro to docker
All examples for installing will assume you have Debian or Ubuntu. Refer to the documentation of your chosen distro if you're using something else.
After installing my operating system on the device (as well as ssh and other such necessities), I install docker and docker compose.
sudo apt update
sudo apt upgrade
sudo apt install docker docker-compose-plugin
Then I get to the fun part! Adding stuff!
How I Structure My Files
TLDR: Look below

Every program has a separate folder that is named after the program it represents. For the purposes of this post, I'll be using an example for making a personal site since that's probably why you're reading this (You're on a self-hosted personal site now, after all!)
I make a directory that contains the docker compose file.
mkdir site
cd site
nano docker-compose.yml
I decided to show this using nano for anyone who is not familiar with vim. Though go ahead and use your terminal text editor of choice!
When creating a personal site, I tend to keep all my data files (html, js, css files) separate from my folder holding the docker compose.
I also don't expose the file system to the outside world. For obvious reasons.

Text format Here!
If you want to download it, simply right click the link and save link as a file, then import it into your server. Or click the link and copy paste the contents in, which I would find easier.
Make sure, if you're doing this, to change that path name in volumes to wherever you're keeping your html, css, and javascript files and the timezone to your timezone.
To start your website, simply run:
sudo docker compose up -d
Exposing Your Website
This is a tricky topic. Since there are a lot of bad people out there, you wanna make sure as little of your server is out on the world wide web as possible.
For this reason, I use caddy to reverse-proxy my server and direct traffic instead of allowing all my ports to be exposed.
I make a separate folder for my caddy install, simply to keep things organized.
See this website for install instructions.
Sadly, I have neither time nor gummy bears (See aforementioned image) to go over everything needed to set up caddy with your chosen domain name (You do have one of those, right?)
Instead, I will tell you to see the documentation linked below. Or, if you are still confused, either find me or look at the many many other resources around.
Reverse Proxy Documentation LinkOther Resources
This website has been indispensible in getting my website up and running. It has lots of other useful resources to self hosting, website creation, and the indie web in general. Good luck out there!