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