DTAW Blog Hero Image

Site Migrations, Flat-File CMS, and Family Projects

Jun 5, 2025  — 
 Personal Projects

Migrating This Site

For the longest time, I managed this website by creating the content locally with Hugo, and manually copying the site files to the server I run Mail-in-a-Box on. Mail-in-a-box is one of the first projects I've ever done as a means of learning how mail servers work and setting up email for a domain that I had purchased. Since it has the capability to host basic sites, it originally served a static 'About Me' page, until I decided to write some blog posts. Eventually, I wanted to learn a little about using git. This made me rethink my site hosting, and I started pushing my site to a private git repo. I would then do a git pull from the mail server and used a little script that would move things into the right places for me with the correct permission/ownership structure. This worked like a charm for my basic purposes and served me well for a long time.

If It Ain't Broke, Don't Fix It

I didn't plan on changing anything. I started researching ways to build a site with my daughter. This is something we started previously, and she lost interest in it. We did it via a Wordpress installation, and beyond writing a couple posts it mostly went unattended. A few weeks ago, she asked me about running her website again, but I had let the domain expire.

In light of her renewed intersest, I bought her a new domain and decided that this time around, I would not be using Wordpress. Frankly, I've tried it myself and don't particularly care for it. It's overkill for the type of site I created, and for my daughter's vision as well. She simply wants to share some short stories that she writes and not have to worry about the broader options.

Flat-File CMS

I looked at a lot of options for this. After combing over a half dozen of these, I landed on using Grav. The idea of a system that offers a browser-based dashboard where you can manage site settings and create your content without having to use a database seemed spot on. They have a good selection of themes, and setting up a web stack is easy enough. I went through the process of creating a new Ubuntu server on Akamai Cloud (formerly Linode) and installed all the necessary things to run Grav and get it secured. I created a dashboard user, and pointed my daughter's domain to our new web server. At this point, all she really would need to do is pick a theme and start writing.

For one reason or another, we simply didn't get to actually creating content right away. In fact, my own frustrations at some of the elements of the Grav dashboard made me continue to look elsewhere for a solution. In fairness to Grav, it would have worked just fine, but another candidate caught my attention. Automad enters the chat.

Automad is very similar to Grav. While it has fewer options for prebuilt themes, I found it easier to work with the default one here and make adjustments via the custom CSS blocks built in to the dashboard. I did a bit of testing with new sub-domain just to get a feel for it, and in turn, decide to migrate my entire site over. Since the previous site consisted of mainly markdown files to generate content, it was really easy to just insert those elements once I was happy with the layout of the site. After doing so, I feel really confident in my ability to help my daugher get her site set up. As a matter of fact, I went through the process of switching her domain away from Grav and putting up a landing page for magically.space. All credit due to her for picking an awesome domain name.

Take-aways and Learns

In no particular order, with some help from ChatGPT (don't judge me) I was able to learn or refresh myself on a number of things:

  • Finding a better way to managed ownership of the web root as the www-data user together with git. Instead of using workarounds and scripts to change/edit file permissions so much, I handled things by adding my sudo user to the www-data group and adjusting permissions on the directory/subdirectories as needed. This seems really simple in retrospect, but sometimes you just "make it work" when you're just getting started.
  • I gained some understanding of HTML structure within the broader CSS for the site. Making adjustments so that an image sizes properly in different browsers, or centering things in some spots. This was not difficult, but I appreciated the exposure and practice
  • I had fun generating a logo for my site via logo.com and now using that for my BlueSky and GitHub profiles as well.
  • Making good use an S3 compatible Object Storage bucket to host images and keep space free on my itty bitty server was good practice as well. Organizing my bucket in a reasonable way where I can serve both sites from the same bucket was just good organization practice.