open-productive-stack/create_infra.bash
2026-01-19 08:57:23 +01:00

76 lines
3.7 KiB
Bash
Executable file

#!/bin/bash
set -e
source ./core/.env
source ./drupal/.env
create_mta_sts_policy() {
local template_path="./core/mta-sts/.well-known/mta-sts.txt.template"
local output_path="./core/mta-sts/.well-known/mta-sts.txt"
local mailcow_conf="./mailcow/mailcow.conf"
local mailcow_hostname=""
if [ ! -f "$template_path" ]; then
return 0
fi
if [ -f "$mailcow_conf" ]; then
mailcow_hostname=$(grep '^MAILCOW_HOSTNAME=' "$mailcow_conf" | cut -d= -f2)
fi
if [ -z "$mailcow_hostname" ] && [ -n "$DOMAIN" ]; then
mailcow_hostname="mail.${DOMAIN}"
fi
if [ ! -f "$output_path" ]; then
mkdir -p "$(dirname "$output_path")"
sed "s/{{MAILCOW_HOSTNAME}}/${mailcow_hostname}/g" "$template_path" > "$output_path"
echo "Created MTA-STS policy at ${output_path}"
else
echo "MTA-STS policy already exists at ${output_path}"
fi
}
create_mta_sts_policy
if [ ! -d "./drupal/drupal/root" ]; then
echo "Creating Drupal infrastructure..."
mkdir -p ./drupal/drupal/root
docker run --rm drupal:$DRUPAL_VERSION-php$DRUPAL_PHP_VERSION-fpm-$DRUPAL_OS_VERSION tar -cC /opt/drupal/ . | tar -xC ./drupal/drupal/root
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE USER $DRUPAL_DB_USER WITH PASSWORD '$DRUPAL_DB_PASSWORD';"
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE DATABASE $DRUPAL_DB_NAME OWNER $DRUPAL_DB_USER;"
docker exec postgres psql -U $POSTGRES_USER -d $DRUPAL_DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $DRUPAL_DB_NAME TO $DRUPAL_DB_USER;"
echo "Drupal infrastructure created"
else
echo "Drupal infrastructure already exists"
fi
echo "Creating Hedgehog infrastructure..."
source ./hedgedoc/.env
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE USER $HEDGEDOC_DB_USER WITH PASSWORD '$HEDGEDOC_DB_PASSWORD';"
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE DATABASE $HEDGEDOC_DB_NAME OWNER $HEDGEDOC_DB_USER;"
docker exec postgres psql -U $POSTGRES_USER -d $HEDGEDOC_DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $HEDGEDOC_DB_NAME TO $HEDGEDOC_DB_USER;"
echo "Hedgehog infrastructure created"
echo "Creating Nextcloud infrastructure..."
source ./nextcloud/.env
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE USER $NEXTCLOUD_DB_USER WITH PASSWORD '$NEXTCLOUD_DB_PASSWORD';"
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE DATABASE $NEXTCLOUD_DB_NAME OWNER $NEXTCLOUD_DB_USER;"
docker exec postgres psql -U $POSTGRES_USER -d $NEXTCLOUD_DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $NEXTCLOUD_DB_NAME TO $NEXTCLOUD_DB_USER;"
echo "Nextcloud infrastructure created"
echo "Creating OnlyOffice infrastructure..."
source ./onlyoffice/.env
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE USER $ONLYOFFICE_DB_USER WITH PASSWORD '$ONLYOFFICE_DB_PASSWORD';"
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE DATABASE $ONLYOFFICE_DB_NAME OWNER $ONLYOFFICE_DB_USER;"
docker exec postgres psql -U $POSTGRES_USER -d $ONLYOFFICE_DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $ONLYOFFICE_DB_NAME TO $ONLYOFFICE_DB_USER;"
echo "OnlyOffice infrastructure created"
echo "Creating OpenProject infrastructure..."
source ./openproject/.env
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE USER $OPENPROJECT_DB_USER WITH PASSWORD '$OPENPROJECT_DB_PASSWORD';"
docker exec postgres psql -U $POSTGRES_USER -d postgres -c "CREATE DATABASE $OPENPROJECT_DB_NAME OWNER $OPENPROJECT_DB_USER;"
docker exec postgres psql -U $POSTGRES_USER -d $OPENPROJECT_DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $OPENPROJECT_DB_NAME TO $OPENPROJECT_DB_USER;"
echo "OpenProject infrastructure created"