---
title: "Install DDEV on a Mac"
description: "Here is a small guide on how to install DDEV, which is based on Docker, where each site gets its own container for web and database."
canonical_url: "https://codex.republic.se/development/ddev/installera-ddev"
section: "Pages"
---

# Install DDEV on a Mac

Here is a small guide on how to install DDEV, which is based on Docker, where each site gets its own *container* for web and database.

---

## **Install via [Homebrew](https://brew.sh/index_en)**

Install **Docker Desktop** (if you don't already have it):

```shell
brew install docker --cask

```

Start the ***Docker Desktop*** application in Applications.

Install **DDEV:**

```shell
brew install drud/ddev/ddev

```

Install **local certificates** (once):

```shell
mkcert -install

```

To **upgrade ddev**, run:

```shell
brew upgrade ddev

```

---

## Add a site that is already configured (a) or add a new one (b).

### 1a.) Add an already configured site

If someone else has already created a `.ddev` directory in the project, it's enough to go to the directory with the repo (e.g., `cd ~/Sites/rclient-site`) and run:

```shell
ddev start

```

### 1b.) Add a new site in DDEV

If it's the first time adding a project to DDEV, you need to run `ddev config`. Go to the directory in the terminal (e.g., `cd ~/Sites/client-site`) and run:

```shell
ddev config

```

Answer the questions and let DDEV do its thing.

### 2.) Import a database

Once the server is up and all containers are created, you can import a database with:

```shell
ddev import-db

```

### 3.) New settings

Finally, make sure to change `.env` and `scripts/.env.sh` with the new settings. Information about DDEV can be obtained with:

```shell
ddev describe

```

---

## Edit settings (e.g., PHP version, subdomains, etc.)

Edit the file `~/Sites/client-site/.ddev/config.yaml` and save.

Apply the new configuration with:

```shell
ddev stop
ddev start

```

or

```shell
ddev restart

```

---

## SSH

You can SSH into the local environment with the following command:

```shell
ddev ssh

```

To share local SSH keys with DDEV:

```shell
ddev auth ssh

```

---

## Composer auth

To share your auth.json from .composer on your local computer with all DDEV containers, you can run the following command:

```shell
mkdir -p ~/.ddev/homeadditions/.composer && ln -s ~/.composer/auth.json ~/.ddev/homeadditions/.composer/auth.json

```

---

## Database

To access the database in **TablePlus**, you need to connect to **127.0.0.1** and the **port** that the container has. Each site has its own container with its database manager.

In Craft’s `.env`, use Docker's domain, for example **ddev-client-site-db**, and not localhost.

To import a database, run `ddev import-db` and follow the steps there to choose which file (.sql/.gz) you want to import to your database. The database is named **db** by default (but you can also create other databases in each database container).

If you want to import data into a database other than the **db** database, you can run the following command: `ddev import-db --target-db <some_database>`.

### .env

```shell
DB_DRIVER="mysql"
DB_SERVER="ddev-republic-db"
DB_USER="db"
DB_PASSWORD="db"
DB_DATABASE="db"
DB_SCHEMA="public"
DB_TABLE_PREFIX=""
DB_PORT="3306"

```

### scripts/.env.sh

```shell
# Local database constants;
LOCAL_DB_NAME="db"
LOCAL_DB_USER="db"
LOCAL_DB_PASSWORD="db"
LOCAL_DB_HOST="ddev-republic-db"
LOCAL_DB_PORT="3306"
LOCAL_DB_SCHEMA="public"

```

### Open the database in TablePlus from the terminal

DDEV has built-in support for opening TablePlus directly from the terminal via `ddev tableplus`. Since we run TablePlus via Setapp, we need to create a symlink from /Applications.

```shell
cd /Applications
ln -s /Applications/Setapp/TablePlus.app TablePlus.app

```

Then you can open the database in TablePlus via:

```shell
cd ~/Sites/maurten
ddev tableplus

```

---

## Craft

You can access the Craft command via `ddev craft`.

---

## Shut down DDEV

Generally, `ddev restart`, `ddev stop`, and `ddev start` are sufficient to manage DDEV.

To shut down all containers at once, you can run `ddev poweroff`. If you run that command, you will need to share your SSH keys with DDEV the next time you start a container.
