[PR #1014] [MERGED] feat: add MailCatcher NG template #16322

Closed
opened 2026-07-14 23:19:14 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Dokploy/templates/pull/1014
Author: @Siumauricio
Created: 7/14/2026
Status: Merged
Merged: 7/14/2026
Merged by: @Siumauricio

Base: canaryHead: feat/mailcatcher-ng


📝 Commits (1)

  • b7c2d6c feat: add MailCatcher NG template

📊 Changes

4 files changed (+67 additions, -0 deletions)

View changed files

blueprints/mailcatcher-ng/docker-compose.yml (+27 -0)
blueprints/mailcatcher-ng/mailcatcher-ng.svg (+10 -0)
blueprints/mailcatcher-ng/meta.json (+17 -0)
blueprints/mailcatcher-ng/template.toml (+13 -0)

📄 Description

What

Adds a template for MailCatcher NG (spaquet/mailcatcher), a lightweight SMTP catcher for development: it runs a simple SMTP server that captures every message sent to it and displays them in a web UI.

Closes #747

Decisions

  • Image: stpaquet/alpinemailcatcher (the official Docker image from spaquet/docker-alpine-mailcatcher, v2.3.9, MailCatcher NG 1.6.8, Alpine 3.24.1). The registry only publishes a latest tag, so the image is pinned by digest (sha256:499c0e...) for reproducible deploys.
  • SMTP port 1025 is internal only (expose, not published on the host): other apps in the same Dokploy project send mail to mailcatcher-ng:1025; the web UI (1080) is routed through the template domain.
  • Persistence enabled: the default image CMD keeps mail in memory only, so the template overrides the command with the image's own documented --persistence flag and mounts a named volume at /home/mailcatcher/.mailcatcher, so captured mail survives restarts/redeploys.
  • MAIL_LIMIT=50 exposed as an env var (image default) to cap stored messages.
  • Healthcheck via busybox wget --spider on the UI port.
  • Logo: official SVG from the upstream repo (website_src/public/favicon.svg).

Deploy test (demo instance)

Deployed on a Dokploy instance from this exact blueprint:

deploy: done (10s)
✅ mailcatcher-ng:1080 → HTTP 200 «MailCatcher NG»

node build-scripts/generate-meta.js --check passes (477 templates validated).

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Dokploy/templates/pull/1014 **Author:** [@Siumauricio](https://github.com/Siumauricio) **Created:** 7/14/2026 **Status:** ✅ Merged **Merged:** 7/14/2026 **Merged by:** [@Siumauricio](https://github.com/Siumauricio) **Base:** `canary` ← **Head:** `feat/mailcatcher-ng` --- ### 📝 Commits (1) - [`b7c2d6c`](https://github.com/Dokploy/templates/commit/b7c2d6c35d73e943a737eb3fe22e587474a353ee) feat: add MailCatcher NG template ### 📊 Changes **4 files changed** (+67 additions, -0 deletions) <details> <summary>View changed files</summary> ➕ `blueprints/mailcatcher-ng/docker-compose.yml` (+27 -0) ➕ `blueprints/mailcatcher-ng/mailcatcher-ng.svg` (+10 -0) ➕ `blueprints/mailcatcher-ng/meta.json` (+17 -0) ➕ `blueprints/mailcatcher-ng/template.toml` (+13 -0) </details> ### 📄 Description ## What Adds a template for **MailCatcher NG** ([spaquet/mailcatcher](https://github.com/spaquet/mailcatcher)), a lightweight SMTP catcher for development: it runs a simple SMTP server that captures every message sent to it and displays them in a web UI. Closes #747 ## Decisions - **Image**: `stpaquet/alpinemailcatcher` (the official Docker image from [spaquet/docker-alpine-mailcatcher](https://github.com/spaquet/docker-alpine-mailcatcher), v2.3.9, MailCatcher NG 1.6.8, Alpine 3.24.1). The registry only publishes a `latest` tag, so the image is **pinned by digest** (`sha256:499c0e...`) for reproducible deploys. - **SMTP port 1025 is internal only** (`expose`, not published on the host): other apps in the same Dokploy project send mail to `mailcatcher-ng:1025`; the web UI (1080) is routed through the template domain. - **Persistence enabled**: the default image CMD keeps mail in memory only, so the template overrides the command with the image's own documented `--persistence` flag and mounts a named volume at `/home/mailcatcher/.mailcatcher`, so captured mail survives restarts/redeploys. - `MAIL_LIMIT=50` exposed as an env var (image default) to cap stored messages. - Healthcheck via busybox `wget --spider` on the UI port. - Logo: official SVG from the upstream repo (`website_src/public/favicon.svg`). ## Deploy test (demo instance) Deployed on a Dokploy instance from this exact blueprint: ``` deploy: done (10s) ✅ mailcatcher-ng:1080 → HTTP 200 «MailCatcher NG» ``` `node build-scripts/generate-meta.js --check` passes (477 templates validated). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-07-14 23:19:14 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/templates#16322