2026.1
Steps to upgrade existing installations
NOTE
Test these steps in an environment that mirrors your production!
1. docker compose and the .env file
To update the default docker compose files do a git pull of dspace-angular@2026.1
set DSPACE_VER in the .env file
DSPACE_VER=2026.1
If you've previously modified FE_CMD (in the .env file)
The frontend image was made smaller (defaults to Dockerfile.dist) and as a result
- in the default image
dspace-ui.jsonis no longer in docker directory (so you need justdspace-ui.jsoninstead ofdocker/dspace-ui.json) - if your FE_CMD was
...start:dev...you now need an image with the-devsuffix (see https://github.com/ufal/clarin-dspace/wiki/Docker-Tags)
2. Change in the user running the backend
The backend image was modified to run the backend as an unprivileged user. It's very likely that you need to fix file permissions where volumes or bind mounts are used.
The general idea is
- grab the id of the dspace container (
<project_name>in the example below is your docker compose project name) - run docker inspect
- get the
Sourceproperty for every element of theMountsarray - keep only directories (so you are not modifying permissions of config files, e.g.
local.cfg) - run a recursive chown 1100:1100 on each dir (1100 is the userid the Dockerfile uses)
If you are on a linux docker host:
docker inspect $(docker compose -p <project_name> ps -q dspace) | jq -r '.[] | .Mounts[] | .Source' | while read -r line; do sudo test -d "$line" && echo "$line"; done | xargs -I {dir} sudo chown -c -R 1100:1100 {dir}
3. review configs and bind mounts
review local.cfg and if you are bind mounting any other config files, review those as well
4. pull and deploy new images
docker compose -p <project_name> --env-file .env -f docker/docker-compose.yml -f docker/docker-compose-rest.yml pull
docker compose -p <project_name> up -d #--force-recreate
5. Check database migration status
A database migration should happen automatically when the container starts. Check if all the migrations have finished with success.
/dspace/bin/dspace database status
e.g.
docker compose -p <project_name> exec dspace /dspace/bin/dspace database status
6. reindex solr
discovery and oai-pmh
new/changed config (selection)
| Property Name | Default Value | Description |
|---|---|---|
assetstore.s3.enabled |
false | |
s3.download.direct.enabled |
false | When using assetstore on S3 it generates a presigned URL and passes that as the download url |
s3.download.direct.expiration |
3600 | Expiration time of the presigned link |
clarin.token.encryption.secret |
must be set if using PAT, see #1260, generate e.g. with /dspace/bin/dspace clarin-token -g |
|
clarin.token.max.expiration.time.in.days |
90 | max allowed expiry on PAT see #1260 |
config.admin.updateable.files |
empty / item-submission.xml |
Array property - defines configuration files updatable via the Admin API. With docker compose these must be bind mounted in order to keep the changes between restarts |
user.registration |
false |
Controls (password based) user registration . |
versioning.submitterCanCreateNewVersion |
true |
Allows submitters to create new versions of items. |
versioning.unarchive.previous.version |
false |
Keeps previous item versions archived instead of unarchiving them. |
webui.submit.upload.required |
false |
Allows submitters to skip the file upload step. See #1302 |
consider enabling (create.file-preview.on-item-page-load)
What's Changed
TL;DR
- Built on DSpace-7.6.5 (with the security fix from 7.6.6 backported)
- reimplemented some of the v5 curation tasks
- enhanced provenance logging
- health report diffs
- Personal access tokens
- a lot of bugfixes
- changes around Dockerfiles
Full Changelog
sync-lindat-2025.07.16502729677...2026.1
Also see
https://github.com/dataquest-dev/DSpace/releases/tag/lindat-2026.02.21896263811 and https://github.com/dataquest-dev/DSpace/releases/tag/lindat-2026.02.22435691150
Random
Updated the ports to which postgres binds inside the container. No longer need to specify them when entering psql
docker compose -p proj_name exec dspacedb psql --username=dspace
If you are running pg_dump in a cronjob review the command you are using