Get a complete backend up and running in minutes. This is a fully managed, extensible backend platform designed for speed, flexibility, and scale, letting you focus on product features instead of infrastructure. It provides a complete stack that is ready to use from day one and easy to extend as your project grows.
Whether you're building a side project or the core infrastructure for a scaling startup, this platform is built to handle your needs from the first prototype to millions of users. Key features include:
Develop locally with a powerful CLI and ship globally without needing any DevOps expertise.
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: nhost
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: nhost
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
graphql:
image: hasura/graphql-engine:v2.33.0
restart: always
depends_on:
- postgres
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://nhost:${POSTGRES_PASSWORD}@postgres:5432/nhost
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET}
HASURA_GRAPHQL_JWT_SECRET: '{"type":"HS256", "key":"${JWT_SECRET}"}'
HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public
HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
HASURA_GRAPHQL_DEV_MODE: "true"
ports:
- "8080:8080"
auth:
image: nhost/hasura-auth:0.34.0
restart: always
depends_on:
- graphql
- postgres
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://nhost:${POSTGRES_PASSWORD}@postgres:5432/nhost
HASURA_GRAPHQL_GRAPHQL_URL: http://graphql:8080/v1/graphql
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET}
AUTH_JWT_SECRET: '{"type":"HS256", "key":"${JWT_SECRET}"}'
AUTH_SERVER_URL: http://localhost:4000/v1/auth
AUTH_CLIENT_URL: http://localhost:3000
ports:
- "4000:4000"
minio:
image: minio/minio:latest
restart: always
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
volumes:
- ./data/minio:/data
ports:
- "9000:9000"
- "9001:9001"
minio-setup:
image: minio/mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
sleep 5;
mc alias set myminio http://minio:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD};
mc mb myminio/nhost || true;
mc anonymous set public myminio/nhost;
exit 0;
"
storage:
image: nhost/hasura-storage:0.7.0
restart: always
depends_on:
- graphql
- minio
- minio-setup
environment:
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET}
HASURA_GRAPHQL_GRAPHQL_URL: http://graphql:8080/v1/graphql
S3_ACCESS_KEY: ${MINIO_ROOT_USER}
S3_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
S3_ENDPOINT: http://minio:9000
S3_BUCKET: nhost
PUBLIC_URL: http://localhost:8000/v1/storage
ports:
- "8000:8000"POSTGRES_PASSWORD=super_secret_postgres_password
HASURA_GRAPHQL_ADMIN_SECRET=my_super_secret_admin_secret
JWT_SECRET=my_32_character_ultra_secure_secret_key
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123Auto-fetched about 22 hours ago
Auto-fetched about 22 hours ago