--- /dev/null
+pool=davical
+sudo adduser php5_"$pool" www-"$site"
+sudo adduser www-"$site"-tls www-"$site"
+sudo adduser php5_"$pool" postgres-data
+
+sudo install -m 640 -o root -g postgres /dev/stdin \
+ /etc/davical/administration.yml <<-EOF
+ admin_db_host: /run/postgresql
+ admin_db_name: davical
+ admin_db_user: davical_dba
+ app_db_user: davical_app
+ EOF
+
+sudo sv start postgres
+while ! sudo -u postgres psql </dev/null
+do sleep 1; done
+
+# FROM: /usr/share/davical/dba/create-database.sh
+IFS= read -r ADMINPW <<-EOF
+ $(sudo cat /root/.davical_pass)
+ EOF
+AWLDIR="/usr/share/awl"
+DBADIR="/usr/share/davical/dba"
+DBNAME="davical"
+
+export AWL_APPUSER=${pool}_app
+export AWL_DBAUSER=${pool}_dba
+export DBA="-U ${AWL_DBAUSER}"
+
+# Get the major version for PostgreSQL
+export DBVERSION="`sudo -u postgres psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
+
+# Hide all the annoying NOTICE... messages
+export PGOPTIONS='--client-min-messages=warning'
+
+"$tool"/local/postgresql-role-create "$pool"
+"$tool"/local/postgresql-user-create "${AWL_APPUSER}"
+"$tool"/local/postgresql-user-create "${AWL_DBAUSER}"
+
+if test ! "$pool" = "$(sudo -u postgres psql -AqtX -c \
+ "SELECT datname
+ FROM pg_catalog.pg_database
+ WHERE datname = '$pool'
+ LIMIT 1;")"
+ then
+ "$tool"/local/postgresql-database-create "$pool" "${AWL_DBAUSER}"
+ # Load the AWL base tables and schema management tables
+ sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
+ sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
+ # Load the DAViCal tables
+ sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
+ fi
+
+sudo -u postgres psql -AqtX "$pool" <<-EOF
+ \set ON_ERROR_STOP on
+ GRANT $pool TO $AWL_DBAUSER;
+ GRANT USAGE ON SCHEMA pg_catalog TO $AWL_DBAUSER;
+ GRANT $pool TO $AWL_APPUSER;
+ GRANT CONNECT ON DATABASE $pool TO $AWL_APPUSER;
+ GRANT USAGE ON SCHEMA pg_catalog TO $AWL_APPUSER;
+ GRANT SELECT ON pg_catalog.pg_attribute TO $AWL_APPUSER;
+ GRANT SELECT ON pg_catalog.pg_class TO $AWL_APPUSER;
+ GRANT SELECT ON pg_catalog.pg_type TO $AWL_APPUSER;
+ EOF
+
+# Set permissions for the application DB user on the database
+sudo -u postgres ${DBADIR}/update-davical-database \
+ --appuser "${AWL_APPUSER}" \
+ --dbname "${DBNAME}" \
+ --nopatch \
+ --owner "${AWL_DBAUSER}"
+
+# Load the required base data
+test 1 = "$(sudo -u postgres psql -AqtX -U davical_dba davical \
+ -c "SELECT role_no FROM roles WHERE role_no = 1;")" ||
+sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}"
+sudo -u postgres psql -qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
+
+eval home="~www-$pool"
+sudo install -m 640 -o root -g php5_"$pool" \
+ "$tool"/etc/davical/davical."$local_domainname"-conf.php \
+ /etc/davical/davical."$local_domainname"-conf.php