I use OpenWRT/LEDE running on two Linksys WRT1200AC wireless routers as the network infrastructure of the house.
One WRT1200AC acts as the Internet gateway. It is configured to break the network into three separate subnets, two of which can route to each other. The third subnet is a “restricted” network that has Internet access, but is not allowed access to the other subnets. It also provides WiFi access for the west half of the house.
The second WRT1200AC acts as a WiFi extender for the east half of the house, plus wired access for a few devices that require a wired connection.
I use Consul as a method of monitoring the health of the various devices and services.
The consul-alerts program issues a message to a monitoring channel in my family’s Slack workspace within two minutes of the failure or restoration of any node or service. This alerting mechanism allows me to warn family members attempting to use the service that the system is not properly working, and if possible log in to triage and address whatever has failed.
I use ownCloud to automatically upload photos from my family’s phones as well as share documents across family members’ accounts.
I have Jenkins build jobs configured for various software projects. These jobs automatically merge Git branches to master, and then build and test the merged code within a Docker container. If all tests pass, the jobs deploy the generated RPM packages for i386, x86_64, and arm64 hardware architectures to my Fedora Yum/DNF repository and then push the merged changes to the upstream Git master for that project.
I maintain two Hubot instances, one to interact with friends through a Slack workspace configured by a college roommate, and one to interact with me on my family’s Slack workspace so I can run health queries and perform some level of resource management while I’m away from my house.
I’ve dabbled in a bit of Node.js and Coffeescript to enhance these Hubots with a few abilities such as:
I use libvirt and KVM to manage a set of viritual machines on my main Fedora Linux server. These virtual machines include:
I use Vagrant with the libvirt/KVM plugin to create and provision test instances of each system in my infrastructure. This test environment allows me to keep pace with new Fedora beta and GA releases and verify my system configuration scripts and software projects in the evolving Fedora environment.
I use Puppet for system configuration, and am transitioning to Ansible mainly because I want to gain experience with this configuration tool for work. As I get familiar with Ansible, I’m impressed with the configuration abilities that seem advanced compared to the way I had been using Puppet.
I maintain three Raspberry Pi-based OSMC nodes.
This project is in hibernation mode. It enables remote back ups by synchronizing BTRFS snapshots across a wide-area network. The concept can be extended to any next-generation file system (such as BTRFS or ZFS), and allows redundancy while minimizing the amount of data transferred across the WAN.