WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Releases: alan-turing-institute/data-safe-haven

Release 5.6.0 (2025-10-30)

30 Oct 20:26
cdb9754

Choose a tag to compare

Release Highlights

  • SREs with Tier 0/1 won't be deploying a Nexus proxy, and can download packages directly from the internet.
  • SREs now support mirroring external GitHub repositories into the internal Gitea repository accessible from workspaces.

Upgrading from 5.5.1

As part of the current release, we're offering users more control over the DNS sidecar deployment by exposing two new parameters in the SRE configuration: workload_minimum_count and workload_maximum_count. Before updating your SRE, make sure your YAML config file contains valid values for these parameters. For example:

user_services:
  dns_sidecar:
    cron_expression: "*/30 * * * *"
    replica_timeout: 600
    retry_limit: 0
    workload_minimum_count: 1
    workload_maximum_count: 2

Upload your new configuration file using dsh config upload, and then run the following command to upgrade an existing SRE:

dsh deploy sre YOURSRENAME

What's Changed

Full Changelog: v5.5.1...v5.6.0

Release 5.5.1 (2025-09-04)

04 Sep 15:38
380dcb8

Choose a tag to compare

Release Highlights

  • Fixes the clamav-clamonacc unit file configuration, so it doesn't interrupt Ansible from configuring SRE workspaces properly.

What's Changed

  • Hotfix: Using the correct socket on the unit file for clamav-clamonacc by @cptanalatriste in #2476

Upgrading from 5.5.0

Run the following command to upgrade an existing SRE:

dsh deploy sre YOURSRENAME

You might need to re-run cloud-init manually in your workspaces for the new configuration to take place.

Full Changelog: v5.5.0...v5.5.1

Release 5.5.0 (2025-07-18)

18 Jul 13:41

Choose a tag to compare

Release Highlights

  • SRE users have now write privileges on /mnt/scratch, when using SRDs that support temporary storage.
  • It is now possible to set up the size of Nexus persistent directory in the configuration file. And the default value has been increased from 2Gb to 10Gb.
  • User services, like Gitea and HedgeDoc, sometimes change their IP address on restart, which makes them unavailable due to DNS issues. We have now a Container App Job that monitors this problem and fix it when happens.
  • Documentation updates on clipboard control limitations and data egress instructions.

Upgrading from 5.4.1

Run the following command to upgrade an existing SRE:

dsh deploy sre YOURSRENAME

Changing the size of Nexus' persistent directory and running a Job for fixing container DNS will likely have an impact on the cost of running an SRE. Please use the configuration file to ensure your costs are within your budget.

What's Changed

New Contributors

Full Changelog: v5.4.1...v5.5.0

Release 5.4.1 (2025-04-01)

07 Apr 10:23
a800151

Choose a tag to compare

Release Highlights

  • Fixed a josepy related issue preventing DSH installation.
  • Fixed missing persistent storage for Gitea to prevent failure after container restart.

Upgrading from 5.4.1

Please back up your Gitea codebase before updating the SRE. Our testing shows that repositories created before this update won't be repaired, so you will need to re-create them once the update is completed.

Once the backup is finished, run the following command to upgrade an existing SRE.

dsh deploy sre YOURSRENAME

What's Changed

Full Changelog: v5.4.0...v5.4.1

Release v5.4.0 (2025-03-03)

03 Mar 14:37
4e5e077

Choose a tag to compare

Release Highlights

  • Adds the dsh allowlist family of commands to allow easy manipulation of the package allowlists that limit access to packages on SREs where only pre-approved packages can be downloaded from CRAN/PyPi.
  • Updates nexus-allowlist to handle changes to the Nexus Sonatype Repository initialization process

Upgrading from 5.3.1

Run the following command to upgrade an existing SRE

dsh deploy sre YOURSRENAME

Note that due to changes in the way the package allowlists are managed, new SREs will have no allowlist, and upgrading may remove existing allowlists. Administrators will need to manually update the allowlist as required.

What's Changed

Full Changelog: v5.3.1...v5.4.0

Release 5.3.1 (2025-01-28)

28 Jan 12:19
4a237a9

Choose a tag to compare

Release Highlights

  • Fixes issue with expiring SSL certificate
  • Updates Nexus image to fix an initialisation problem

Upgrading from 5.3.0

Run the following command to upgrade an existing SRE

dsh deploy sre YOURSRENAME

What's Changed

Full Changelog: v5.3.0...v5.3.1

Release 5.3.0 (2025-01-20)

20 Jan 14:20
de563f8

Choose a tag to compare

Release Highlights

  • Adds/fixes support for Tier 0 and Tier 1 SREs
  • Adds a reference section for the command line interface to the documentation

Upgrading from 5.2.1

Run the following command to upgrade an existing SRE

dsh deploy sre YOURSRENAME

What's Changed

Full Changelog: v5.2.1...v5.3.0

Release 5.2.1 (2025-01-13)

13 Jan 11:57
bf91ec0

Choose a tag to compare

Release Highlights

  • Fixes guacamole-user-sync crash which was limiting SREs to a maximum of 10 users
  • Fixes problem with listing users when SRE and SHM are deployed to different subscriptions

Upgrading from 5.2.0

Run the following command to upgrade an existing SRE

dsh deploy sre YOURSRENAME

What's Changed

  • Guacamole user synchronisation problems by @jemrobinson in #2352
  • Retrieve SRE sub name and use that when connecting to guac database by @craddm in #2354

Full Changelog: v5.2.0...v5.2.1

Release 5.2.0 (2024-12-05)

05 Dec 14:04
v5.2.0
3dfa5ce

Choose a tag to compare

Release Highlights

  • More logs collected in the log analytics workspace
    • Storage
      • Ingress and egress stores
      • Desired state files
      • Users' home directories
      • Container configuration and persistent state
    • Container services
    • Firewall
  • Better CLI feedback and error messages
  • Documentation improvements

Known issues

Backup is not functional. Following the notice in the documentation will not enable backup.

Upgrading from 5.1.0

In order to upgrade, you will need to carry out the following steps.

⚠️ Some manual interventions are needed. Please ensure that your data is appropriately backed-up before starting. ⚠️

Step-by-step upgrade instructions

N.B. throughout the instructions below, replace YOURSRENAME with the lower-case name of your SRE

Create an upgrade JSON file with the following contents

{
  "nameTable": {
    "sre_data_component": "urn:pulumi:shm-blue-sre-YOURSRENAME::data-safe-haven::dsh:sre:DataComponent::sre_data",
    "sre_desired_state_component": "urn:pulumi:shm-blue-sre-YOURSRENAME::data-safe-haven::dsh:sre:DesiredStateComponent::sre_desired_state"
  },
  "resources": [
    {
      "type": "dsh:sre:NFSV3StorageAccountComponent",
      "name": "sre_data_storage_account_data_private_sensitive",
      "component": true,
      "parent": "sre_data_component"
    },
    {
      "type": "dsh:sre:NFSV3StorageAccountComponent",
      "name": "sre_desired_state_storage_account",
      "component": true,
      "parent": "sre_desired_state_component"
    }
  ]
}

Apply the upgrade JSON as follows

dsh pulumi run YOURSRENAME 'import --file /full/path/to/your/upgrade.json --yes'
dsh pulumi run YOURSRENAME 'state unprotect --all'

Note that the first command might fail - the import should still have succeeded though.

Download the Pulumi state file

dsh pulumi run YOURSRENAME 'stack export --file /full/path/to/a/local/file.json'

Open the Pulumi state file in an editor and find-and-replace the following strings

From To
dsh:sre:DataComponent$azure-native:storage:StorageAccount::sre_data_storage_account_data_private_sensitive dsh:sre:DataComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount::sre_data_storage_account_data_private_sensitive
dsh:sre:DataComponent$azure-native:storage:StorageAccount$azure-native:network:PrivateEndpoint::sre_data_storage_account_data_private_sensitive dsh:sre:DataComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount$azure-native:network:PrivateEndpoint::sre_data_storage_account_data_private_sensitive
dsh:sre:DataComponent$azure-native:storage:StorageAccount$azure-native:storage:BlobContainer dsh:sre:DataComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount$azure-native:storage:BlobContainer
dsh:sre:DataComponent$azure-native:storage:StorageAccount$pulumi-python:dynamic:Resource dsh:sre:DataComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount$pulumi-python:dynamic:Resource
dsh:sre:DataComponent$azure-native:storage:StorageAccount$azure-native:network:PrivateDnsZoneGroup::sre_data_storage_account_data_private_sensitive dsh:sre:DataComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount$azure-native:network:PrivateDnsZoneGroup::sre_data_storage_account_data_private_sensitive
dsh:sre:DesiredStateComponent$azure-native:storage:StorageAccount dsh:sre:DesiredStateComponent$dsh:sre:NFSV3StorageAccountComponent$azure-native:storage:StorageAccount

Upload the edited Pulumi state file

dsh pulumi run YOURSRENAME 'stack import --file /full/path/to/a/local/file.json'

Deploy using v5.2.0 which will complete the rest of the upgrade

dsh sre deploy YOURSRENAME

What's Changed

Full Changelog: v5.1.0...v5.2.0

Release 5.1.0 (2024-11-21)

21 Nov 15:17
72711c5

Choose a tag to compare

Release Highlights

  • Logs from workspaces are now collected in a centralised log analytics workspace
  • Research user IP address fields in the SRE configuration can now be set to Internet, rather than a specific IP address
  • Bug fixes and documentation improvements

Upgrading from 5.0.1

🚨 Please update your SHM and all associated SREs! 🚨

In order to upgrade, you will need to carry out the following steps.

⚠️ Some manual interventions are needed. Please ensure that your data is appropriately backed-up before starting. ⚠️

Step-by-step upgrade instructions

N.B. throughout the instructions below, replace YOURSRENAME with the lower-case name of your SRE, YOURSHMNAME with the lower-case name of your SHM and YOURSHMFQDN with the fully-qualified domain name of your SHM (which you can find by running dsh config show-shm and looking for the key shm.fqdn).

For each SRE do the following

Delete the Hedgedoc, Identity, Gitea, and remote desktop container groups

The groups can be deleted via the portal or using Azure CLI.

In the portal, you will find the container groups in the SRE resource group, shm-YOURSHMNAME-sre-YOURSRENAME-rg. The name of the container groups follow the format shm-YOURSHMNAME-sre-YOURSRENAME-container-group-X, where X is the software within the group.

az container delete --name shm-YOURSHMNAME-sre-YOURSRENAME-container-group-hedgedoc --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg
az container delete --name shm-YOURSHMNAME-sre-YOURSRENAME-container-group-identity --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg
az container delete --name shm-YOURSHMNAME-sre-YOURSRENAME-container-group-gitea --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg
az container delete --name shm-YOURSHMNAME-sre-YOURSRENAME-container-group-remote-desktop --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg

Remove the DNS records for the deleted container groups

The CNAME and A records for the Hedgedoc, Identity, and Gitea resources need to be deleted from the public and private DNS zones.

This can be done in the portal, looking in the public DNS Zone for your SRE - YOURSRENAME.fqdn - for CNAME records, and the private DNS Zone - privatelink.YOURSRENAME.fqdn- for the A records.

Alternatively, use the Azure CLI, as below.

az network dns record-set cname delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone YOURSRENAME.YOURSHMFQDN --name identity
az network dns record-set cname delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone YOURSRENAME.YOURSHMFQDN --name gitea
az network dns record-set cname delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone YOURSRENAME.YOURSHMFQDN --name hedgedoc
az network private-dns record-set a delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone privatelink.YOURSRENAME.YOURSHMFQDN --name identity
az network private-dns record-set a delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone privatelink.YOURSRENAME.YOURSHMFQDN --name gitea
az network private-dns record-set a delete --resource-group shm-YOURSHMNAME-sre-YOURSRENAME-rg --zone privatelink.YOURSRENAME.YOURSHMFQDN --name hedgedoc

Delete the manually deleted resources from the Pulumi state

Run the following DSH CLI commands, ensuring that you have replaced the placeholders with the appropriate SHM and SRE names.

dsh pulumi run YOURSRENAME 'state delete urn:pulumi:shm-YOURSHMNAME-sre-YOURSRENAME::data-safe-haven::dsh:sre:IdentityComponent$pulumi-python:dynamic:Resource::sre_identity_entra_application --target-dependents'
dsh pulumi run YOURSRENAME 'state delete urn:pulumi:shm-YOURSHMNAME-sre-YOURSRENAME::data-safe-haven::dsh:sre:RemoteDesktopComponent$pulumi-python:dynamic:Resource::sre_remote_desktop_entra_application --target-dependents'

N.B. The $ character in the URN above may need to be escaped appropriately for your operating system. As written above, the command will work appropriately on Unix-based systems.

Delete pulumi_vars.yaml from blob storage

The pulumi_vars.yaml file needs to be deleted from blob storage.

  • In the Azure portal navigate to the SRE resource group
  • Find the "desired state" storage account (which will contain desiredstate in the middle of its name)
  • In this storage account, open the desiredstate blob container.
  • In the vars folder, delete the file pulumi_vars.yaml.

Delete the Entra groups and applications

Delete the Microsoft Entra groups and applications previously created by dsh.
These are now managed by Pulumi, which will not be able to run correctly if resources with identical names already exist.

The groups to be deleted are:

Data Safe Haven SRE YOURSRENAME Administrators
Data Safe Haven SRE YOURSRENAME Privileged Users
Data Safe Haven SRE YOURSRENAME Users

The applications to be deleted are:

Data Safe Haven (YOURSHMNAME) Service Principal
sre-YOURSRENAME-guacamole
sre-YOURSRENAME-apricot

SRE config files

The method of sanitising SRE names when creating remote configuration files has changed. Previously, hyphens or underscores in the SRE name were removed from the name used for the remote configuration file. If you have an SRE with a hyphen or underscore, you should download the configuration file at this point. Upload the configuration again once you have upgraded to release 5.1.0.

Redeploy the SHM and SRE

Finally, redeploy the SHM and SRE from release 5.1.0

dsh shm deploy
dsh sre deploy YOURSRENAME

What's Changed

New Contributors

Full Changelog: v5.0.1...v5.1.0