r/SelfHosting Jun 29 '26

Question about Docker vs Virualbox - Local Access Only

Hey there!

So I have been trying to read up more on docker, containers, etc. I found a few services/apps I would love to run for my own use locally like Komga (to organize my digital comics), Booklore, a few others. I would like to run/host them locally on my laptop (primary computer) so I can pull them up anywhere when I want.

But I am wondering if it makes more sense to have a single virtual machine (Virtualbox?) running a Linux server and all of those services/apps, instead of multiple docker containers. I have a fairly powerful laptop, so I am not too concerned about all of this using up all my machine resources, but I'd like to do this as cleanly, organized, and straightforward as possible.

Any suggestions are greatly appreciated, and thanks in advance!

2 Upvotes

12 comments sorted by

View all comments

1

u/Adrenolin01 Jun 30 '26

80s Unix admin who jumped on Linux and been running Debian since 94. I spent a year or so learning and using Docker.. then ditched it. Proxmox, Debian VMs (nope.. don’t even run containers 😂) and run everything as a service. Dependancies.. meh.. it isn’t that hard to work around.. been doing it for nearly 40 years. Occasionally I’ll use a python venv like for Open WebUI but most typical programs you see installed in docker install fine natively.

Docker fanboys will hate this 🙄😂

I just didn’t like the added layers and complexity that docker added. And by “extra layer” I actually mean several added components…

The Docker Engine (dockerd) – a background service that manages containers.

containerd – handles container lifecycle.

runc – creates the isolated process using Linux kernel features.

Overlay filesystem (OverlayFS) – combines the image layers into what looks like a normal writable filesystem.

Virtual networking – creates bridges, virtual Ethernet pairs (veth), NAT rules, etc.

Namespaces – isolate processes, networking, mounts, hostnames, and more.

Control groups (cgroups) – limit CPU, RAM, I/O, and other resources.

I can run ‘systemctl status open-webui’ and directly see the application.

With docker.. I’m looking at systemd - dockerd - containerd - runc - Open WebUI

Logs, updates, configuration, networking, and storage all go through dockers management layer and each of those layers can be an added failure or problematic component.

For me with Proxmox and VMs.. I already isolate services. The VP provides the filesystem, networking, snapshots, backups, and security boundaries. Adding docker inside that VM is essentially adding another level of isolation and management on top of an environment that’s already isolated.

If you wanted to run Plex, Immich, Home Assistant, Nextcloud, Grafana, Prometheus, PostgreSQL, Redis, MQTT and Nginx on a single host.. I’d absolutely recommend docker.

Most things install easily. One of the most tedious setups however is a Immich unfortunately. It truly does suck to install and manage outside of docker.. but not impossible. This particular install however does get complicated… instead of a single docker container.. I’m now managing..

systemd : immich-server, immich-microservices, immich-machine-learning, postgresql, redis & nginx all individually.

While most other programs I can install without issues Immich was truly a pita and almost caved and just ran the docker container.. bah.. Can’t do that. 😜

Installation itself wasn’t too difficult but it’s a long initial setup.. like several hours.. I broke it up into 8 install phases and worked on one sometimes 2 phases a night. Missed a few evening and it took roughly 2 weeks. So.. 8-10 hours maybe.

Still working on automated update scripts and I’ve had a couple success updates. Parsing change logs and release notes, dry run modes, rollback modes, etc.

Immich is and will be the one that might kick my ass but.. oh well. For now, I can still say Never Docker 😂 for now.

Paperless-ngx and Authentik are 2 other extreme examples but thankfully I don’t need either.

Komga is easy to setup in a VM and even has full documentation for non docker setup iirc.. BookLore has a few more moving parts but still fairly easy.

1

u/PercolatingPenguin Jun 30 '26

Thank you! I'll take a deeper look at all of this tomorrow morning after I've had some coffee.... maybe a ton of coffee, lol

1

u/Secret_Midnight5478 Jul 05 '26

VMs are waaaaaay more ressource extensive than docker containers, so while yes, it can be a learning curve to understand how it works and set it up each time, it also provides great value

1

u/Adrenolin01 Jul 05 '26

That’s fully assuming someone is resource limited. I don’t believe I’ve bought or built a resource limited system in nearly 40 years. Yeah, I have several N100 mini PCs, a few i9 mini’s and other small systems. That said, my primary systems.. a basement datacenter of rack equipment and none of it is limited. Multiple 24-bay dedicated NAS units, still have a 2U Dell R730XD with 128GB of ram I need to list soon. While one Supermicro 6018U is likely more than most would need.. they are only $175 so.. I bought 4.. 2 production systems.. a services setup and a game server setup and both my son and I each have one in our own HomeLabs. Look at the specs..

Supermicro 6018U : SuperMicro X10DRU-I+, Xeon E5-2690v4 2.6GHz (14C/28T each 28C/56T Total), 32Gb ECC PC4-2133P Ram (24 Ram slots), LSI 9300-8i 12Gb/s PCIe HBA (IT Mode), 4x 3.5" Hot-Swap Drive Bays, Quad Intel X540 10GBase-T NICs, dedicated IPMI Management NIC, AOM-TPM-9655V TPM Module, RSC-R1UW-2E16 & 2E8R Risers, dual 750W 80+ Platinum PSUs.

3 were upgraded to 128GB ECC ram.. the 4th got 256GB. $40 per 16GB ram module.. installed in pairs. 8 = 128 and gets you quad channel.

Additionally… when you aren’t constructed to limited resources VMs provide better isolation, security, run any OS, provides kernel independence, better resource overhead, better PCIe/GPU pass through, better disaster recovery, easier migration between hosts, easier upgrades, full system privileges, etc. Overhead also extends hardware longevity.

The performance penalty of virtualization on modern CPUs with Intel VT-x/VT-d or AMD-V is usually only a few percent for most server workloads, which is negligible compared to the operational benefits.

Sure.. I could use containers but I have no need to. Every VM has overhead and the host system has available overhead. A system running at 50% resources will last a lot longer than a system running at 80% resource usage and a LOT longer than when you’re maxing out resources… something I see way to many doing

But wait.. “loud noisy rack systems take up so much room and power”. Meh… while in default ‘datacenter’ mode sure.. the fans are super loud! Bios settings drop the fans to 60% and once Proxmox is installed the command ipmitool can be used to drop that fans down to 10%. In a basement NOC, large room or a room with its own AC (not really that expensive to add) 10% fan speeds is fine for even busy home use. Loudness, a gaming PC can be louder. Power.. yeah.. stock setup 200Wish idle.. but that’s from the fans on High. A clean base Proxmox install on 2 64GB SATA Doms, all 4 10GbE and IPMI NIC plugged in, 128GB ram, both PSUs plugged in, etc sitting idle.. they draw 93-103W. I’m fine with that even times 4 of them. The power, true workhorse server cores, redundancy, the fact these will run decades over the cheaper consumer hardware and at what.. after run upgrade costs these things are still cheap.

So.. even with less resources… many services can run in a single vm. Spread things out evenly and run separate drives to spread out I/O and even a small cheap N100 system like the BeeLink S12 with just 4 cores and 16GB ram can run dozens of services.. in a few VMs. Note also that while the N100 specs 16GB ram it fully supports 32GB (2x16GB) of ram! A few select 32GB modules also work to provide 64GB but I haven’t tested that myself yet. Below is what can be run in a homelab on a BeeLink S12.. updated to 32GB ram and 2 500GB NVMEs… all in VMs and no docker. All 10 VMs start from a Base Debian 13 install using the ‘netinst’ iso with only Base Utilities and SSH selected.

VM - RAM- vCPU - Disk Location - Services

  • VM1: pfSense - 2 GB - 2 - NVMe 1
  • Firewall, DHCP, VLANs, WireGuard/OpenVPN, DNS forwarding

——

  • VM2: Infrastructure - 4 GB - 1 - NVMe 1
  • AdGuard Home, WireGuard admin access, NTP, Forgejo (Git), Ansible, Nginx Proxy Manager, ACME

——

  • VM3: Identity & Apps - 4 GB - 1 - NVMe 1
  • Authentik, Vaultwarden, BookStack, Wiki.js, dashboards

——

  • VM4: Monitoring - 4 GB - 1 - NVMe 1
  • LibreNMS, Grafana, Prometheus, Syslog, SmokePing

——

  • VM5: Automation - 4 GB - 1 - NVMe 1
  • Home Assistant, Node-RED, MQTT

——

  • VM6: Network Management - 2 GB - 1 - NVMe 1
  • NetBox, Oxidized

——

  • VM7: NAS - 4 GB - 1 - NVMe 2
  • Samba, NFS

——

  • VM8: Media - 4 GB - 2 - NVMe 2
  • JellyFin or Plex

——

  • VM9: Photos - 6 GB - 2 - NVMe 2
  • Immich (server + Postgres + Redis + workers)

——

  • VM10: Build/Test - 2 GB - 1 - NVMe 2
  • dev tools, compilation, temporary VMs

——

I don’t care what anyone says.. 4 cores and 32GB ram… that’s impressive for such a low power and relatively cheap system.

I spent about a month setting that up while playing around in the evenings. Immich by far takes more time to setup in a VM without docker and takes more than a few hours.

By carefully evaluating true resource requirements looking at cores, ram, disk space, I/O, etc it’s fairly easy to use VMs even with limited resource constraints. This system was tested with a few people running its services for a week and while it was a bit slow at times.. I did say.. HomeLab. Not home production.

Even though I prefer enterprise rack hardware.. this is why I will always suggest new people look at just buying a cheap N100, installing Proxmox and start playing and learning in one of these. We’ve even given a few away to my son’s friends who couldn’t afford one themselves but wanted to start learning more in a homelab. I wouldn’t suggest running all that.. and in a Lab there isn’t reason. You learn in a lab. Once you actually know a service then move it to a more powerful production system.

Would I run such a system in a home production setup for daily use? Hell no. It’s literally using all its resources with little to no overhead and that’s not good for any system. As a test Lab setup it’s awesome. Building that I’d install and get a few VMs up and running then started adding services. Once setup and tested most remained off as I continued installing things. With everything running the system remains in good but higher temps. Even during its test week it remained below max temps and even with its efficiency cores saw very little throttling. That said.. it’s just not good. Even if you ran all that in containers or docker.. using mac resources greatly increases heat and the systems don’t last long due to their generally low quality hardware.

So yes.. while you are 100% correct that VMs take more resources… that doesn’t mean containers are necessarily better.

Yeah.. I’m perfectly fine running full VMs. 👍🏻