- MinIO. There is [a guide to deploying this](https://docs.gitlab.com/charts/advanced/external-object-storage/minio.html) within our Helm Chart documentation.
- On-premises hardware and appliances, from various storage vendors.
For configuring GitLab to use Object Storage refer to the following guides
To configure GitLab to use object storage, refer to the following guides based
based on what features you intend to use:
on the features you intend to use:
1.Configure [object storage for backups](../../raketasks/backup_restore.md#uploading-backups-to-a-remote-cloud-storage).
1.[Object storage for backups](../../raketasks/backup_restore.md#uploading-backups-to-a-remote-cloud-storage).
1.Configure [object storage for job artifacts](../job_artifacts.md#using-object-storage)
1.[Object storage for job artifacts](../job_artifacts.md#using-object-storage)
including [incremental logging](../job_logs.md#new-incremental-logging-architecture).
including [incremental logging](../job_logs.md#new-incremental-logging-architecture).
1.Configure [object storage for LFS objects](../lfs/index.md#storing-lfs-objects-in-remote-object-storage).
1.[Object storage for LFS objects](../lfs/index.md#storing-lfs-objects-in-remote-object-storage).
1.Configure [object storage for uploads](../uploads.md#using-object-storage-core-only).
1.[Object storage for uploads](../uploads.md#using-object-storage-core-only).
1.Configure [object storage for merge request diffs](../merge_request_diffs.md#using-object-storage).
1.[Object storage for merge request diffs](../merge_request_diffs.md#using-object-storage).
1.Configure [object storage for Container Registry](../packages/container_registry.md#container-registry-storage-driver)(optional feature).
1.[Object storage for Container Registry](../packages/container_registry.md#container-registry-storage-driver)(optional feature).
1.Configure [object storage for Mattermost](https://docs.mattermost.com/administration/config-settings.html#file-storage)(optional feature).
1.[Object storage for Mattermost](https://docs.mattermost.com/administration/config-settings.html#file-storage)(optional feature).
1.Configure [object storage for packages](../packages/index.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.[Object storage for packages](../packages/index.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.Configure [object storage for Dependency Proxy](../packages/dependency_proxy.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.[Object storage for Dependency Proxy](../packages/dependency_proxy.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.Configure [object storage for Pseudonymizer](../pseudonymizer.md#configuration)(optional feature). **(ULTIMATE ONLY)**
1.[Object storage for Pseudonymizer](../pseudonymizer.md#configuration)(optional feature). **(ULTIMATE ONLY)**
1.Configure [object storage for autoscale Runner caching](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching)(optional - for improved performance).
1.[Object storage for autoscale Runner caching](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching)(optional, for improved performance).
1.Configure [object storage for Terraform state files](../terraform_state.md#using-object-storage-core-only).
1.[Object storage for Terraform state files](../terraform_state.md#using-object-storage-core-only).
Using separate buckets for each data type is the recommended approach for GitLab.
Using separate buckets for each data type is the recommended approach for GitLab.
A limitation of our configuration is that each use of object storage is separately configured.
A limitation of our configuration is that each use of object storage is
[We have an issue for improving this](https://gitlab.com/gitlab-org/gitlab/-/issues/23345)
separately configured. We have an [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/23345)
and easily using one bucket with separate folders is one improvement that this might bring.
for improving this, which would allow for one bucket with separate folders.
There is at least one specific issue with using the same bucket:
Using a single bucket when GitLab is deployed with the Helm chart causes
when GitLab is deployed with the Helm chart restore from backup
restoring from a backup to
[will not properly function](https://docs.gitlab.com/charts/advanced/external-object-storage/#lfs-artifacts-uploads-packages-external-diffs-pseudonymizer)
[not function properly](https://docs.gitlab.com/charts/advanced/external-object-storage/#lfs-artifacts-uploads-packages-external-diffs-pseudonymizer).
unless separate buckets are used.
Although you may not be using a Helm deployment right now, if you migrate
GitLab to a Helm deployment later, GitLab would still work, but you may not
One risk of using a single bucket would be if your organization decided to
realize backups aren't working correctly until a critical requirement for
migrate GitLab to the Helm deployment in the future. GitLab would run, but the situation with
functioning backups is encountered.
backups might not be realized until the organization had a critical requirement for the backups to