Blog
Importing Home Assistant as a Virtual Machine in Incus
Wednesday, October 8, 2025
I’ve been a fan of Home Assistant for a while now. Although I don’t have too many home automation devices yet, I use it to automate parts of my daily routine that depend on sensors, automations, and some integrations with devices I have at home.
Since I already have a machine that serves as a server and generally has enough resources to run Home Assistant, I’ve opted to use the Home Assistant OS version (the operating system designed for this software) inside a virtual machine on my server.
Read moreCreating a Windows 11 Virtual Machine on Libvirt
Wednesday, December 27, 2023
On this occasion, I feel compelled to document this to ensure it’s not forgotten. The reality is that creating a Windows 11 based virtual machine (VM) may not seem significantly more challenging than what’s been experienced with Windows 10. However, it does present its intricacies, especially as of late 2023. In this article, which I wish could be more concise, I will share the step-by-step instructions that have proven effective for me in successfully running the Windows 11 installation using the Narrator screen reader, facilitated through Spice. I won’t delve into Libvirt extensively this time, as I’ve already provided some relevant information in earlier articles about this tool and its use. Instead, I’ll focus on adding TPM devices, configuring secure boot, and initiating the boot process for Windows 11. My starting configuration involves a system with Debian 12 installed, Libvirt, and a bridged network, as detailed in the respective post.
Read moreInstalling Home Assistant in KVM Virtual Machine
Thursday, September 28, 2023
One of the things I’ve had pending for many years, although I had tried sometime to get to grips with the most important part of the topic, is configuring and learning to use Home Assistant. Thanks to this powerful software tool, you can configure a smart home system, as the software can integrate and integrate with many other hardware devices and already existing home automation ecosystems. In addition to being able to control many devices and services from its web interface, such as devices with Alexa, temperature control, universal remote controls, televisions, smart plugs, etc.; we can also create automations (to perform a task whenever a condition is met), scripts (to execute code that can call a service or get something from an API), templates (to take values from sensors and be able to perform calculations on them), and many other things.
Read moreConfiguring Public IPv6 Access in libvirt
Tuesday, September 19, 2023
Once I managed to install and learn to use Libvirt, as I’ve already mentioned in a couple of posts, there was one important part for some of my projects: making a server available via IPv6.
The reason is very simple. I have an ISP that puts my IPv4 address behind CG-NAT, so it’s not possible for my servers or virtual machines to be accessed through this protocol, since my IPv4 address is actually shared with many other clients, which removes the possibility of opening or forwarding ports. However, what my provider does is give us IPv6 addresses and from what I know, each device that requests it is assigned a fully functional address that can be connected to through the internet, as I’ve also explained on another occasion. Now, what I wanted to do was essentially allow my VMs to have the ability to request their own IPv6 address from my router, so it would assign them one and thus be able to connect to SSH or any other service, for example.
Read moreVirtual Machine Management with libvirt
Wednesday, August 30, 2023
Continuing with some features present in libvirt that I believe could be useful to know, this post is dedicated, once again, to the administration of virtual machines using the libvirt tool and its application virsh, which allows running some of the perhaps most useful commands when working with files of this type of VM. All these commands are typically executed as root.
Read moreCreating Virtual Machines with Libvirt: Linux and Windows
Monday, August 28, 2023
A couple of weeks ago, as part of an update to my DAS setup + the Mini PC with Intel Celeron J4125 I’ve previously talked about, I had the opportunity to get an AMD Ryzen 5 5600G, along with everything needed to build a system where I could integrate hard drives at a very reasonable price. One of the first things I envisioned for this processor, which has proven to handle everything thrown at it, was to delve into virtualization. I had a couple of projects in mind that required a Windows virtual machine, as I didn’t want to install Windows 10 or similar on the server but needed software running 24/7 that specifically works mostly under Windows environments.
Read moreConfiguring MergerFS to Unify Hard Drives
Tuesday, April 11, 2023
MergerFS is a delight for all those of us who, for one reason or another, need to unify several hard drives into a single directory. This tool is only available for Linux, although for Windows there are other applications that do the same. This software allows creating a virtual file system (using fuse for it), integrating all the contents present on one or more hard drives. This gives us a directory containing all the files present on our disks, which makes things much easier when it comes to maintaining order between 2 or more units. Among its main features, it allows adding content to your disks following various policies when creating files or folders. All of this is explained in its documentation, although here I’ll simply detail the way I use it.
Read moreChecking USB Device Speed in Linux
Monday, April 10, 2023
Just a week ago I took personal storage to another level by buying myself a DAS. For those who don’t know, a DAS is essentially a box where you can store several hard drives and access them, usually via USB or eSATA. Among the things you can do with this type of device mainly include having 2, 4, or 8 hard drives available for the operating system (i.e., as secondary storage), which makes things much easier if you have software like Plex, which normally feeds on enormous amounts of data for which a single hard drive may no longer be sufficient.
Read moreSetting Up GitLab Runner on Windows
Thursday, December 29, 2022
Increasingly, I resort to GitLab Runners to build my projects. Being able to automate practically the entire configuration (from generating a tag in Git), it’s perfectly possible to publish new software versions, generate documentation, run tests automatically and upload the results of all that to some site, for example Backblaze B2. The result is a “pipeline” that’s a pleasure to use, because it simply works. At the same time, the creation process of each project is documented in the .gitlab-ci.yml file, which is useful to see exactly the steps to follow to get to generate some version of the applications I write.
Read moreConfigure Dynamic DNS for IPv6 Addresses with Cloudflare
Thursday, December 1, 2022
In another of my adventures with the Mini PC I converted into a server, I’ve found an interesting situation regarding its use from outside the home network. At first, I only used the services I installed locally, but as time went by, I found things somewhat difficult to do from my work. For example, I thought about allowing only local access to the services running on the Mini PC, but time and some situations made me think about hosting the GitLab instance I use for developments at MCV Software on said server. That GitLab is practically a single-user instance, as the vast majority of projects that are open there are also in our GitHub organization. A week after finishing the initial implementation, I can simply say it has been working excellently. Of course, you should never forget to make backups, but that’s always recommended, no matter where the server is hosted.
Read more