[{"data":1,"prerenderedAt":161},["ShallowReactive",2],{"seo-verification":3,"blog-upgrade-mattermost-v10-to-v11-lts-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":104,"ctaBody":105,"ctaButton":106,"ctaUrl":107,"relatedPosts":108},284,"upgrade-mattermost-v10-to-v11-lts",{"fr":10,"en":8,"ar":11},"mettre-a-jour-mattermost-v10-v11-lts","تحديث-mattermost-من-v10-إلى-v11-lts","Upgrade Mattermost v10 to v11 LTS","Mattermost ESR v10.11 reached end of life on August 15, 2026. Migrate to v11 LTS without data loss using this step-by-step Docker procedure.",10,0,false,"2026-08-19T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmettre-a-jour-mattermost-v10-v11-lts-poster.svg",{"categorySlug":30,"appSlug":31},"collaboration-productivity","mattermost","Mattermost ESR v10.11 reached end of life on August 15, 2026: instances that have not been updated no longer receive any security patches. v11 is the current LTS — that is the target. This procedure covers PostgreSQL backup, Docker update and post-migration verification, preserving your full message history and plugins.",[34,38,48,51,91,95,98,101],{"type":35,"title":36,"body":37},"h2","Why update now","Mattermost publishes ESR (Extended Support Release) versions with an extended lifetime, then declares their end of life on a pre-announced date. **ESR v10.11 reached end of life on August 15, 2026.** From that date, no security patches are backported to that branch: vulnerabilities discovered after the EOL date remain open on instances that do not migrate.\n\nA team messaging platform receives attachments, credentials shared in DMs, sometimes API keys left in messages. An unpatched instance exposes this data to any unapplied fix. v11 is the current LTS — it is the only version that will receive patches for the coming months.",{"type":39,"title":40,"items":41},"ul","What v11 LTS brings over ESR v10.x",[42,43,44,45,46,47],"**Active security patches** — the branch receives security fixes published by the Mattermost team throughout its support cycle.","**Performance improvements** — optimized PostgreSQL queries and reduced memory consumption under heavy load.","**Reworked video call interface** — improved quality and stability for channel calls.","**Updated plugins** — official plugins (Calls, Boards, Playbooks) have v11-compatible versions published in the plugin manager.","**Database migration fixes** — migrations accumulated since v10 are applied cleanly, improving long-term schema integrity.","**Extended support** — the v11 LTS benefits from a prolonged support window, avoiding another migration in the near future.",{"type":35,"title":49,"body":50},"Prerequisites before you start","Check the following points before launching the procedure.\n\n**Docker Compose v2** — the command must respond to `docker compose version` (with a space, not a hyphen). If you still have `docker-compose` v1, migrate to Compose v2 first: official Mattermost v11 images assume this format.\n\n**Root or sudo access** on the VPS — the following commands act on Docker volumes and configuration files.\n\n**Available disk space** — check with `df -h` that the volume hosting your Docker volumes has at least 3 GB free for dumps and temporary images.\n\n**Sufficient RAM** — Mattermost v11 runs comfortably with 2 GB of RAM for fewer than 50 active users. Check with `free -m` before the update.\n\n**Current version noted** — before any operation, note the installed version: `docker exec \u003Cmattermost-container> mattermost version`. This is step 1 of the procedure.",{"type":52,"title":53,"steps":54},"steps","Step-by-step update procedure",[55,58,61,64,67,70,73,76,79,82,85,88],{"title":56,"body":57},"Note the current version","Before changing anything, record the current version:\n\n```bash\ndocker exec mattermost mattermost version\n```\n\nNote the number (for example `v10.11.2`). This reference lets you compare after the update and confirm that the migration took place.",{"title":59,"body":60},"Back up the PostgreSQL database","This is the most critical step. Run a `pg_dump` from the PostgreSQL container:\n\n```bash\ndocker exec \u003Cpg-container> pg_dump -U mattermost mattermost > backup_mattermost_$(date +%Y%m%d).sql\n```\n\nReplace `\u003Cpg-container>` with your container's actual name (visible with `docker ps`). Verify that the created `.sql` file is not empty (`ls -lh backup_mattermost_*.sql`). Without this backup, any failed DB migration is irreversible.",{"title":62,"body":63},"Back up Docker volumes","Also back up the Mattermost volumes (configuration, data, plugins):\n\n```bash\ntar czf mattermost_volumes_$(date +%Y%m%d).tar.gz \u002Fopt\u002Fmattermost\u002Fconfig \u002Fopt\u002Fmattermost\u002Fdata \u002Fopt\u002Fmattermost\u002Fplugins \u002Fopt\u002Fmattermost\u002Flogs\n```\n\nAdapt the path to your installation (`\u002Fopt\u002Fmattermost` is the standard directory for the official `mattermost-docker` repository). Move the archive off the VPS to external storage before continuing.",{"title":65,"body":66},"Note the active plugins","From **System Console → Plugins → Plugin Management**, list all enabled plugins with their version. Write them down: after the update, you will need to check compatibility for each one.\n\nAlternatively, via the API:\n\n```bash\ncurl -s -H \"Authorization: Bearer \u003Cyour-token>\" https:\u002F\u002Fchat.yourdomain.com\u002Fapi\u002Fv4\u002Fplugins | python3 -m json.tool | grep -E '\"id\"|\"version\"|\"active\"'\n```",{"title":68,"body":69},"Stop Mattermost and PostgreSQL","Stop the stack cleanly before pulling new images:\n\n```bash\ndocker compose down\n```\n\nVerify that no Mattermost container is still running: `docker ps | grep mattermost`.",{"title":71,"body":72},"Pull the new images","From the directory containing your `docker-compose.yml`:\n\n```bash\ndocker compose pull\n```\n\nThis command downloads the new images for all declared services (`mattermost` and `postgres`). If your `docker-compose.yml` pins an explicit version (`mattermost\u002Fmattermost-team-edition:v10.x.x`), update it to `v11` or `latest` (then pin the exact digest for reproducibility).",{"title":74,"body":75},"Restart the stack","Bring all services back up:\n\n```bash\ndocker compose up -d\n```\n\nMattermost starts, detects that the database is at a v10 schema and automatically launches migrations. This step can take from 30 seconds to a few minutes depending on your database size.",{"title":77,"body":78},"Verify database migrations","Follow the logs immediately after startup:\n\n```bash\ndocker compose logs mattermost | grep -i migrat\n```\n\nExpected lines look like `Running migration X.Y` or `Migrating database from version X`. If you see `failed to run migrations` or `error running migration`, stop (`docker compose down`) and restore from the dump before going further.\n\nTo follow in real time: `docker compose logs -f mattermost` — wait for the `Server is listening on` message.",{"title":80,"body":81},"Verify the new version","Confirm that the update is effective:\n\n```bash\ndocker exec mattermost mattermost version\n```\n\nThe output must show a `v11.x.x` number. Log in to the web interface and navigate to **System Console → About → Mattermost Server** to cross-check.",{"title":83,"body":84},"Test critical functionality","Before signing off on the update, manually test the following:\n\n- Log in with a user account\n- Send and receive a message in a public channel\n- Send a direct message\n- Upload an attachment\n- Check the message history predating the update\n- Verify that inbound webhooks work if you have configured any\n\nFull history must remain accessible: that is the first point to check.",{"title":86,"body":87},"Verify plugins","In **System Console → Plugins → Plugin Management**, compare the list against the notes from step 4. For each enabled plugin:\n\n1. Check that it still shows as **active**.\n2. If a plugin is disabled with an incompatibility message, check its repository for a v11-compatible version.\n3. Update from the plugin manager if a new version is available.\n\nOfficial Mattermost plugins (Calls, Boards, Playbooks, Jira, GitHub) are updated alongside the server and available directly in the built-in marketplace — just verify they are at their latest available version.",{"title":89,"body":90},"Clean up old Docker images","Once the update is validated in production, free the space occupied by old images:\n\n```bash\ndocker image prune -f\n```\n\nThis command removes all images not referenced by an active container. It can reclaim several gigabytes if you have kept multiple Mattermost image versions.",{"type":92,"title":93,"body":94},"tip","Always test the update outside production first","If you administer a production instance with many users, reproduce the operation in a test environment first. Restore a copy of your PostgreSQL dump onto a test VPS, run the full procedure, and check the result. This reveals plugin incompatibilities and potential migration errors before they affect your users.",{"type":35,"title":96,"body":97},"Plugin compatibility after the update","v11 introduced changes to the plugin API. The majority of official and active community plugins are compatible, but incompatibilities may appear with older, unmaintained plugins.\n\n**How to check compatibility:** go to **System Console → Plugins → Plugin Management**. An incompatible plugin shows an error status and a message specifying the minimum required version.\n\n**If a plugin is incompatible:**\n\n1. Check the plugin's GitHub repository to see if a v11-compatible version has been published.\n2. If yes, download the `.tar.gz` and install it from **System Console → Plugins → Upload Plugin**.\n3. If not, assess whether the plugin is critical. If it is, report it to the maintainers and keep a copy of v10 (your dump) in the meantime.\n\n**Official Mattermost plugins** (Calls, Boards, Playbooks, Jira, GitHub) are updated at the same time as the server and available directly in the built-in marketplace — just check that they are at their latest available version.",{"type":35,"title":99,"body":100},"Troubleshooting: common errors","`failed to run migrations` in the logs\nThe database migration failed. Common causes: the PostgreSQL container was not started before Mattermost (startup order issue in Compose), or permissions on the database are incorrect. Stop with `docker compose down`, verify that `postgres` starts before `mattermost` (`depends_on` clause in `docker-compose.yml`), then restart. If the error persists, restore the dump and examine the full logs with `docker compose logs mattermost 2>&1 | grep -i error`.\n\n**Plugin marked as incompatible immediately after the update**\nThe plugin is bound to a deprecated API. Disable it from the console (`System Console → Plugins → Plugin Management → Disable`) so Mattermost remains functional, then update the plugin separately.\n\n**SIGTERM during migration (container stopped mid-work)**\nIf the Mattermost container restarts during migration (Docker timeout, SIGTERM), the database may end up in an intermediate state. Sign: `mattermost version` shows a hybrid number or logs show missing column errors. Restore from the PostgreSQL dump and restart, ensuring `MATTERMOST_UPGRADE_TIMEOUT` is set to a sufficient value (at least `600` seconds for large databases).\n\n**Connection issue after restart**\nIf the interface responds but users cannot log in, verify that `MM_SERVICESETTINGS_SITEURL` in `docker-compose.yml` is `https:\u002F\u002F` and matches exactly the URL you are using. A hostname or protocol change during the update invalidates existing session tokens.\n\n**`database schema version mismatch` error**\nMattermost detects a gap between the binary version and the database schema. This occurs if you had pinned a v10 image and a partial previous attempt left the schema in a partially-v11 state. Restore the full v10 dump, then restart the procedure from step 5.",{"type":35,"title":102,"body":103},"After the update: best practices","Once v11 is validated in production, a few settings keep the instance in a controlled state.\n\n**Pin the image version in `docker-compose.yml`** — replace `latest` with the precise tag (`mattermost\u002Fmattermost-team-edition:v11.x.x`). This prevents a future `docker compose pull` from silently pulling a newer version without your decision.\n\n**Schedule PostgreSQL backups** — a cron that runs `pg_dump` every 24 hours and retains the last 7 dumps is the minimum for a production instance.\n\n**Monitor the Mattermost security channel** — subscribe to `https:\u002F\u002Fmattermost.com\u002Fsecurity-updates\u002F` to receive CVE announcements. The next EOL for the v11 LTS will be announced several months in advance.\n\n**For further reading**, see the initial installation guide in the article [Host Mattermost on your own VPS](\u002Fblog\u002Fheberger-mattermost) and the case for leaving Slack in [Migrate from Slack to Mattermost or Rocket.Chat on VPS](\u002Fblog\u002Fmigration-slack-mattermost-rocketchat-vps).","Host Mattermost on your own infrastructure","A ServOrbit Cloud VPS with Docker preconfigured gives you the foundation to deploy and maintain Mattermost without depending on a SaaS provider. Your messages and history stay on your infrastructure.","Deploy Mattermost on VPS","\u002Fvps-cloud",[109,127,143],{"id":110,"slug":111,"slugs":112,"title":115,"excerpt":116,"readTime":14,"views":15,"isPinned":16,"publishedAt":117,"category":118,"categories":123,"featuredImage":26,"bgImage":27,"posterImage":125,"relatedSolution":126},262,"migrating-from-slack-to-mattermost-or-rocketchat-on-a-vps",{"fr":113,"en":111,"ar":114},"migration-slack-mattermost-rocketchat-vps","الهجرة-من-slack-إلى-mattermost-أو-rocketchat-على-vps","Migrating from Slack to Mattermost or Rocket.Chat on a VPS","Slack locks history and SSO behind enterprise pricing. Host Mattermost or Rocket.Chat on your VPS: step-by-step migration with Slack history import.","2026-08-14T00:00:00+00:00",{"id":119,"name":120,"slug":121,"color":122,"icon":121},5,"Comparison","comparatif","bg-info\u002F10 text-info",[124],{"id":119,"name":120,"slug":121,"color":122,"icon":121},"\u002Fblog\u002Fcovers\u002Fmigration-slack-mattermost-rocketchat-vps-poster.svg",{"categorySlug":30,"appSlug":31},{"id":128,"slug":129,"slugs":130,"title":133,"excerpt":134,"readTime":135,"views":136,"isPinned":16,"publishedAt":137,"category":138,"categories":139,"featuredImage":26,"bgImage":27,"posterImage":141,"relatedSolution":142},76,"host-mattermost-on-your-own-vps",{"fr":131,"en":129,"ar":132},"heberger-mattermost","استضافة-mattermost-على-خادم-vps-الخاص-بك","Host Mattermost on your own VPS","Deploy Mattermost on your VPS with Docker, PostgreSQL and SSL. A private team messaging platform, the self-hosted alternative to Slack.",4,1,"2026-04-05T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[140],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-mattermost-poster.svg",{"categorySlug":21,"appSlug":31},{"id":144,"slug":145,"slugs":146,"title":149,"excerpt":150,"readTime":151,"views":15,"isPinned":16,"publishedAt":152,"category":153,"categories":158,"featuredImage":26,"bgImage":27,"posterImage":160,"relatedSolution":26},229,"docker-compose-in-production-10-point-checklist",{"fr":147,"en":145,"ar":148},"docker-compose-production-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose in Production: 10-Point Checklist","10 Docker Compose settings to verify before any production deployment: restart, healthchecks, limits, secrets and logs.",14,"2026-08-06T00:00:00+00:00",{"id":154,"name":155,"slug":156,"color":157,"icon":156},3,"Deployment","deploiement","bg-success\u002F10 text-success",[159],{"id":154,"name":155,"slug":156,"color":157,"icon":156},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",1787581015939]