2020-11-15 21:42:02 +00:00
---
title: Backup and restore
---
2020-10-03 18:36:36 +00:00
2020-11-15 21:42:02 +00:00
:::warning
Local backups are only supported for docker-compose installs. If you want to backup a Kubernetes instance locally, use an S3-compatible server such as [minio ](https://min.io/ )
:::
2020-10-03 18:36:36 +00:00
### Backup
2020-11-15 21:42:02 +00:00
:::note
Local backups are **enabled** by default, and will be run daily at 00:00
:::
2020-10-19 20:17:47 +00:00
2020-12-05 21:08:42 +00:00
Local backups can be created by running the following command in your authentik installation directory
2020-10-03 18:36:36 +00:00
```
2020-10-05 20:30:13 +00:00
docker-compose run --rm worker backup
2021-06-30 17:07:11 +00:00
# Or for kubernetes
2021-09-05 18:25:42 +00:00
kubectl exec -it deployment/authentik-worker -c authentik -- ak backup
2020-10-03 18:36:36 +00:00
```
This will dump the current database into the `./backups` folder. By defaults, the last 10 Backups are kept.
### Restore
2021-09-05 18:25:42 +00:00
:::warning
2021-09-24 13:37:54 +00:00
Currently, it is only supported to restore backups into the same version they have been taken from. Different versions *might* work, but this is not guaranteed.
2021-09-05 18:25:42 +00:00
Instead, install the version the backup was taken with, restore the backup and then upgrade.
:::
2020-10-03 18:36:36 +00:00
2021-11-08 16:46:25 +00:00
Run this command in your authentik installation directory.
2020-10-03 18:36:36 +00:00
2021-11-08 16:46:25 +00:00
To see all available backups, run
```
docker-compose run --rm worker listbackups
# Or for kubernetes
kubectl exec -it deployment/authentik-worker -c authentik -- ak listbackups
```
Then, to restore, run
2020-10-03 18:36:36 +00:00
```
2020-10-05 20:30:13 +00:00
docker-compose run --rm worker restore -i default-2020-10-03-115557.psql
2021-06-30 17:07:11 +00:00
# Or for kubernetes
2021-09-05 18:25:42 +00:00
kubectl exec -it deployment/authentik-worker -c authentik -- ak restore -i default-2020-10-03-115557.psql
2020-10-03 18:36:36 +00:00
```
2021-11-19 22:45:03 +00:00
After you've restored the backup, it is recommended to restart all services with `docker-compose restart` or `kubectl rollout restart deployment --all` .
2020-10-03 18:36:36 +00:00
### S3 Configuration
2020-10-19 20:17:47 +00:00
#### Preparation
2020-10-03 18:36:36 +00:00
2020-12-05 21:08:42 +00:00
authentik expects the bucket you select to already exist. The IAM User given to authentik should have the following permissions
2020-10-03 18:36:36 +00:00
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Principal": {
"AWS": "arn:aws:iam::example-AWS-account-ID:user/example-user-name"
},
"Resource": [
"arn:aws:s3:::example-bucket-name/*",
"arn:aws:s3:::example-bucket-name"
]
}
]
}
```
#### docker-compose
Set the following values in your `.env` file.
```
2020-12-05 21:08:42 +00:00
AUTHENTIK_POSTGRESQL__S3_BACKUP__ACCESS_KEY=
AUTHENTIK_POSTGRESQL__S3_BACKUP__SECRET_KEY=
AUTHENTIK_POSTGRESQL__S3_BACKUP__BUCKET=
AUTHENTIK_POSTGRESQL__S3_BACKUP__REGION=
2020-10-03 18:36:36 +00:00
```
If you want to backup to an S3-compatible server, like [minio ](https://min.io/ ), use this setting:
```
2020-12-05 21:08:42 +00:00
AUTHENTIK_POSTGRESQL__S3_BACKUP__HOST=http://play.min.io
2020-10-03 18:36:36 +00:00
```
#### Kubernetes
Simply enable these options in your values.yaml file
```yaml
# Enable Database Backups to S3
2021-06-30 17:07:11 +00:00
authentik:
postgresql:
s3_backup:
bucket: "authentik-backup"
access_key: foo
secret_key: bar
region: eu-central-1
# Optional S3 host
# host: "https://backup-s3.beryju.org"
2020-10-03 18:36:36 +00:00
```
2020-10-19 20:17:47 +00:00
Afterwards, run a `helm upgrade` to update the ConfigMap. Backups are done automatically as above, at 00:00 every day.