Introduction#

Welcome to ClifFixIT Reloaded – where cutting-edge technology meets hands-on mechanical ingenuity in a space that’s as dynamic as it is experimental. This inaugural post is not just another blog entry; it’s a detailed chronicle of my journey to set up this blog using a fusion of modern DevOps practices and old-school tinkering.

The Grand Plan: Building a Digital Content Factory#

I embarked on an adventure to create a blog that could automatically update itself whenever I added new content. Initially, I experimented with DigitalOcean’s App Platform for automated deployment. The idea was to integrate Git, Hugo, and a lean Alpine Linux container running on my Proxmox hypervisor, so that every push to my private GitHub repository would trigger a rebuild and redeployment.

However, I soon discovered that the automated app deployment on DigitalOcean was finicky—at times, the output wasn’t formatted correctly or certain assets didn’t load as expected. This unreliability prompted me to re-evaluate my approach.

  • Influences:
    My inspiration came from side projects and resources like apalrd’s blog and Network Chuck’s YouTube channel, which showcased creative ways to integrate technology with personal projects. I even saw a video where Network Chuck implemented a similar deployment strategy!

  • Blog Management Strategy:
    I originally planned to rely on GitHub-based continuous deployment to automate the build process using DigitalOcean’s App Platform. This approach would have allowed every Markdown post change to trigger an automatic rebuild via Hugo, ensuring the site was always up-to-date.

  • Automation Overload & Deployment Challenges:
    To achieve that, I built a lightweight Alpine Linux container on my Proxmox server with Hugo and Git installed, integrating it with my private GitHub repository. However, due to inconsistencies in the automated app deployment, the output wasn’t reliably formatted—assets and links sometimes pointed to the wrong URLs.

  • The Turning Point:
    Ultimately, I opted to script the entire deployment process. I created a custom deployment script (deploy.sh) that:

    • Clears out old generated files,
    • Runs a full Hugo build with the correct production baseURL,
    • Copies the new static files to an Nginx document root,
    • And finally reloads Nginx.

    Alongside this, I configured my reverse proxy server (running on my home server) with Nginx. The reverse proxy now securely points to my self-hosted web server on the LAN, ensuring that my custom domain always displays the correctly formatted site without the quirks of DigitalOcean’s deployment system.

Lessons Learned & Future Plans#

This setup journey wasn’t without its challenges. Here are some key takeaways and plans for the future:

  • Understanding the Trade-offs:
    While the automated DigitalOcean app deployment seemed promising at first, its unpredictability led me to build a more controlled, scripted deployment pipeline. This change gives me full control over the build process and ensures consistent output.

  • Tweaking and Optimization:
    I learned that even minor details—such as setting the correct baseURL or ensuring that Hugo is running in extended mode—can significantly impact the final output. In the future, I plan to further optimize CSS delivery and even explore inlining critical styles to improve page load times.

  • Future Content Roadmap:
    As I continue to refine my deployment setup, expect future posts on how I configured the continuous deployment script, integrated Nginx reverse proxying, and streamlined the overall workflow. I also plan to share insights into balancing performance with aesthetics and provide hands-on guides for various tech projects.

Conclusion#

This first post marks the beginning of a long and exciting journey. I’ve set up a powerful, automated system that transforms simple Markdown files into a fully functional and stylish website. Although DigitalOcean’s automated deployment was initially an appealing idea, its inconsistencies led me to develop a custom deployment script coupled with an Nginx reverse proxy. Every time I commit a new post, the entire system kicks into gear—rebuilding and deploying my site seamlessly.

Thank you for joining me on this adventure. I look forward to sharing more about my experiments, projects, and the ins and outs of managing a modern blog. Stay tuned for more in-depth posts!


Cliff

P.S. If you think this setup is as cool as I do, wait until you see the next phase of our digital journey!