PocketBase
pocketbase/pocketbase ↗ ·★ 38.0k ·Go ·MIT
Open source backend in a single file — embedded SQLite database, realtime subscriptions, auth and file storage. Ships as one Go binary, ideal for container and VM hosts.
Overview
PocketBase compresses an entire backend into a single Go binary: an embedded SQLite database, a REST API, realtime subscriptions, user authentication, file storage and an admin dashboard, all in one file you can run anywhere. For MVPs and side projects, it removes the usual ceremony of wiring together a database, an auth service and an API layer — you download one executable and you have a backend.
Because it is self-contained, PocketBase is a natural fit for container and VM hosts rather than static platforms. It shines on Fly.io, Railway and Render, where you can run the binary or its Docker image continuously. The one thing to get right is storage: PocketBase keeps its data in an on-disk SQLite file, so you attach a persistent volume to make sure that file survives restarts and deploys.
You can use PocketBase two ways. Most people run it as-is and build any frontend against its auto-generated APIs and realtime channels. If you need custom server logic, it doubles as a Go framework you can extend. The trade-off to understand is that it is single-node by design — excellent for a huge range of apps, but not aimed at workloads that need horizontal scaling or very high concurrent write throughput.
Highlights
- ✓ Entire backend in a single executable — database, API, auth and admin UI
- ✓ Embedded SQLite with realtime subscriptions over WebSockets
- ✓ Built-in user auth, file storage and an admin dashboard
- ✓ Extendable as a Go framework or used as-is with any frontend
Best for
- →MVPs and side projects that need a backend fast
- →Apps that want realtime data without managing a separate service
- →Self-hosters who prefer one binary over a stack of services
Getting started
- 1 Download the binary (or use the official Docker image) and run ./pocketbase serve
- 2 Open the admin UI to create collections, rules and the first admin user
- 3 Point your frontend at the auto-generated REST and realtime APIs
- 4 Deploy the binary or container to Fly.io, Railway or Render and attach a persistent volume
FAQ
Its data lives in an embedded SQLite file on disk. On hosts like Fly.io, Railway or Render you must attach a persistent volume so the database survives restarts and redeploys.
For many read-heavy and small-to-medium apps, yes. PocketBase is single-node by design; if you need horizontal scaling or heavy concurrent writes, evaluate whether that fits your workload.
No. You can run PocketBase as-is and talk to it from any frontend via its REST and realtime APIs. Go is only needed if you want to extend it as a framework.
Deploy PocketBase for free
Free-tier platforms that can host this project. Pick one and ship it.