Repositories are managed on the “Settings” → “Repositories” page. Repository types, formats, and caching are described in Repositories and formats and Proxying and caching.

Repository list

The list shows the repositories you have administration rights for. Columns: “Name”, “Format”, “Type”, “URL”, “Online”, “Remote”.

  • “URL” — the address for clients; for Docker (OCI) repositories, the pull reference is shown with the “pull ref” mark.
  • “Online” — whether the repository serves clients. With the no value, requests to it are rejected while the content stays in place: this is how a repository is taken out of service without deleting it.
  • “Remote” — the state of the connection to the external registry (proxy only):
StateMeaning
“Ready”No exchange with the external registry yet
“Available”The external registry responds
“Auto-blocked”Outbound requests are paused automatically: the registry is unreachable; the tooltip shows the next retry time
“Blocked”Outbound requests are blocked manually in the repository settings
“Unavailable”The registry is unreachable (auto-blocking is off)

The cause is printed under the state when it is known: unauthorized — the registry rejected the credentials; service unavailable, bad gateway, gateway timeout — the answer of the registry itself; upstream connection failure — the request never reached the registry; background probe failed — the background availability probe failed. A cause on the “Available” state means a special case: the registry responds but rejects the credentials while auto-blocking is off. The state is highlighted amber in that case, and uncached requests answer 502.

Auto-blocking clears itself once the external registry responds again. To clear it early, when the registry is already fixed but the next retry window has not come yet, save the repository settings with the “Save” button: the auto-blocking counter is reset.

Creating

Click “+ New repository” and fill in the form:

  1. “Name”, “Format”, “Type”, and the storage are fixed at creation — they cannot be changed later.

  2. The “online” checkbox keeps the repository in service; clearing it lets you create a repository in advance and open it to clients later.

  3. writePolicy (hosted only) — what clients are allowed to do with the content:

    • ALLOW — publish, overwrite, and delete;
    • ALLOW_ONCE — publish and delete, but not overwrite what is already published. Deleting is allowed, so “delete and publish again” remains a way to replace a version: the policy forbids overwriting rather than guaranteeing immutability;
    • DENY — read-only: publishing, overwriting, and deleting are all refused.

    The policy applies on every write path: in the format clients, docker push included, and on deletion in the web interface. For npm, RubyGems, PyPI, and Cargo the form suggests ALLOW_ONCE — versions of these formats are conventionally immutable.

  4. For a proxy repository, fill in the caching block:

    • “Remote URL” — the external registry address; the placeholder suggests the standard address for each format;
    • contentMaxAge (minutes) and metadataMaxAge (minutes) — cache retention periods: a positive number sets minutes (1440 by default), 0 — check the external registry on every request, -1 — cache indefinitely. Which files count as content and which as metadata is described in Proxying and caching;
    • negativeCache.enabled and negativeCache.timeToLive (minutes) — the negative cache (15 minutes by default).
  5. “Block outbound connections” — a manual freeze of requests to the external registry: only the cache is served, everything else answers 404.

  6. “Auto-block outbound connections” — an automatic pause of requests while the external registry is unreachable: the cache is served, uncached requests answer 502. Enabled by default in the form.

  7. “Authentication” — the external registry credentials: type username (a username and password) or bearerToken (a static token).

  8. “HTTP request settings” — the number of retries (retries), the timeout, and the User-Agent suffix of outbound requests.

  9. “Cleanup policies” — the binding of automatic deletion policies; policies of the same format are offered. What they delete and how they run is described in Cleanup policies.

  10. Format-specific fields:

    • Maven — maven.versionPolicy (RELEASE / SNAPSHOT / MIXED);
    • raw — raw.contentDisposition (INLINE — the browser renders files, ATTACHMENT — forced download);
    • Cargo proxy — cargo.requireAuthentication (the cargo client will send credentials);
    • Docker proxy — insecureSkipTlsVerify (disables TLS certificate validation of the external registry — only for trusted private registries with self-signed certificates).

Creating a repository automatically produces its privilege set (see Access control).

Editing and maintenance

The “Edit” button opens the same settings, except those fixed at creation. Stored secrets are not displayed: an empty password field means “keep the stored one” (the “Leave empty to keep the stored secret” hint); when the registry address or the authentication type changes, the secret must be re-entered.

For any proxy repository, the edit dialog offers the “Invalidate cache” button. It does not delete the cached content but marks it stale: every following request is first checked against the external registry and only then served to the client. The negative cache, the remembered “not found” responses, is cleared as well. The operation requires the repository edit privilege; repeating it changes nothing.

The “Run cleanup” button runs the bound cleanup policies over this repository right away, without waiting for the scheduled pass. It asks for confirmation: the components that match the criteria of those policies are deleted irreversibly.

Deleting a repository

The “Delete” button removes the repository together with its artifacts. The repository disappears from the catalog at once: from that moment requests to it are answered with “not found”. The disk space is reclaimed by a subsequent garbage collection run.

If the deletion of a docker repository was not carried through (the server was stopped at that moment, for example), creating a repository under the same name answers with the cleanup_in_progress error. The garbage collection completes the deletion: start it with the “Run” button on the “Settings” → “Garbage Collection” page.

Starter set

On an empty database, eight repositories are created:

RepositoryFormatTypeWrite policyPurpose
maven-centralmaven2proxyMaven Central mirror; content is cached indefinitely
maven-releasesmaven2hostedALLOW_ONCERelease Java artifacts (immutable)
maven-snapshotsmaven2hostedALLOWSnapshot versions
go-proxygoproxyproxy.golang.org mirror
go-hostedgohostedALLOWInternal Go modules
go-sumdbrawproxyThe Go checksum database (sum.golang.org)
docker-hosteddockerhostedALLOWInternal container images (tags are overwritable)
docker-hub-proxydockerproxyDocker Hub mirror, no credentials

All proxy repositories of the set have auto-blocking enabled. The anonymous role is pre-granted read privileges for the four public mirrors — the access is activated by the global anonymous access switch.