diff --git a/mautic/app.yaml b/mautic/app.yaml new file mode 100644 index 0000000..51c4c06 --- /dev/null +++ b/mautic/app.yaml @@ -0,0 +1,5 @@ +name: mautic +is: mautic +description: Mautic is an open-source marketing automation platform for managing email campaigns, lead tracking, and multi-channel marketing. +icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mautic.svg +latest: "7" diff --git a/mautic/versions/7/README.md b/mautic/versions/7/README.md new file mode 100644 index 0000000..08209da --- /dev/null +++ b/mautic/versions/7/README.md @@ -0,0 +1,38 @@ +# Mautic + +Mautic is an open-source marketing automation platform for managing contacts, campaigns, emails, and landing pages. + +## Dependencies + +- **MySQL** - Database for storing contacts and campaign data +- **SMTP** - For sending marketing emails and notifications + +## Configuration + +Key settings in `config.yaml`: + +- **domain** - Where Mautic will be accessible +- **storage** - Persistent volume size (default: `2Gi`) +- **adminEmail** - Admin account email (defaults to your operator email) +- **db.name** - Database name (default: `mautic`) +- **smtp** - Email settings inherited from your Wild Cloud SMTP service + +## First-Time Setup + +1. Add and deploy the app: + ```bash + wild app add mautic + wild app deploy mautic + ``` + +2. Log in with: + - **Email**: value of `adminEmail` in your config + - **Password**: value of `adminPassword` in your `secrets.yaml` + +3. Complete the onboarding wizard and configure your first email campaigns. + +## Notes + +- Mautic relies heavily on cron jobs for sending emails and processing campaigns — these are configured automatically in the deployment +- The `siteUrl` config must match the actual URL the app is served at, or tracking pixels and links in emails will break +- SMTP password is stored in `secrets.yaml` as `smtpPassword` diff --git a/mautic/versions/7/db-init-job.yaml b/mautic/versions/7/db-init-job.yaml new file mode 100644 index 0000000..8e8b133 --- /dev/null +++ b/mautic/versions/7/db-init-job.yaml @@ -0,0 +1,65 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: mautic-db-init + labels: + component: db-init +spec: + backoffLimit: 10 + template: + metadata: + labels: + component: db-init + spec: + restartPolicy: OnFailure + securityContext: + runAsNonRoot: true + runAsUser: 999 + runAsGroup: 999 + seccompProfile: + type: RuntimeDefault + containers: + - name: mysql-init + image: mysql:9.1.0 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mautic-secrets + key: mysql.rootPassword + - name: DB_HOSTNAME + value: {{ .db.host }} + - name: DB_PORT + value: "{{ .db.port }}" + - name: DB_DATABASE_NAME + value: {{ .db.name }} + - name: DB_USERNAME + value: {{ .db.user }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: mautic-secrets + key: dbPassword + command: + - /bin/bash + - -c + - | + set -e + until mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} -e "SELECT 1" 2>/dev/null; do + echo "Waiting for MySQL..." + sleep 2 + done + mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} <