Skip to content

Databases

Managed PostgreSQL on your own cluster

PostgreSQL managed by CloudNativePG, with failover, pgvector, PostGIS and extensions you switch on from the database's own settings.

Created inside a project, beside the apps that use it. Each project gets its own instance, storage and credentials.

01What it does

PostgreSQL, run for you

PostgreSQL 16, 17 or 18 on the CloudNativePG operator, which handles provisioning, failover and backups.

The database most apps reach for first, and the one this catalog does the most for. Every instance is provisioned with its own volume, wired into bound apps as DATABASE_URL, and kept running by the operator: if the primary fails in a three-instance cluster, a standby is promoted without anyone being paged.

pgvector is always installed. PostGIS is a switch that moves the database onto the PostGIS build of the same version, and fourteen further extensions (pg_trgm, hstore, citext, uuid-ossp, ltree and the rest) are checkboxes in the database's settings. Connection pooling puts PgBouncer in front, in transaction mode, so serverless functions and thousands of short-lived connections share the same DATABASE_URL.

Point it at an S3-compatible bucket you own, or at the cluster's own object storage, and it takes a full backup on a schedule while archiving write-ahead logs continuously, so the recovery point is minutes old regardless of the schedule. The history is kept for the retention you choose, and a final snapshot is required before the database can be deleted.

02Options

What you choose

What the console asks when you create it, in the catalog's own numbers. Anything marked chosen once cannot change without creating a new instance.

Sizes
small 0.5 CPU / 1Gi, medium 1 / 2Gi, large 2 / 4Gi per instance
Storage
10Gi per instance by default; grows later if the storage class supports expansion
Versions
16, 17 (default) or 18, chosen once when the database is created
Instances
1, or 3 for a hot standby and automatic failover (needs 3 schedulable nodes)
Backups
Daily, twice daily or every 6 hours, to a bucket you name; kept 7 days to 6 months
Extensions
pgvector always; PostGIS and 14 more from the settings
Pooling
Optional PgBouncer in transaction mode, chosen when the database is created
Pause
Yes; the volume is kept
Public port
5432 can be opened on a public cluster; the CLI advises against it

03Binding

What your app receives

Bind it to an app and these arrive as environment variables. The values are generated once into a secret and reach the app from there, rather than as something you copy.

  • POSTGRES_HOST
  • POSTGRES_PORT
  • POSTGRES_DATABASE
  • POSTGRES_USERNAME
  • POSTGRES_PASSWORD
  • POSTGRES_URL
  • DATABASE_URL

The first database bound to an app also gets the bare DATABASE_URL, which is what most frameworks read unconfigured.

04Adding it

Add PostgreSQL to a project

The same four steps as every service in the catalog.

  1. 01Open a project and go to Services.
  2. 02Pick it from the catalog and choose its options. Only the size is required; everything else has a default.
  3. 03Create it. Anyport installs it into the project's namespace, generates its credentials into a secret there, and tracks its health.
  4. 04Bind it to an app. The connection details arrive as environment variables, and rotating the credential never means editing an app.