diff --git a/modules/insidan/files/pg_dump.sh b/modules/insidan/files/pg_dump.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b4ad4d6a145f97fcb5ded146a2b2a1b09e92aca6
--- /dev/null
+++ b/modules/insidan/files/pg_dump.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+FILE=/pg_dump/`date +"%Y%m%d%H%M"`_pg_dump.sql
+
+su postgres -c "pg_dump openproject -F p -f ${FILE}"
+find /pg_dump -maxdepth 1 -mtime +14 -name "*_pg_dump.sql" -exec rm '{}' ';'
diff --git a/modules/insidan/manifests/openproject.pp b/modules/insidan/manifests/openproject.pp
index 43771cf5a2f6bbe371c24d41a331afbac84625e3..c441a34b71982351725964e940265d001cab4d2e 100644
--- a/modules/insidan/manifests/openproject.pp
+++ b/modules/insidan/manifests/openproject.pp
@@ -10,6 +10,8 @@ class insidan::openproject {
   }~>
   package { 'openproject' :
     ensure => installed,
+  # Here, someone MUST run `openproject configure`. At least until we
+  # configure it via puppet...
   }
 
 
@@ -17,8 +19,27 @@ class insidan::openproject {
     ensure => installed,
   }
 
-  # Here, someone MUST run `openproject configure`. At least until we
-  # configure it via puppet...
+  file { '/pg_dump':
+    ensure => directory,
+    owner => 'postgres',
+    require => Package['postgresql'],
+  }
+
+  file { '/opt/pg_dump.sh':
+    ensure => file,
+    mode   => '755',
+    source => 'puppet:///modules/insidan/pg_dump.sh',
+  }
+
+  cron { 'pg_dump openproject':
+    ensure => present,
+    command => '/opt/pg_dump.sh',
+    user => root,
+    minute => 45,
+    require => [ File['/opt/pg_dump.sh'], File['/pg_dump'] ]
+  }
+  
+