{"id":13579953,"url":"https://github.com/zepgram/magento2-fast-vm","last_synced_at":"2025-07-30T05:32:50.876Z","repository":{"id":35702802,"uuid":"147679050","full_name":"zepgram/magento2-fast-vm","owner":"zepgram","description":"Optimal vagrant developer box for Magento2. Folders synced by nfs/rsync. This box includes Magento developer utilities.","archived":false,"fork":false,"pushed_at":"2023-03-27T14:04:23.000Z","size":234,"stargazers_count":106,"open_issues_count":2,"forks_count":35,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-09T20:44:02.428Z","etag":null,"topics":["devbox","elasticsearch","linux","macos","magento-developer-box","magento2","mysql8","nfs","nginx-php-fpm","percona-server","php81","redis","rsync","shell-script","vagrant","virtualbox","windows"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zepgram.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["zepgram"]}},"created_at":"2018-09-06T13:38:18.000Z","updated_at":"2025-04-09T18:54:32.000Z","dependencies_parsed_at":"2023-01-16T03:26:12.262Z","dependency_job_id":"df96186c-c431-40c0-ab04-4e98d25164cd","html_url":"https://github.com/zepgram/magento2-fast-vm","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/zepgram/magento2-fast-vm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zepgram%2Fmagento2-fast-vm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zepgram%2Fmagento2-fast-vm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zepgram%2Fmagento2-fast-vm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zepgram%2Fmagento2-fast-vm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zepgram","download_url":"https://codeload.github.com/zepgram/magento2-fast-vm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zepgram%2Fmagento2-fast-vm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267815187,"owners_count":24148356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devbox","elasticsearch","linux","macos","magento-developer-box","magento2","mysql8","nfs","nginx-php-fpm","percona-server","php81","redis","rsync","shell-script","vagrant","virtualbox","windows"],"created_at":"2024-08-01T15:01:45.209Z","updated_at":"2025-07-30T05:32:50.822Z","avatar_url":"https://github.com/zepgram.png","language":"Shell","funding_links":["https://github.com/sponsors/zepgram"],"categories":["Shell"],"sub_categories":[],"readme":"# Virtual Machine for Magento2\n\n[![vagrant](https://img.shields.io/badge/vagrant-debian:bullseye-blue.svg?longCache=true\u0026style=flat-square\u0026label=vagrant\u0026logo=vagrant)](https://app.vagrantup.com/geerlingguy/boxes/debian10)\n[![install-git](https://img.shields.io/badge/git-blue.svg?longCache=true\u0026style=flat-square\u0026label=setup\u0026logo=git)](https://github.com/zepgram/magento2-fast-vm/blob/master/config.yaml.example)\n[![install-composer](https://img.shields.io/badge/composer-blue.svg?longCache=true\u0026style=flat-square\u0026label=setup\u0026logo=composer)](https://github.com/zepgram/magento2-fast-vm/blob/master/config.yaml.example)\n[![mount](https://img.shields.io/badge/nfs/rsync-blue.svg?longCache=true\u0026style=flat-square\u0026label=mount)](https://github.com/zepgram/magento2-fast-vm/releases)\n[![release](https://img.shields.io/github/v/release/zepgram/magento2-fast-vm?longCache=true\u0026style=flat-square)](https://github.com/zepgram/magento2-fast-vm/releases)\n[![license](https://img.shields.io/github/license/zepgram/magento2-fast-vm?longCache=true\u0026style=flat-square\u0026color=blue)](https://github.com/zepgram/magento2-fast-vm/blob/master/LICENSE)\n\nSupported system:\u003cbr\u003e\n![windows](https://img.shields.io/badge/windows-✓-success.svg?longCache=true\u0026style=flat-square\u0026label=windows\u0026logo=windows)\n![apple](https://img.shields.io/badge/mac-✓-success.svg?longCache=true\u0026style=flat-square\u0026label=mac\u0026logo=apple)\n![linux](https://img.shields.io/badge/linux-✓-success.svg?longCache=true\u0026style=flat-square\u0026label=linux\u0026logo=linux)\n\nSupported release:\u003cbr\u003e\n[![v2.1.*](https://img.shields.io/badge/v2.1-grey.svg?longCache=true\u0026style=flat-square\u0026logo=magento\u0026color=9b3f3f)](https://github.com/magento/magento2/tree/2.1)\n[![v2.2.*](https://img.shields.io/badge/v2.2-grey.svg?longCache=true\u0026style=flat-square\u0026logo=magento\u0026color=3f609b)](https://github.com/magento/magento2/tree/2.2)\n[![v2.3.*](https://img.shields.io/badge/v2.3-grey.svg?longCache=true\u0026style=flat-square\u0026logo=magento\u0026color=858256)](https://github.com/magento/magento2/tree/2.3)\n[![v2.4.*](https://img.shields.io/badge/v2.4-grey.svg?longCache=true\u0026style=flat-square\u0026logo=magento\u0026color=36853c)](https://github.com/magento/magento2/tree/2.4)\n\n![technical-stack](https://user-images.githubusercontent.com/16258478/226653131-4f8a5b30-318d-46c8-af3e-d5dac6c90c12.jpg)\u003cbr\u003e\n\n[![associate-developer](https://user-images.githubusercontent.com/16258478/182574034-662e3aeb-318a-496d-9b65-9a927e8782e0.png)](https://www.youracclaim.com/badges/406cc91a-0fda-4a6f-846b-19d7f8b59e0a/public_url)\n\n## Requirements\n\n### Virtualbox\n[VirtualBox](https://www.virtualbox.org/) is an open source virtualizer, an application that can run an entire operating system within its own virtual machine.\u003cbr\u003e\nStable version \u003e= 5.2.0\n\n1. Download the installer for your laptop operating system using the links below.\n    * [VirtualBox download](https://www.virtualbox.org/wiki/Downloads)\n1. Run the installer, choosing all the default options.\n    * Windows: Grant the installer access every time you receive a security prompt.\n    * Mac: Enter your admin password.\n    * Linux: Enter your user password if prompted.\n1. Reboot your laptop if prompted to do so when installation completes.\n1. Close the VirtualBox window if it pops up at the end of the install.\n\n### Vagrant\n[Vagrant](https://www.vagrantup.com/) is an open source command line utility for managing reproducible developer environments.\u003cbr\u003e\nStable version \u003e= 2.2.0\n\n1. Download the installer for your laptop operating system using the links below.\n    * [Vagrant download](https://www.vagrantup.com/downloads)\n1. Reboot your laptop if prompted to do so when installation completes.\n\n## Configurations\n\n### Related guide\n- Made by Onilab for Windows 10:\u003cbr\u003e\nhttps://onilab.com/blog/install-magento-2-on-localhost-a-windows-10-guide/\n\n### Pre-installation\n\n\u0026#9888; This vagrant installation is non-interactive: DO NOT USE SSH KEY WITH PASSPHRASE.\u003cbr\u003e\nIf your ssh key has been created with a passphrase, please create another one.\n\n System  | Steps                                                                                                                                                                                                                                                                                                                                                   |\n|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Windows | 1. Open UEFI BIOS and make sure virtualization is turned 'on'\u003cbr\u003e2. Open powershell as administrator and run: ``Add-MpPreference -ExclusionProcess winnfsd.exe``\u003cbr\u003e3. Open ``C:\\Windows\\System32\\drivers\\etc\\hosts`` as administrator then add ``network_ip`` and ``magento_url``\u003cbr\u003eDefault values would be: ``192.168.60.0       dev.magento.com`` |\n| MacOs | 1. To avoid issue with guest additions, run:\u003cbr\u003e ``sudo apt install linux-headers-$(uname -r)``                                                                                                                                                                                                                                                         |\n| Linux | 1. To install NFS properly, run:\u003cbr\u003e ``sudo apt install nfs-kernel-server``                                                                                                                                                                                                                                                                             \n| Linux/MacOS | 2. Open ``/etc/hosts`` as sudo then add ``network_ip`` and ``magento_url``\u003cbr\u003eDefault values would be: ``192.168.60.0       dev.magento.com``                                                                                                                                                                                                         \n\n### Installation\n\n1. Clone this project: ``git clone git@github.com:zepgram/magento2-fast-vm.git``\n1. Copy/past: ``ssh.example`` rename it ``ssh`` then put your ``id_rsa`` and ``id_rsa.pub`` keys\n1. Copy/past: ``config.yaml.example`` rename it ``config.yaml``\u003cbr\u003eThen customize configurations according to [Yaml config overview](#yaml-config-overview)\n1. If you want to import an existing database: create a compressed sql dump and name it ``db-dump.sql.gz``.\u003cbr\u003eYou must also fill ``crypt_key`` in config.yaml \n1. To start install run: ``vagrant up`` (duration: ~20 minutes)\n1. Finally, run: ``vagrant ssh`` to access guest machine\n\n### Yaml config overview\nParent Node  | Name          |  Default Value |  Allowed Value  |  Is optional  |  Description\n| --- |---------------| -- | --- | --- |---\n| vmconf | machine_name  |  Vagrant Magento 2 | string | no | Vagrant machine name\n| | network_ip    |  192.168.60.0 | IP address |  no  | Accessible IP address /etc/hosts\n| | host_name     |  zepgram | string |  no |  Virtual host name\n| | memory        |  4096 |  number  |  no |  RAM allocated\n| | cpus          |  1 |  number  |  no |  CPU allocated\n| | mount         |  nfs | nfs / rsync / default |  no |  Mount strategy\n| | path          |  root | app / root |  no |  Mount whole directory or `app/` only\n| | provision     |  all | all / system / magento | no |  Define script provision\n| composer | username      |  magentoUsernameKey | string |  no |  \u003ca href=\"https://marketplace.magento.com/customer/accessKeys/\" target=\"_blank\"\u003eComposer auth user\u003c/a\u003e\n| | password      |  magentoPasswordKey | string |  no |  \u003ca href=\"https://marketplace.magento.com/customer/accessKeys/\" target=\"_blank\"\u003eComposer auth password\u003c/a\u003e\n| git | name          |  John Doe | string |  yes |  Git user name\n| | email         |  john@doe.com | email |  yes |  Git user email\n| | host          |  github.com | url |  yes  |  Git host server name\n| | repository    |  ssh://git@github.com:%.git | git repository |  yes  | Define repository to clone\n| magento | url           |  dev.magento.com | url |  no |  Magento site host name\n| | source        |  composer | composer / (master/develop..) |  no |  Define source installation. On git install set the branch name to clone.\n| | edition       |  community | community / enterprise |  no |  Magento project edition\n| | version       |  2.4.5 |  \u003e=2.2 |  no |  Magento version release\n| | php_version   |  default | default / 7.x / 8.x |  no |  PHP version\n| | sample        |  true | true / false |  no |  Install sample data\n| | mode          |  developer | developer / production |  no |  Magento execution mode\n| | currency      |  USD | \u003ca href=\"https://en.wikipedia.org/wiki/ISO_4217#Active_codes\" target=\"_blank\"\u003eISO 4217\u003c/a\u003e |  no |  Default currency\n| | language      |  en_US |  \u003ca href=\"https://www.iso.org/iso-639-language-codes.html\" target=\"_blank\"\u003eISO 639-1\u003c/a\u003e + \u003ca href=\"https://www.iso.org/iso-3166-country-codes.html\" target=\"_blank\"\u003eISO 3166\u003c/a\u003e |  no |  Default language\n| | time_zone     | America/New_York | \u003ca href=\"https://www.php.net/manual/en/timezones.php\" target=\"_blank\"\u003etimezone\u003c/a\u003e |  no |  Default timezone\n| | crypt_key     |  - | string |  yes |  Crypt key form app/etc/env.php for db-dump.sql.gz (db import)\n| | search_engine |  opensearch  | opensearch / elasticsearch |  false |  Search engine for catalog search\n| | disable_two_factor_auth |  true  | true / false |  false |  Disable 2 factor authentication for admin access\n\n### Path\n* \u003cb\u003eroot directory:\u003c/b\u003e mount the entire project.\n* \u003cb\u003eapp directory:\u003c/b\u003e mount only app directory. Not sharing generated files between machines ensure great performance but in return, source code /vendor is missing.\n\n### Mount options\n\n#### RSYNC\nOnly useful on path set to ``root``.\u003cbr\u003e\n* Loss of performance is due to files generated on the fly, by excluding them you can mount the whole directory ``root`` and get performance equal to an ``app`` mount.\n* The ``vagrant rsync-auto`` is launched by default on vagrant up, even with that if you need to force an update you can run ``vagrant rsync``. \u003cb\u003eTerminal should be kept open for rsync-auto: do not close it.\u003c/b\u003e\n* Rsync is unilateral, your host machine push files to guest but not the other way.\u003cbr\u003e\nAnyway if it's necessary, after a ``composer update`` for example, you can run ``vagrant rsync-back`` to push files from guest to host.\u003cbr\u003e\n* After first installation, you must run ``vagrant reload`` to enable file watching with rsync-auto.\u003cbr\u003e\n[See Rsync option](https://www.vagrantup.com/docs/synced-folders/rsync.html)\n\n#### NFS\nRecommended for ``root`` and ``app`` path.\u003cbr\u003e\nThe most stable option, config has been made to ensure compliance with all OS.\nLess performant than rsync but files are perfectly shared between guest and host machine.\n\n[See NFS option](https://www.vagrantup.com/docs/synced-folders/nfs.html)\n\n#### DEFAULT\nIt can be used with ``app`` path if you encountered any issue with NFS and rsync mount.\n\n[See basic usage](https://www.vagrantup.com/docs/synced-folders/basic_usage.html)\n\n### Extra provisions\nYou can add extra shell provisions.\u003cbr\u003e\nThose provisions will be executed on pre-defined sequences:\n1. ``extra/001-env.sh`` his purpose is to provide extra environment variables or extra package, executed after script ``001-system-env.sh``\n1. ``extra/100-pre-build.sh`` define your specific system configuration before installation, executed after script ``100-magento-pre.sh``\n1. ``extra/120-post-build.sh`` you can execute magento command in this sequence, executed after script ``120-magento-post.sh``\n\n- To be executed you must remove the string `-example` from the filename script.\n- As an example of use, you can adapt data from your database import by using the script ``100-pre-build.sh``\n\n## System usage\n\n### Permission\nMagento file system owner is configured for ``vagrant`` user, it means all commands in magento project must be executed by this user.\u003cbr\u003e\nBy default command line ``vagrant ssh`` will log you as vagrant user.\u003cbr\u003e\n* To re-apply magento permissions you can run ``permission`` directly in command line.\n\n### Command line\n* magento (Magento CLI alias)\n* magento-cloud (Magento Cloud CLI)\n* pestle (A collection of command line scripts for code generation)\n* magerun (The swiss army knife for Magento developers)\n* permission (Re-apply permissions to project)\n\n### Cron\nEnable cron:\n```\n./bin/magento cron:install\n```\n\nDisable cron:\n```\n./bin/magento cron:remove\n```\n\n## Configuration\n\n### Package \u0026 Software\n- php + required extensions\n- curl\n- git\n- gitflow\n- vim\n- composer\n- nginx\n- php-fpm\n- percona\n- redis-server\n- elasticsearch\n- opensearch\n- grunt\n- postfix\n- mailhog\n- pestle\n- magereun\n- adminer\n- magento-cloud cli\n- bin/magento bash completion\n\n### Access\n* User bash terminal\n  * user: vagrant\n* Back-office\n  * url: magento[url]/admin \n  * user: magento.admin\n  * pass: admin123\n* Database\n  * user: vagrant\n  * pass: vagrant\n  * name: magento\n* Mailhog\n  * url: [network_ip]:8025\n* Adminer\n  * url: [network_ip]/adminer\n* Phpinfo\n  * url: [network_ip]/php\n\n### Mysql\nPercona server 8.0 is now installed for Magento \u003e=2.4.0\u003cbr\u003e\nLower versions are handled foreach existing Magento versions.\n\n### PHP\nPHP 8.2 is now installed by default for Magento \u003e=2.4.6\u003cbr\u003e\nLower versions are handled foreach existing Magento versions.\n\n### Composer\nComposer v2 is now installed by default for Magento \u003e=2.4.2\u003cbr\u003e\nLower versions are handled foreach existing Magento versions.\n\n### Elasticsearch\nVersion 8.4.x of Elasticsearch is now available for Magento 2.4.6\u003cbr\u003e \nVersion 7.6.x of Elasticsearch is available for version between 2.4.0 and 2.4.5\u003cbr\u003e\nLower versions are handled foreach existing Magento versions\u003cbr\u003e\nOtherwise, you can also completely disable elasticsearch by installing this module: https://github.com/zepgram/module-disable-search-engine\n\n### Opensearch\nVersion 2.5.x is now available for Magento 2.4.6\u003cbr\u003e\nElasticsearch will be installed by default on lower Magento versions.\n\n## Issues\n\n### Windows 10\nThere is a known [issue with composer installation](https://github.com/zepgram/magento2-fast-vm/issues/70) on windows 10.\u003cbr\u003e\nThis issue could not be solved yet, and has already been reported 2 times.\u003cbr\u003e \n- This is related to the computer and BIOS configuration.\n- This is only reported on \"NFS\" mount option.\n\nTo solve this, I recommend to set mount option to \"rsync\", then after full installation you should be able to fall back to NFS.\n\n### Others\nIf you have trouble during installation please open a new issue on this GitHub repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzepgram%2Fmagento2-fast-vm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzepgram%2Fmagento2-fast-vm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzepgram%2Fmagento2-fast-vm/lists"}