[{"data":1,"prerenderedAt":936},["ShallowReactive",2],{"docs-navigation":3,"-docs-installation-single-binary-operations":410,"-docs-installation-single-binary-operations-surround":931},[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":40,"body":412,"description":924,"extension":925,"links":926,"meta":927,"navigation":928,"path":41,"seo":929,"stem":42,"__hash__":930},"docs\u002Fdocs\u002F2.installation\u002F2.single-binary\u002F2.operations.md",{"type":413,"value":414,"toc":918},"minimark",[415,420,458,486,490,497,527,530,598,601,620,631,647,654,671,674,703,707,715,730,733,762,765,779,786,813,816,837,840,844,850,891,908,914],[416,417,419],"h2",{"id":418},"limits","Limits",[421,422,423,436,439,442,445,455],"ul",{},[424,425,426,427,431,432,435],"li",{},"One host only. The server and the worker may run as two processes on the\nsame host. Both default to ",[428,429,430],"code",{},"RELIC_METRICS_LISTEN_ADDRESS=:8091",", so give the\nsecond one its own, such as ",[428,433,434],{},":8092","; otherwise it exits.",[424,437,438],{},"The data must be on a local disk. On Linux, Relic refuses to start on NFS,\nSMB\u002FCIFS, FUSE, NCP, AFS, Coda, 9P, CephFS or Lustre. On macOS and Windows,\nit does not check.",[424,440,441],{},"On Windows, the migration lock file does not work. Start the server first,\nand the worker once the server is up.",[424,443,444],{},"SQLite allows one writer at a time. Reads continue; concurrent pushes queue.",[424,446,447,450,451,454],{},[428,448,449],{},"RELIC_DATABASE_STATEMENT_TIMEOUT"," and ",[428,452,453],{},"RELIC_DATABASE_MAX_CONNECTIONS"," apply\nto PostgreSQL only.",[424,456,457],{},"Text sorts by byte.",[459,460,461,464,465,468,469,472,473,477,478,481,482,485],"p",{},[428,462,463],{},"relic_disk_free_bytes",", ",[428,466,467],{},"relic_disk_size_bytes"," and\n",[428,470,471],{},"relic_db_sqlite_file_bytes"," measure the volume and the database.\nRelicDiskSpaceLow fires below 10% free\n(",[474,475,105],"a",{"href":476},"\u002Fdocs\u002Fguides\u002Fmonitoring#relicdiskspacelow","). When the database's\ndisk is full, writes answer ",[428,479,480],{},"507"," with \"the disk is full\" (",[428,483,484],{},"resource_exhausted","\non the Relic API), as they do when the object store's disk is full (\"object\nstorage is full\"). Reads go on, and writes work again once there is space,\nwithout a restart.",[416,487,489],{"id":488},"backups","Backups",[459,491,492,493,496],{},"Back up the database, the content and ",[428,494,495],{},"RELIC_ENCRYPTION_KEY",". Without the key,\nRelic cannot read the sealed secrets in the database.",[459,498,499,500,503,504,507,508,511,512,515,516,468,519,522,523,526],{},"With ",[428,501,502],{},"relic server setup",", the data is in ",[428,505,506],{},"~\u002F.local\u002Fshare\u002Frelic"," and the key in\n",[428,509,510],{},"~\u002F.config\u002Frelic\u002Fserver.env",". With ",[428,513,514],{},"--system",", they are in ",[428,517,518],{},"\u002Fvar\u002Flib\u002Frelic",[428,520,521],{},"\u002Fetc\u002Frelic\u002Frelic.env",", and the certificate authority in ",[428,524,525],{},"\u002Fetc\u002Frelic\u002Ftls",".",[459,528,529],{},"Back up the database while Relic runs. The snapshot is consistent, and an\nexisting file is never overwritten:",[531,532,537],"pre",{"className":533,"code":534,"language":535,"meta":536,"style":536},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","relic server database backup --database-url \"sqlite:\u002F\u002F$HOME\u002F.local\u002Fshare\u002Frelic\u002Frelic.db\" \u002Fbackups\u002Frelic-$(date +%F).db\n","bash","",[428,538,539],{"__ignoreMap":536},[540,541,544,548,552,555,558,562,566,569,573,576,579,582,586,589,592,595],"span",{"class":542,"line":543},"line",1,[540,545,547],{"class":546},"seIyd","relic",[540,549,551],{"class":550},"sasMN"," server",[540,553,554],{"class":550}," database",[540,556,557],{"class":550}," backup",[540,559,561],{"class":560},"smky3"," --database-url",[540,563,565],{"class":564},"sX5mu"," \"",[540,567,568],{"class":550},"sqlite:\u002F\u002F",[540,570,572],{"class":571},"saDVj","$HOME",[540,574,575],{"class":550},"\u002F.local\u002Fshare\u002Frelic\u002Frelic.db",[540,577,578],{"class":564},"\"",[540,580,581],{"class":550}," \u002Fbackups\u002Frelic-",[540,583,585],{"class":584},"sWneD","$(",[540,587,588],{"class":546},"date",[540,590,591],{"class":550}," +%F",[540,593,594],{"class":584},")",[540,596,597],{"class":550},".db\n",[459,599,600],{},"Then copy the content. Back up the database first: content added in between is\nonly unreferenced in the copy.",[531,602,604],{"className":533,"code":603,"language":535,"meta":536,"style":536},"rsync -a ~\u002F.local\u002Fshare\u002Frelic\u002Fobjects\u002Fartifacts\u002F \u002Fbackups\u002Fobjects\u002F\n",[428,605,606],{"__ignoreMap":536},[540,607,608,611,614,617],{"class":542,"line":543},[540,609,610],{"class":546},"rsync",[540,612,613],{"class":560}," -a",[540,615,616],{"class":550}," ~\u002F.local\u002Fshare\u002Frelic\u002Fobjects\u002Fartifacts\u002F",[540,618,619],{"class":550}," \u002Fbackups\u002Fobjects\u002F\n",[459,621,622,623,625,626,630],{},"Copy the settings, which hold ",[428,624,495],{},". Keep them apart from the\nother backups (",[474,627,629],{"href":628},"\u002Fdocs\u002Fguides\u002Foperations#secrets-at-rest","Secrets at rest","):",[531,632,634],{"className":533,"code":633,"language":535,"meta":536,"style":536},"cp ~\u002F.config\u002Frelic\u002Fserver.env \u002Fsecure\u002Frelic-settings\u002F\n",[428,635,636],{"__ignoreMap":536},[540,637,638,641,644],{"class":542,"line":543},[540,639,640],{"class":546},"cp",[540,642,643],{"class":550}," ~\u002F.config\u002Frelic\u002Fserver.env",[540,645,646],{"class":550}," \u002Fsecure\u002Frelic-settings\u002F\n",[459,648,649,650,630],{},"Copy the certificate authority, or clients must trust a new one\n(",[474,651,653],{"href":652},"\u002Fdocs\u002Finstallation\u002Fconfiguration#tls","TLS",[531,655,657],{"className":533,"code":656,"language":535,"meta":536,"style":536},"cp -r ~\u002F.config\u002Frelic\u002Ftls \u002Fsecure\u002Frelic-settings\u002F\n",[428,658,659],{"__ignoreMap":536},[540,660,661,663,666,669],{"class":542,"line":543},[540,662,640],{"class":546},[540,664,665],{"class":560}," -r",[540,667,668],{"class":550}," ~\u002F.config\u002Frelic\u002Ftls",[540,670,646],{"class":550},[459,672,673],{},"To restore:",[675,676,677,680,694,700],"ol",{},[424,678,679],{},"Stop Relic.",[424,681,682,683,686,687,468,690,693],{},"Put the snapshot in place of ",[428,684,685],{},"relic.db",", and delete ",[428,688,689],{},"relic.db-wal",[428,691,692],{},"relic.db-shm"," if they exist.",[424,695,696,697,526],{},"Copy the content back under ",[428,698,699],{},"objects\u002Fartifacts\u002F",[424,701,702],{},"Start Relic.",[416,704,706],{"id":705},"upgrade","Upgrade",[459,708,709,710,714],{},"The server applies the new release's migrations when it starts. Migrations only\ngo forward and downgrades are not supported, so take a ",[474,711,713],{"href":712},"#backups","backup","\nfirst. To go back, restore the backup and install the old release.",[459,716,717,718,721,722,725,726,526],{},"The install script replaces only the ",[428,719,720],{},"relic-indexer"," builds it downloads, so set\n",[428,723,724],{},"RELIC_INDEXER_PLATFORMS"," to ",[474,727,729],{"href":728},"\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start#local-scans-with-the-jfrog-cli","every platform you installed",[459,731,732],{},"For the user service, install the new release over the binary the service\nruns:",[531,734,736],{"className":533,"code":735,"language":535,"meta":536,"style":536},"curl -fsSL https:\u002F\u002Frelic.build\u002Finstall.sh | env RELIC_VERSION=vX.Y.Z sh\n",[428,737,738],{"__ignoreMap":536},[540,739,740,743,746,749,753,756,759],{"class":542,"line":543},[540,741,742],{"class":546},"curl",[540,744,745],{"class":560}," -fsSL",[540,747,748],{"class":550}," https:\u002F\u002Frelic.build\u002Finstall.sh",[540,750,752],{"class":751},"s8eFF"," |",[540,754,755],{"class":546}," env",[540,757,758],{"class":550}," RELIC_VERSION=vX.Y.Z",[540,760,761],{"class":550}," sh\n",[459,763,764],{},"Run setup again. It keeps the settings and restarts the server on the new\nbinary:",[531,766,768],{"className":533,"code":767,"language":535,"meta":536,"style":536},"relic server setup\n",[428,769,770],{"__ignoreMap":536},[540,771,772,774,776],{"class":542,"line":543},[540,773,547],{"class":546},[540,775,551],{"class":550},[540,777,778],{"class":550}," setup\n",[459,780,781,782,785],{},"For the system service, install the new release in ",[428,783,784],{},"\u002Fusr\u002Flocal\u002Fbin",":",[531,787,789],{"className":533,"code":788,"language":535,"meta":536,"style":536},"curl -fsSL https:\u002F\u002Frelic.build\u002Finstall.sh | sudo env RELIC_VERSION=vX.Y.Z RELIC_INSTALL_DIR=\u002Fusr\u002Flocal\u002Fbin sh\n",[428,790,791],{"__ignoreMap":536},[540,792,793,795,797,799,801,804,806,808,811],{"class":542,"line":543},[540,794,742],{"class":546},[540,796,745],{"class":560},[540,798,748],{"class":550},[540,800,752],{"class":751},[540,802,803],{"class":546}," sudo",[540,805,755],{"class":550},[540,807,758],{"class":550},[540,809,810],{"class":550}," RELIC_INSTALL_DIR=\u002Fusr\u002Flocal\u002Fbin",[540,812,761],{"class":550},[459,814,815],{},"Run setup again as root:",[531,817,819],{"className":533,"code":818,"language":535,"meta":536,"style":536},"sudo relic server setup --system\n",[428,820,821],{"__ignoreMap":536},[540,822,823,826,829,831,834],{"class":542,"line":543},[540,824,825],{"class":546},"sudo",[540,827,828],{"class":550}," relic",[540,830,551],{"class":550},[540,832,833],{"class":550}," setup",[540,835,836],{"class":560}," --system\n",[459,838,839],{},"When you run the server by hand, stop it, replace the binary and start it\nagain.",[416,841,843],{"id":842},"moving-between-postgresql-and-sqlite","Moving between PostgreSQL and SQLite",[459,845,846,849],{},[428,847,848],{},"relic server database copy"," copies every table into an empty database, from\nSQLite to PostgreSQL or back:",[531,851,853],{"className":533,"code":852,"language":535,"meta":536,"style":536},"relic server database copy --from sqlite:\u002F\u002F\u002Fvar\u002Flib\u002Frelic\u002Fdata\u002Frelic.db \\\n  --to 'postgres:\u002F\u002Frelic:\u003Cpassword>@db:5432\u002Frelic?sslmode=require'\n",[428,854,855,876],{"__ignoreMap":536},[540,856,857,859,861,863,866,869,872],{"class":542,"line":543},[540,858,547],{"class":546},[540,860,551],{"class":550},[540,862,554],{"class":550},[540,864,865],{"class":550}," copy",[540,867,868],{"class":560}," --from",[540,870,871],{"class":550}," sqlite:\u002F\u002F\u002Fvar\u002Flib\u002Frelic\u002Fdata\u002Frelic.db",[540,873,875],{"class":874},"s3oUJ"," \\\n",[540,877,879,882,885,888],{"class":542,"line":878},2,[540,880,881],{"class":560},"  --to",[540,883,884],{"class":564}," '",[540,886,887],{"class":550},"postgres:\u002F\u002Frelic:\u003Cpassword>@db:5432\u002Frelic?sslmode=require",[540,889,890],{"class":564},"'\n",[675,892,893,896,899],{},[424,894,895],{},"Stop the server and the worker.",[424,897,898],{},"Run the copy. It migrates the target, refuses one that has data, copies in\none transaction and compares the row counts.",[424,900,901,902,905,906,526],{},"Point ",[428,903,904],{},"RELIC_DATABASE_URL"," at the target and start Relic with the same\n",[428,907,495],{},[459,909,910,911,913],{},"The content stays where it is. To move it to S3, copy ",[428,912,699],{}," into\nthe artifacts bucket first; the keys are the same. Background jobs are not\ncopied.",[915,916,917],"style",{},"html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sX5mu, html code.shiki .sX5mu{--shiki-light:#39ADB5;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .saDVj, html code.shiki .saDVj{--shiki-light:#90A4AE;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sWneD, html code.shiki .sWneD{--shiki-light:#39ADB5;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s8eFF, html code.shiki .s8eFF{--shiki-light:#39ADB5;--shiki-default:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s3oUJ, html code.shiki .s3oUJ{--shiki-light:#90A4AE;--shiki-default:#CF222E;--shiki-dark:#FF7B72}",{"title":536,"searchDepth":878,"depth":878,"links":919},[920,921,922,923],{"id":418,"depth":878,"text":419},{"id":488,"depth":878,"text":489},{"id":705,"depth":878,"text":706},{"id":842,"depth":878,"text":843},"What a single node cannot do, how to back it up, restore and upgrade it, and how to move it to PostgreSQL.","md",null,{},true,{"title":40,"description":924},"_pIKtpYJdEUDMUhRMqycQmCGQPQAFtSbwBe6-exJ6Ns",[932,934],{"title":36,"path":37,"stem":38,"description":933,"children":-1},"Download the relic binary and run it as a service (systemd on Linux, launchd on macOS) with SQLite and a local directory.",{"title":36,"path":50,"stem":51,"description":935,"children":-1},"Pull the Relic image and run it as one container, with SQLite and the content on a volume.",1793857334382]