pgObjectStoreViewer

module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2026 License: Apache-2.0

README ΒΆ

ObjectStoreViewer logo

ObjectStoreViewer

See what is really present in your PostgreSQL backup repository.
Read-only, format-aware, and honest when the evidence is incomplete.

CI status Documentation status OpenSSF Scorecard OpenSSF Best Practices Apache-2.0 license Go 1.26

ObjectStoreViewer is a small web application for inspecting PostgreSQL backup repositories in S3, Azure Blob Storage, and GCS. It turns object-store metadata into a bounded inventory, a Barman backup catalog, WAL continuity diagnostics, and conservative observed recovery coverage.

[!IMPORTANT] ObjectStoreViewer reports structural evidence. It does not prove that a restore will succeed.

✨ Why use it?

  • Read-only by construction β€” the application can list, inspect, and read bounded metadata; it has no upload, delete, restore, or mutation surface.
  • Useful at a glance β€” see completed, running, failed, malformed, missing, or unsupported backups without digging through object keys by hand.
  • WAL-aware β€” inspect compact WAL ranges, timeline history, duplicates, partial files, and candidate or confirmed gaps.
  • Honest uncertainty β€” incomplete, stale, truncated, or unsupported evidence stays unknown; it never quietly becomes healthy.
  • Cloud-neutral β€” the same evidence model is used over S3, Azure, and GCS.

🧩 What is available?

Capability Status
Barman Cloud inventory, backup catalog, WAL and timelines βœ… Available
S3, Azure Blob Storage, and GCS adapters βœ… Available
Standalone web dashboard βœ… Available
pgConsole sidecar evidence producer πŸ§ͺ Integration preview
pgBackRest catalog and dependency semantics 🚧 Planned
Raw backup download or restore operations β›” Not provided

πŸš€ Quick start

You need Go 1.26+, make, a repository root, and credentials restricted to list/get operations.

git clone https://github.com/fyannk/pgObjectStoreViewer.git
cd pgObjectStoreViewer
make build

REPOSITORY_FORMAT=barman-cloud \
PROVIDER=s3 \
DESTINATION_PATH=s3://example-backups/repository \
AWS_REGION=eu-west-1 \
./bin/objectstoreviewer

Then open http://localhost:3000.

URL Purpose
/ Backup inventory and evidence summary
/wals Searchable Barman WAL evidence
/healthz Process liveness
/readyz Configuration and recent store reachability

The example uses the AWS workload-identity chain. Static credentials are accepted only through mounted files; see the configuration guide.

Other providers

Only the provider coordinates change:

# Azure
PROVIDER=azure
DESTINATION_PATH=azure://backup-container/repository

# GCS
PROVIDER=gcs
DESTINATION_PATH=gs://backup-bucket/repository

Provider-specific identity options are documented in Configuration.

πŸ“¦ Run it as a container

Versioned, multi-architecture images are published to GitHub Container Registry with SBOM and provenance attestations:

docker pull ghcr.io/fyannk/pgobjectstoreviewer:v0.1.2

The latest release also provides Linux amd64/arm64 binaries, checksums, an SPDX SBOM, license inventory, vulnerability report, and the immutable image digest.

For Kubernetes, adapt the hardened deploy/kubernetes-example.yaml manifest and its read-only policies under deploy/policies/.

[!WARNING] The standalone application provides no authentication or TLS. Put it behind an authentication proxy and an operator-managed network boundary. Never expose its port directly.

πŸ“š Documentation

The details live in the documentation site:

🀝 Contributing

Bug reports, format edge cases, fixtures, documentation fixes, and pull requests are welcome. Start with:

make test       # fast, hermetic unit suite
make test-fuzz  # bounded fuzzing of untrusted metadata and cursors
make check      # complete non-Docker verification
make docs       # type-check and build the documentation site

Docker-backed provider, scale, and restricted-runtime checks are described in the verification guide. Read CONTRIBUTING.md before changing behavior, and note that participation is governed by the Code of Conduct.

πŸ” Security

Found a vulnerability? Do not open a public issue. Report it privately through GitHub Security Advisories. SECURITY.md covers supported versions, what is in and out of scope, and how to verify the provenance of what you run.

πŸ“„ License

ObjectStoreViewer is available under the Apache License 2.0.

Directories ΒΆ

Path Synopsis
api module
cmd
internal
application
Package application assembles the provider-neutral runtime and background inventory lifecycle.
Package application assembles the provider-neutral runtime and background inventory lifecycle.
evidence
Package evidence contains only facts with identical meaning across every repository format.
Package evidence contains only facts with identical meaning across every repository format.
evidenceapi
Package evidenceapi projects one immutable inventory generation into the versioned pgConsole evidence contract.
Package evidenceapi projects one immutable inventory generation into the versioned pgConsole evidence contract.
fault
Package fault defines the stable, non-sensitive failure vocabulary exposed across provider, format, logging, and HTTP boundaries.
Package fault defines the stable, non-sensitive failure vocabulary exposed across provider, format, logging, and HTTP boundaries.
formats
Package formats assembles isolated repository-format modules.
Package formats assembles isolated repository-format modules.
formats/barmancloud
Package barmancloud owns Barman Cloud scope layout, backup catalog semantics, WAL-name continuity, timeline ancestry, and observed recovery coverage.
Package barmancloud owns Barman Cloud scope layout, backup catalog semantics, WAL-name continuity, timeline ancestry, and observed recovery coverage.
formats/pgbackrest
Package pgbackrest owns pgBackRest stanza layout.
Package pgbackrest owns pgBackRest stanza layout.
inventory
Package inventory owns immutable provider-neutral object inventory snapshots.
Package inventory owns immutable provider-neutral object inventory snapshots.
provider/azure
Package azure implements the read-only Blob Storage boundary.
Package azure implements the read-only Blob Storage boundary.
provider/cursor
Package cursor confines provider continuation tokens to one store and prefix.
Package cursor confines provider continuation tokens to one store and prefix.
provider/gcs
Package gcs implements the read-only Google Cloud Storage boundary.
Package gcs implements the read-only Google Cloud Storage boundary.
provider/providertest
Package providertest contains provider-independent end-to-end acceptance contracts.
Package providertest contains provider-independent end-to-end acceptance contracts.
provider/s3
Package s3 implements the provider-neutral read store using only S3 list, get, and head operations.
Package s3 implements the provider-neutral read store using only S3 list, get, and head operations.
readiness
Package readiness tracks only configuration validity and a lightweight, recent store reachability result.
Package readiness tracks only configuration validity and a lightweight, recent store reachability result.
redact
Package redact provides last-resort boundary redaction.
Package redact provides last-resort boundary redaction.
repository
Package repository owns explicit format selection and conservative common descriptors.
Package repository owns explicit format selection and conservative common descriptors.
store
Package store is the complete object-store capability visible to domain code.
Package store is the complete object-store capability visible to domain code.
store/storetest
Package storetest contains the deterministic read-store fake shared by provider-neutral and repository-format contract tests.
Package storetest contains the deterministic read-store fake shared by provider-neutral and repository-format contract tests.
web
Package web renders only the conservative evidence envelope.
Package web renders only the conservative evidence envelope.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL