This directory contains everything needed to create a DigitalOcean Marketplace image for Parse DMARC.
If a Marketplace image is available, deploy directly from the DigitalOcean Marketplace.
- Packer v1.8+
- A DigitalOcean account with API token
- At least one SSH key in your DigitalOcean account
# Set your DigitalOcean API token
export DIGITALOCEAN_TOKEN="your-api-token"
# Initialize Packer plugins
packer init packer.pkr.hcl
# Validate the template
packer validate packer.pkr.hcl
# Build the image
packer build packer.pkr.hcl# Build with a specific version
packer build -var 'parse_dmarc_version=v1.2.0' packer.pkr.hcl
# Build with custom image name
packer build -var 'image_name=parse-dmarc-custom' packer.pkr.hcl
# Build in a specific region
packer build -var 'droplet_region=fra1' packer.pkr.hclThe image includes:
- Parse DMARC - Latest version from GitHub releases
- Ubuntu 24.04 LTS - Base operating system
- UFW Firewall - Pre-configured (SSH + port 8080)
- Fail2ban - SSH brute-force protection
- Automatic Security Updates - Unattended upgrades enabled
- Systemd Service - Parse DMARC runs as a service
deploy/digitalocean/
βββ README.md # This file
βββ packer.pkr.hcl # Packer template
βββ marketplace.yaml # Marketplace submission metadata
βββ scripts/
βββ 01-system-setup.sh # System packages and security
βββ 02-install-parse-dmarc.sh # Parse DMARC installation
βββ 03-configure-services.sh # Systemd and first-boot setup
βββ 90-cleanup.sh # Image cleanup
βββ 99-img-check.sh # Marketplace validation
When a user creates a Droplet from this image:
- They'll see a welcome MOTD with setup instructions
- Configuration file is at
/etc/parse-dmarc/config.json - After editing the config, restart the service:
sudo systemctl restart parse-dmarc
- Dashboard is available at
http://<droplet-ip>:8080
Users can also configure via environment variables in /etc/environment:
| Variable | Description | Default |
|---|---|---|
IMAP_HOST |
IMAP server hostname | (required) |
IMAP_USERNAME |
IMAP login username | (required) |
IMAP_PASSWORD |
IMAP login password | (required) |
IMAP_PORT |
IMAP server port | 993 |
IMAP_MAILBOX |
Mailbox to fetch from | INBOX |
IMAP_USE_TLS |
Use TLS connection | true |
SERVER_PORT |
Dashboard port | 8080 |
# Check status
sudo systemctl status parse-dmarc
# View logs
sudo journalctl -u parse-dmarc -f
# Restart service
sudo systemctl restart parse-dmarc
# Stop service
sudo systemctl stop parse-dmarc- The image follows DigitalOcean Marketplace security guidelines
- UFW firewall is enabled by default
- Fail2ban protects against SSH brute-force attacks
- Automatic security updates are enabled
- Config file permissions are restricted (600)
To submit to DigitalOcean Marketplace:
- Build the image using Packer
- Note the snapshot ID from the build output
- Submit via the Vendor Portal
- Include
marketplace.yamlmetadata
Check if configuration is valid:
cat /etc/parse-dmarc/config.json
sudo journalctl -u parse-dmarc -n 50Check firewall:
sudo ufw status
sudo ufw allow 8080/tcp- Verify IMAP credentials
- For Gmail, use an App Password
- Check if port 993 is not blocked by your network