← All case studies Slack → Mattermost

Ingewikkeld imported Slack users and left a decade of messages behind

Ingewikkeld moved from Slack to Mattermost on Nexaa in early 2025. Users and channels imported. A decade of messages hit an upload limit and stayed in an offline archive.

Stefan wrote this on skoop.dev on 20 February 2026. The switch itself was early the year before. The company is Ingewikkeld. They wanted more control over the chat system, and they wanted one less dependency on a US vendor.

The plan was a full move. Users, channels, and messages. He says they rarely searched the history, and still wanted it.

The Slack → Mattermost playbook expects a paid Slack export and a converted archive. That is the path they started. The archive is the part that stopped.

A small container on Nexaa

Mattermost needed a database first. Nexaa’s managed database is a form in the portal. He picked MySQL, one node, because other apps he planned to put on Nexaa use MySQL too. Mattermost also speaks Postgres. He did not use it.

The app is the public image mattermost/mattermost-team-edition. When he wrote the post they were on release-10.12, with an upgrade to Mattermost 11 still on the list. They had started on an older tag. Changing the tag is the upgrade, unless that version also wants a manual step.

The container is 1 CPU and 2 GB of RAM. Public port 80 maps to 8065. Nexaa terminates TLS on the ingress. He set MM_SQLSETTINGS_DATASOURCE, MM_SQLSETTINGS_DRIVERNAME to mysql, and the public DOMAIN. Volumes hold the data that has to survive a restart. He made them larger than a year of use required. Nexaa will grow a volume and will not shrink one. After about a year, with about 10 people, the usage was still small.

SMTP goes through their Mailgun account, or signup mail does not send. Open signup is off. Mattermost can hold many teams, each with its own channels. They needed one team, named Ingewikkeld.

Where the import stopped

A paid Slack workspace can export users, channels, and messages. They converted that export with mmetl on a laptop, which is the tool Mattermost documents for this.

Ingewikkeld had more than 10 years of Slack. The file was too big for Nexaa’s ingress. He could not raise the upload limit. The import errors stayed. He spent long enough on it to call the time wasted, then stopped.

Users and channels had already loaded. Those were the part he cared about most. The message archive is backed up somewhere they can still search. It is not inside Mattermost.

The only downtime he reports is later, and it was a bad config change he fixed. The import itself did not take the server down. It just never finished.

If the history matters, find the upload limit before you convert a decade of JSON. A host that cannot raise it will take the users and leave the words. Keep the Slack export either way. Stefan still has his, outside the product. The playbook is the conversion. His post is the ceiling the conversion hit.