Home server upgrade

Last modified date

Comments: 0

An opportunity to give my homeserver a major update presented itself as I found an online listing for a 4U tall server chassis, even if I don’t have a rack to put it into.

The case fit my homeserver needs pretty much perfectly and it did not cost all too much, 76€ with shipping.

  • 16x HDD slots on the front
  • Backplanes with SFF-8087 connectors
  • 2x 5.25″ slots
  • Bracket for 3x 120mm fans
  • 2x 80mm exhaust fans
  • ATX power supply
  • Normal ATX motherboard mounts

My previous server was an itx size motherboard as a part of a dual system build, built into a huge tower with my main personal computer. First idea was to just move that old itx system into this new chassis and upgrade it then sometime later.

However, I found more used hardware at more or less bargain prices so I ended up giving my server pretty much a complete overhaul during this process. Deciding to do so caused this process to drag on for about thee months, most of that spent as I waited for cables and small parts to arrive.

New homeserver ✨

Simply put, the idea was to have a single, central data vault, that I could access from all my devices.

At least on paper, the idea to have a high level of virtualization did seem good as that could allow me to create backups of the virtual server and create a system which could be less dependent on the hardware it is running on.

Also, if the virtual server runs into issues, I can remotely log into a host OS and reboot even completely frozen server.

I chose VirtualBox as my software for running the virtual server, I chose it because I was somewhat familiar with it, even as I know that as a type2 hypervisor it is not the most efficient use of my hardware. This is something I might look to improve at some point, maybe.

I know Proxmox and other operating systems made for virtualization do exist but I have never used any of those.

         _,met$$$$$gg.           ubuntu@vbox
      ,g$$$$$$$$$$$$$$$P.        OS: Debian 12 bookworm
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 6.1.0-27-amd64
   ,$$P'              `$$$.      Uptime: 9d 10h 15m
  ',$$P       ,ggs.     `$$b:    Packages: 1746
  `d$$'     ,$P"'   .    $$$     Shell: bash 5.2.15
   $$P      d$'     ,    $$P     Disk: 30T / 56T (53%)
   $$:      $$.   -    ,d$$'     CPU: Intel Core i3-8100 @ 4x 3.6GHz
   $$\;      Y$b._   _,d$P'      GPU: VMware SVGA II Adapter
   Y$$.    `.`"Y$$$$P"'          RAM: 3253MiB / 11063MiB
   `$$b      "-.__
    `Y$$
     `Y$$.
       `$$b.
         `Y$$b.
            `"Y$b._
                `""""
Filesystem      Size  Used Avail Use% Mounted on
udev            5.4G     0  5.4G   0% /dev
tmpfs           1.1G  3.0M  1.1G   1% /run
/dev/sda1        78G   35G   39G  48% /
tmpfs           5.5G     0  5.5G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
A_DRIVE         1.9T  431G  1.4T  24% /home/ubuntu/mnt/a
B_DRIVE         3.7T  2.2T  1.6T  59% /home/ubuntu/mnt/b
C_DRIVE         238G  131G  108G  55% /home/ubuntu/mnt/c
D_DRIVE         7.3T  4.5T  2.9T  61% /home/ubuntu/mnt/disk3
E_DRIVE         7.3T  6.2T  1.2T  85% /home/ubuntu/mnt/disk1
F_DRIVE         5.5T  4.9T  599G  90% /home/ubuntu/mnt/disk2
G_DRIVE         2.8T  811G  2.0T  30% /home/ubuntu/mnt/g
H_DRIVE         7.3T  3.7T  3.7T  51% /home/ubuntu/mnt/h
I_DRIVE         3.7T  3.1T  641G  83% /home/ubuntu/mnt/i
J_DRIVE          17T  3.8T   13T  23% /home/ubuntu/mnt/j
config_ssd      112G   17G   95G  16% /home/ubuntu/mnt/config_ssd
tmpfs           1.1G   56K  1.1G   1% /run/user/1000

Having “ubuntu” as an username on a debian machine feels a bit cursed but I can keep using my hardcoded scripts. Anyway…

Second hand first ☝️

Almost everthing on this machine is bought used and second hand. I bought a faulty set of MB+CPU+RAM+M.2 SSD+Noctua cooler for 50€ and it turned out to be the MB that was faulty. So I had to order another one from Aliexpress. That one I paid 69€ for, including shipping.
So that MB and some cables are the only “new” parts.

All the hard drives I have bought used too. I now have total of 11 drives with combined capacity of 56TB and I have paid around 10€/TB for all of that. I think that pretty good, considering that none of the drives have been in terrible condition or have had too much hours on them.


As a SATA expansion card I have one of these cards from aliexpress. I know they are not really that great but for a pretty much single user server running HDDs it has been working just fine for me. I have had few similar cards for a couple of years now and they haven’t given me much trouble at all. 16 port card matched the case very well too 🙂

Whats running 🖥️

On this server I use docker to run each service separate, in addition to these I do have a few scripts that run in their own tmux sessions but more on them later. Here’s a list of what is currently running in docker

  • Home Assistant
  • Plex
  • Sonarr
  • Radarr
  • Bazarr
  • Prowlarr x2
  • Apache-php
  • Deconz
  • Dockupdater
  • Glances
  • Gluetun
  • QbitTorrent
  • InfluxDB
  • Grafana
  • Muximux
  • MySpeed
  • Nginx Reverse Proxy
  • OpenVPN & OpenVPN-UI
  • Owncloud
  • PiHole
  • Portainer
  • Tautulli
  • VnStat
  • Octoprint
Diagram of this overlayered system I have.

Plex

  • Docker user permissions were a little hassle
  • new claim token and fresh install
  • access to drives
  • config folder can be on a separate ssd
Having media on the hosts NTFS drives means that these options do not work

Docker in VM

Running docker in a VM and on drives that were not owned by the host was a little hassle at some points.
What I did learn is that you can’t run docker on a NTFS filesystem as that does not do owner/user permissions at all.

USB device passthrough

I needed the debian VM have access to USB devices of the windows machine. Spesifically the serial port for the LCD display and the Conbee 2 zigbee adapter. Using the USB device filter from VirtualBox settings I eventually got them to work. It was not easy as windows doesn’t want to let go of those devices. Having the VM start at windows startup and taking control of those devices then and there seems to work pretty ok. Which means that if the debian machine drops one of those USB devices I have to reboot the entire machine. But that’s fine.

Other notes I have made

  • permission and disk mounts belonging to vboxsf group was not accessible from docker root
  • root had to be added to this group
  • usermod -a -G examplegroup exampleusername
  • Adding -e PUID=0 -e PGID=0 to some docker images fixed this in some cases
  • DNS was problem at first, but not related to being a VM I think
  • Nginx proxy had to be reinstalled, I love/hate this, it does work after you get it to work
  • Nginxproxy can NOT be on a NTFS drive, found out the hard way.
  • Had to reinstall autoremove-torrents python script.
    • had to run python3 setup.py install again as a root
  • WMIC was not installed by default on windows
  • Unused GUI loads cpu/gpu way too much sometimes
    • stop ui with service gdm3 stop

VirtualBox USB device filter:

  1. Plug in USB device
  2. Start VirtualBox gui
  3. add device to usb filter
  4. start vm
  5. vm shuold take over the USB devices
    • Should, as meantioned earlier. Works better at startup with windows.

Have VM start with windows so everything starts up automatically, for now everything has been working somewhat fine for months.

Also I did learn that there are two kinds of these stupid SFF-8087 to SATA cables, forward and reverse breakout ones. They look absolutely identical. But as I have the SFF-8087 connector on the case backplane and SATA connectors on my SATA card, I of course needed the reverse breakout cables, and I got the wrong ones first.

Sites which had tips for this process or something related to it:

A floor server for now.

Next time: a lack rack and another 4U case 🙂

Anders

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment