this post was submitted on 28 Feb 2025
31 points (97.0% liked)

Selfhosted

42956 readers
739 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Dear selfhosters!

I come to you in the hope of help for avoiding some rookie mistakes.
I plan to migrate my very diverse hard- and software environment to a single machine.

Current mode of operation

I operate several RaspberryPis, a hardware firewall running on OpenWRT and a NUC like mini PC.
The RaspberryPis more or less are there for a single function; one runs Nextcloudpi, two run PiHoles, another one runs iSpy.
The mini PC is for the tasks that are heavier on CPU, RAM or storage space.
Maintaing this has become somwehat cumbersome and a replacement is dearly needed. My plan is to move all to a Proxmox sever.
I do have a general idea how to set up things, but as I'm brand new to Proxmox, I fear that there's a lot of mistakes to be made. I haven't read all documentation, but enough to know that it's no easy task to set up and operate Proxmox properly.
I'm aware that not having server hardware (e.g. no ECC RAM) is not the best setup, but AFAIU at least having a data centre SSD and lots of RAM is a good start.

Hardware

In the future all services are meant to run on this machine:
Case/Mainboard: AsRock Deskmeet X300
CPU: AMD Ryzen 5 5600GT
RAM: 64 GB
Storage:

  • 480 GB SSD (Intel DC S4500 Series)
  • 4 TB SSD (Team Group MP44)
  • 16 TB HDD (Seagate Exos, yeah, I know, but realized too late...)
    OS: Proxmox 8.3.1

Future mode of operation

Here's a high-level scheme of what I plan to do:

  • Install Proxmox on the Intel SSD
  • Use the 4 TB SSD as storage drive for the machines
  • Use the 16 TB HDD as storage drive for backups and additional storage (for files that mainly get read like media) for the machines
  • Migrate each physical device to a virtual machine (or create a new one to replicate the service)
  • Repurpose the mini PC as Proxmox backup server

Help!

The areas where I think reading documents can't beat experience are:

  • Do I use BTRFS or ZFS? I tend to use ZFS because of its advantages when making backups. What would you do?
  • Do I use QEMU/KVM virtual machines or LXC/LXD cointainers? Performance wise QEMU emulating the host architecture should be the way to go, right?
  • I shy away from running all services as Docker on the same machine for backup/restore purposes and rather have VMs per service. Is there anything wrong with this approach?
  • I'd love to keep NextcloudPi (because it'd make it easy to migrate settings and files) and there's an LXD container for it. Would you recommend doing a switch to Nextcloud AIO instead?
  • I've equipped the Deskmeet X300 with a WiFi card and antennas. AFAIU trying to use WLAN instead of LAN will create some trouble. Has anyone running Proxmox on a machine with WLAN insteal of LAN access successfully?
  • I'm aware that Proxmox comes with a firewall, but I don't feel very confortable using a software firewall running on the same machine that hosts the virtual machines. Is this just me being paranoid or would you recommend putting a hardware firewall between the internet access and the Proxmox server?
  • What else should I think of, but haven't talked about/asked yet?

Thank you very much for your time and your suggestions in advance!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 7 hours ago

Thanks a million for the extensive feedback, especially because it's enriched by your own experience!

Usually VMs are usually I/O starved therefore I would try to go as lightweight as possible and chose Ext4 or XFS (depending on what the VM is used for). The VMs can be backed up whole by Proxmox. You have more than enough space to do that and it's considerably easier to set up. And honestly how big could the containers and VMs be? I guess the containers are 50-200 MB and a VM a few GBs. That's almost nothing.

I suppose your expectations about VM size are appropriate. The RaspberryPis have 8 GB SD cards and there's quite some space left on them. I don't know why the space requirement should be very different on a VM. Going from Raspbian/Armbian to Debian shouldn't play that much of a role size wise.
Wouldn't pick ETX4 oder ZFS make replicating data to the Proxmox backup server way less efficient?

LXC containers are way more lightweight than VMs. I depends on what you want to do. Docker and a file server work better in a VM so far but Pi-hole and Jellyfin run perfectly in a container.

I would go for LXC first. If that isn't possible or too cumbersome I would try docker (in a VM) next and one-VM-per-service last as they need the most resources.

I will try LXC before VM then!

I would always try to connect it to LAN.

That will make the physical placement harder, but I was afraid that's the way to go: connect it to LAN...

No idea. I wouldn't mind a firewall container. If something breaks through you are fucked one way or the other. The firewall in your router isn't much different than any other.
You should always go for Wireguard or another VPN to access your network from the outside.

Some ports need to be forwarded in order for e.g. Nextcloud to work. Right now they are forwarded to my firewall and all that's reachable from outside is behind that firewall. The main purpose of the firewall is to protect the rest of the network from a compromised device within the firewall zone. So if something breaks through a bug in Nextcloud now, it will hopefully have a hard time breaking through the firewall.
Having a bug in Nextcloud running in an LXC or VM may allow additional attack vectors, if there's no hardware firewall (and only the built-in firewall functions or a firewall container) between them and the rest of the network.
Connection from outside to my home network is via Wireguard tunnel.

Helper scripts for beginners: https://community-scripts.github.io/ProxmoxVE/
Just give them a look.

I was reading up on Proxmox setup both by consulting official documentation and forum entries, but I haven't stumbled upon that link so far.
It looks awesome!
And I'm damn sure it will save me plenty of time :)
I found tteck's helper-scripts (https://tteck.github.io/Proxmox/), but the collection linked by you looks more tidy.

And it seems you are ignoring Proxmox' LXC. They are one of main reasons to pick that software.

I fear that's because I hadn't understood the benefits of LXC over VM, which you made clear very plainly:

As an additional note: I ran about 6 or 7 VMs on a mini PC (Intel N100) with 16 GB RAM. RAM was almost used up and the cpu was at ~15 %.
I then switched mostly to LXC and only one VM. The cpu was now at ~1% and RAM usage went down to 3 GB while still providing the same services as before.
The power of containers, baby! :D

It's about time to get Proxmox set up and dirty my hands!