Skip to content

Installing a Second Instance of WordPress

ChatGPT has empowered me to create a site with more advanced features than I imagined possible. I have a lot of work ahead of me to build this system. Because of that, most of my time lately has been spent on technical tasks and planning. In fact, only about 10% of my time over the past month has gone into actual site content.

To better manage this, I decided to create a separate site specifically to document my development work. You’re reading that site now. Here’s how I set it up.


The Server Setup

My main website runs on a Virtual Private Server (VPS) hosted by Akamai, which acquired Linode. Their VPS instances are still referred to as “linodes.” I use the lowest-tier plan, called a Nanode, which costs $5 per month. It gives me full root access to install and configure everything from the operating system up.

My VPS runs Debian Linux and uses a LAMP stack:
Linux, Apache, MySQL (MariaDB), and PHP—the standard foundation for hosting WordPress.


Creating a Subdomain for the Dev Site

To run a second WordPress instance, I created a subdomain:
dev.stationaryreality.com

Since I use Cloudflare to proxy my traffic and manage DNS, I had to log into my Cloudflare dashboard and add an A record pointing dev to the IP address of my VPS. The DNS update propagated almost instantly.


Setting Up Apache for the Subdomain

Next, I created a new directory under my Apache root to hold the files for the subdomain. After fixing permissions and file ownership, I added a temporary index.html file to test it.

However, it wasn’t displaying. I realized I needed to create a new Apache virtual host configuration to properly serve the subdomain’s content.

Once I set that up and restarted Apache, the index page appeared.


Configuring HTTPS with Let’s Encrypt

At first, the site displayed a security warning—no HTTPS certificate was available for the new subdomain.

Because Cloudflare was forcing HTTPS, I temporarily disabled that setting.

Then, I used Let’s Encrypt to request a free SSL certificate. This process required the site to be accessible over port 80 so that Let’s Encrypt could run its domain verification challenge. Of Course, it failed again!

I knew immediately, with help from certbot’s “Likely firewall problem” message, that Linodes cloud firewall prevents all IP addresses except for Cloudflare’s and my own from accessing the website directly, so I had to disable this firewall for less than a minute to allow this to validation to occur.

After verification, HTTPS was enabled and working correctly. I re-enabled forced HTTPS both in Cloudflare and in my browser settings.


Installing WordPress

With the subdomain now live and secure, I used wget to download the latest version of WordPress. After extracting the files, I configured the wp-config.php file with:

I then visited the site in my browser and completed the WordPress setup process. Here’s what the default install looked like:


Cloning the Look and Migrating Content

After setup, I adjusted basic settings and copied over some of the content from my GitHub Pages project. I had to:

  • Convert images to 1200 × 628 px, optimized for WordPress
  • Install the Author theme
  • Copy the child theme from my main site for consistent layout and structure
  • Swap in a black-and-white logo to differentiate this dev site
  • Add links back to the main site, and vice versa

Why I Built This Dev Site

This setup is necessary because, over the next few months, I’ll be:

  • Upgrading site-wide image formats to WebP
  • Renaming images consistently
  • Tagging content components for future aggregation

I plan to use WordPress taxonomies and ACF (Advanced Custom Fields) to generate user-driven content views, where clicking a tag dynamically assembles related material into unique pages.

Some of these tag clusters will eventually warrant more curated, static representations—giving users multiple pathways through the content beyond the default narrative.


A More Connected View of Content

By enabling readers to explore content outside linear chapters, I hope to surface interconnected ideas through multiple lenses:

  • Historical context
  • Themes and concepts
  • Philosophy and theology
  • Networks of people, books, artists, and movements

This layered view reveals how ideas evolve and spread—sometimes overtly, sometimes through subtle influence and artistic expression. These connections help highlight how concepts that may seem abstract are, in fact, deeply embedded in reality—accessible to those who understand the esoteric layers of philosophy, theology, and human creativity.

Published incompleted