You don't need a "massive" server for this. I do all my package building at home on an old Core i5 with 16GB RAM. It just takes a little longer to finish compared to the 24 core, 96GB RAM beast I can use at a client.set up a dedicated poudriere server with immense disk space and CPU power
You don't build everything (as in all 40.000+ packages), you feed it a list of things you need.which builds tens of thousands of packages that will mostly never be used.
Code:
-f file Build ports listed in the file.
The path to the file has to be absolute. Ports must be
specified in the form of "category/port" and sh(1)-style
comments are allowed. Multiple -f file arguments may be
specified at once.
I have a poudriere set up for a client, where I need to maintain about 30 FreeBSD servers. Client has no need for desktop or Xorg applications, only Apache, MySQL and an assortment of other web based tools (like Ruby-on-Rails, PHP, etc). I've set this up many years ago and we're still using it right now. The list needs some occasional updates (changes in requirements of the client) but the list is pretty much the same now as it was many years ago. I just let it update its ports tree weekly and run the builds at night. So next morning I have a freshly built and updated package repository. The nice thing about this setup is that I get to decide when to change the default Ruby or PHP version for example, so we can migrate at our own pace. I can also easily revert any updates or temporarily fix ports if needed. I'm also sure all servers have the same versions and settings for everything.