What PocketBase Actually Is

PocketBase is a Go binary that gives you SQLite + auth + file storage + admin UI in one file. I've deployed this on 3 different client projects over the past year - a booking app, a small CRM, and some prototype that's still running in prod somehow.

Why It Exists

Built with Go

Traditional backends are a pain in the ass. You need PostgreSQL, Redis, an auth service, file storage, and probably 12 Docker containers just to store some user data. PocketBase throws all that complexity out the window - download one file, run it, done.

The latest stable version is v0.29.3 (released late 2024). It's still pre-1.0 software, so expect things to break between versions. Schema migrations bit me twice - once in March when they changed collection validation, again in August when they updated the auth system. Read the fucking changelog before upgrading.

What You Actually Get

SQLite That Doesn't Suck: Uses WAL mode so you can have multiple readers without blocking writes. Handles about 50-100 concurrent users before you hit the SQLite write bottleneck. If you need more, use PostgreSQL.

Auth That Works: Email/password, OAuth with Google/GitHub/etc. The OAuth setup is straightforward if you've done it before. First-timers will spend 2 hours reading Google's terrible OAuth docs.

File Uploads: Local storage works fine for prototypes. For production, you'll want S3 because local storage fills up fast. I learned this the hard way when a client's server ran out of space at like 2AM and their app died - users couldn't upload profile pics for 6 hours while I scrambled to configure S3.

Admin Dashboard: Actually decent, unlike most open source admin interfaces that look like they're from 2010. Real-time updates work well for monitoring your app.

PocketBase Admin Dashboard

Auto-Generated API: Creates REST endpoints for your collections. The filtering syntax takes some getting used to, but it's more flexible than most ORMs.

REST API Endpoints

When to Use It

Perfect for:

  • Side projects and prototypes
  • Client work under 10k users
  • Apps where you want full control over your data
  • When you're tired of configuring Docker compose files

Don't use it for:

  • Anything that needs to scale beyond SQLite's limits
  • Mission-critical apps (it's still beta software)
  • Complex analytics workloads

Self-Hosting Reality

Self-hosting seems free until you factor in monitoring, backups, security updates, and 3am outages. I run mine on a $10 DigitalOcean droplet with automated backups. Works fine, but you're the DBA now - which means when shit breaks at 2AM, you're the one fixing it while everyone else sleeps.

Oh also, set up monitoring from day one. I've had servers go down for hours because I forgot to check on them. Uptime Robot or similar will save your ass.

Setting Up PocketBase (What Actually Happens)

Installation Gotchas

Download the binary from GitHub releases, but here's what you'll actually hit:

Port Conflicts: You'll probably get a "port already in use" error on first run. Use ./pocketbase serve --http=127.0.0.1:8091 to fix it.

Permission Issues: On Linux/Mac, you'll definitely need chmod +x pocketbase or you'll get "permission denied" when trying to run it. Windows users just double-click and pray their antivirus doesn't quarantine it as malware (happens more often than you'd think).

Directory Structure: It creates:

  • pb_data: Your SQLite database and uploaded files (backup this or cry later)
  • pb_migrations: Schema change scripts (commit these to git)

First run opens a browser to create your admin account. If you're on a headless server, add --dev flag and access via IP:port.

Development Setup

Real Development Experience

The JavaScript SDK works fine, but CORS will bite you if you're developing on localhost. You'll waste 30 minutes wondering why your requests are failing before remembering to add your domain to the allowed origins in settings. Classic CORS bullshit.

// This works after you fix CORS
import PocketBase from 'pocketbase';
const pb = new PocketBase('http://127.0.0.1:8090');

// Auth actually works well
await pb.collection('users').authWithPassword('test@example.com', 'password');

SDK Reality Check:

Schema and Collection Pain Points

Collections are like database tables but easier to fuck up. I've made these mistakes so you don't have to:

PocketBase Collection Panel

Relation Fields: Many-to-many relations work but the UI gets confusing with more than 3 levels. Keep it simple or use JSON fields.

File Fields: Default 5MB limit. Increase it in settings or users will complain about upload failures. Also set proper MIME type validation or people will upload random shit.

Access Rules: The JavaScript-like syntax is powerful but debugging access rule failures sucks. Test everything in incognito mode.

Performance Reality

SQLite Performance Characteristics

SQLite is fast enough for most stuff until it isn't:

  • Under 1000 users: No problems
  • 1000-10000 users: Monitor write bottlenecks
  • Over 10000 users: Consider PostgreSQL migration

Real Bottlenecks I've Hit:

  • File uploads slow down with 100+ concurrent users (learned this during a product demo, embarrassing)
  • Complex queries with multiple joins get sluggish around 50k records
  • Backup operations lock the database for like 30 seconds, users notice this shit

Real-time Features

SQLite Performance

Scaling Workarounds:

  • Use read replicas for reporting queries (requires custom setup)
  • Cache expensive queries in Redis
  • Move file storage to S3 early

Pocketbase Tutorial for Beginners by BraveHub

This 18-minute tutorial by James Q Quick actually shows you how to build something real instead of just reading the docs out loud. He builds a simple task app and hits the common gotchas you'll encounter.

What's actually useful:
- 2:30 - Shows the port conflict error and how to fix it
- 5:45 - Creates collections that don't suck
- 8:15 - Sets up auth without breaking everything
- 12:30 - Shows the CORS issue and solution
- 15:20 - Real API calls that work

Why I recommend this: Most PocketBase tutorials are garbage - either too basic or assume you already know everything. This one strikes the right balance and shows you the mistakes before you make them. Plus James doesn't waste time with theory bullshit.

📺 YouTube

PocketBase vs The Usual Suspects

Feature

PocketBase

Firebase

Supabase

Deployment

One binary, done

Google's problem

Docker compose hell

Database

SQLite (good enough)

Firestore (weird queries)

PostgreSQL (solid)

Cost

Your server costs

Expensive as hell

Reasonable until you scale

Realtime

Works fine

Rock solid

Pretty good

Auth

Does the job

Best in class

Good enough

Files

Local or S3

Integrated well

S3 compatible

Docs

Decent

Excellent

Hit or miss

Complexity

Download, run

SDK city

Kubernetes nightmares

Lock-in

Zero

Completely fucked

Escape possible

Scale Limit

~10k users

Millions

Hundreds of thousands

Time to MVP

10 minutes

2 hours

4 hours

Questions People Actually Ask

Q

Is PocketBase production-ready or will it break my shit?

A

It's pre-1.0 software, so expect things to break between versions. I've had to migrate schemas twice this year. That said, I'm running 3 production apps on it without major issues. Just don't use it for anything mission-critical until v1.0.

Q

How many users can it actually handle?

A

Stress tested with about 80-90 concurrent users on one project, hit some write bottlenecks around there but nothing crashed. Beyond 100 users things get sketchy. If you need more than 10k active users, just use PostgreSQL instead. Don't try to force SQLite to be something it isn't.

Q

How do I backup without fucking it up?

A

Stop the server first, then copy the entire pb_data folder. Don't just copy files while it's running

  • you'll corrupt the database and lose everything. I learned this lesson at 3AM when a backup script I wrote corrupted our production database. Now I have a proper backup script that stops the service, copies files, then restarts it.
Q

Can I connect it to my existing PostgreSQL database?

A

No. PocketBase is SQLite only. If you need PostgreSQL integration, you're looking at the wrong tool. Use Supabase or build a custom API.

Q

What happens when I outgrow SQLite?

A

Export everything via the REST API and migrate to something else. It's not fun, but the data isn't locked in. Plan for this from the start if you expect to scale beyond 50k records.

Q

Is it secure enough for real apps?

A

The auth system is solid, but you're responsible for server security, SSL, updates, and monitoring. If you're not comfortable being your own sysadmin, use a hosted solution instead.

Q

Does real-time actually work?

A

Yeah, the SSE (Server-Sent Events) implementation is solid. I use it for live chat features and it handles 50+ concurrent connections fine. Way better than the time I tried to roll my own WebSocket server and spent a week debugging connection drops and memory leaks.

Q

Can I extend it or am I stuck with what's included?

A

You can write custom Go code or JavaScript hooks. The Go approach is powerful but you're essentially forking the project. JavaScript hooks are easier for simple stuff like validation or webhooks.

Q

What's the deal with file uploads?

A

Default 5MB limit that you'll need to increase. Local storage is fine for prototypes, but you'll want S3 for production. Set MIME type validation or users will upload random garbage.

Q

How do database migrations work?

A

JavaScript files in pb_migrations folder. Version control these or you're fucked when deploying. The migration system is simple but works well enough.

Q

Any limits on how many collections I can create?

A

SQLite can handle thousands of tables, so you're more likely to hit design limits than technical ones. Keep it simple

  • don't create 100 collections for something that could be 10.
Q

Can I run multiple instances for high availability?

A

You can run multiple independent instances, but they don't sync with each other. It's not true HA

  • more like multiple separate databases. For real HA, use something designed for it.

Related Tools & Recommendations

compare
Similar content

Supabase vs Firebase vs Appwrite vs PocketBase: Deep Dive Comparison

I've Debugged All Four at 3am - Here's What You Need to Know

Supabase
/compare/supabase/firebase/appwrite/pocketbase/backend-service-comparison
100%
tool
Similar content

SQLite: Zero Configuration SQL Database Overview & Use Cases

Zero Configuration, Actually Works

SQLite
/tool/sqlite/overview
68%
tool
Similar content

SQLite Performance Optimization: Fix Slow Databases & Debug Issues

Your database was fast yesterday and slow today. Here's why.

SQLite
/tool/sqlite/performance-optimization
62%
compare
Recommended

Framework Wars Survivor Guide: Next.js, Nuxt, SvelteKit, Remix vs Gatsby

18 months in Gatsby hell, 6 months testing everything else - here's what actually works for enterprise teams

Next.js
/compare/nextjs/nuxt/sveltekit/remix/gatsby/enterprise-team-scaling
61%
compare
Similar content

PostgreSQL vs MySQL vs MariaDB vs SQLite vs CockroachDB

Compare PostgreSQL, MySQL, MariaDB, SQLite, and CockroachDB to pick the best database for your project. Understand performance, features, and team skill conside

/compare/postgresql-mysql-mariadb-sqlite-cockroachdb/database-decision-guide
56%
pricing
Recommended

Backend Pricing Reality Check: Supabase vs Firebase vs AWS Amplify

Got burned by a Firebase bill that went from like $40 to $800+ after Reddit hug of death. Firebase real-time listeners leak memory if you don't unsubscribe prop

Supabase
/pricing/supabase-firebase-amplify-cost-comparison/comprehensive-pricing-breakdown
47%
tool
Similar content

Django Troubleshooting Guide: Fix Production Errors & Debug

Stop Django apps from breaking and learn how to debug when they do

Django
/tool/django/troubleshooting-guide
36%
tool
Similar content

Neon Production Troubleshooting Guide: Fix Database Errors

When your serverless PostgreSQL breaks at 2AM - fixes that actually work

Neon
/tool/neon/production-troubleshooting
31%
tool
Similar content

PostgreSQL Performance Optimization: Master Tuning & Monitoring

Optimize PostgreSQL performance with expert tips on memory configuration, query tuning, index design, and production monitoring. Prevent outages and speed up yo

PostgreSQL
/tool/postgresql/performance-optimization
31%
tool
Similar content

Redis Overview: In-Memory Database, Caching & Getting Started

The world's fastest in-memory database, providing cloud and on-premises solutions for caching, vector search, and NoSQL databases that seamlessly fit into any t

Redis
/tool/redis/overview
31%
tool
Similar content

MariaDB Performance Optimization: Fix Slow Queries & Boost Speed

Learn to optimize MariaDB performance. Fix slow queries, tune configurations, and monitor your server to prevent issues and boost database speed effectively.

MariaDB
/tool/mariadb/performance-optimization
31%
tool
Similar content

GraphQL Overview: Why It Exists, Features & Tools Explained

Get exactly the data you need without 15 API calls and 90% useless JSON

GraphQL
/tool/graphql/overview
28%
tool
Similar content

PostgreSQL: Why It Excels & Production Troubleshooting Guide

Explore PostgreSQL's advantages over other databases, dive into real-world production horror stories, solutions for common issues, and expert debugging tips.

PostgreSQL
/tool/postgresql/overview
28%
tool
Similar content

BentoML: Deploy ML Models, Simplify MLOps & Model Serving

Discover BentoML, the model serving framework that simplifies ML model deployment and MLOps. Learn how it works, its performance benefits, and real-world produc

BentoML
/tool/bentoml/overview
28%
tool
Similar content

Open Policy Agent (OPA): Centralize Authorization & Policy Management

Stop hardcoding "if user.role == admin" across 47 microservices - ask OPA instead

/tool/open-policy-agent/overview
28%
tool
Similar content

Neon Serverless PostgreSQL: An Honest Review & Production Insights

PostgreSQL hosting that costs less when you're not using it

Neon
/tool/neon/overview
28%
troubleshoot
Similar content

Fix MongoDB "Topology Was Destroyed" Connection Pool Errors

Production-tested solutions for MongoDB topology errors that break Node.js apps and kill database connections

MongoDB
/troubleshoot/mongodb-topology-closed/connection-pool-exhaustion-solutions
27%
alternatives
Recommended

Firebase Alternatives That Don't Suck - Real Options for 2025

Your Firebase bills are killing your budget. Here are the alternatives that actually work.

Firebase
/alternatives/firebase/best-firebase-alternatives
27%
tool
Recommended

Supabase - PostgreSQL with Bells and Whistles

competes with Supabase

Supabase
/tool/supabase/overview
27%
tool
Recommended

JavaScript - The Language That Runs Everything

JavaScript runs everywhere - browsers, servers, mobile apps, even your fucking toaster if you're brave enough

JavaScript
/tool/javascript/overview
27%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization