Migration from 0.15 to 0.16 in the same server

Your question

I want to upgrade my current instance from 0.15 to 0.16. I’ve used stalwart as it is since 0.11 via a docker compose deployment but I did not upgrade from 0.15 to 0.16 due to the breaking changes. now that there are tools to assist, I want to know If I can follow the guide from within the same server or if an upgrade would be transparent? I already read the guide but it mentions separate hosts

I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.

on

The migration guide is designed around a “two deployments running at the same time” architecture, but that does not strictly require two separate physical hosts. Here’s what you need to know:

The guide uses two separate network addresses, not necessarily two separate servers. The old instance and the new one simply need to be reachable at distinct internal hostnames/IPs so the migration proxy can forward to each. On a single Docker Compose host you can accomplish this by:

  1. Running the new Stalwart container on different internal ports (or a second network alias), so both containers are reachable simultaneously.
  2. Running the migration proxy container on the same host, bound to the public-facing ports (25, 143, 587, 443, etc.).
  3. The old container moves to internal-only ports; the proxy forwards to it at old.internal and to the new container at new.internal.

The preparation guide states:

“It is installed on its own host or address rather than over the existing server, because both deployments must run at the same time.”

The key requirement is that both can run at the same time with separate addresses – not that they need separate physical machines. With Docker Compose you can assign each service a distinct hostname on a bridge network and remap ports easily, which satisfies the requirement without a second server.

The full step-by-step process is documented here:

Since you’re already on Docker Compose, this should be very manageable on a single host by adjusting port bindings and internal hostnames for each container.

This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong.

If you are using Docker, this can be achieved using internal docker networks. If you are not using Docker then you’ll have to bind each instance to different ports on the same server.