Grant read-only rights to backup user for PostgreSQL

This one comes up quite regularly, so worthy of note: postgres=# drop database family; DROP DATABASE postgres=# create database family owner family; CREATE DATABASE postgres=# \c family You are now connected to database “family” as user “postgres”. family=# GRANT SELECT ON ALL TABLES IN SCHEMA public to backups; GRANT family=# GRANT SELECT ON ALL SEQUENCES […]

Managing Kubernetes certificates with Python

I run into a small stumbling block the other evening while working on my ‘site domain manager’ project (for want of a better name). This is essentially a REST API running in a daemon service that manages the mappings of domains to websites, and uses ‘agents’ to automate the configuration via API calls to the […]

Testing SMTP creds with Docker

One of our sites stopped sending it’s mail a few days ago. Unfortunately, the SMTP plugin used does not provide any debug logs of the SMTP connection, and it’s ‘test’ tool just says that it sent the mail successfully. The logs for the SMTP service provider suggest they haven’t seen the connection. I issue a […]

Monitoring Windows processes from Nagios

So, something I had to do recently was to set up monitoring for a couple of specific Windows processes, so that we get notification via a Discord channel if those processes are not running on various hosts. Typically, you’d do this with something like NSClient++ but this was proving to be too problematic and time-consuming […]

Simple LDAP proxy container

So, you have an LDAP server running happily on port 636 but one of your client applications doesn't seem to be happy with the SSL connection for whatever reason. You need an intermediary container to handle the SSL connection to the LDAP server on port 636, presenting it to the local application on port 389. […]

Merging Confluence users

One of my clients is running Confluence. Somewhere along the line, two user accounts had been created for one user, and content had been added using both users. So muggins here to the rescue. Unfortunately, not much help to be found Googling, so I roll up my sleeves and dig into the Confluence DB schema. […]