Hi Speckle Community!
I’m looking for some advice and best practices on how to properly host, maintain, update, and back up a self-hosted Speckle Server. We primarily use it for uploading and downloading 3D models.
Current Setup & The Problem: Right now, I have a Speckle Server running (4 Cores x86, 16 GB RAM), but everything is deployed on a single machine. It works for basic tasks, but it struggles heavily under load. Whenever I upload larger files, the server hits up to 400% CPU usage.
My Goals: I want to build a more robust and scalable infrastructure that allows me to operate the server “easily” without constant babysitting. Specifically, my requirements are:
- Large File Support: I need to be able to reliably upload IFC files up to 500MB in size without crashing the server or maxing out the CPU for too long.
- Future Scaling: I want the architecture to be capable of scaling up to 500 users in the future.
- Operations: I need a solid strategy for seamless updates and reliable backups.
Questions for the Community:
- Infrastructure: What does your architecture look like for a similar scale? Do you recommend sticking to Docker Compose with beefier specs, or is migrating to Kubernetes the best path for this amount of users?
- Resource Management: How do you handle high CPU spikes during heavy IFC uploads and processing? Are there specific worker configurations or separate nodes you use for processing?
- Storage & Databases: Do you recommend separating PostgreSQL, Redis, and Object Storage (like AWS S3 or dedicated MinIO) onto different servers?
- Maintenance: What are your best practices or automated workflows for painless version updates and disaster recovery (backups)?
Any pointers, architectural tips, or shared experiences would be hugely appreciated. Thanks in advance for your help!