Vagrant setup mainly used for shopware (5)

1.1.0 2021-06-10 10:31 UTC

This package is auto-updated.

Last update: 2024-04-11 14:15:47 UTC



Virtualbox and Vagrant (min. Version 2.0) have to be installed on your local machine:

Vagrant installation for Debian / Ubuntu

$ wget
$ sudo dpkg -i vagrant_2.0.1_x86_64.deb



Clone the repository to your local machine.

$ composer require --dev best-it/shopware-vagrant

Generate a Vagrantfile that looks like this and modify it to your needs:

shopware_vagrant = File.expand_path('./vendor/best-it/shopware-vagrant/Vagrantfile')
load shopware_vagrant

confDir = $confDir ||= File.expand_path(File.dirname(__FILE__))
afterScriptPath = confDir + "/"
customizationScriptPath = confDir + "/"

Vagrant.configure("2") do |config|

    config.vm.synced_folder "./shopware", "/home/vagrant/www",
        type: "rsync",
        rsync__exclude: [

    config.ssh.forward_agent = true

    if File.exist? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath, privileged: false, keep_color: true

    if File.exist? customizationScriptPath then
        config.vm.provision "shell", path: customizationScriptPath, privileged: false, keep_color: true

userVagrantfilePath = confDir + "/user-vagrantfile"
load userVagrantfilePath if File.exists?(userVagrantfilePath)

Generate an ansible folder

$ mkdir ansible

Add a playbook that looks like this:

- name: apply common configuration to all nodes
  hosts: all
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/common'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/apache'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/mysql'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/adminer'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/ioncube'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/composer'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/nodejs'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/sw-cli-tools'
    - role: '../vendor/best-it/shopware-vagrant/ansible/roles/grunt'

Without composer

Clone the repository to your local machine.

$ git clone
$ cd shopware-vagrant

Boot up your vagrant virtual machine:

$ vagrant up

The first boot may take a while, so feel free to get a cup of coffee.

Your machine will be available at All required tools like the LAMP stack are already installed.

To SSH into the created VM:

$ vagrant ssh

If you use Putty the ssh configuration can be obtained via:

$ vagrant ssh-config

To reprovision your machine:

$ vagrant provision

Access files on Host machine

To start local development, it is recommended to sync the source shopware folder to a local folder. To do this, uncomment one of the config.vm.synced_folder lines in the Vagrantfile file.

#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true, type: "smb"
#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true, type: "nfs"
#config.vm.synced_folder "../src", "/home/vagrant/www/shopware", create: true;

For example, for MacOS:

config.vm.synced_folder "src", "/home/vagrant/www/shopware", create: true, type: "nfs"

After editing the vagrant file, make sure to reload your instance.

$ vagrant reload


  • Error message "The 'ansible_local' provisioner could not be found.":

Make sure vagrant is at least at version 2.0:

$ vagrant -v
  • Unable to mount directory (MacOS), given error message:

      Got different reports about installed GuestAdditions version:
      Virtualbox on your host claims:   5.0.18
      VBoxService inside the vm claims: 6.0.8
      Going on, assuming VBoxService is correct..."

Make sure GuestAdditions are same versions:

$ vagrant vbguest --do install    
$ vagrant reload

Change PHP Version

The following PHP Versions are installed by default:

  • PHP 7.0
  • PHP 7.1
  • PHP 7.2

Call one of the following commands to change the PHP Version:

$ changephp_7.0
$ changephp_7.1
$ changephp_7.2

This will change the PHP Version used by the Apache webserver as well as the Version of the php command.

You can also call the PHP versions directly using their full path

$ /usr/bin/php7.0 -v
$ /usr/bin/php7.1 -v
$ /usr/bin/php7.2 -v

Installing Shopware

SSH first into your VM:

$ vagrant ssh

Call the install_shopware script:

$ install_shopware

This will download the latest git version of shopware and install it into /home/vagrant/www/shopware.

Download test images:

$ cd /home/vagrant/www/shopware
$ wget -O
$ unzip

Configure your online store in a web browser with the credentials demo/demo:

You can then access your storefront at:

Notes for Arch Linux users

$ sudo pacman -S virtualbox ansible net-tools nfs-utils
$ sudo modprobe -a vboxdrv vboxnetadp vboxnetflt
$ sudo systemctl start nfs-server


The MIT License (MIT). Please see License File for more information.