Module 3 · Lesson 7 of 26

Installing Docker and Mailcow

Part of Mailcow: Self-Hosted Mail Server Mastery — Installation & First-Run Configuration.

Step 1 — Install Docker Engine (NOT Docker Desktop):

curl -sSL https://get.docker.com | sh

This pulls Docker CE plus the compose plugin (docker compose, no hyphen).

Step 2 — Clone Mailcow:

cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

/opt/mailcow-dockerized is the documented home. Stick to it — every doc, support thread, and update script assumes this path.

Step 3 — Generate config:

./generate_config.sh

You'll be asked for MAILCOW_HOSTNAME — this MUST be a real DNS A record (e.g. mail.example.com) and MUST be a subdomain, not the bare domain.

Step 4 — Pull and start:

docker compose pull
docker compose up -d

First run takes 5–10 minutes while images download and DBs initialize. Tail logs with docker compose logs -f to spot issues early.

Sign in to keep track of what you have read.

Pulse · self-hosted sending

Own the infrastructure your pipeline depends on.

One install script on your own server. Pulse sets up the MTA, mailboxes, certificates and dashboard; you add domains and start sending.

# on a fresh Ubuntu server
$ cd pulse && sudo ./install.sh
→ docker compose up · kumomta · stalwart · caddy
→ dashboard ready on https://pulse.yourdomain.com
$

Also from us:Beat — monitoring that tells you the fixConsulting — $65/hr, no retainer