diff options
author | Alex Auvolat <alex@adnab.me> | 2023-04-17 12:24:51 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-04-17 12:24:51 +0200 |
commit | 7d41074f738de8f9d7a7e910fb1c26ed698373c2 (patch) | |
tree | 4f9ec3cea7b573d7fe7a90e619453ab3473b6a40 /content/operations/matrix.md | |
parent | 1701a090c292f9f3f1894e6844032b3cbe6d15de (diff) | |
parent | 4a98a21215262f646307113782b3e8762de70660 (diff) | |
download | guide.deuxfleurs.fr-7d41074f738de8f9d7a7e910fb1c26ed698373c2.tar.gz guide.deuxfleurs.fr-7d41074f738de8f9d7a7e910fb1c26ed698373c2.zip |
Merge branch 'main' into reduce-image-sizes
Diffstat (limited to 'content/operations/matrix.md')
-rw-r--r-- | content/operations/matrix.md | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/content/operations/matrix.md b/content/operations/matrix.md new file mode 100644 index 0000000..bfcde55 --- /dev/null +++ b/content/operations/matrix.md @@ -0,0 +1,100 @@ +--- +title: "MàJ Matrix" +description: "Mise à jour de Matrix (Synapse/Element)" +date: 2022-12-22 +dateCreated: 2022-12-22 +weight: 11 +extra: + parent: 'operations/maintien_en_condition.md' +--- + +How to update Matrix? +===================== + +## 1. Build the new containers + +Often, I update Riot Web and Synapse at the same time. + + +* Open `app/docker-compose.yml` and locate `riot` (the Element Web service) and `synapse` (the Matrix Synapse server). There are two things you need to do for each service: + + * Set the `VERSION` argument to the target service version (e.g. `1.26.0` for Synapse). This argument is then used to template the Dockerfile. + + The `VERSION` value should match a github release, the link to the corresponding release page is put as a comment next to the variable in the compose file; + + * Tag the image with a new incremented version tag. For example: `superboum/amd64_riotweb:v17` will become `superboum/amd64_riotweb:v18`. + + We use the docker hub to store our images. So, if you are not `superboum` you must change the name with your own handle, eg. `john/amd64_riotweb:v18`. This requires that you registered an account (named `john`) on https://hub.docker.com. + + +So, from now we expect you have: + +* changed the `VERSION` value and `image` name/tag of `riot` +* changed the `VERSION` value and `image` name/tag of `synapse` + +From the `/app` folder, you can now simply build and push the new images: + +```bash +docker-compose build riot synapse +``` + +And then send them to the docker hub: + +``` +docker-compose push riot synapse +``` + +Don't forget to commit and push your changes before doing anything else! + +## 2. Deploy the new containers + +Now, we will edit the deployment file `app/im/deploy/im.hcl`. + +Find where the image is defined in the file, for example Element-web will look like that: + + +```hcl + group "riotweb" { + count = 1 + + task "server" { + driver = "docker" + config { + image = "superboum/amd64_riotweb:v17" + port_map { + web_port = 8043 + } +``` + +And replace the `image =` entry with its new version created above. +Do the same thing for the `synapse` service. + +Now, you need a way to access the cluster to deploy this file. +To do this, you must bind nomad on your machine through a SSH tunnel. +If you have access to the Nomad web UI when entering http://127.0.0.1:4646 +you are ready to go. + +Now, on your machine and from the `app/im/deploy` folder, you must be able to run: + +``` +nomad plan im.hcl +``` + +Check that the proposed diff corresponds to what you have in mind. +If it seems OK, just copy paste the `nomad job run ... im.hcl` command proposed as part of the output of the `nomad plan` command. + +From now, it will take around ~2 minutes to deploy the new images. +You can follow the deployment from the Nomad UI. +Bear in mind that, once the deployment is done on Nomad, you may still need to wait some minutes that Traefik refreshes its configuration. + +If everythings worked as intended, you can commit and push your deployment file. + +If something went wrong, you must rollback your deployment. + + 1. First, find a working deployment with [nomad job history](https://www.nomadproject.io/docs/commands/job/history) + 2. Revert to this deployment with [nomad job revert](https://www.nomadproject.io/docs/commands/job/revert) + +Now, if the deployment failed, you should probably investigate what went wrong offline. +I built a test stack with docker-compose in `app/<service>/integration` that should help you out (for now, test suites are only written for plume and jitsi). + + |