• ๐Ÿ“‚ ,

    Using docker and docker compose for my Homelab

    I’ve seen some very elaborate homelab set-ups online but wanted to get the easiest possible implementation I could, within my current skill set.

    As I have quite a lot of experience with using docker for development in my day to day work, I thought I’d just try using docker compose to setup my homelab service

    What is docker?

    Docker is a piece of software that allows you to package up your services / apps in to “containers”, along with any dependencies that they need to run.

    What this means for you, is that you can define all of the things you need to make your specific app work in a configuration file, called a Dockerfile. When the container is then built, it builds it with all of the dependencies that you specify.

    This is opposed to the older way of setting up a service / app /website, by installing the required dependencies manually on the host server itself.

    By setting up services using docker (and its companion tool docker compose) You remove the need to install manual dependencies yourself.

    Not only that, but if different services that you install require different versions of the same dependencies, containers keep those different versions separate.

    Installing the docker tools

    I use the guide for ubuntu on the official docker website.

    Once docker and docker compose are installed on the server, I can then use a single configuration file for each of the services I want to put into my Home Lab. This means I don’t need to worry about the dependencies that those services need to work — because they are in their own containers, they are self-contained and need nothing to be added to the host system.

    There are services that can help you manage docker too. But that was one step too far outside of my comfort zone for what I want to get working right now.

    I will, however, be installing a service called “Portainer”, detailed in my next Home Lab post, which gives you a UI in which to look at the docker services you have running.

  • ๐Ÿ“‚

    Homelab initial setup

    I have gone with Ubuntu Server 22.04 LTS for my Homelab’s operating system.

    Most of the videos I’ve seen for Homelab-related guides and reviews tend to revolve around Proxmox and/or TrueNAS. I have no experience with either of those, but I do have experience with Docker, so I am opting to go with straight up docker — at least for now.

    Setting up the Operating system

    I’m using a Linux-based system and so instructions are based on this.

    Step 1: Download the Ubuntu Server iso image

    Head here to download your preferred version of Ubuntu Server. I chose the latest LTS version at the time of writing (22.04)

    Step 2: Create a bootable USB stick with the iso image you downloaded.

    Once downloaded, insert and a usb stick to install the Ubuntu Server iso on to.

    Firstly, check where your USB stick is on your filesystem. For that, I use fdisk:

    sudo fdisk -l

    Assuming the USB stick is located at “/dev/sdb“, I use the dd command to create my bootable USB (please check and double check where your USB is mounted on your system):

    sudo dd bs=4M if=/path/to/Ubuntu-Server-22-04.iso of=/dev/sdb status=progress oflag=sync

    Step 3: Insert and boot to the bootable USB stick into the Homelab computer

    Boot the computer that you’re using for your server, using the USB stick as a temporary boot device.

    Step 4: Install the operating system

    Follow the steps that the set up guide gives you.

    As an aside, I set my server ssd drive up with the “LVM” option. This has helped immensely this week, as I have added a second drive and doubled my capacity to 440GB.

    Step 5: install and enable ssh remote access

    I can’t remember if ssh came installed or enabled, but you can install openssh and then enable the sshd service.

    You can then connect to the server from a device on your network with:

    ssh username@

    This assumes your server’s IP address is Chances are very high it’ll be a different number (although the 192.168.0 section may be correct.

    Everything else done remotely

    I have an external keyboard in case I ever need to plug in to my server. However, now I have ssh enabled, I tend to just connect from my laptop using the ssh command show just above.

  • ๐Ÿ“‚

    Started to re-watch Breaking Bad. This’ll be my second time viewing. Think I’m gonna try and share my favourite shot from each episode.

  • ๐Ÿ“‚ ,

    Setting up mine, and my family’s, Homelab

    I’ve opted for what I believe is the easiest, and cheapest, method of setting up my Homelab.

    I’m using my old work PC which has the following spec:

    • Quad core processor — i7, I think.
    • 16gb of RAM
    • 440GB ssd storage (2x 220gb in an LVM setup)
    • A USB plug-in network adapter (really want to upgrade to an internal one though)

    My Homelab Goals

    My homelab goals are centered around two fundamental tenets: lower cost for online services and privacy.

    I want to be:

    • Hosting my own personal media backups: All my personal photos and videos I want stored in my own installation of Nextcloud. Along with those I want to also utilize its organizational apps too: calendar; todos; project planning; contacts.
    • Hosting my own music collection: despite hating everything Google stands for, I do enjoy using its Youtube Music service. However, I have many CDs (yes, CDs) in the loft and don’t like the idea of essentially renting access to music. Plus it would be nice to streaming music to offline smart speakers (i.e. not Alexa; Google Speaker; et al.)
    • Hosting old DVD films: I have lots of DVDs in the loft and would like to be able to watch them (without having to buy a new DVD player)
    • Learning more about networking: configuring my own network is enjoyable to me and is something I want to increase my knowledge in. Hosting my own services for my family and myself is a great way to do this.
    • Teach my Son how to own and control his own digital identity (he’s 7 months old): I want my Son to be armed with the knowledge of modern day digital existence and the privacy nightmares that engulf 95% of the web. And I want Him to have the knowledge and ability to be able to control his own data and identity, should He wish to when he’s older.

    Documenting my journey

    I will be documenting my Homelab journey as best as I can, and will tag all of these posts with the category of Homelab.

  • ๐Ÿ“‚

    Gutted that I’m now all up to date with Taskmaster. Only discovered it a month or so ago and been binging it.

  • ๐Ÿ“‚

    I’m now running pi-hole through my Raspberry Pi 2b.

    It’s both amazing and depressing just how many trackers are being blocked by it. I even noticed a regular ping being made to an Amazon endpoint exactly every 10 minutes.

    I will try and write up my set up soon, which is a mix of setting up the Raspberry Pi and configuring my home router.

    I’ve also managed to finally get a home server running again – using Ubuntu Server LTS.

    My plan on my server is to just install services I want to self-host using docker. Docker being the only program I’ve installed on the machine itself.

    So far I have installed the following:

    • Home Assistant — On initial playing with this I have decided that it’s incredible. Connected to my LG TV and lets me control it from the app / laptop.
    • Portainer — A graphical way to interact with my docker containers on the server.

  • ๐Ÿ“‚ ,

    I have decided to get back into tinkering with my Raspberry Pi.

    I will be blogging my journey as I stumble through my initial playing, through to building out my first proper homelab.

    This first Raspberry Pi (model 2b) will be initially used as both a wireguard VPN server and a local DNS server.

  • ๐Ÿ“‚ ,

    The God Slayer by Otep

    Front cover of The God Slayer album by Otep

    I’ve loved Otep’s music since discovering the album “Sevas Tra” — with that insane album cover being the thing that brought me in.

    Earlier today (yesterday) I listened to the recently-released The God Slayer, made up of half original songs and half covers.

    Loved it, although Sevas Tra has been — and remains — my favourite of Otep’s.

    My favourite songs from my first listen of the album are definitely the covers of Eminem’s “The way I Am” and the Beach Boys’ “California Girls”.

  • ๐Ÿ“‚ ,

    Average Semi-detached house prices in UK by county – Statistical Analysis using R

    This is my first data visualization attempt and uses data from HM Land Registry to show to average cost of a semi-detached house in four counties across the past ten years.

    You can see the full repository for the project on Github.

    The Code

    Here I have included the code at the time of writing this post. The git repository code may now differ slightly.

    regions  <- c(
    data  <- read.csv("props.csv")
    data %>%
      filter(Region_Name %in% regions) %>%
      filter(Date > "2013-01-01") %>%
      )) +
      geom_point(aes(color = Region_Name), size = 3) +
      theme_bw() +
      theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
        title = "Average Semi-detached house prices per county",
        x = "Month and Year",
        y = "Average Price",
        color = "County"
      width = 4096,
      height = 2160,
      unit = "px"

    The Graph

    Graph to show increasing semi-detached house prices by county.


    Warwickshire has been the most expensive county to buy a semi-detached house out of the four counties observed.

    Derbyshire has been the least expensive county to buy a semi-detached house out of the four counties observed.

    The shapes of the line formed seem consistent across the counties; the rate of price increase seems similar between them.

    A lot can happen over ten years.

  • ๐Ÿ“‚

    Using a single file neovim configuration file

    When I first moved my Neovim configuration over to using lua, as opposed to the more traditional vimscript, I thought I was clever separating it up into many files and includes.

    Turns out that it became annoying to edit my configuration. Not difficult; just faffy.

    So I decided to just stick it all into a single init.lua file. And now its much nicer to work with in my opinion.

    View my Neovim init.lua file on Github.