diff --git a/content/docs/sidebar.json b/content/docs/sidebar.json
index 93e8954133..ecf067eb6a 100644
--- a/content/docs/sidebar.json
+++ b/content/docs/sidebar.json
@@ -753,6 +753,20 @@
"slug": "support-bundle"
}
]
+ },
+ {
+ "slug": "upgrading",
+ "source": "upgrading/index.md",
+ "children": [
+ {
+ "label": "Regular procedure",
+ "slug": "regular-procedure"
+ },
+ {
+ "label": "Air-gap procedure",
+ "slug": "airgap-procedure"
+ }
+ ]
}
]
},
diff --git a/content/docs/studio/self-hosting/upgrading/airgap-procedure.md b/content/docs/studio/self-hosting/upgrading/airgap-procedure.md
new file mode 100644
index 0000000000..1255a6160f
--- /dev/null
+++ b/content/docs/studio/self-hosting/upgrading/airgap-procedure.md
@@ -0,0 +1,101 @@
+## Upgrading Studio (Air-gapped)
+
+
+
+These upgrade procedures are only applicable if you've deployed Studio in a VM
+on an air-gapped machine.
+
+
+
+First, we'll start by downloading the latest Helm chart and the latest Docker
+images from a machine with internet access.
+
+1. Downloading the Helm chart
+
+```cli
+$ helm repo update
+$ helm pull iterative/studio
+```
+
+Then, let's get the filename:
+
+```cli
+$ ls -l studio-*.tgz
+-rw-r--r--. 1 username username 392409 Oct 11 14:30 studio-0.7.0.tgz
+```
+
+Now, we'll retrieve the Studio application version embedded in the Helm chart.
+Use the filename from before in the following command:
+
+```cli
+$ export STUDIO_VERSION=$(tar zxf studio-0.7.0.tgz -O studio/Chart.yaml | grep -Po '(?<=appVersion: )v[\d.]+')
+```
+
+2. Downloading the Docker images
+
+Authenticate to the Docker registry with your personal credentials and download
+the Docker images:
+
+```cli
+$ docker login docker.iterative.ai
+```
+
+```cli
+$ docker pull docker.iterative.ai/studio-frontend:$STUDIO_VERSION
+$ docker save docker.iterative.ai/studio-frontend:$STUDIO_VERSION > studio-frontend-$STUDIO_VERSION.tar
+
+$ docker pull docker.iterative.ai/studio-backend:$STUDIO_VERSION
+$ docker save docker.iterative.ai/studio-backend:$STUDIO_VERSION > studio-backend-$STUDIO_VERSION.tar
+
+$ docker pull docker.iterative.ai/studio-dvcx-worker:$STUDIO_VERSION
+$ docker save docker.iterative.ai/studio-dvcx-worker:$STUDIO_VERSION > studio-dvcx-worker-$STUDIO_VERSION.tar
+```
+
+3. Transfer the Helm chart and Docker images to the instance
+
+The procedure on transferring the the Helm chart and Docker images to the
+instance will vary for each user, thus we can't provide any examples. However,
+any method that you deem acceptable will do.
+
+4. Loading the Docker images into the container runtime
+
+```cli
+$ docker load -i studio-frontend-$STUDIO_VERSION.tar
+$ docker load -i studio-backend-$STUDIO_VERSION.tar
+$ docker load -i studio-dvcx-worker-$STUDIO_VERSION.tar
+```
+
+5. Upgrading Studio
+
+We'll start by extracting the archive containing the Helm chart:
+
+```cli
+$ tar zxvf studio-0.7.0.tgz
+```
+
+Finally, we'll execute the upgrade:
+
+```cli
+$ helm upgrade --atomic studio studio --namespace studio --values values.yaml
+```
+
+
+
+`values.yaml` refers to your configuration file. In case you've named it
+differently, please update the file name in the command accordingly.
+
+
+
+Once the upgrade succeds, you should see output such as this:
+
+```
+Release "studio" has been upgraded. Happy Helming!
+NAME: studio
+LAST DEPLOYED: Tue Oct 17 17:51:53 2023
+NAMESPACE: studio
+STATUS: deployed
+REVISION: 5
+NOTES:
+Application URL:
+ http://192.168.1.1/
+```
diff --git a/content/docs/studio/self-hosting/upgrading/index.md b/content/docs/studio/self-hosting/upgrading/index.md
new file mode 100644
index 0000000000..f65b9b8495
--- /dev/null
+++ b/content/docs/studio/self-hosting/upgrading/index.md
@@ -0,0 +1,12 @@
+# Upgrading Studio
+
+The procedure for upgrading Studio varies depends on the environment Studio is
+deployed onto.
+
+If you've deployed Studio in an environment with internet access (like most
+users), follow this guide:
+[Upgrading Studio (Regular procedure)](/doc/studio/self-hosting/upgrading/regular-procedure)
+
+If, on the other hand, you've deployed Studio in an air-gapped environment,
+follow this guide:
+[Upgrading Studio (Air-gap procedure)](/doc/studio/self-hosting/upgrading/airgap-procedure)
diff --git a/content/docs/studio/self-hosting/upgrading/regular-procedure.md b/content/docs/studio/self-hosting/upgrading/regular-procedure.md
new file mode 100644
index 0000000000..7ba123feb4
--- /dev/null
+++ b/content/docs/studio/self-hosting/upgrading/regular-procedure.md
@@ -0,0 +1,36 @@
+## Upgrading Studio (Regular procedure)
+
+1. Connect to the instance with SSH
+
+2. Update the Helm repository
+
+```cli
+$ helm repo update
+```
+
+3. Upgrade Studio to the latest version
+
+```cli
+$ helm upgrade --atomic studio iterative/studio --namespace studio --values values.yaml
+```
+
+
+
+`values.yaml` refers to your configuration file. In case you've named it
+differently, please update the file name in the command accordingly.
+
+
+
+Once the upgrade succeds, you should see output such as this:
+
+```
+Release "studio" has been upgraded. Happy Helming!
+NAME: studio
+LAST DEPLOYED: Tue Oct 17 17:51:53 2023
+NAMESPACE: studio
+STATUS: deployed
+REVISION: 5
+NOTES:
+Application URL:
+ http://192.168.1.1/
+```
diff --git a/static/img/studio-selfhosted-successful-upgrade.png b/static/img/studio-selfhosted-successful-upgrade.png
new file mode 100644
index 0000000000..8fe2b89eaa
Binary files /dev/null and b/static/img/studio-selfhosted-successful-upgrade.png differ