Self-host Nhost
Open-source Firebase alternative built on Postgres and Hasura's instant GraphQL API, with authentication, file storage, and serverless functions in one Docker Compose stack.
Key facts
Reach for Nhost when you want Hasura's instant GraphQL API over Postgres bundled with auth, storage, and functions — a strong fit if your app is GraphQL-first rather than REST-first. Budget 2 GB and expect to do more assembly than Supabase's official stack: the self-hosted path is a community Docker Compose reference, not the product Nhost sells as managed cloud.
What you need
- Any VPS with at least 2048 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- About the better part of a day
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Nhost — self-hosting reference stack (community-maintained; no formal support without a paid agreement)
git clone https://github.com/nhost/nhost
cd nhost/examples/docker-compose
cp .env.example .env
# MinIO removed its images from Docker Hub (Sept 2026); the pinned minio/minio tag no longer pulls, so swap in Chainguard's free MinIO build (latest tag only)
sed -i 's|image: minio/minio:.*|image: cgr.dev/chainguard/minio:latest|' docker-compose.yaml
docker compose up -dWhat you take on
Nhost is Postgres and Hasura underneath, both mature — but the self-hosted packaging asks more of you than the hosted product does:
An alternative to
More in Backend & BaaS
Appwrite
Directus
PocketBase
Supabase
Common questions
Why does docker compose fail with "pull access denied for minio/minio, repository does not exist"?
MinIO removed its minio/minio and minio/mc images from Docker Hub in September 2026, and quay.io has refused anonymous pulls since 24 September. Nhost's example compose still pins minio/minio:RELEASE.2025-02-28T09-55-16Z (checked 2026-09-28), so the whole pull aborts before anything starts. The install above swaps in Chainguard's free MinIO build (cgr.dev/chainguard/minio:latest); with that one change the full stack installed cleanly on a fresh Ubuntu 26.04 server on 2026-09-29. Chainguard only publishes that image as latest, and the community MinIO line gets no further security fixes, so for anything long-lived consider pointing Nhost's storage at a different S3-compatible server.