I recently realized that I was overpaying for a bloated and laggy Wordpress website that was basically serving up a static website for my resume of projects. After working with some of the dev-minded folks at SCAR, I was turned on to the free tier of VM hosting on Oracle Cloud which offers a 1 CPU core 1GB RAM instance at no charge. It seemed perfect for my use case! Being relatively low power, I figured I would keep it simple and bring my personal site back to basics (with a little help from my friends).

A simple HTML site would be a little too boring, but all of the frameworks I'm familiar with might be too heavy for this free host. I recalled a friend wrote a neat little python script to make publishing Markdown as light and servable posts in a blog style webiste, and figured I would give that a go. That's the framework you're looking at now!

Setup was relatively easy, with most of my hangups caused by being a little rusty around the command line. DSSSG doesn't have "baby's first website tutorial" in he readme (and I don't blame the dev. He's a busy guy) so I figured I would chronicle all the steps necessary to create your own version of this blog.

So, here goes nothing!

Step 1: Buy a domain

I already had mine. I've had it since before Google took Google Domains out behind the barn. If this is your first website, or even if you're building something new, you may consider domains from namecheap.

As the name implies, they are pretty cheap! I'm looking at an 8 letter .com for sale right now for $11.98/yr (that's $1 a month!) that's even marked down for new customers to $6.49/yr with a coupon NEWCOM649 as of August 2025.

Buying directly through Cloudflare isn't too bad either. That's who I'm currently using as there are some Cloudflare specific tricks I use for some parts of my homelab, but that's a story for another post.

Step 2: Sign up for Oracle Cloud

Signing up for Oracle Cloud was straight forward. They demand a credit card on file, despite signing up for a free tier. It's unfortunate, but they haven't snuck any charges on me yet. Setup may also require a 2FA authenticator of some sort. I chose to enroll it on my existing Microsoft Authenticator on my phone, but any Auth app should work.

Once you are in, find the option to create a new "Compute" VM. Name it whatever, or even leave the default jumble. You're unlikely to interact with that part much after setup.

For the image, I picked Canonical Ubuntu 24.04 Minimal as that's the distro I'm most comfortable in. (Although I am currently writing this from Fedora based distro called Bazzite, so that may change soon). The shape should autofill as a 1 core 1GB AMD instance.

Click "next" through the security page.

On the networking page, let it create a virtual cloud network if it hasn't already.
IMPORTANT: At the bottom under "Add SSH keys", make sure you download your public and private keys now (or opt out of keys, but that's not advisable).

Click "next" through storage and review pages. Give it a minute to provision your instance, and you will be the brand new owner of a free cloud VM!

Step 3: Connect via SSH

This has gotten so much easier if you are on Windows 10 or newer. SSH is now included in Powershell. We are going to start by copying the private key that was downloaded during the VM setup into:

C:\Users\{YOUR USER NAME}\.ssh\authorized_keys

If you are on nix (or Mac OS, I think is the same) you would use the ssh-add function to ingest the key before connecting. Note that some systems will throw an error if your key is stored somewhere too public*. My specific steps are as follows:

sudo cp ssh-key-xxxx-xx-xx.key .ssh/demo.key
ssh-add .ssh/demo.key

Now we should be able to connect to the VM at the IP address displayed on the Oracle Cloud dashboard like so:

ssh ubuntu@{x.x.x.x}

Where x.x.x.x would be that IP address.

Step 4: Install the Apache webserver

Look, there are probably newer better options, but I prefer to stick to the tried and true to start and will explore other webservers in the future.

We start with the ubiquitus Ubuntu update commands as follows

sudo apt update && sudo apt upgrade -y

Then install Apache with

sudo apt install apache2

Step 5: Open network ports for HTTP and HTTPS

While we are still in the SSH session let's make sure the ports are open in the VM itself. The following commands should add the access we need:

sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
sudo iptables-save

Back to the Oracle Cloud dashboard, select our VM from the instance list and navigate to:
Details>Instance details>Virtual cloud network

Click the name of the virtual network (default is vcn-yyyymmdd-hhmm)

From here, select the "Security" tab and find the "Default Security List for vcn-yyyymmdd-hhmm"

Go to "Security rules" and click "Add Ingress Rules". The only things we need to change are:

Source CIDR
-0.0.0.0/0

Destination Port Range
-80

Add Ingress Rules, then repeat but this time add port 443 for future HTTPS use.

Congratulations! You should hopefully be able to see the default Apache landing page by going to http://x.x.x.x/ (the IP address for your VM)

At this point we can clean this up by going to your domain registrar of choice and pointing that domain from step 1 at this IP.

-----

I feel like this is getting a bit long winded, so I will cover the setup and configuration of DSSSG and HTTPS with an SSL certificate in future posts.