[{"data":1,"prerenderedAt":161},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-mautic-on-a-vps-open-source-marketing-automation-ma-en":6,"promo-bar-likely":151},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-self-host-mautic-on-a-vps-open-source-marketing-automation-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":95,"ctaBody":96,"ctaButton":97,"ctaUrl":98,"relatedPosts":99},249,"self-host-mautic-on-a-vps-open-source-marketing-automation",{"fr":12,"en":10,"ar":13,"es":14},"self-host-mautic-vps","استضافة-mautic-على-vps-أتمتة-التسويق-مفتوحة-المصدر","alojar-mautic-en-un-vps-automatizacion-marketing","Self-host Mautic on a VPS: open-source marketing automation","Self-host Mautic on your VPS: replace Mailchimp or HubSpot with a GPL platform — email campaigns, lead scoring, segmentation, no per-contact fees.",11,1,false,"2026-01-17T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-mautic-vps-poster.svg",{"categorySlug":34,"appSlug":35},"automation-workflows","mautic","Mautic is the leading open-source marketing automation platform: email campaigns, lead scoring, behavioural segmentation, landing pages, forms and CRM integrations. Self-hosted on a VPS, it delivers the features of HubSpot or ActiveCampaign at the cost of the server — no per-contact fees, no list limits, no price escalation tied to your success. Important: Mautic 5.2 LTS reached end of security support on 30 June 2026. The current active release is Mautic 7.2.1 \"Absolunto Edition\".",[38,42,52,55,58,80,83,86,89,92],{"type":39,"title":40,"body":41},"h2","Why self-host Mautic instead of paying for a marketing SaaS","Marketing SaaS prices the one thing you cannot control: the size of your list. Mailchimp bills by contact tier, and each tier also caps how much you may send — 10× your contact count on Essentials, 12× on Standard, 15× on Premium. Grow the list and both the invoice and the ceiling move against you. Brevo and ActiveCampaign price on the same axis.\n\nMautic removes that axis. You pay for the server and nothing else, and the bill is identical whether the database holds 5,000 contacts or 500,000: the entry ServOrbit VPS tier (2 vCPU, 4 GB RAM, 50 GB SSD, starting from our entry-level plans) carries a Mautic stack comfortably. Your data stays on your own infrastructure, where no SaaS host mines it for its own purposes.\n\nThe platform is published under the GPL-3.0. Its fiscal host is the Open Source Collective — which holds the MAUTIC trademark and domains on behalf of the project — and it is governed by an elected Mautic Council. There is no free-versus-paid edition to work around: Mautic is not a feature-gated build of a commercial product.",{"type":43,"title":44,"items":45},"ul","What you get with self-hosted Mautic",[46,47,48,49,50,51],"Visual campaign builder — conditional branches, time delays and event triggers.","Lead scoring — points awarded for opens, clicks, page visits and form submissions.","Dynamic segmentation — filters on any contact attribute, refreshed in real time.","Landing pages and forms — hosted on your own domain, with no external dependency.","Full REST API — integrate your apps, CRM and tools through webhooks.","GPL-3.0 licence — no contact cap, no per-email fee, no proprietary retention clause.",{"type":39,"title":53,"body":54},"⚠ Mautic 5.2 LTS end of life — upgrade to Mautic 7","**Mautic 5.2 LTS reached end of security support on 30 June 2026.** No further security patches will be issued for the 5.2.x branch. Instances still running on that line are exposed.\n\nThe current active release is **Mautic 7.2.1 \"Absolunto Edition\"** (Mautic 7 carries a four-year active support cycle, through approximately 2030). Mautic 6 was a short-cycle intermediate release and is itself now past end of life.\n\n**Migration path.** A direct upgrade from 5.2 to 7.x is not supported. The official path is **sequential**:\n1. Mautic 5.2 → Mautic 6.x (latest stable 6.x minor)\n2. Mautic 6.x → Mautic 7.x\n\nBefore any migration: back up the full `mautic_data` and `mautic_db` volumes. Test on a staging environment. Verify third-party plugin compatibility with Mautic 7.",{"type":39,"title":56,"body":57},"Mautic 7 Docker architecture: same multi-role model, updated image","Mautic 7.x retains the multi-role model introduced in version 5: the same Docker image is instantiated three times under different `DOCKER_MAUTIC_ROLE` values:\n\n- `mautic_web`: the Apache front end — it serves the installation wizard first, then the dashboard\n- `mautic_cron`: runs the scheduled commands (segment rebuilds, campaign triggers, queued sends, cleanup, statistics)\n- `mautic_worker`: consumes the asynchronous message queue (tracking hits, webhooks, notifications)\n\nA fourth container, MySQL 8.0, stores contacts, campaigns and events. The three Mautic containers share one volume (`mautic_data:\u002Fvar\u002Fwww\u002Fhtml`) so the configuration written by the wizard is immediately visible to the cron and worker roles.\n\nThe cron role is the one people underestimate. Mautic sends nothing from the web request itself: a published campaign only fires because `mautic:campaigns:trigger` and `mautic:emails:send` run on a schedule. Stop that container and the interface still shows the campaign as published while nothing leaves the server.\n\nMautic 7 requires PHP 8.1 or higher and MySQL 8.0 \u002F MariaDB 10.4 minimum. The `ONLY_FULL_GROUP_BY` report fix (issue #17092) is included since Mautic 7.2.0 — no workaround needed if you are on 7.2.1 or later.",{"type":59,"title":60,"steps":61},"steps","Installing Mautic on your ServOrbit VPS",[62,65,68,71,74,77],{"title":63,"body":64},"Deploy from the Marketplace","In your ServOrbit client area, open Marketplace → Automation & Workflows → Mautic and click Deploy. The AWX playbook provisions Ubuntu 24.04, installs Docker, generates the MySQL password, starts the four containers and configures nginx as a reverse proxy for your domain. The Apache container is bound to the loopback interface only — it is never exposed directly to the internet.",{"title":66,"body":67},"Complete the Mautic installation wizard","Open your domain in a browser. Mautic redirects to the `\u002Fs\u002Fsetup` wizard. Enter the site URL, check the database connection (already pre-filled from the compose environment), create your administrator account and confirm. Get the site URL right on the first pass: tracking pixels, landing pages and unsubscribe links are all built from it.",{"title":69,"body":70},"Configure your SMTP relay","Go to Settings → Email Settings and choose your SMTP provider: Amazon SES, Mailgun, Brevo (free tier of 300 emails per day) or Postmark. Two things to know about SES before you build a budget. First, its headline rate is $0.10 per 1,000 emails — not \"under $0.10\" — and it is billed PER RECIPIENT, not per message: a send to 100 recipients counts as 100 emails. Second, that rate belongs to the à-la-carte tier: a new SES account starts on Essentials at $0.16 per 1,000. Then click Test email and confirm delivery before you touch a campaign.",{"title":72,"body":73},"Configure SPF, DKIM and DMARC","Before your first send, add the three DNS records for your sending domain. SPF declares which servers may send on your behalf: add a TXT record `v=spf1 include:\u003Cyour-relay.example> -all`. DKIM signs each message cryptographically: generate a key pair in your SMTP relay, publish the public key as a TXT record under `default._domainkey.yourdomain.com`, and enable signing in Mautic (Settings → Email Settings → DKIM). DMARC ties the two together: start with `v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com` to collect reports, then progressively move to `p=quarantine` and `p=reject`. Without aligned SPF, DKIM and DMARC, Gmail and Outlook reject campaigns above 5,000 sends per day.",{"title":75,"body":76},"Create a segment and import your contacts","Under Segments → New Segment, define your filter criteria. Under Contacts → Import, upload your CSV and map the Email, First name and Last name columns onto Mautic fields. Enable double opt-in if your audience is based in the EU or in Morocco.",{"title":78,"body":79},"Build and publish your first campaign","Under Campaigns → New Campaign, drag a source (your segment) onto the canvas, add a Send email action, set a 24-hour delay, then add a conditional follow-up email. Publish, and let the worker and cron containers drain the send queue in the background.",{"type":81,"body":82},"tip","SPF, DKIM and DMARC are not optional before your first send. Without them your campaigns land in spam at Gmail and Outlook — a problem the SMTP relay alone does not solve. Our [SPF\u002FDKIM\u002FDMARC guide](\u002Fblog\u002Fspf-dkim-dmarc-delivrabilite-emails-pro) walks through the DNS configuration step by step.",{"type":39,"title":84,"body":85},"Use case: replacing Mailchimp for an SMB","A marketing agency running lists for 15 clients — 80,000 contacts in total — was invoiced 620 €\u002Fmonth by Mailchimp. Moving to self-hosted Mautic on a 4 GB RAM VPS replaced that invoice with the cost of a single entry-tier server, taking well over 7,000 € a year off the budget.\n\nThe migration took two days: CSV export from Mailchimp, import into Mautic, then rebuilding the automations in the campaign builder. The HTML email templates were imported from Mailchimp unchanged. Deliverability came out comparable because Mailgun was kept as the SMTP relay — sending reputation follows the relay, not the platform sitting in front of it.\n\nOne thing a CSV export does not carry is engagement history. Opens, clicks and page visits stay behind in Mailchimp, so every imported contact arrives in Mautic with a score of zero, and any segment built on past behaviour has to be re-earned from the first campaign onward. Plan that first send as a re-engagement wave rather than a like-for-like resume.",{"type":39,"title":87,"body":88},"Performance: workers, queues and scheduled commands","By default the `mautic_worker` container runs a single consumer process. For volumes above 20,000 sends per day, increase the worker count via the `MAUTIC_MESSENGER_CONSUMER_LIMIT` environment variable and adjust `MAUTIC_MESSENGER_WORKER_SLEEP` to reduce idle delay.\n\nCritical cron commands and recommended frequency:\n\n- `mautic:segments:update` — every 5 minutes (rebuilds dynamic segments)\n- `mautic:campaigns:trigger` — every 5 minutes (fires campaign events)\n- `mautic:emails:send` — every 5 minutes (drains the send queue)\n- `mautic:emails:fetch` — every 10 minutes (processes IMAP bounces)\n- `mautic:import` — every 5 minutes (resumes pending imports)\n- `mautic:dnc:import` — daily (syncs unsubscribe lists)\n\nIf the `mautic_cron` container is not running these commands, published campaigns will not send. Check with: `docker logs mautic_cron --tail 50`.",{"type":39,"title":90,"body":91},"Troubleshooting: common errors","**Emails not sending — campaign stuck.** First cause: the `mautic_cron` container is not running or not executing `mautic:emails:send`. Check with `docker ps` that the container is `Up`, then `docker logs mautic_cron --tail 100` to review recent executions. Second cause: the SMTP relay is misconfigured or failing silently. Go to Settings → Email Settings → Test email and read the returned error.\n\n**HTTP 500 on reports.** If you are still on Mautic 5.2 with MySQL 8.0, the `ONLY_FULL_GROUP_BY` mode causes SQL 1055 errors on grouped reports. See the dedicated section below. On Mautic 7.2.0+, this is resolved natively.\n\n**Tracking pixels not counted.** Verify that the site URL in Mautic matches exactly the served domain (https, not http; no trailing slash). The tracking pixel is built from this URL — a mismatch blocks tracking returns.\n\n**CSV import stuck.** The CSV file must be UTF-8 encoded, without BOM. For large imports (> 10,000 rows), Mautic processes in batches via `mautic:import` — verify the cron is running.\n\n**Forms not submitting.** Check the CORS policy if the form is embedded on a different domain. Mautic 7 requires allowed domains to be listed under Settings → Configuration → CORS.",{"type":39,"title":93,"body":94},"MySQL 8 compatibility: HTTP 500 on reports and ONLY_FULL_GROUP_BY mode","**Note: this issue is fixed in Mautic 7.2.0+.** If you have migrated, you can skip this section. For instances still on Mautic 5.2.x:\n\nSome Mautic reports return HTTP 500 the moment you open them — typically a Page hits report that groups by URL and title and adds a COUNT column. The symptom is quiet: a blank report page, nothing in Mautic's application log, no explicit error anywhere in the interface.\n\n**Diagnosis.** The `ONLY_FULL_GROUP_BY` SQL mode rejects SELECT queries whose non-aggregated columns are missing from the GROUP BY clause. MySQL answers with error 1055. Check the server with:\n\n```sql\nSHOW GLOBAL VARIABLES LIKE 'sql_mode';\n```\n\n**Workaround A — persist the change.** `SET PERSIST sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''))` writes to `mysqld-auto.cnf` in the data directory (the `mautic_db` volume) and survives container restarts. Alternatively, add `command: --sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES` to the `db` service in the compose file.\n\n**Workaround B — run MariaDB instead.** MariaDB does not enable `ONLY_FULL_GROUP_BY` by default, and Mautic 5 supports MariaDB 10.2 and above. Swapping the engine requires a full database dump and reload.","Deploy Mautic on your ServOrbit VPS","With a ServOrbit Cloud VPS, your Mautic instance is up in minutes: pre-configured Docker, nginx reverse proxy, automatic SSL and MySQL 8.0. No per-contact fees, no sending limits — you only pay for the server.","Deploy Mautic on my VPS","\u002Fapplications\u002Fautomation-workflows\u002Fmautic",[100,118,141],{"id":101,"slug":102,"slugs":103,"title":107,"excerpt":108,"readTime":23,"views":109,"isPinned":19,"noindex":19,"publishedAt":110,"updatedAt":111,"category":112,"categories":113,"featuredImage":30,"bgImage":31,"posterImage":115,"relatedSolution":116},87,"host-listmonk-on-your-own-vps",{"fr":104,"en":102,"ar":105,"es":106},"heberger-listmonk","استضافة-listmonk-على-خادمك-الافتراضي-الخاص-vps","alojar-listmonk-en-un-vps","Host Listmonk on Your Own VPS","Deploy Listmonk on your VPS: Docker installation, advanced SMTP configuration, bounce management, updates, common troubleshooting and PostgreSQL backups.",0,"2026-03-25T00:00:00+00:00","2026-09-20T21:13:53+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[114],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-listmonk-poster.svg",{"categorySlug":25,"appSlug":117},"listmonk",{"id":119,"slug":120,"slugs":121,"title":125,"excerpt":126,"readTime":127,"views":128,"isPinned":19,"noindex":19,"publishedAt":129,"updatedAt":130,"category":131,"categories":136,"featuredImage":30,"bgImage":31,"posterImage":138,"relatedSolution":139},93,"n8n-vs-node-red-which-self-hosted-automation-tool-to-choose",{"fr":122,"en":120,"ar":123,"es":124},"n8n-vs-node-red","n8n-مقابل-node-red-أي-أداة-أتمتة-مستضافة-ذاتيا-تختار","n8n-vs-node-red-que-automatizacion-self-hosted-elegir","n8n vs Node-RED: which self-hosted automation tool to choose?","n8n or Node-RED for your VPS workflows? Complete technical comparison: license, server resources, IoT vs SaaS use cases, migration steps, and Docker deployment.",9,3,"2026-03-19T00:00:00+00:00","2026-11-08T01:13:15+00:00",{"id":132,"name":133,"slug":134,"color":135,"icon":134},5,"Comparison","comparatif","bg-info\u002F10 text-info",[137],{"id":132,"name":133,"slug":134,"color":135,"icon":134},"\u002Fblog\u002Fcovers\u002Fn8n-vs-node-red-poster.svg",{"categorySlug":34,"appSlug":140},"n8n",{"id":142,"slug":143,"slugs":144,"title":148,"excerpt":149,"readTime":150,"views":109,"isPinned":19,"noindex":151,"publishedAt":152,"updatedAt":153,"category":154,"categories":158,"featuredImage":30,"bgImage":31,"posterImage":160,"relatedSolution":30},199,"spf-dkim-dmarc-passing-the-5000-email-threshold",{"fr":145,"en":143,"ar":146,"es":147},"spf-dkim-dmarc-delivrabilite-emails-pro","spf-وdkim-وdmarc-تجاوز-عتبة-5000-رسالة","spf-dkim-dmarc-superar-el-umbral-de-5000-correos","SPF, DKIM, DMARC: passing the 5,000-email threshold","Gmail and Outlook reject senders without aligned SPF, DKIM and DMARC with an SMTP 550 error. Here is how to configure all three records.",4,true,"2026-08-01T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":155,"slug":156,"color":157,"icon":156},"Business Email","emails","bg-cyan-500\u002F10 text-cyan-400",[159],{"id":17,"name":155,"slug":156,"color":157,"icon":156},"\u002Fblog\u002Fcovers\u002Fspf-dkim-dmarc-delivrabilite-emails-pro-poster.svg",1794270491043]