I’ve revisited how the server provisioning flow works on Terrific Fuse and found ways to improve the experience. From naming servers and optimizing PHP and MySQL based on server memory, to sending notifications when provisioning completes, the process is now much smoother.
Previously, to provision a server, you had to create it on your provider (like Hetzner) and assign your Fuse organization’s SSH public key during setup. This allowed Fuse to access the server as root. While this worked for providers such as Hetzner or Digital Ocean, not all VPS providers support assigning SSH keys during server creation, so I needed a more universal solution.
Now, when you add your server to Fuse, you’re prompted to run a command on your VPS as root. This command adds your organization’s public key for SSH access as root. Fuse then automatically detects when it can access your server and starts the provisioning script, installing all necessary software and configuration for deploying Laravel apps. This approach works with almost any VPS provider that offers root access—much more flexible.
I also improved server optimization based on your VPS specs. Previously, Fuse assumed a minimum of 4 GB memory for settings like MySQL connections, PHP pool max children, and swap configuration. Now, when adding a server, you must enter your VPS memory size. Fuse uses this information to calculate optimal settings for MySQL, PHP, and swap, ensuring better performance.
Naming servers can be tricky and time-consuming. To help, I added an option to automatically generate a server name using a random adjective and noun (e.g., “royal-mountain”). This makes adding new servers faster and easier.
Finally, there was no clear way to know when your server finished provisioning unless you kept the server list open and checked the status. Provisioning can take up to 20 minutes, which is a long wait. Now, you can close that tab because you’ll receive an email notification when your server is ready.
Overall, these improvements make server provisioning simpler and more efficient. It’s easier to add servers and know exactly when they’re ready for use.