---
title: "Databases"
description: "homeport is app-tier only — connect to any managed database with a connection string in secrets."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.homeport.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Databases

homeport is **app-tier only** — it deploys your binary; the database lives
elsewhere. That's the model: the box is cattle, state is not on it. You connect
via a **connection string in secrets**, the universal interface to every
provider:

```sh
homeport secrets set DATABASE_URL="postgres://user:pass@host/db?sslmode=require"
```

That one line works with **Neon, Supabase, PlanetScale, Turso, DigitalOcean
managed DB, RDS — anything** — with no provider-specific setup. homeport
intentionally has **no per-provider integration and no backup feature**: those
balloon into per-vendor, per-engine surface for marginal value.

> **Locking down access**
>
> Allowlist the box's IP in your database provider's firewall / trusted sources,
> and prefer `sslmode=require` (or stricter) so the connection is encrypted in
> transit.

## Why no backup feature?

Because a backup feature can't stay small. The moment homeport backs up SQLite,
"homeport does backups" becomes the promise — and Postgres, MySQL, Redis,
retention policies, and restore testing walk in behind it, each with its own
tooling and failure modes. Backup is the worst feature to half-support: you
find out it was broken on the day you needed it.

So the line is drawn where it can hold: **homeport doesn't manage data.** Keep
state in a managed database — you get point-in-time recovery, failover, and
upgrades run by people whose whole job that is. The box stays disposable, and
disaster recovery is already complete: `bootstrap` → `deploy` → point at your
database. Nothing on the box was irreplaceable.

## What about SQLite on the box?

Running SQLite in your app's state directory works — it's just a file, and
`$STATE_DIR` persists across deploys. But understand what you're opting into:
the data now lives on a box homeport treats as disposable, and **homeport will
not back it up**. If you go this route, own the data story yourself — your
provider's VPS snapshots, or [Litestream](https://litestream.io) streaming the
WAL to object storage. Both run fine alongside homeport; neither is managed by
it.

Source: https://docs.homeport.sh/guides/databases/index.mdx
