Infrastructure

Database hosting

Seven database engines available as one-click installs. Each runs in a Docker container backed by a persistent block storage volume so data survives server restarts.

Supported engines

EngineDefault portNotes
MySQL3306MySQL 8.x
MariaDB3306Drop-in MySQL replacement
PostgreSQL5432PostgreSQL 16.x
Redis6379In-memory cache / pub-sub
MongoDB27017MongoDB 7.x
Kafka9092Event streaming (includes ZooKeeper)
Memcached11211High-performance object cache

Installing a database

  1. Navigate to Databases in the server sidebar.
  2. Click Add Database, choose your engine and version.
  3. Give it a name and click Install.

The installer creates a Docker container, attaches a block storage volume for data persistence, and configures the database with a strong auto-generated password. Installation typically takes 1–3 minutes.

Connection strings

After installation, the portal shows the internal connection string for use by apps running on the same server:

# PostgreSQL example (internal)
postgresql://simplewala:<password>@127.0.0.1:5432/mydb

# MySQL / MariaDB
mysql://simplewala:<password>@127.0.0.1:3306/mydb

# Redis
redis://127.0.0.1:6379

# MongoDB
mongodb://simplewala:<password>@127.0.0.1:27017/mydb

External access via Front Door

By default databases are only reachable from within the server. To connect from an external client (e.g. a local database GUI), enable External Access on the database detail page. Simplewala allocates a random TCP port (30000–59999), configures an nginx stream proxy, and shows the external connection string:

# External connection (replace <server-ip> and <port>)
postgresql://simplewala:<password>@<server-ip>:<port>/mydb

The UFW firewall is updated automatically to allow traffic on the allocated port.

Data persistence

Each database is backed by a dedicated block storage volume. The volume mounts to the container’s data directory so data is preserved across container restarts and upgrades. You can manage volumes from the Storage section in the server sidebar.

Backups

Databases are included in server-level backups. You can also trigger a manual database backup from the Backups section. Backups export a logical dump (mysqldump / pg_dump / mongodump) to the backup store.

Troubleshooting

Cannot connect from app container

Use host.docker.internal instead of 127.0.0.1 if your app runs inside a Docker container, or use the server’s private IP. Confirm the database container is running: docker ps | grep db_.

External access not working

Confirm your cloud provider’s firewall (DigitalOcean / Hetzner panel) allows the allocated port, not just the UFW rule on the server. Both layers must be open.