2022-12-29 04:02:51 +01:00
# Updating the Server
2022-10-26 00:18:25 +02:00
2024-03-08 04:25:45 +01:00
## General Update Notes
During some upgrades the Kanidm project must apply new constraints or limits on your data. If we are
unable to migrate these without disruption, we rely on administrators to make informed choices
before the upgrade can proceed.
When these are required, we will give you one release cycle ahead of time to make changes. To check
for changes that will affect your instance you should run.
```bash
kanidmd domain upgrade-check
# Running domain upgrade check ...
# domain_name : localhost
# domain_uuid : 7dcc7a71-b488-4e2c-ad4d-d89fc49678cb
# ------------------------
# upgrade_item : gidnumber range validity
# status : PASS
```
If _any_ task yields a `FAIL` then a future upgrade will also fail. A `FAIL` status will provide you
a list of actions and affected entries that must be resolved before the next upgrade can complete
successfully. If all tasks yield a `PASS` status then you can begin the upgrade process.
## Docker Update Procedure
2023-03-02 03:47:23 +01:00
Docker doesn't follow a "traditional" method of updates. Rather you remove the old version of the
container and recreate it with a newer version. This document will help walk you through that
process.
<!-- deno - fmt - ignore - start -->
{{#template templates/kani-alert.md
imagepath=images
title=Tip
text=You should have documented and preserved your kanidm container create / run command from the server preparation guide. If not, you'll need to use "docker inspect" to work out how to recreate these parameters.
}}
<!-- deno - fmt - ignore - end -->
2024-03-08 04:25:45 +01:00
### Upgrade Check
Perform the pre-upgrade check.
```bash
docker exec -i -t < container name > \
kanidmd domain upgrade-check
# Running domain upgrade check ...
# domain_name : localhost
# domain_uuid : 7dcc7a71-b488-4e2c-ad4d-d89fc49678cb
# ------------------------
# upgrade_item : gidnumber range validity
# status : PASS
```
### Preserving the Previous Image
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
You may wish to preserve the previous image before updating. This is useful if an issue is
encountered in upgrades.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
docker tag kanidm/server:latest kanidm/server:< DATE >
docker tag kanidm/server:latest kanidm/server:2022-10-24
```
2022-10-26 00:18:25 +02:00
2024-03-08 04:25:45 +01:00
### Update your Image
2022-10-26 00:18:25 +02:00
2023-03-02 03:47:23 +01:00
Pull the latest version of Kanidm.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
docker pull kanidm/server:latest
2023-03-02 03:47:23 +01:00
docker pull kanidm/radius:latest
docker pull kanidm/tools:latest
2022-12-26 23:52:03 +01:00
```
2022-10-26 00:18:25 +02:00
2024-03-08 04:25:45 +01:00
### Perform a backup
2022-10-26 00:18:25 +02:00
See [backup and restore ](backup_restore.md )
2024-03-08 04:25:45 +01:00
### Update your Instance
2022-10-26 00:18:25 +02:00
2022-12-29 04:02:51 +01:00
<!-- deno - fmt - ignore - start -->
{{#template templates/kani-warning.md
imagepath=images
title=WARNING
2023-03-02 03:47:23 +01:00
text=Downgrades are not possible. It is critical you know how to backup and restore before you proceed with this step.
2022-12-29 04:02:51 +01:00
}}
<!-- deno - fmt - ignore - end -->
2022-10-26 00:18:25 +02:00
2023-12-18 00:10:13 +01:00
Docker updates operate by deleting and recreating the container. All state that needs to be
preserved is within your storage volume.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
docker stop < previous instance name >
```
2022-10-26 00:18:25 +02:00
2023-12-18 00:10:13 +01:00
You can test that your configuration is correct with the new version, and the server should
correctly start.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
docker run --rm -i -t -v kanidmd:/data \
2023-07-24 02:05:10 +02:00
kanidm/server:latest /sbin/kanidmd configtest
2022-12-26 23:52:03 +01:00
```
2022-10-26 00:18:25 +02:00
2023-03-02 03:47:23 +01:00
You can then follow through with the upgrade by running the create / run command with your existing
volume.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
2023-03-02 03:47:23 +01:00
docker run [Your Arguments Here] -v kanidmd:/data \
2022-12-26 23:52:03 +01:00
OTHER_CUSTOM_OPTIONS \
kanidm/server:latest
```
2022-10-26 00:18:25 +02:00
Once you confirm the upgrade is successful you can delete the previous instance
2022-12-26 23:52:03 +01:00
```bash
docker rm < previous instance name >
```
2022-10-26 00:18:25 +02:00
2024-03-08 04:25:45 +01:00
If you encounter an issue you can revert to the previous version. Upgrades are performed in a single
transaction and no changes to your data are made unless the upgrade was successful.
2022-10-26 00:18:25 +02:00
2022-12-26 23:52:03 +01:00
```bash
docker stop < new instance name >
docker start < previous instance name >
```
2022-10-26 00:18:25 +02:00
If you deleted the previous instance, you can recreate it from your preserved tag instead.
2022-12-26 23:52:03 +01:00
```bash
2023-12-18 00:10:13 +01:00
docker run [Your Arguments Here] -v kanidmd:/data \
OTHER_CUSTOM_OPTIONS \
kanidm/server:< DATE >
2022-12-26 23:52:03 +01:00
```
2022-10-26 00:18:25 +02:00
2024-03-08 04:25:45 +01:00
In rare and exceptional cases, if the server from your previous version fails to start, you will
need to restore from backup.