[{"data":1,"prerenderedAt":1013},["ShallowReactive",2],{"docs-navigation":3,"-docs-installation-storage-overview":410,"-docs-installation-storage-overview-surround":1008},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":123,"body":412,"description":1001,"extension":1002,"links":1003,"meta":1004,"navigation":1005,"path":124,"seo":1006,"stem":125,"__hash__":1007},"docs\u002Fdocs\u002F2.installation\u002F7.storage\u002F1.overview.md",{"type":413,"value":414,"toc":988},"minimark",[415,436,480,485,512,516,569,582,588,592,619,622,727,745,749,828,845,849,852,906,910,939,943,946,968,973,977],[416,417,418,419,423,424,427,428,431,432,435],"p",{},"Relic keeps file content in object storage and everything else in the\ndatabase. Object storage is an S3-compatible service\n(",[420,421,422],"code",{},"RELIC_OBJECT_STORAGE_TYPE=s3",", the default), Azure Blob Storage (",[420,425,426],{},"azure","),\nGoogle Cloud Storage (",[420,429,430],{},"gcs","), or a local directory on a single node\n(",[420,433,434],{},"filesystem",").",[437,438,439,446,450,454,458,462,466,470,475],"ul",{},[440,441,442,445],"li",{},[443,444,131],"a",{"href":132}," (recommended for self-hosted storage)",[440,447,448],{},[443,449,135],{"href":136},[440,451,452],{},[443,453,139],{"href":140},[440,455,456],{},[443,457,143],{"href":144},[440,459,460],{},[443,461,147],{"href":148},[440,463,464],{},[443,465,127],{"href":128},[440,467,468],{},[443,469,151],{"href":152},[440,471,472,474],{},[443,473,155],{"href":156},": Ceph, Wasabi, DigitalOcean Spaces, Garage",[440,476,477,479],{},[443,478,159],{"href":160},": a local directory, one node only",[481,482,484],"h2",{"id":483},"what-goes-where","What goes where",[486,487,488,500],"table",{},[489,490,491],"thead",{},[492,493,494,497],"tr",{},[495,496,390],"th",{},[495,498,499],{},"Object storage",[501,502,503],"tbody",{},[492,504,505,509],{},[506,507,508],"td",{},"Repositories, items, properties, checksums, builds, users, tokens, permissions, scan results, the job queue.",[506,510,511],{},"File content, stored once per SHA-256.",[481,513,515],{"id":514},"buckets","Buckets",[486,517,518,531],{},[489,519,520],{},[492,521,522,525,528],{},[495,523,524],{},"Bucket",[495,526,527],{},"Holds",[495,529,530],{},"Behaviour",[501,532,533,553],{},[492,534,535,540,546],{},[506,536,537],{},[420,538,539],{},"artifacts",[506,541,542,543],{},"Content under ",[420,544,545],{},"sha256\u002F\u003Caa>\u002F\u003Cbb>\u002F\u003Csha256>",[506,547,548,549,552],{},"Objects never change. Identical files share one object. Garbage collection deletes an object once nothing has referenced it for ",[420,550,551],{},"RELIC_GARBAGE_COLLECTION_GRACE_PERIOD"," (default one hour).",[492,554,555,560,563],{},[506,556,557],{},[420,558,559],{},"temporary",[506,561,562],{},"Uploads in progress",[506,564,565,566,568],{},"New content is copied server-side into ",[420,567,539],{},", then deleted here. Garbage collection deletes objects older than a day.",[416,570,571,573,574,577,578,581],{},[420,572,539],{}," also holds ",[420,575,576],{},"layout.json"," (",[420,579,580],{},"{\"version\":1}","). Relic refuses to start\non a store that records another layout version. Keep the file in backups.",[416,583,584,585,587],{},"Clients never reach the storage: Relic reads every download from the bucket and\nsends it on. Only Relic needs network access to the storage, and with a cloud\nprovider each download is a bucket read you pay for, so run Relic in the same\nregion. The daily storage check adds a listing of ",[420,586,539],{}," and up to 10 GiB\nof reads to verify content.",[481,589,591],{"id":590},"bucket-requirements","Bucket requirements",[437,593,594,597,600,603,609,612],{},[440,595,596],{},"Create both buckets yourself. Relic never creates buckets; only the Helm\nchart's bundled SeaweedFS and the Compose stack do.",[440,598,599],{},"Use two different buckets on the same endpoint, both readable and writable\nwith one key pair.",[440,601,602],{},"On both buckets, expire incomplete multipart uploads after one day. Relic\ncannot see them.",[440,604,605,606,608],{},"Turn off versioning and object lock on ",[420,607,539],{},", or expire noncurrent\nversions. Object lock makes deletes fail.",[440,610,611],{},"Keep both buckets private.",[440,613,614,615,618],{},"Unless ",[420,616,617],{},"RELIC_OBJECT_STORAGE_SSE"," is set, the bucket's default encryption\napplies.",[481,620,261],{"id":621},"permissions",[486,623,624,636],{},[489,625,626],{},[492,627,628,631,633],{},[495,629,630],{},"Operation",[495,632,524],{},[495,634,635],{},"Why",[501,637,638,665,686,703,715],{},[492,639,640,658,662],{},[506,641,642,645,646,645,649,645,652,645,655],{},[420,643,644],{},"PutObject",", ",[420,647,648],{},"CreateMultipartUpload",[420,650,651],{},"UploadPart",[420,653,654],{},"CompleteMultipartUpload",[420,656,657],{},"AbortMultipartUpload",[506,659,660],{},[420,661,559],{},[506,663,664],{},"Stage uploads.",[492,666,667,676,683],{},[506,668,669,645,672,675],{},[420,670,671],{},"CopyObject",[420,673,674],{},"UploadPartCopy"," (over 5 GiB)",[506,677,678,680,681],{},[420,679,559],{}," to ",[420,682,539],{},[506,684,685],{},"Move an upload to its content address.",[492,687,688,697,700],{},[506,689,690,693,694],{},[420,691,692],{},"GetObject"," with byte ranges, ",[420,695,696],{},"HeadObject",[506,698,699],{},"both",[506,701,702],{},"Downloads, scanning, the readiness and storage checks.",[492,704,705,710,712],{},[506,706,707],{},[420,708,709],{},"ListObjectsV2",[506,711,699],{},[506,713,714],{},"Garbage collection and the storage check.",[492,716,717,722,724],{},[506,718,719],{},[420,720,721],{},"DeleteObject",[506,723,699],{},[506,725,726],{},"Clean up staged uploads; garbage collection.",[416,728,729,730,733,734,736,737,740,741,744],{},"The readiness check (",[420,731,732],{},"\u002Freadyz",") sends ",[420,735,696],{}," for the missing key\n",[420,738,739],{},"readyz\u002Fprobe"," and expects \"not found\". An \"access denied\" answer keeps Relic\nunready. On Amazon S3 this happens when the key lacks ",[420,742,743],{},"s3:ListBucket",".",[481,746,748],{"id":747},"connection-settings","Connection settings",[486,750,751,764],{},[489,752,753],{},[492,754,755,758,761],{},[495,756,757],{},"Variable",[495,759,760],{},"Default",[495,762,763],{},"Meaning",[501,765,766,779,794,809],{},[492,767,768,773,776],{},[506,769,770],{},[420,771,772],{},"RELIC_OBJECT_STORAGE_ENDPOINT",[506,774,775],{},"(empty)",[506,777,778],{},"The S3 API's base URL, with scheme. Empty means Amazon S3.",[492,780,781,786,791],{},[506,782,783],{},[420,784,785],{},"RELIC_OBJECT_STORAGE_REGION",[506,787,788],{},[420,789,790],{},"us-east-1",[506,792,793],{},"The region Relic signs requests for.",[492,795,796,804,806],{},[506,797,798,645,801],{},[420,799,800],{},"RELIC_OBJECT_STORAGE_ACCESS_KEY",[420,802,803],{},"RELIC_OBJECT_STORAGE_SECRET_KEY",[506,805,775],{},[506,807,808],{},"A static key pair. Without one, Relic uses the AWS default credential chain.",[492,810,811,819,825],{},[506,812,813,645,816],{},[420,814,815],{},"RELIC_OBJECT_STORAGE_ARTIFACTS_BUCKET",[420,817,818],{},"RELIC_OBJECT_STORAGE_TEMPORARY_BUCKET",[506,820,821,645,823],{},[420,822,539],{},[420,824,559],{},[506,826,827],{},"Bucket names. They must differ.",[416,829,830,831,834,835,838,839,842,843,744],{},"In the Helm chart, these are ",[420,832,833],{},"objectStorage.*"," values; the key pair is\n",[420,836,837],{},"objectStorageAccessKey"," and ",[420,840,841],{},"objectStorageSecretKey"," in the Secret. See\n",[443,844,207],{"href":86},[481,846,848],{"id":847},"what-relic-does-not-support","What Relic does not support",[416,850,851],{},"No setting changes these.",[437,853,854,864,874,891,900],{},[440,855,856,860,861,435],{},[857,858,859],"strong",{},"Virtual-hosted-style URLs on a custom endpoint."," With an endpoint set,\nRelic sends path-style requests (",[420,862,863],{},"\u003Cendpoint>\u002F\u003Cbucket>\u002F\u003Ckey>",[440,865,866,869,870,873],{},[857,867,868],{},"A session token setting."," Without a static key pair, Relic uses the AWS\ndefault credential chain: ",[420,871,872],{},"AWS_*"," variables, shared credential files, IRSA,\nEKS Pod Identity and instance profiles.",[440,875,876,879,880,883,884,838,887,890],{},[857,877,878],{},"TLS options."," Relic verifies ",[420,881,882],{},"https:\u002F\u002F"," endpoints against the system CA\nbundle, which ",[420,885,886],{},"SSL_CERT_FILE",[420,888,889],{},"SSL_CERT_DIR"," replace. The Helm chart has\nno value to mount such a file.",[440,892,893,896,897,744],{},[857,894,895],{},"Signing options."," Uploads carry the AWS SDK's CRC32 checksums. For a\nservice that rejects them, set ",[420,898,899],{},"RELIC_OBJECT_STORAGE_CHECKSUM=when_required",[440,901,902,905],{},[857,903,904],{},"ACL headers."," The bucket's defaults apply.",[481,907,909],{"id":908},"sizes-and-throughput","Sizes and throughput",[437,911,912,919,922,934],{},[440,913,914,915,918],{},"A file can be up to 5 TiB with ",[420,916,917],{},"Content-Length",", and up to 64 GiB without\n(a chunked transfer).",[440,920,921],{},"Uploads go in 5 MiB parts (larger above about 49 GiB), two in flight per\nupload, so memory stays bounded.",[440,923,924,925,927,928,930,931,933],{},"Objects up to 5 GiB move into ",[420,926,539],{}," with one ",[420,929,671],{},"; larger ones\nwith ",[420,932,674],{}," in 512 MiB parts.",[440,935,936,937,744],{},"Range requests pass straight through to ",[420,938,692],{},[481,940,942],{"id":941},"moving-to-another-provider","Moving to another provider",[416,944,945],{},"Object keys are the same on every provider.",[947,948,949,952,961],"ol",{},[440,950,951],{},"Create the buckets on the new service.",[440,953,954,955,957,958,744],{},"Copy ",[420,956,539],{}," with an S3 sync tool, such as ",[420,959,960],{},"rclone sync",[440,962,963,964,967],{},"Stop the server and the worker. Run the copy again. Point\n",[420,965,966],{},"RELIC_OBJECT_STORAGE_*"," at the new service and start both.",[416,969,970,971,744],{},"You do not need to copy ",[420,972,559],{},[481,974,976],{"id":975},"backups","Backups",[416,978,979,980,982,983,987],{},"Back up the database first, then copy ",[420,981,539],{},". ",[443,984,986],{"href":985},"\u002Fdocs\u002Fguides\u002Foperations#backup","Backup","\nexplains why the order matters.",{"title":989,"searchDepth":990,"depth":990,"links":991},"",2,[992,993,994,995,996,997,998,999,1000],{"id":483,"depth":990,"text":484},{"id":514,"depth":990,"text":515},{"id":590,"depth":990,"text":591},{"id":621,"depth":990,"text":261},{"id":747,"depth":990,"text":748},{"id":847,"depth":990,"text":848},{"id":908,"depth":990,"text":909},{"id":941,"depth":990,"text":942},{"id":975,"depth":990,"text":976},"What Relic keeps in object storage, the buckets and permissions it needs, and what S3 services must support.","md",null,{},true,{"title":123,"description":1001},"TC0-EiCTU75Y7oTd30YE5fCyTTSS64AS3kzTKpbIKc8",[1009,1011],{"title":113,"path":114,"stem":115,"description":1010,"children":-1},"Every environment variable the Relic server and worker read.",{"title":127,"path":128,"stem":129,"description":1012,"children":-1},"Azure Blob Storage as object storage, with workload identity, a managed identity or a connection string.",1793857348881]