Skip to main content

Architecture and Requirements

A self-hosted Exhibit instance runs entirely on serverless Google Cloud Platform (GCP) and Firebase infrastructure within your institution's own cloud project. There are no virtual machines or database servers to patch manually, and resources scale down automatically when idle.

System architecture

Exhibit is structured around four managed Firebase and Google Cloud services:

ServiceRole in Exhibit
Firebase App HostingBuilds and serves the Next.js web application with Server-Side Rendering (SSR), automatic HTTPS certificates, and global CDN caching.
Firebase AuthenticationHandles passwordless email-link sign-in (/enter) restricted to your institution's approved email domains, plus optional anonymous sessions.
Cloud FirestoreStores user accounts, usernames, exhibits, framing annotations, item references, and uploaded file metadata with real-time synchronisation.
Cloud Storage for FirebaseStores uploaded images, 3D .glb models, audio/video files, generated deep-zoom image pyramid tiles, and IIIF Presentation 3.0 manifests (index.json).
Cloud Functions (2nd Gen)Runs event-driven background tasks when files are uploaded: tiling images with Sharp/libvips, capturing 3D thumbnails with headless Chromium, extracting optional AI metadata/tags via Gemini, and compiling IIIF manifests.

Optional Central Hub connectivity

Self-hosted instances can also connect to the Exhibit Central Hub (exhibit.so) using a scoped Hub API key. This gives authors in your instance access to the shared Discover search index of curated IIIF manifests from museums, libraries, and universities worldwide right inside the Add Items window.

Prerequisites and requirements

To set up and run a self-hosted Exhibit instance, you need:

  1. A Google Cloud / Firebase project on the Blaze (pay-as-you-go) plan: Firebase App Hosting, Cloud Functions (2nd Gen), and Cloud Storage triggers require a Firebase project linked to a Google Cloud Billing account (Firebase pricing). Typical institutional operating costs are very low because all services are usage-based and scale to zero when not in use.
  2. A custom domain or subdomain (optional but recommended): For example, exhibits.yourinstitution.org, with ability to add DNS records (A / CNAME and TXT) to connect it to Firebase App Hosting and verify email-link sign-in domains.
  3. Approved institutional email domains: A list of one or more email domains (such as st-andrews.ac.uk or cam.ac.uk) whose staff and students should be permitted to sign in at /enter.
  4. GitHub repository access: Access to the Exhibit repository (or a fork connected to Firebase App Hosting) to deploy updates and configure your instance settings.

See Setting Up an Instance for step-by-step provisioning instructions.