The “temporary server error” on login almost always means one of a few things went wrong during or after bootstrap. Here is what to check, in order of likelihood:
1. The wizard was completed but the container was never restarted.
After finishing the setup wizard, you must restart the container. Stalwart writes config.json on wizard completion and only fully boots into normal mode after a restart. Until then, the bootstrap temporary account is no longer valid but the permanent account isn’t active yet either.
docker compose restart stalwart
2. The UID on your bind-mounted volumes is wrong.
Your Compose file uses bind mounts (./config, ./data, /mnt/cookiejar/mail). Stalwart runs as UID 2000 inside the container. If those host directories are not owned by UID 2000, the server cannot read config.json or write to the data directory, causing internal errors at login time.
chown -R 2000:2000 ./config ./data /mnt/cookiejar/mail
Then restart the container.
3. The WebUI is accessed on port 8080 after setup – but that’s no longer valid post-setup.
After the wizard completes and the container restarts, the WebUI moves to https://<hostname>/admin (HTTPS on port 443). Port 8080 is only available during bootstrap. You’re mapping 8080 to 3013 externally, so try https://mail.cookiehost.uk/admin instead of http://...:3013/admin.
4. Checking the logs is the fastest diagnostic.
docker logs cm2 2>&1 | tail -100
Look for any error referencing the database connection, config.json, or authentication. If you’re not seeing much, the wizard’s logging step may have left it in file mode – try switching to Console logging (if you haven’t already), which works better in containers.
5. SeaweedFS as a volume mount vs. S3 API
If you’re mounting SeaweedFS as a filesystem path (/mnt/cookiejar/mail), Stalwart can use it as a filesystem blob store – that should work. However, make sure the path is accessible and writable by UID 2000. SeaweedFS’s S3-compatible API is also supported as a proper S3 blob store backend if you prefer that approach.
Relevant docs:
This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong.