Import upstream v0.16.22, stripped
Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# Upgrading from `v0.7.3` to `v0.8.0`
|
||||
|
||||
Version `0.8.0` includes both performance and security enhancements that require your data to be migrated to a new database layout. Luckily version `0.7.3` includes a migration tool which should make this process much easier than previous upgrades. In addition to the new layout, you will have to change the systemd service file to use the `CAP_NET_BIND_SERVICE` capability.
|
||||
|
||||
## Preparation
|
||||
- Upgrade to version `0.7.3` if you haven't already. If you are on a version previous to `0.7.0`, you will have to do a manual migration of your data using the Command-line Interface.
|
||||
- Create a directory where your data will be exported to, for example `/opt/stalwart-mail/export`.
|
||||
|
||||
## Systemd service upgrade (Linux only)
|
||||
- Stop the `v0.7.3` installation:
|
||||
```bash
|
||||
$ sudo systemctl stop stalwart-mail
|
||||
```
|
||||
- Update your systemd file to include the `CAP_NET_BIND_SERVICE` capability. Open the file `/etc/systemd/system/stalwart-mail.service` in a text editor and add the following lines under the `[Service]` section:
|
||||
```
|
||||
User=stalwart-mail
|
||||
Group=stalwart-mail
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
```
|
||||
- Reload the daemon:
|
||||
```bash
|
||||
$ systemctl daemon-reload
|
||||
```
|
||||
- Do not start the service yet.
|
||||
|
||||
## Data migration
|
||||
- Stop Stalwart and export your data:
|
||||
|
||||
```bash
|
||||
$ sudo systemctl stop stalwart-mail
|
||||
$ sudo /opt/stalwart-mail/bin/stalwart-mail --config /opt/stalwart-mail/etc/config.toml --export /opt/stalwart-mail/export
|
||||
$ sudo chown -R stalwart-mail:stalwart-mail /opt/stalwart-mail/export
|
||||
```
|
||||
|
||||
or, if you are using the Docker image:
|
||||
|
||||
```bash
|
||||
$ docker stop stalwart-mail
|
||||
$ docker run --rm -v <STALWART_DIR>:/opt/stalwart-mail -it stalwart-mail /opt/stalwart-mail/bin/stalwart-mail --config /opt/stalwart-mail/etc/config.toml --export /opt/stalwart-mail/export
|
||||
```
|
||||
- Backup your `v0.7.3` installation:
|
||||
- If you are using RocksDB or SQLite, simply rename the `data` directory to `data-backup`, for example:
|
||||
```bash
|
||||
$ mv /opt/stalwart-mail/data /opt/stalwart-mail/data-backup
|
||||
$ mkdir /opt/stalwart-mail/data
|
||||
$ chown stalwart-mail:stalwart-mail /opt/stalwart-mail/data
|
||||
```
|
||||
- If you are using PostgreSQL, rename the database and create a blank database with the same name, for example:
|
||||
```sql
|
||||
ALTER DATABASE stalwart RENAME TO stalwart_old;
|
||||
CREATE database stalwart;
|
||||
```
|
||||
- If you are using MySQL, rename the database and create a blank database with the same name, for example:
|
||||
```sql
|
||||
CREATE DATABASE stalwart_old;
|
||||
RENAME TABLE stalwart.b TO stalwart_old.b;
|
||||
RENAME TABLE stalwart.v TO stalwart_old.v;
|
||||
RENAME TABLE stalwart.l TO stalwart_old.l;
|
||||
RENAME TABLE stalwart.i TO stalwart_old.i;
|
||||
RENAME TABLE stalwart.t TO stalwart_old.t;
|
||||
RENAME TABLE stalwart.c TO stalwart_old.c;
|
||||
DROP DATABASE stalwart;
|
||||
CREATE database stalwart;
|
||||
```
|
||||
- If you are using FoundationDB, backup your database and clean the entire key range.
|
||||
- Download the `v0.8.0` mail-server for your platform from the [releases page](https://github.com/stalwartlabs/mail-server/releases/latest/) and replace the binary in `/opt/stalwart-mail/bin`. If you are using the Docker image, pull the latest image.
|
||||
- Import your data:
|
||||
|
||||
```bash
|
||||
$ sudo -u stalwart-mail /opt/stalwart-mail/bin/stalwart-mail --config /opt/stalwart-mail/etc/config.toml --import /opt/stalwart-mail/export
|
||||
```
|
||||
|
||||
or, if you are using the Docker image:
|
||||
|
||||
```bash
|
||||
$ docker run --rm -v <STALWART_DIR>:/opt/stalwart-mail -it stalwart-mail /opt/stalwart-mail/bin/stalwart-mail --config /opt/stalwart-mail/etc/config.toml --import /opt/stalwart-mail/export
|
||||
```
|
||||
- Start the service:
|
||||
```bash
|
||||
$ sudo systemctl start stalwart-mail
|
||||
```
|
||||
|
||||
Or, if you are using the Docker image:
|
||||
```bash
|
||||
$ docker start stalwart-mail
|
||||
```
|
||||
Reference in New Issue
Block a user