DUXPLIMA Documentation

PostgreSQL

Connecting uxmEssentials to PostgreSQL, and what changes when you do.

PostgreSQL is the third first-class backend. It behaves exactly like the MySQL / MariaDB path (same tables, same migrations, same features) and differs only in the driver and the default port. Reach for it if Postgres is what you already run and operate well.

Why PostgreSQL?

ProsCons
Excellent performance at scaleLess common in Minecraft hosting
Strong data integrityMore setup than SQLite
Real row-level lockingNeeds its own backup strategy
Required-grade for cross-server

Recommended for: operators already comfortable with PostgreSQL, and larger networks.

Requirements

  • PostgreSQL 13 or newer.
  • A database and a user the plugin can connect with.

Step 1: Create the Database

Connect to PostgreSQL and run:

CREATE DATABASE uxmessentials;
CREATE USER uxmessentials WITH ENCRYPTED PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE uxmessentials TO uxmessentials;

Then grant schema permissions so the plugin can build its tables:

\c uxmessentials
GRANT ALL ON SCHEMA public TO uxmessentials;

Step 2: Configure the Plugin

Edit the storage block in plugins/uxmEssentials/config.conf:

storage {
  backend = "postgres"              # sqlite | mysql | postgres
  host = "localhost"
  port = 5432                       # default 5432 for PostgreSQL
  database = "uxmessentials"
  username = "uxmessentials"
  password = "your_secure_password"
  read-pool-size = 8
  connection-timeout-ms = 5000
}

The only differences from the MySQL setup are backend = "postgres" and the default port = 5432. As with MySQL, uxmEssentials builds the JDBC connection for you from host, port and database: there is no raw URL to enter. Pool sizing (read-pool-size, connection-timeout-ms) works identically; see Connection Pool Sizing.

Step 3: Restart and Verify

Restart the server. On enable, Flyway applies the schema migrations automatically. Confirm the connection with:

/uxmess doctor

Troubleshooting

SymptomLikely cause
password authentication failedWrong credentials, or pg_hba.conf disallows the connection method
Connection refusedPostgreSQL not running, wrong port, or postgresql.conf not listening on the network
permission denied for schema publicRe-run the GRANT ALL ON SCHEMA public from Step 1

Backing Up

pg_dump -U uxmessentials uxmessentials > backup.sql

Restore with:

psql -U uxmessentials uxmessentials \< backup.sql
Back up before switching backends

Changing backend starts a fresh, empty schema on the new database; it does not copy your old data across. Back up your current database first (SQLite file or a pg_dump) before you change the value.

Related: MySQL / MariaDB Setup, Cross-Server, config.conf (Globals)