Skip to content

2026.1

Choose a tag to compare

@kosarko kosarko released this 10 Feb 12:32
· 12 commits to clarin-v7 since this release
64fda50

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.json is no longer in docker directory (so you need just dspace-ui.json instead of docker/dspace-ui.json)
  • if your FE_CMD was ...start:dev... you now need an image with the -dev suffix (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 Source property for every element of the Mounts array
  • 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