baz1536/registryview

By baz1536

Updated 12 days ago

A selfhosted Docker Registry browser, inspect and bulk-delete images across multiple registries.

Image
Networking
Monitoring & observability
0

981

baz1536/registryview repository overview

RegistryView

A self-hosted Docker Registry browser. Browse, inspect, and delete images and tags across multiple private registries from a single dark-themed UI.

Note: RegistryView is a companion UI for the official Docker Registry image (registry:3, also compatible with registry:2). It does not include a registry — you need to be running your own private registry for RegistryView to connect to.


Features

  • Multi-registry support — manage multiple private registries, each with their own credentials
  • Encrypted storage — registry passwords are encrypted at rest using AES-256-GCM
  • Bulk deletion — select and delete multiple tags at once across multiple repos
  • Architecture badges — see which platforms (amd64, arm64, etc.) each tag was built for
  • Session auth — optional login screen to protect the UI
  • Two-factor authentication — optional TOTP 2FA (Google Authenticator, Authy, 1Password, etc.), managed from the Security page
  • Outbound proxy support — reach registries via HTTP/HTTPS proxy with NO_PROXY support

Supported Platforms

  • linux/amd64
  • linux/arm64

Quick Start

services:
  registryview:
    image: baz1536/registryview:latest
    container_name: registryview
    restart: unless-stopped
    ports:
      - "3544:3544"
    environment:
      PORT: 3544
      NODE_ENV: production
      SESSION_SECRET: change-me-to-a-long-random-string
      ENCRYPTION_KEY: change-me-to-a-long-random-string
    volumes:
      - registryview_data:/app/data
      - registryview_logs:/app/logs

volumes:
  registryview_data:
  registryview_logs:

Then open http://localhost:3544 in your browser and add your first registry.


Environment Variables

Server
VariableRequiredDefaultDescription
PORTNo3544Port the server listens on
NODE_ENVNodevelopmentSet to production in Docker
Authentication
VariableRequiredDefaultDescription
AUTH_ENABLEDNotrueSet to false to disable the login screen entirely
UI_USERNAMEIf auth onadminUsername for the login screen
UI_PASSWORDIf auth onPassword for the login screen. Server will not start without this set when auth is enabled.
SESSION_SECRETYesLong random string used to sign session cookies

Two-factor authentication is optional and managed from the Security page once logged in. When you click Set up 2FA, a TOTP secret is generated and stored encrypted in mfa.json in your data volume. Scan the QR code with your authenticator app, verify a code to confirm, and 2FA is automatically enabled.

To disable or reset 2FA, use the buttons on the Security page — no server restart or env var changes needed. If you lose access to your authenticator app, click Reset secret to generate a fresh QR code to re-scan.

Security
VariableRequiredDefaultDescription
ENCRYPTION_KEYYesLong random string used to encrypt registry passwords at rest

Important: Both SESSION_SECRET and ENCRYPTION_KEY should be long, random strings. Generate one with:

openssl rand -hex 32

If ENCRYPTION_KEY changes, existing registry passwords will no longer decrypt — you will need to re-enter them.

Storage
VariableRequiredDefaultDescription
DATA_DIRNo/app/dataDirectory to store registry configuration (registries.json)
LOG_DIRNo/app/logsDirectory to write daily log files
LOG_LEVELNoinfoLog verbosity: error, warn, info, debug
Outbound Proxy

If your registries are only reachable via an HTTP/HTTPS proxy:

VariableRequiredDefaultDescription
HTTPS_PROXYNoProxy URL for outbound registry connections, e.g. http://proxy.internal:3128
HTTP_PROXYNoFallback proxy URL for HTTP registries
NO_PROXYNoComma-separated list of hosts to bypass the proxy, e.g. localhost,.internal,192.168.1.5

Volumes

PathDescription
/app/dataRegistry configuration with encrypted credentials — mount this to persist your registries
/app/logsDaily rotating log files

Full Docker Compose Example

services:
  registry:
    image: registry:latest
    container_name: registry
    restart: unless-stopped
    environment:
      REGISTRY_STORAGE_DELETE_ENABLED: "true"
    volumes:
      - registry_storage:/var/lib/registry

  registryview:
    image: baz1536/registryview:latest
    container_name: registryview
    hostname: registryview
    restart: unless-stopped
    depends_on:
      - registry
    mem_limit: 256m
    ports:
      - "3544:3544"
    environment:
      TZ: Europe/London
      PORT: 3544
      NODE_ENV: production

      # Authentication
      AUTH_ENABLED: "true"
      UI_USERNAME: admin
      UI_PASSWORD: your-secure-password

      # Security — generate with: openssl rand -hex 32
      SESSION_SECRET: your-long-random-session-secret
      ENCRYPTION_KEY: your-long-random-encryption-key

      # Storage
      DATA_DIR: /app/data
      LOG_DIR: /app/logs
      LOG_LEVEL: info

      # Outbound proxy (optional)
      # HTTPS_PROXY: http://proxy.internal:3128
      # NO_PROXY: localhost,127.0.0.1,.internal

    volumes:
      - registryview_data:/app/data
      - registryview_logs:/app/logs

volumes:
  registry_storage:
  registryview_data:
  registryview_logs:

Notes

  • Reverse proxy — if running behind Nginx or another reverse proxy, ensure NODE_ENV=production is set. RegistryView sets trust proxy automatically, so rate limiting and secure cookies work correctly with X-Forwarded-For headers.
  • Rate limiting — login attempts are rate-limited to 5 per 15 minutes per IP.
  • Registry v3 — RegistryView works with both registry:2 and registry:3. The HTTP API is unchanged (/v2/). If running registry:3, note the garbage collection config path changed to /etc/distribution/config.yml.
  • Registry URL format — enter hostnames only, without scheme: docker.example.com or localhost:5000. RegistryView will use https:// for remote hosts and http:// for localhost/IP addresses automatically.
  • Deleting images — deletion requires the registry to have REGISTRY_STORAGE_DELETE_ENABLED=true set. This is off by default in the official Docker Registry image.
  • Empty repositories — Docker Registry v2 has no API to remove repository entries from the catalog. Repos with 0 tags will remain listed until removed from the registry's storage backend directly.

Source

GitHub: https://github.com/baz1536/registryview

License

MIT — Copyright © 2026 dBR Promotions

Tag summary

Content type

Image

Digest

sha256:055cbcb94

Size

86.5 MB

Last updated

12 days ago

docker pull baz1536/registryview