Backend as a Service

sh0 provides a complete BaaS stack on your own server -- database, API, auth, realtime, and functions -- without vendor lock-in.

What is BaaS?

Backend as a Service (BaaS) gives frontend and mobile developers a ready-made backend: a database with an auto-generated API, authentication, real-time messaging, and serverless functions. Instead of building and maintaining a custom backend, you configure services and connect them to your client app.

Popular hosted BaaS platforms include Supabase, Firebase, and Appwrite. sh0 brings the same capabilities to your own infrastructure -- self-hosted, open-source components, flat pricing, and full control.

The sh0 BaaS Stack

sh0's BaaS is composed of four managed services, each backed by a proven open-source project:

ServiceEnginePurpose
PostgREST APIPostgRESTAuto-generated REST API from PostgreSQL schema
AuthenticationLogtoOIDC-compliant auth with social login and admin console
RealtimeCentrifugoWebSocket channels, presence, and pub/sub messaging
FunctionsDenoServerless TypeScript/JavaScript functions

All four services are managed by sh0 -- provisioned with one click, auto-configured with SSL, and connected to your PostgreSQL database servers.

Comparison with Supabase & Appwrite

Featuresh0SupabaseAppwrite
HostingSelf-hosted (your server)Hosted or self-hostedHosted or self-hosted
REST APIPostgRESTPostgRESTCustom REST API
AuthLogto (OIDC)GoTrueCustom auth
RealtimeCentrifugoRealtime (Elixir)Realtime (custom)
FunctionsDenoDenoMultiple runtimes
PricingFlat license feeUsage-basedUsage-based
App HostingFull PaaS includedNot includedNot included
Tip
sh0 is not just a BaaS -- it is a full deployment platform. You get app hosting, Git deploy, Docker Compose, monitoring, backups, and more alongside the BaaS services.

Architecture

Each BaaS service runs as a managed container on your server, orchestrated by sh0:

  • PostgREST connects directly to your PostgreSQL database server and exposes tables as REST endpoints.
  • Logto runs as a standalone auth server, storing user data in a PostgreSQL database you control.
  • Centrifugo runs as an independent WebSocket server. Your backend publishes messages via HTTP; clients connect via WebSocket.
  • Deno runs as a sandboxed runtime for your TypeScript functions, invoked via HTTP.

All services get automatic SSL via Caddy, domain routing, and health monitoring from sh0. They can communicate with each other over the internal Docker network.

Getting Started

To start using BaaS features, you need:

  1. A running sh0 instance (see Installation).
  2. A PostgreSQL database server (see Database Provisioning).
  3. Enable the BaaS services you need from the dashboard.

Each service is independent -- enable only what you need. Start with the individual guides: