Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Fofry's avatar
Level 6

Homestead performance and customization

Hello everyone!

I use Homestead and I love it. However, I am having some issues I don't know how to solve. I also have a few nagging questions about the best practices when it comes to Vagrant and Homestead in general.

I run Windows 10 on an SSD, i3-6100, 16 GB RAM, latest VirtualBox is my provider. I switched from WAMP and I am not a very good Linux user, sadly, so any help is appreciated.

  1. Running a Symfony project on the VM is slow. Not unusable, but really slow. What can I do to mitigate this? I googled, not sharing file-heavy directories like vendor, node_modules and cache with the host makes sense. But how do I do that? For most directories I can make symlinks. However, that doesn't work with Composer and vendor directory. And I can't change vendor location in the code / configuration, as I am not the only person working on the projects and others don't use Vagrant / Homestead setup. So I don't want these changes in the Git repo. Also, I wouldn't want to make the symlinks and move the directories manually for every single new project (I maintain a lot of them). How do you solve this? Should I write a shell script? (Also, then you add XDebug to the mix and the performance tanks even more).

  2. I (or rather our deployment tool) use multiple SSH keys to access our Bitbucket account, and to deploy the changes in code on our multiple VPNs. How do I share the keys, along with the config file with my client VM? Manually copying them feels really wrong.

  3. I assume running a single box for multiple projects is not entirely correct and can influence the performance too? I'd love to have a box per project, so that I can just run vagrant up from the project folder. But this ties to the next point:

  4. I need to customize the box. Some of the projects I work on are quite specific; specific PHP modules, specific daemons (Elasticsearch in a certain version with custom plugins and dictionaries, Stunnel, and others), but I don't understand at all how to do this the best way. Do I just customize it and save it as my own box to the cloud and then I can use and share it in the state I left it in? I will confess that I don't particularly understand the process of provisioning, I read a bit about Puppet, Chef, but I don't fully grasp it.

Thank you in advance for reading this and for any piece of advice you can give! I'll be more than happy to buy a coffee to anyone who can spare the time and help.

Jan

0 likes
0 replies

Please or to participate in this conversation.