---
title: Upgrades
url: /docs/administration/self-hosting/operations/upgrades/
---
> **Note:** Self-hosting is only available with **Pulumi Business Critical**. If you would like to evaluate the self-hosted Pulumi Cloud, [request a Proof of Concept (PoC)](/product/self-hosted/#self-hosted-trial) or [contact us](/contact/).

This page covers how to safely update your self-hosted Pulumi Cloud deployment. For version-specific changes, see the [Changelog](/docs/administration/self-hosting/changelog/).

## Staged rollouts

Deploy updates through staged environments:

1. **Staging/testing** - Deploy and run automated tests.
1. **Production** - Deploy after staging validation.

## Update process

> **Note:** Many customers use the self-hosted installers as reference architectures and build their own deployment pipelines. The guidance below applies whether you use the installers directly or your own automation.

Self-hosted deployments have three logical layers, which should be updated in order:

1. **Infrastructure layer** (network, database, storage) - rarely changes
1. **Compute layer** (Kubernetes cluster, ECS cluster) - occasional updates
1. **Application layer** (API service, console, migrations) - most frequent updates

For application updates:

1. Update the container image tag to the new version.
1. Run database migrations before updating service containers.
1. Roll out new containers with zero downtime.

## Version pinning

- Pin the `imageTag` to a specific version rather than using `latest`.
- Available tags are published at [Docker Hub: pulumi/service](https://hub.docker.com/r/pulumi/service/tags).
- Test new versions in a staging environment before promoting to production.

