Skip to main content

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 more

Creating 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 more

Installing 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 more

Configuring 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 more

Virtual 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 more

Creating 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 more

Configuring 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 more

Checking 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 more

Setting 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 more

Configure 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