back

anahit

intro

2x Intel Xeon E5-2690 CPU, SuperMicro X9DRD-EF MOBO, 64GB 1066 MHz DDR3L, 36TB storage (24TB usable)

A homelab running on Proxmox I use to host webservices, game servers, and as a media storage device. It is partitioned into a few VMs, the contents of which I shall explain here.

I bought the server parts off of eBay. They are used enterprise server equipment, which means I was able to get them for dirt cheap (granted they are a bit outdated). The drives are shucked 3x 12TB WD Easystore. I bought them on sale for about $140 a piece. Doing this is much more economical than buying the drives themselves. All of this fits in a regular desktop ATX case. (The MOBO doesn't have the proper mounting holes nor the proper leads to connect to the power button on the case, so it is a little janky, but it works.)

anahit

babayan

portainer

Toun II

Immich

PaperlessNG

SLSKD

Radarr

Sonarr

Bazarr

Prowlarr

SWAG

Weblate

Wiki.JS

Actual

NetAlertX

Gabe's Simple Fileserver

Twitter Bots

Discord Bots

vidya

Minecraft Servers

Terraria Servers

pi-hole

Pi-Hole

Unbound

webservices

Plex

Tautulli

nfs

NFS

babayan

Named after Armenian computer scientist Boris Artashesovich Babayan, this is my most-utilized VM. It hosts all of my webservices.

Currently, every service (listed below) runs through an instance of Portainer. I have a few Discord and Twitter bots running on the VM as well, but I do not use them much.

Toun II

Startpage

Immich

Google Photos alternative

PaperlessNG

Document storage

SLSKD

Soulseek server application

Radarr

Film scanner

Sonarr

TV scanner

Bazarr

Subtitle scanner

Prowlarr

*arr data syncer

SWAG

NGINX reverse proxy

Weblate

Selfhosted web-based translation platform

Wiki.JS

Wiki to host all documentation about my services

Actual

Self-hsoted budgeting platform

NetAlertX

Network client tracker, using as a part of my "2025 Gabe Wrapped" initiative

Gabe's Simple Fileserver

Self-hosted fileserver

I've got a seedbox from Ultra.CC mounted via SSHFS (SSH File System, it's a really cool technology).

vidya

A virtual machine I spin up about twice a year, this VM is used primarily to host Minecraft servers. I adjust the RAM and CPU of the VM depending on how many of my friends have decided to play Minecraft this Summer/Winter.

pi-hole

A small VM with a mere 512MB of RAM that hosts my Pi-hole DNS server.

The VM also hosts my Unbound DNS server. Due to the wacky physical setup of my network (lots of loopbacks), this was necessary to get everything to work.

webservices

A mostly-depracated virtual machine. It used to host all of my webservices, but I have since migrated those to the VM Babayan. Right now, this VM is used only for Plex and an instance of Tautulli.

Originally, every service was hard-installed on this VM. It caused a lot of breakage and confusion when I needed to update/change/add/remove services. The clutter got to the point where it was hard to scale, so I needed to reassess how I was going to structure my services.

The only reason I have not fully migrated off this VM is because Plex does not yet support server migrations. There is a way to migrate Plex instances, but I do not have the time to implement it without there being substantial downtime for my users.

nfs

An LXC running on the host Proxmox instance for my Network File System. Due to the limitations of Proxmox, I cannot directly mount my media storage to the virtual machines. This NFS LXC acts as a passthrough to allow the virtual machines to access the storage via SSHFS.

external access

Most of the services on Babayan are able to be accessed on an externally-available website. This is achieved with a combination of three things:

1) All services are exposed on port 443 through an NGINX reverse proxy (SWAG). The NGINX server is listening for all incoming traffic for *.gabrielchantayan.com.

2) My router is port-forwarded with port 443.

3) Using Cloudflare DNS I have an A record for gabrielchantayan.com and a CNAME record with the name * for gabrielchantayan.com

Note: This is not the actual domain I use for my reverse proxy. I am using this website's domain as an example.

what i would do differently next time

As I have been growing with this server, I have learned a lot of tricks and tools that could've made my life much easier when I first started. Whenever I end up building my next setup, I will do these things differently:

1) Buy consumer-grade server hardware. Enterprise-grade is nice and I can get it stupidly cheap, but now that I have a better-paying job I can get hardware that isn't ten years old.

2) Document RELIGIOUSLY from the start. It sucks having to reverse-engineer the things you've done trying to figure out how to add or fix a service.

3) Containerize everything. It's so much easier to deploy and manage services.

4) In conjunction with the above, use Portainer from the start. Once again, much easier to deploy and manage, plus you don't have to go scouting around for your docker-compose files.

5) Use something other than SWAG. It's a great reverse proxy and all, but there exist alternatives that are much easier to deal with. On the VPS running this website I've been using Caddy and I love it.