Favicon of Nhost

Nhost

Build and deploy a scalable backend in minutes. Get a complete stack with a local CLI, Git-based CI/CD, and managed infrastructure for rapid development.

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:

  • Modern Developer Experience: Run the entire stack locally with a single CLI command for instant setup.
  • Simple Git-based Deployments: Push your code and the built-in CI/CD pipeline automatically deploys your backend.
  • Production-Ready Infrastructure: Benefit from autoscaling, load balancing, and global deployment across multiple regions and CDN locations.
  • Built-in Observability: Easily monitor your application's performance and gain insights into user activity.

Develop locally with a powerful CLI and ship globally without needing any DevOps expertise.

Directory Structure

nhost
data
minio
postgres
.env

docker-compose.yml

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"

.env

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=minioadmin123
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Nhost

Favicon

 

  
  
Favicon

 

  
  
Favicon