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.