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:
| Service | Role in Exhibit |
|---|---|
| Firebase App Hosting | Builds and serves the Next.js web application with Server-Side Rendering (SSR), automatic HTTPS certificates, and global CDN caching. |
| Firebase Authentication | Handles passwordless email-link sign-in (/enter) restricted to your institution's approved email domains, plus optional anonymous sessions. |
| Cloud Firestore | Stores user accounts, usernames, exhibits, framing annotations, item references, and uploaded file metadata with real-time synchronisation. |
| Cloud Storage for Firebase | Stores 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:
- 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.
- A custom domain or subdomain (optional but recommended): For example,
exhibits.yourinstitution.org, with ability to add DNS records (A/CNAMEandTXT) to connect it to Firebase App Hosting and verify email-link sign-in domains. - Approved institutional email domains: A list of one or more email domains (such as
st-andrews.ac.ukorcam.ac.uk) whose staff and students should be permitted to sign in at/enter. - 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.