# Windows requirements

## Using WSL

{% hint style="info" %}
Since **magento-scripts\@1.6.0**
{% endhint %}

### 1. Install WSL

To install WSL2 on Windows follow [this guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10).

{% hint style="info" %}
For [step #6 Install your Linux distribution of choice](https://docs.microsoft.com/en-us/windows/wsl/install-win10#step-6---install-your-linux-distribution-of-choice) we recommend choosing the latest Ubuntu release, as it has the best compatibility on Windows.
{% endhint %}

### 1.1 Install Windows Terminal (Optional)

On Windows with WSL, it is recommended to use [Windows Terminal](https://docs.microsoft.com/en-us/windows/terminal/get-started).\
By using it you can open different shells and access different WSL distros in the same place, which is quite handy.

### 1.2 Install Visual Studio Code (Optional)

VSCode has excellent integration with WSL, so you can run commands, edit code and debug it inside a single editor.\
[Developing in WSL](https://code.visualstudio.com/docs/remote/wsl).

![](https://3863794383-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOVnS5lKxiIvOL9no4d%2F-McUL2bDOck2EgQmaF-T%2F-McUVj3wq2v7f-su7w7s%2FScreenshot%20\(2\).png?alt=media\&token=a4a3a047-26c5-4e01-9506-b6b92dbdef49)

### 2. Install Docker Desktop for Windows

Download and install [Docker Desktop for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows).

### 3. Enable WSL 2 integration in Docker Desktop settings

Go to **Docker Desktop settings > General** and make sure that **Use the WSL 2 based engine** checkbox is checked.

![](https://3863794383-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOVnS5lKxiIvOL9no4d%2F-McUL2bDOck2EgQmaF-T%2F-McUOZ_owueFFwA0YvX7%2FScreenshot%202021-06-18%20165003.png?alt=media\&token=1a5a596d-b42b-49e0-8d41-f1857a763fdd)

Then, go to Resources >WSL Integration and enable WSL integration into your distro.

![](https://3863794383-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOVnS5lKxiIvOL9no4d%2F-McUL2bDOck2EgQmaF-T%2F-McUOmfYntDg4h1lLMRN%2FScreenshot%202021-06-18%20165050.png?alt=media\&token=893e5943-ab5a-4d9b-b4b9-41046f633a3c)

Toggle your distro and click **Apply & Restart**.

### 4. Install platform-specific dependencies:

{% hint style="warning" %}
Since **magento-scripts 1.4.0** CMA will also check installed dependencies before starting the application, and if they are missing will provide instructions on how to install them!
{% endhint %}

Full list of dependencies for each Linux distro available [here](https://docs.create-magento-app.com/v1/getting-started/installation-on-linux#1-install-platform-specific-dependencies).

{% tabs %}
{% tab title="Ubuntu" %}

```bash
apt-get install \
    libcurl4-openssl-dev \
    libonig-dev \
    libjpeg-dev \
    libjpeg8-dev \
    libjpeg-turbo8-dev \
    libpng-dev \
    libicu-dev \
    libfreetype6-dev \
    libzip-dev \
    libssl-dev \
    build-essential \
    libbz2-dev \
    libreadline-dev \
    libsqlite3-dev \
    libssl-dev \
    libxml2-dev \
    libxslt1-dev \
    libonig-dev \
    php-cli \
    php-bz2 \
    pkg-config \
    autoconf \
    libsodium-dev
```

{% endtab %}
{% endtabs %}

### 5. Install PHPBrew

{% hint style="warning" %}
Since **magento-scripts\@1.7.0** this part will be done automatically.
{% endhint %}

To install PHPBrew on Linux you will need to follow [installation](https://github.com/phpbrew/phpbrew#installation) instructions or use the commands below:

```bash
# Download PHPBrew
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar

# Make it executable
chmod +x phpbrew.phar

# Move PHPBrew binary to system folder.
sudo mv phpbrew.phar /usr/local/bin/phpbrew

# Initialize PHPBrew
phpbrew init
```

### 6. Prepare the environment

To work with Magento you need access keys to access the Magento repository.

1. Go to <https://marketplace.magento.com/customer/accessKeys/>
2. Generate Access Keypair

Now you have a **public key** and **private key** values.

To use them you have 2 options:

1. **Use `COMPOSER_AUTH` environmental variable**

   This option is used as a global variable on your machine.

   Replace `<public key>` and `<private key>` with your public and private key.

   ```bash
   export COMPOSER_AUTH='{
       "http-basic":{
           "repo.magento.com": {
               "username": "<public key>",
               "password": "<private key>"
           }
       }
   }'
   ```

   Add the result to your `.bashrc` or `.zshrc` and reload your terminal.
2. **Use auth.json file**

   This option is used on a per-project basis, so your credentials will be always correct no matter which project you are working on.

   Create `auth.json` file in the root of your project and inside put the following content using the same `<public key>` and `<private key>` you obtained before:

   ```
   {
       "http-basic":{
           "repo.magento.com": {
               "username": "<public key>",
               "password": "<private key>"
           }
       }
   }
   ```

### 7. Start your application

{% hint style="info" %}
Start command description can be found [here](https://docs.create-magento-app.com/v1/getting-started/available-commands/start).\
To access Magento CLI, Composer and PHP use [cli](https://docs.create-magento-app.com/v1/getting-started/available-commands/cli) command.
{% endhint %}

## Using VM

As an option, you can run CMA on Windows using a Linux VM running in [Virtual Box](https://www.virtualbox.org/) (free) or [VMWare Workstation Player](https://www.vmware.com/products/workstation-player.html) (paid).\
We recommend using [Ubuntu](https://ubuntu.com/download/desktop) or [Fedora](https://getfedora.org/en/workstation/download/) distros, although [Linux Mint](https://linuxmint.com/download.php), [CentOS](https://www.centos.org/download/) and distros based on `apt` , `pacman`, `yum`, `dnf` package managers should also work.\
[Installation guide](https://docs.create-magento-app.com/v1/getting-started/prerequisites/installation-on-linux) for this option is the same as installing on a common Linux platform.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.create-magento-app.com/v1/getting-started/prerequisites/windows-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
