Self-Hosting Hive Console
If you cannot use the hosted Hive Console service, you can run Hive Console on your own infrastructure. The self-hosted version is free and open source. Its source code is available on GitHub.
If you want to host a gateway rather than the schema registry, see the documentation for Hive Router or Hive Gateway.
Prerequisites
The quickest way to evaluate Hive Console is with the provided community Docker Compose stack. You need:
- Docker Engine or Docker Desktop
- Docker Compose v2, invoked as
docker compose - OpenSSL for generating secrets
- Internet access to the Hive Console images on GHCR
- Persistent disk space for the databases, broker, cache, and object storage
Architecture
The community Compose stack starts the following infrastructure:
- PostgreSQL 16 for users, organizations, projects, targets, schemas, checks, and configuration
- ClickHouse for GraphQL operation usage data
- Redis for caching and short-lived data
- Redpanda as a Kafka-compatible broker for usage reports
- MinIO as S3-compatible storage for schema artifacts and audit logs
- Caddy as a reverse proxy for MinIO
It also starts these Hive services:
app: the Hive Console web applicationserver: the GraphQL API, authentication, and fallback artifact distribution endpointsschema: schema validation, composition, and artifact generationpolicy: schema policy validationworkflows: asynchronous work, including emails, webhooks, and alertsusage: receives operation usage reports and publishes them to Redpandausage-ingestor: processes usage reports and stores them in ClickHousemigrations: applies PostgreSQL and ClickHouse migrations beforeserverstartss3_provision_buckets: creates the required MinIO buckets
The service dependencies and currently bundled image versions are defined in
docker-compose.community.yml.
Run Hive Console Locally
1. Choose a Release
Use the Compose file and Hive images from the same release. Available versions are listed on the
GitHub Releases page with the hive@ prefix.
The latest release at the time this guide was updated is hive@11.11.1:
The trailing slash in DOCKER_REGISTRY and the leading colon in DOCKER_TAG are required. Pinning
both the Compose file and images prevents an upgrade from unexpectedly changing only part of the
stack.
2. Generate Local Secrets
Run the following commands in the same shell:
Hive’s native authentication implementation also requires an RSA access-token key:
The SUPERTOKENS_* variable names are retained for compatibility; the current stack does not run a
separate SuperTokens service.
3. Validate and Start the Stack
Validate the resolved configuration before pulling images:
The one-shot migrations service applies PostgreSQL and ClickHouse migrations automatically. The
server service starts only after migrations and MinIO bucket provisioning complete successfully.
If startup fails, inspect those services first:
The Compose file creates .hive/ next to itself and bind-mounts the persistent data into that
directory:
4. Open Hive Console
Open http://localhost:8080, create an account, then create an organization, project, and target. Generate a registry token with read and write access from the target’s settings.
The local endpoints are:
| URL or port | Purpose |
|---|---|
http://localhost:8080 | Hive Console web application |
http://localhost:8081 | Usage-reporting API |
http://localhost:8082/graphql | GraphQL API and subscriptions |
http://localhost:8082/artifacts/v1/... | Fallback artifact distribution endpoints |
http://localhost:8083 | Caddy proxy to the MinIO S3 API |
http://localhost:9000 | Direct MinIO S3 API |
http://localhost:9001 | MinIO administration console |
localhost:9092 | Redpanda Kafka listener |
http://localhost:9644 | Redpanda metrics and administration endpoint |
5. Publish a Schema
Install the Hive CLI:
Create a schema file:
Configure the CLI to use your local instance and replace <registry-token> with the token generated
in Hive Console:
Add hive.json to .gitignore, then publish the schema:
The published schema appears in the target’s Schema tab.
6. Stop the Stack
Stop the containers without removing the bind-mounted data:
Optional Configuration
Listen Address
To change which interface Hive services bind to, set SERVER_HOST (default ::) and, if needed,
SERVER_HOST_IPV6_ONLY=1 to disable IPv4 fallback for the IPv6 wildcard host.
For the community Compose stack, keep SERVER_HOST as :: or 0.0.0.0. Loopback values such as
127.0.0.1, ::1, or localhost can make published ports and service-to-service communication
unreachable. SERVER_HOST_IPV6_ONLY=1 cannot be combined with an IPv4 literal such as 0.0.0.0.
See the Fastify listen reference for host resolution details.
Data Retention
The migration service accepts optional ClickHouse TTL settings:
Numeric day counts are also accepted. When configured, migrations apply the retention changes and update each organization’s retention limit to the longest configured period.
Production Considerations
The community Compose file is configured for localhost. Changing only HIVE_APP_BASE_URL is not
enough for a remote deployment because the public GraphQL, subscription, and artifact URLs in the
file also default to localhost. A remote deployment needs overrides for all public URLs, an HTTPS
reverse proxy, and routing for the web application, GraphQL and WebSocket API, artifact endpoints,
and usage API.
Before using Hive Console in production:
- Replace the single-node PostgreSQL, ClickHouse, Redpanda, Redis, and MinIO containers with managed services or properly operated equivalents.
- Configure backups and test restoration procedures.
- Restrict infrastructure ports. The bundled MinIO and Redpanda ports must not be exposed directly to the public internet.
- Configure
workflowswith an SMTP or Postmark email provider instead of the defaultsendmail. - Configure monitoring, metrics, tracing, and error reporting. The community stack does not include Prometheus, Grafana, an OpenTelemetry Collector, or Sentry.
- Preserve all encryption and authentication secrets during upgrades.
- Read every intervening entry in the self-hosting changelog, back up the installation, and fetch the Compose file from the target release before upgrading.
Service-specific configuration is documented in the source repository: