PostgreSQL on Windows Server
PostgreSQL beside MySQL on IIS, in one tick
Some applications want PostgreSQL: a Laravel or Symfony project built on it, a Django or Rails app you are moving to Windows, an analytics tool, an off-the-shelf product that lists it as a requirement. On Windows Server that usually means the EnterpriseDB installer wizard, a service running as whatever account it picked, a password typed into a dialog, pg_hba.conf edited by hand and a port nobody remembered to close. ServerMaid does all of it the way a database specialist would, from a build it has verified, and keeps MySQL or MariaDB exactly where it was.
Part of the Server setup module, £99 £49.50 per server for twelve months. Websites on PostgreSQL need the Websites and SSL module, like every other website.
One tick in Setup
Installed the way the PostgreSQL manual says, without reading it
Signed build, verified twice
PostgreSQL 18 from the installer that EnterpriseDB signs. ServerMaid checks the Authenticode signature and the SHA-256 fingerprint pinned in its catalogue before anything runs, then uses the installer's extract-only mode: the binaries land in ServerMaid's own database folder and nothing else happens. pgAdmin and Stack Builder are not kept; a web server has no use for them.
A password from the first second
The cluster is created with a generated 32-character superuser password set at creation and stored in ServerMaid's encrypted vault. There is no "trust everyone until someone sets a password" window, and every connection authenticates with scram-sha-256.
Local only, superuser never remote
PostgreSQL listens on the server itself. The client authentication rules allow the loopback addresses only, and if you ever open the port to a chosen list of addresses in Advanced Setup, the postgres superuser is still refused from the network. The firewall keeps port 5432 closed to the internet.
Its own service, its own folders
The Windows service ServerMaid-PostgreSQL starts with the server. Binaries sit under the database root, the data directory on the drive you chose for your websites, the dated server logs in ServerMaid's log folder, each with the permissions the security baseline sets.
Settings you can read
ServerMaid writes its own servermaid.conf, included from postgresql.conf, with shared buffers sized to the server's memory, slow statements logged and the logging collector on. The file initdb wrote is left as it is; every change ServerMaid makes is journaled and reversible.
Updated in place, never surprised
A new 18.x release replaces the binaries and keeps the cluster; the previous version is parked so rollback can put it back. A new major line is never applied over an existing cluster, because that needs pg_upgrade and a decision from you.
Beside MySQL, never instead of it
The main database server stays MySQL 8.4 or MariaDB 11.8, chosen in Setup as before. PostgreSQL is a second tick box, Also install PostgreSQL 18, on both the quick and the advanced path. Tick it on a server that is already built and press Repair: PostgreSQL is added and nothing else changes. WordPress keeps MySQL or MariaDB, and a website asking for WordPress on PostgreSQL is refused with a plain sentence instead of a broken install.
Per website
A database and a role of its own for every site that wants one
Choose the engine on the form
Once PostgreSQL is installed the add-website form shows a Database engine choice: the main MySQL/MariaDB server, or PostgreSQL. From the command line it is servermaid website add --postgresql.
Owner of its database only
The site gets a login role named after its domain and a UTF-8 database that role owns, with the public connect right taken away. One site's role cannot see another site's data, and no website ever receives the superuser.
Credentials where the app can read them
Host, port, database, user, password and "engine": "postgresql" are written to the site's private folder, which IIS never serves. Point your .env or settings file at it; the app hosting guide shows where.
PHP ready to connect
Ticking PostgreSQL switches on the pgsql and pdo_pgsql extensions on every PHP line ServerMaid manages. Laravel, Symfony, Drupal and plain PDO code connect with no php.ini editing.
Import a dump
A plain SQL file from pg_dump is replayed into the website's database with the site's own role, in one transaction, so a statement the role may not run stops the import cleanly instead of leaving half a schema.
Staging too
With the Staging sites module, Clone live to staging copies the PostgreSQL database along with the files when both sites are on PostgreSQL, hidden from search engines until you are ready.
Looked after
Backed up, watched, repaired
Backups that prove themselves
With the Backups module every PostgreSQL database is dumped with pg_dump on the schedule, each dump replayed into a scratch database to prove it restores, and restored back on request to the right server. Older backup sets without PostgreSQL still read correctly.
Two lines on the health score
PostgreSQL service checks the service runs, starts automatically and accepts the stored password. PostgreSQL exposure reads the real configuration files for an open listen address, a weak password method or an authentication rule that lets anyone in. Each has a Fix button.
Never guessed, never reset
If someone changes the superuser password outside ServerMaid, the health score says so and nothing is overwritten: store the current password or reset it yourself, then run Repair. The same rule that protects your MySQL root applies here.
Questions about PostgreSQL on Windows Server
Does PostgreSQL replace MySQL on the server?
No. PostgreSQL is installed beside MySQL or MariaDB, never instead of it. Each website chooses which server holds its database. WordPress needs MySQL or MariaDB and keeps using it.
Which PostgreSQL version does ServerMaid install?
PostgreSQL 18, the current major line (community support to November 2030), from the installer EnterpriseDB signs, pinned in ServerMaid's catalogue with its SHA-256 fingerprint and run in extract-only mode. Minor releases are updated in place with the data directory kept; a new major line is never applied over an existing cluster.
Can I reach PostgreSQL from my desktop?
Not by default. PostgreSQL listens on the server itself and the firewall blocks port 5432 from the internet. Advanced Setup can open it to a chosen list of addresses; even then the postgres superuser is refused from the network. For day-to-day work use the tools on the server or a tunnel.
Does PHP get the PostgreSQL extensions?
Yes. Ticking PostgreSQL switches on pgsql and pdo_pgsql on every PHP line ServerMaid manages, so Laravel, Symfony, Drupal and plain PDO code connect without any php.ini editing.
I already have PostgreSQL on this server. What happens?
Pre-flight reports it and ServerMaid never touches it. If it is listening on port 5432, Setup says so rather than installing a second server on the same port: leave the tick box off to keep using yours, or give the ServerMaid-managed one another port in Advanced Setup.
Can a website move from MySQL to PostgreSQL later?
Not in place: the engine is chosen when the website is added. Remove the website keeping its files, add it again with PostgreSQL, then import your converted dump. Your application's own migration tooling does the data conversion.
What does it cost?
Nothing extra. PostgreSQL is part of the Server setup module; websites on it need the Websites and SSL module like any other website.
PostgreSQL and MySQL on one Windows server, both done right
One tick in Setup, a database engine choice per website, and the same backups, health score and repair as everything else ServerMaid builds.