diff --git a/manifest b/manifest
index f3d3090..412a1d9 100644
--- a/manifest
+++ b/manifest
@@ -45,6 +45,18 @@ case "$os" in
                 exit 1
             ;;
         esac
+
+        # Allow version override
+        if [ -f "$__object/parameter/version" ]; then
+            postgres_version=$(cat "$__object/parameter/version")
+        fi
+
+        postgres_server="postgresql-${postgres_version}"
+
+    ;;
+    alpine)
+        postgres_lib="postgresql-dev"
+        postgres_server="postgresql"
     ;;
     *)
         echo "Unsupported OS: $os" >&2
@@ -52,25 +64,20 @@ case "$os" in
     ;;
 esac
 
-# Allow version override
-if [ -f "$__object/parameter/version" ]; then
-    postgres_version=$(cat "$__object/parameter/version")
-fi
+__package "$postgres_server" --state present
+__package "$postgres_lib" --state present
 
-postgres_server="postgresql-${postgres_version}"
+require="__package/$postgres_server __package/$postgres_lib" __process postgres --start "service postgresql start"
 
 ################################################################################
 # Configure PostgreSQL
 #
+require="__process/postgres" __postgres_role "$user" \
+    --state present --login --createdb --superuser
 
-require="__package/$postgres_server" __postgres_role "$user" \
-    --state present --login --createdb
-
-require="__package/$postgres_server __postgres_role/$user" __postgres_database \
+require="__postgres_role/$user" __postgres_database \
         "$user" --state present --owner "$user"
 
-__package "$postgres_server" --state present
-
 require="__package/$postgres_server" __start_on_boot postgresql
 
 ################################################################################
@@ -79,19 +86,19 @@ require="__package/$postgres_server" __start_on_boot postgresql
 
 if [ ! -f "$__object/parameter/no-backup" ]; then
   require="__package/$postgres_server" __directory /var/backups/postgres \
-      --owner postgres --group postgres
+      --owner postgres --group postgres --parents
 
   require="__package/$postgres_server __directory/var/backups/postgres" __cron \
       pg_dumpall_under_day \
       --user postgres \
       --hour 8,9,10,11,12,14,15,16,17,18 --minute 0 \
-      --command 'nice pg_dumpall | gzip > /var/backups/postgres/dumpall-$(date +\%H\%M).sql.gz'
+      --command 'nice pg_dumpall -U postgres | gzip > /var/backups/postgres/dumpall-$(date +\%H\%M).sql.gz'
 
   require="__package/$postgres_server __directory/var/backups/postgres" __cron \
       pg_dumpall_archive \
       --user postgres \
       --hour 2 --minute 0 \
-      --command 'nice pg_dumpall | gzip > /var/backups/postgres/dumpall-$(date +\%Y\%m\%d-\%H\%M).sql.gz'
+      --command 'nice pg_dumpall -U postgres | gzip > /var/backups/postgres/dumpall-$(date +\%Y\%m\%d-\%H\%M).sql.gz'
 
   # Delete local backups after 7 days
   require="__package/$postgres_server __directory/var/backups/postgres" __cron \