Self hosted

Welcome to the Self-Hosted section of PHP Systems Blog. Here, I share how I run my own infrastructure - from hosting web apps and game servers to managing automation, backups, and security. Whether you’re looking to reclaim control from the cloud or just enjoy the challenge of running your own services, you’ll find tutorials, walkthroughs, and real-world setups here.

Setting Up a Raspberry Pi Cluster with ClusterHAT (Part 3: Kubernetes)

Learn how to deploy Kubernetes on a Raspberry Pi ClusterHAT cluster using K3s and k3sup, configure shared NFS storage, label nodes, and deploy your first container workloads.

Setting Up a Raspberry Pi Cluster with ClusterHAT (Part 2: Ansible)

Learn how to configure Ansible for your Raspberry Pi ClusterHAT cluster, create inventories, run your first playbooks, and automate node management before deploying Kubernetes.

Setting Up a Raspberry Pi Cluster with ClusterHAT (Part 1: OS Installation & SSH Setup)

Learn how to install operating systems, configure SSH access, and prepare your Raspberry Pi ClusterHAT cluster for automation with Ansible and Kubernetes in this step-by-step guide.

🔄 Automatically Update Paperless-ngx with a Webhook (Portainer + Home Assistant)

Automate updates for your Paperless-ngx stack using Portainer webhooks and Home Assistant. This guide shows how to trigger container updates via REST commands for a fully hands-free, self-hosted document management system.

Monitor Your Ghost Blog with the Home Assistant Ghost Integration

Home Assistant now includes a native Ghost integration, allowing you to monitor your blog directly from your smart home dashboard. Learn how to connect your Ghost site, fix the common API error, and create useful automations like alerts for low scheduled posts.

Setting Up Oxidized for Router Backups with Docker Compose and Git

Learn how to set up Oxidized for automated router backups using Docker Compose and Git. This guide walks you through configuring Oxidized on a Raspberry Pi with SSD storage, making it easy to manage network device backups and version control with minimal setup.

Enhancing Firefly III Transaction Categorization Using SearxNG and Node-RED

Enhance Firefly III transaction categorization with Node-RED and SearxNG. Learn how to integrate AI with external search results to automatically assign budgets and categories, improving accuracy for unusual merchants. Step-by-step workflow and SearxNG setup included.

🧩 Setting Up VLANs in Your Home Lab with UniFi Switches and Access Points

Learn how to set up VLANs in your home lab using UniFi switches and AC Pro access points. Improve network security, organize your IoT and lab devices, and even automate configurations with Ansible and Terraform — all on your existing UniFi gear.

How to Renew GitLab SSL Certificates in a Proxmox LXC with Certbot and Cloudflare DNS

Learn how to renew your GitLab SSL certificate in a Proxmox LXC using Certbot and Cloudflare DNS validation. This guide covers TurnKey Linux, deploy hooks, and automated HTTPS renewal.

📸 Breaking Up with Google: Importing Your Google Photos into Immich

Now that we’ve installed Immich in our “Breaking Up with Google” series, it’s time to fill it with your photos. Learn how to export your Google Photos Takeout and import everything into Immich—albums, dates, and all.

About the author

Tim Wilkes is a UK-based security architect with over 15 years of experience in electronics, Linux, and Unix systems administration. Since 2021, he's been designing secure systems for a telecom company while indulging his passions for programming, automation, and 3D printing. Tim shares his projects, tinkering adventures, and tech insights here - partly as a personal log, and partly in the hopes that others will find them useful.

Want to connect or follow along?

LinkedIn: [phpsytems]
Twitter / X: [@timmehwimmy]
Mastodon: [@timmehwimmy@infosec.exchange]


If you've found a post helpful, consider supporting the blog - it's a part-time passion that your support helps keep alive.