You need Docker and Docker Compose.

1. Learn how to install Docker and Docker Compose.

Quick installation for most operation systems:

  • Docker

    curl -sSL | CHANNEL=stable sh

  • Docker-Compose

    curl -L$(curl -Ls$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

Please use the latest Docker engine available and do not use the engine that ships with your distros repository.

2. Clone the master branch of the repository

git clone && cd mailcow-dockerized

3. Generate a configuration file. Use a FQDN (host.domain.tld) as hostname when asked.


4. Change configuration if you want or need to.

nano mailcow.conf
If you plan to use a reverse proxy, you can, for example, bind HTTPS to on port 8443 and HTTP to on port 8080.

You may need to stop an existing pre-installed MTA which blocks port 25/tcp. See this chapter to learn how to reconfigure Postfix to run besides mailcow after a successful installation.

4.1. OpenStack users and users with a MTU not equal to 1500:

Edit docker-compose.yml and change the network settings according to your MTU. Add the new driver_opts parameter like this:

    driver_opts: 1450

5. Pull the images and run the composer file. The parameter -d will start mailcow: dockerized detached:

docker-compose pull
docker-compose up -d


You can now access https://${MAILCOW_HOSTNAME} with the default credentials admin + password moohoo.

The database will be initialized right after a connection to MySQL can be established.