#!/bin/bash # Mailcow install script # Run on the Mailcow VM (10.48.200.82) after first SSH login: # ssh ubuntu@10.48.200.82 # bash <(curl -s https://raw.githubusercontent.com/myronblair/ProxMailcow/main/mailcow/install.sh) set -euo pipefail MAILCOW_HOSTNAME="mail.web.orbishosting.com" MAILCOW_TZ="America/New_York" MAILCOW_DIR="/opt/mailcow-dockerized" echo "=== Installing Docker ===" curl -fsSL https://get.docker.com | sh usermod -aG docker ubuntu systemctl enable docker echo "=== Cloning Mailcow ===" git clone https://github.com/mailcow/mailcow-dockerized "$MAILCOW_DIR" cd "$MAILCOW_DIR" echo "=== Generating Mailcow config ===" MAILCOW_HOSTNAME="$MAILCOW_HOSTNAME" \ MAILCOW_TZ="$MAILCOW_TZ" \ ./generate_config.sh echo "=== Applying reverse proxy settings ===" # Run behind Nginx Proxy Manager: # HTTP on port 8080 (NPM proxies this) # HTTPS only on localhost (NPM handles external SSL) sed -i 's/^HTTP_PORT=.*/HTTP_PORT=8080/' mailcow.conf sed -i 's/^HTTP_BIND=.*/HTTP_BIND=0.0.0.0/' mailcow.conf sed -i 's/^HTTPS_PORT=.*/HTTPS_PORT=8443/' mailcow.conf sed -i 's/^HTTPS_BIND=.*/HTTPS_BIND=127.0.0.1/' mailcow.conf echo "=== Pulling Docker images (this takes 5-10 min) ===" docker compose pull echo "=== Starting Mailcow ===" docker compose up -d echo "=== Creating systemd service ===" cat > /etc/systemd/system/mailcow.service << 'SERVICE' [Unit] Description=Mailcow Email Server After=docker.service Requires=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/opt/mailcow-dockerized ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target SERVICE systemctl daemon-reload systemctl enable mailcow.service echo "" echo "=== MAILCOW INSTALL COMPLETE ===" echo "Internal web UI: http://10.48.200.82:8080" echo "Public URL (after NPM + FortiGate): https://mail.web.orbishosting.com" echo "Default admin: admin / moohoo — CHANGE IMMEDIATELY" echo "" echo "Container status:" cd "$MAILCOW_DIR" && docker compose ps echo "" echo "Next steps:" echo " 1. Configure NPM proxy host (see nginx-proxy-manager/npm-proxy-setup.md)" echo " 2. Apply FortiGate changes (see docs/fortigate-changes.md)" echo " 3. Configure DNS (see docs/dns-records.md)" echo " 4. Add domain and mailboxes (see mailcow/post-install.md)"