Blog

A Supabase alternative you can self-host on a small VPS

Looking for a Supabase alternative to self-host on a small VPS? Kanesh is a one-container data backend that runs on SQLite or your own PostgreSQL.

Kanesh is a Supabase alternative you can self-host on a small VPS when you need the data layer and not the whole platform. It runs as one container of about 8.9 MB, uses SQLite by default and can use your own PostgreSQL. It is a new product at its first stable release, and it does not include OAuth providers or functions.

What Supabase is

Supabase is an open-source Postgres development platform. It bundles a database, auth, storage, functions and data APIs. If you want those pieces together, it is built for that. We do not compare resource numbers here: check the Supabase self-hosting documentation for what your server needs.

The question for a small VPS is how many moving parts you can afford to run, back up and keep updated on one machine.

What decides whether a small VPS is enough

  • How many services you run, since each one is a process or container to watch.
  • Whether the database runs on the same machine or on a managed host.
  • How much memory is left for the database after the application.
  • How you back up the data and how often you test a restore.
  • Who terminates HTTPS in front of the app.

A small-VPS setup with Kanesh

Kanesh is one Go binary with the Studio embedded and no Node server at runtime. Its image is about 8.9 MB (arm64, measured 2026-10-04), and it idled under 10 MiB of memory in a local smoke test. That is not a benchmark, and it excludes your data, your query load and any PostgreSQL server.

Build the image from the repository with docker build -t kanesh ., as Getting started describes. Then run it bound to localhost, with a reverse proxy providing HTTPS in front:

docker run --name kanesh -p 127.0.0.1:8080:8080 -v kanesh-data:/data \
  -e COOKIE_SECURE=true \
  kanesh

Set COOKIE_SECURE=true when the app sits behind HTTPS, and list your proxy in TRUSTED_PROXIES. The SQLite file lives at DATA_DIR/kanesh.db, so back up the kanesh-data volume. If you want PostgreSQL, point DATABASE_URL at a server you run or rent and set DATABASE_DRIVER=postgres. Details are in configuration and database setup.

Supabase and Kanesh side by side

KaneshSupabase
ShapeData backend in one containerPostgres development platform with database, auth, storage, functions and data APIs
DatabasesSQLite, PostgreSQL, MySQLPostgres
Data APIsREST, GraphQL, OpenAPI 3.1 exportData APIs
AuthMember accounts, roles, sessions, API tokensAuth service
FilesDatabase or S3-compatible storage (S3, MinIO, R2)Storage service
Resource needsImage about 8.9 MB, under 10 MiB idle in a smoke testNot compared here
AI agentsOpt-in read-only MCP endpointNot compared here
MaturityNew, first stable releaseNot compared here

What you give up

Kanesh has no OAuth or SSO, no realtime, no workflows, no hooks and no SDKs. OAuth or SSO sign-in, realtime and workflows are on the roadmap. If your app needs managed sign-in with social providers or server functions, you will build or host those separately, or choose a platform that includes them.

FAQ

Can Kanesh run on a small VPS?

Yes. One container, no Node server and SQLite by default means few moving parts. Measure it with your own data, because the figures we publish come from a local smoke test, not from a benchmark.

Does Kanesh use PostgreSQL like Supabase?

It can. Set DATABASE_DRIVER=postgres and DATABASE_URL and Kanesh stores collections as real tables with foreign keys. SQLite is the default, and MySQL is supported too. If your chosen database fails, Kanesh stops instead of falling back to SQLite.

Does Kanesh include auth and storage?

Partly. Kanesh has member accounts with roles, HttpOnly session cookies and personal API tokens that are hashed, expiring and revocable. It has no OAuth or SSO. Files and images are stored in the database by default, or in S3, MinIO or R2 when you set STORAGE_DRIVER=s3. See file storage.

Next steps

Run it with Getting started. For a comparison with another full backend platform, read Kanesh vs Appwrite.

Buy me a coffee