# Linux requirements

## 1. Install Docker

You can use [Docker Desktop for Linux](https://docs.docker.com/desktop/setup/install/linux/) or [Docker Engine](https://docs.docker.com/engine/install/), but note that Docker Desktop will be slower than a Docker Engine setup.

CMA will prompt Docker installation and will try install it, but you can install it manually by executing the following commands:

```bash
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh

# Run installation script
sudo bash get-docker.sh

# Add your user to the “docker” group to run docker without root.
sudo usermod -aG docker $USER

# After that you'll need to logout and login to your account or,
# you can temporarily enable group changes by running command below
newgrp docker
```

## 2. Prepare the environment

If you don't have **COMPOSER\_AUTH** environment variable or **auth.json** file in your project, CMA will run a setup wizard with detailed instructions for you to get access keys for the Magento repository.\
But you can also set up them manually by following the instructions below.

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>"
           }
       }
   }
   ```

## 3. Start your application

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