diff --git a/id.tjo.space/configure.sh b/id.tjo.space/configure.sh
index fd5f7d3..a001982 100755
--- a/id.tjo.space/configure.sh
+++ b/id.tjo.space/configure.sh
@@ -28,18 +28,16 @@ echo "=== Prepare srv directories"
 mkdir -p /srv/authentik/{media,certs,custom-templates}
 chown -R 1200:1200 /srv/authentik
 
-mkdir -p /srv/postgresql/data
+mkdir -p /srv/postgresql/{data,backups}
 
 echo "=== Read Secrets"
 age -d -i /etc/age/key.txt id.tjo.space/secrets.env.encrypted >id.tjo.space/secrets.env
 set -a && source id.tjo.space/secrets.env && set +a
 
 echo "=== Prepare Configurations"
-mkdir -p /etc/postgresql
 cat <<EOF >/etc/postgresql/secrets.env
 POSTGRES_PASSWORD=${POSTGRESQL_PASSWORD}
 EOF
-mkdir -p /etc/authentik
 cat <<EOF >/etc/authentik/secrets.env
 AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
 AUTHENTIK_EMAIL__PASSWORD=${AUTHENTIK_EMAIL__PASSWORD}
@@ -51,12 +49,12 @@ systemctl restart caddy
 
 echo "=== Setup Postgresql"
 systemctl restart postgresql
+systemctl start postgresql-backup.timer
 
 echo "=== Setup Valkey"
 systemctl restart valkey
 
 echo "=== Setup Authentik Server"
-
 systemctl restart authentik-server
 
 echo "=== Setup Authentik Worker"
diff --git a/id.tjo.space/root/etc/containers/systemd/postgresql.container b/id.tjo.space/root/etc/containers/systemd/postgresql.container
index 02afc99..db00fba 100644
--- a/id.tjo.space/root/etc/containers/systemd/postgresql.container
+++ b/id.tjo.space/root/etc/containers/systemd/postgresql.container
@@ -2,6 +2,7 @@
 Description=A Postgresql Container
 
 [Container]
+# Make sure the postgres image/version matches the one in backup service.
 Image=docker.io/postgres:17.4
 Volume=/srv/postgresql/data:/var/lib/postgresql/data
 EnvironmentFile=/etc/postgresql/secrets.env
diff --git a/id.tjo.space/root/etc/systemd/system/postgresql-backup.service b/id.tjo.space/root/etc/systemd/system/postgresql-backup.service
index 5a2d84d..9a5a8d7 100644
--- a/id.tjo.space/root/etc/systemd/system/postgresql-backup.service
+++ b/id.tjo.space/root/etc/systemd/system/postgresql-backup.service
@@ -7,3 +7,6 @@ ExecStart=/usr/local/bin/postgresql-backup.sh
 EnvironmentFile=/etc/postgresql/secrets.env
 EnvironmentFile=/etc/postgresql/postgresql.env
 Environment=BACKUP_DIR=/srv/postgresql/backups
+Environment=POSTGRES_HOST=systemd-postgresql
+ExecStartPre=/usr/bin/mkdir -p $BACKUP_DIR
+ExecStart=/usr/bin/podman run --rm --network systemd-main -v $BACKUP_DIR:/backups:z docker.io/library/postgres:17.4 pg_dumpall -U $POSTGRES_USER -h $POSTGRES_HOST -p $POSTGRES_PORT -f /backups/$(date +'%Y-%m-%d_%H-%M-%S').sql
diff --git a/id.tjo.space/root/usr/local/bin/postgresql-backup.sh b/id.tjo.space/root/usr/local/bin/postgresql-backup.sh
deleted file mode 100755
index 06eeb77..0000000
--- a/id.tjo.space/root/usr/local/bin/postgresql-backup.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-
-[ -z "${POSTGRES_USER}" ] && { echo "=> POSTGRES_USER cannot be empty" && exit 1; }
-[ -z "${POSTGRES_PASSWORD}" ] && { echo "=> POSTGRES_PASSWORD cannot be empty" && exit 1; }
-[ -z "${GZIP_LEVEL}" ] && { GZIP_LEVEL=6; }
-
-DATE=$(date +%Y%m%d%H%M)
-echo "=> Backup started at $(date "+%Y-%m-%d %H:%M:%S")"
-
-export PGHOST=${POSTGRES_HOST}
-export PGPORT=${POSTGRES_PORT}
-export PGUSER=${POSTGRES_USER}
-export PGPASSWORD=${POSTGRES_PASSWORD}
-
-DATABASES=${POSTGRES_DATABASE:-${POSTGRES_DB:-$(psql "${POSTGRES_SSL_OPTS}" -t -c "SELECT datname FROM pg_database;")}}
-
-for db in ${DATABASES}; do
-  if [[ "$db" != "template1" ]] &&
-    [[ "$db" != "template0" ]]; then
-
-    echo "==> Dumping database: $db"
-
-    FILENAME=${BACKUP_DIR}/$DATE.$db.sql
-
-    if pg_dump ${POSTGRESDUMP_OPTS} "${db}" >"${FILENAME}"; then
-      if [ -z "${USE_PLAIN_SQL}" ]; then
-        echo "==> Compressing $db with LEVEL $GZIP_LEVEL"
-        gzip "-$GZIP_LEVEL" -f "$FILENAME"
-      fi
-    else
-      rm -rf "$FILENAME"
-    fi
-  fi
-done
-echo "=> Backup process finished at $(date "+%Y-%m-%d %H:%M:%S")"