Skip to main content

Databases

Kuploy provides managed databases that are easy to set up and automatically backed up. All databases run within your project's private network for security.

Supported Databases

DatabaseUse CaseDefault Port
PostgreSQLRelational data, complex queries, ACID compliance5432
MySQLWeb applications, read-heavy workloads3306
MariaDBMySQL-compatible, enhanced performance3306
MongoDBDocument storage, flexible schemas27017
RedisCaching, sessions, real-time data6379

Creating a Database

  1. Navigate to your project
  2. Click Add ResourceDatabase
  3. Select your database type
  4. Configure settings:
    • Name: A unique identifier
    • Version: Database version (latest stable recommended)
    • Size: CPU and memory allocation
  5. Click Create

The database is provisioned within minutes.

Database Sizing

SizeCPUMemoryStorageUse Case
Starter0.5 vCPU512 MB5 GBDevelopment, small apps
Standard1 vCPU2 GB20 GBProduction workloads
Pro2 vCPU8 GB100 GBHigh-traffic applications
Enterprise4 vCPU32 GB500 GBLarge-scale production

Internal Connection Strings

Databases are accessible within your project's private network using internal hostnames.

PostgreSQL

# Connection string format
postgresql://[user]:[password]@[host]:5432/[database]

# Example
postgresql://kuploy:abc123xyz@pg-mydb.kuploy.internal:5432/app_production

# Individual components
POSTGRES_HOST=pg-mydb.kuploy.internal
POSTGRES_PORT=5432
POSTGRES_USER=kuploy
POSTGRES_PASSWORD=abc123xyz
POSTGRES_DATABASE=app_production

MySQL

# Connection string format
mysql://[user]:[password]@[host]:3306/[database]

# Example
mysql://kuploy:abc123xyz@mysql-mydb.kuploy.internal:3306/app_production

# Individual components
MYSQL_HOST=mysql-mydb.kuploy.internal
MYSQL_PORT=3306
MYSQL_USER=kuploy
MYSQL_PASSWORD=abc123xyz
MYSQL_DATABASE=app_production

MariaDB

# Connection string format
mysql://[user]:[password]@[host]:3306/[database]

# Example
mysql://kuploy:abc123xyz@mariadb-mydb.kuploy.internal:3306/app_production

# Uses same format as MySQL
MYSQL_HOST=mariadb-mydb.kuploy.internal
MYSQL_PORT=3306

MongoDB

# Connection string format
mongodb://[user]:[password]@[host]:27017/[database]

# Example
mongodb://kuploy:abc123xyz@mongo-mydb.kuploy.internal:27017/app_production

# With auth database
mongodb://kuploy:abc123xyz@mongo-mydb.kuploy.internal:27017/app_production?authSource=admin

# Individual components
MONGO_HOST=mongo-mydb.kuploy.internal
MONGO_PORT=27017
MONGO_USER=kuploy
MONGO_PASSWORD=abc123xyz
MONGO_DATABASE=app_production

Redis

# Connection string format
redis://:[password]@[host]:6379

# Example
redis://:abc123xyz@redis-mydb.kuploy.internal:6379

# Individual components
REDIS_HOST=redis-mydb.kuploy.internal
REDIS_PORT=6379
REDIS_PASSWORD=abc123xyz
tip

Use the Link Resource feature in your application's Environment tab to automatically inject these connection strings.

Backups

Kuploy provides flexible backup options to protect your data.

Manual Backups

Create a backup on-demand:

  1. Go to your database → Backups tab
  2. Click Create Backup
  3. Add an optional description
  4. Click Create

Backups typically complete within minutes.

Scheduled Backups

Set up automatic backups:

  1. Go to BackupsSchedule
  2. Configure your schedule:
    • Frequency: Daily, Weekly, or Custom (cron)
    • Time: When to run (UTC)
    • Retention: How many backups to keep
  3. Click Save
# Example cron expressions
0 2 * * * # Daily at 2:00 AM UTC
0 3 * * 0 # Weekly on Sunday at 3:00 AM UTC
0 */6 * * * # Every 6 hours

S3 Backup Storage

Store backups in your own S3-compatible storage:

  1. Go to BackupsStorage
  2. Click Configure S3
  3. Enter your credentials:
    • Endpoint: S3 endpoint (or compatible service)
    • Bucket: Bucket name
    • Access Key ID: Your access key
    • Secret Access Key: Your secret key
    • Region: Bucket region
  4. Click Test Connection
  5. Click Save

Supported S3-compatible services:

  • Amazon S3
  • DigitalOcean Spaces
  • Backblaze B2
  • MinIO
  • Wasabi

Restoring from Backup

  1. Go to Backups tab
  2. Find the backup you want to restore
  3. Click Restore
  4. Choose restore options:
    • In-place: Replace current data (downtime required)
    • New database: Create a new database from backup
  5. Confirm and restore
caution

In-place restoration will overwrite all current data. Create a fresh backup first if needed.

Database Management

Accessing the Database Console

For direct database access:

  1. Go to your database
  2. Click Console
  3. Use the web-based terminal

Or connect via your application using the connection string.

Scaling Your Database

To resize your database:

  1. Go to SettingsResources
  2. Select a new size
  3. Click Apply
info

Scaling requires a brief restart. Plan for a few minutes of downtime.

Database Logs

View database logs in real-time:

  1. Go to your database
  2. Click Logs
  3. Filter by severity or search for specific entries

Security

Network Isolation

Databases are only accessible from within your project's private network. External connections are blocked by default.

Enabling External Access

For development or migration purposes:

  1. Go to SettingsNetwork
  2. Enable Public Access
  3. Whitelist specific IP addresses
  4. Use the external connection string provided
caution

Only enable public access when necessary. Always use IP whitelisting.

Credential Rotation

Rotate database credentials periodically:

  1. Go to SettingsCredentials
  2. Click Rotate Password
  3. Update your application's environment variables
  4. Redeploy your application

Best Practices

  1. Use connection pooling - Reduce connection overhead with tools like PgBouncer
  2. Enable scheduled backups - Never rely solely on manual backups
  3. Monitor performance - Check metrics regularly for slow queries
  4. Size appropriately - Start small and scale as needed
  5. Use internal networking - Avoid public access in production
  6. Rotate credentials - Update passwords regularly
  7. Test restores - Periodically verify your backups work