Skip to main content
This guide helps your team provision, configure, and validate PostgreSQL for a SuprSend self-hosted deployment.
You can use a managed PostgreSQL (recommended for ease of maintenance) or deploy it on your own VMs/Kubernetes.
Version Requirement: PostgreSQL v17 or newer
Required Extensions: pg_cron, pgcrypto, pg_stat_statements, btree_gin, btree_gist
Required Parameters (in postgresql.conf or DB parameter group):

Topology & Sizing


Managed services simplify upgrades, backups, and high availability.

AWS RDS / Aurora PostgreSQL

  1. Create a PostgreSQL 17+ instance or cluster.
  2. In the parameter group, apply the configuration parameters above.
  3. Ensure wal_level=logical and configure replication if needed.

Google Cloud SQL for PostgreSQL

  1. Create a PostgreSQL 17+ instance.
  2. Add the required parameters in Flags.
  3. Enable all required extensions.

Azure Database for PostgreSQL – Flexible Server

  1. Create a PostgreSQL 17+ flexible server.
  2. Apply the parameters above.
  3. Enable required extensions.
pg_cron is mandatory for SuprSend. Verify that your managed provider supports it before proceeding. If unavailable, consider a self-hosted PostgreSQL deployment.

Self-Hosted on VMs

  1. Install PostgreSQL 17+ (from PGDG or distro repos).
  2. Edit postgresql.conf:
  3. Restart PostgreSQL.
  4. Configure replication and backup scripts as needed.

Self-Hosted on Kubernetes

You can deploy PostgreSQL using a Postgres Operator or Helm chart. Example ConfigMap fragment:
Mount this ConfigMap into your container or operator-managed config.

Create Required Databases

Run the following SQL on your instance:

Enable Required Extensions

Connect to the defaultdb database and enable pg_cron. This extension can only be installed in one database, which must be defaultdb:
Run the following commands in each of the six databases:
cron.database_name = 'defaultdb' means scheduled jobs run by default in the defaultdb database.

Database Access

SuprSend requires a superuser role to operate correctly. Use the superuser credentials (username and password) when configuring SuprSend’s database connection.
For high concurrency, use PgBouncer in transaction pooling mode.

Replication, HA & Backups

  • Enable streaming replication with 1–2 replicas.
  • Ensure hot_standby_feedback=on and wal_level=logical.
  • Recommended replication parameters:
  • Use WAL archiving for point-in-time recovery.
  • On managed platforms, enable automated backups.

Observability & Maintenance

  • pg_stat_statements: helps analyze query performance.
  • Monitor:
    • CPU, memory, IOPS
    • Connection usage
    • Replication lag
    • Autovacuum activity
  • Example pg_cron job:

Security & Networking

  • Enforce TLS for connections.
  • Restrict access to VPC/VNet or private subnets.
  • Rotate credentials regularly.
  • Store secrets in a managed secret manager (for example, AWS Secrets Manager).

Validation Checklist

All checks should return expected values.

SuprSend Helm Configuration

Once your PostgreSQL instance is configured with all required databases and extensions, configure SuprSend to use it.
This section shows only the PostgreSQL-specific configuration. You must also configure other required secrets and values for SuprSend to work properly. See the complete configuration guide: SuprSend Installation Guide

Kubernetes Secret Configuration

First, add the PostgreSQL-specific secrets to your suprsend-secrets.yaml:

Helm Values Configuration

Then add the following to your suprsend-values.yaml (along with other required configuration):
SuprSend will automatically connect to the required databases (suprsend, pronto, svix, defaultdb) using the same host and credentials. Ensure all databases are created on the same PostgreSQL instance. The above configuration goes under global.config section.

Final Steps

✅ Provision PostgreSQL 17+
✅ Apply configuration parameters
✅ Create six databases
✅ Enable required extensions
✅ Configure superuser access
✅ Configure replication & backups
✅ Run validation checklist

Next Steps:
Once PostgreSQL is ready, proceed with deploying the rest of the SuprSend stack using the Helm charts provided in the deployment documentation.

FAQ

Yes. To ensure consistent functionality across services, enable them in all databases.
Required for CDC, logical replication, and certain SuprSend data sync features.
pg_cron is mandatory for SuprSend - there is no fallback. If your managed provider does not support pg_cron, you will need to use a self-hosted PostgreSQL deployment instead.