Skip to content

Instantly share code, notes, and snippets.

@polaroi8d
Last active October 30, 2023 08:43
Show Gist options
  • Save polaroi8d/c5caf0edd5837fe8587d541bc684353f to your computer and use it in GitHub Desktop.
Save polaroi8d/c5caf0edd5837fe8587d541bc684353f to your computer and use it in GitHub Desktop.
Azure Marketplace: dyrector.io Platform
#!/bin/bash
set -eu
sudo su - root
cd /home/dyrectorio/
# Install Docker on RHEL 8.3
echo "---- Starting install docker services... ----" >>dyrectorio_marketplace_bootstrap.log
sudo yum install -y yum-utils
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
# Setup Firewall
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
# Download dyrector.io platform
echo "---- Downloading docker-compose.yaml & .env... ----" >>dyrectorio_marketplace_bootstrap.log
wget https://raw.githubusercontent.com/dyrector-io/dyrectorio/develop/docker-compose.yaml
wget -O .env https://raw.githubusercontent.com/dyrector-io/dyrectorio/develop/.env.example
# Function to generate a random password
generate_password() {
local password
password=$(openssl rand -base64 32 | tr -d '/')
echo "$password"
}
# Detect OS
case $(uname) in
Darwin*)
echo "---- Detected OS: OSX ----" >>dyrectorio_marketplace_bootstrap.log
PLATFORM="OSX"
;;
Linux*)
PLATFORM="LINUX"
echo "---- Detected OS: LINUX ----" >>dyrectorio_marketplace_bootstrap.log
;;
*)
echo "---- Not Supported OS ----" >>dyrectorio_marketplace_bootstrap.log
exit 1
;;
esac
# Update the .env file variables regarding the OS
update_env() {
local key="$1"
local value="$2"
if [ "$PLATFORM" = "OSX" ]; then
sed -i '' "s/$key=.*/$key=$value/" .env
else
sed -i "s/$key=.*/$key=$value/" .env
fi
}
# Process command-line arguments
for ARGUMENT in "$@"; do
KEY=$(echo "$ARGUMENT" | cut -f1 -d=)
VALUE=$(echo "$ARGUMENT" | cut -f2 -d=)
case "$KEY" in
DOMAIN) DOMAIN="$VALUE" ;;
ACME_EMAIL) ACME_EMAIL="$VALUE" ;;
SMTP_URI) SMTP_URI="$VALUE" ;;
FROM_EMAIL) FROM_EMAIL="$VALUE" ;;
FROM_NAME) FROM_NAME="$VALUE" ;;
RECAPTCHA_SECRET_KEY) RECAPTCHA_SECRET_KEY="$VALUE" ;;
RECAPTCHA_SITE_KEY) RECAPTCHA_SITE_KEY="$VALUE" ;;
*) ;;
esac
done
# Generate passwords
CRUX_POSTGRES_PASSWORD=$(generate_password)
KRATOS_POSTGRES_PASSWORD=$(generate_password)
CRUX_SECRET=$(generate_password)
KRATOS_SECRET=$(generate_password)
ESCAPED_SMTP_URI=$(echo "$SMTP_URI" | sed 's/\//\\\//g')
EXTERNAL_URL="https://$DOMAIN"
ESCAPED_EXTERNAL_URL=$(echo "$EXTERNAL_URL" | sed 's/\//\\\//g')
echo "---- Updating envs... ----" >>dyrectorio_marketplace_bootstrap.log
# Domains
update_env "DOMAIN" "$DOMAIN"
update_env "EXTERNAL_URL" "$ESCAPED_EXTERNAL_URL"
update_env "ACME_EMAIL" "$ACME_EMAIL"
# SMTP
update_env "SMTP_URI" "$ESCAPED_SMTP_URI"
update_env "FROM_EMAIL" "$FROM_EMAIL"
update_env "FROM_NAME" "$FROM_NAME"
# ReCaptcha
update_env "RECAPTCHA_SECRET_KEY" "$RECAPTCHA_SECRET_KEY"
update_env "RECAPTCHA_SITE_KEY" "$RECAPTCHA_SITE_KEY"
# Secrets
update_env "CRUX_POSTGRES_PASSWORD" "$CRUX_POSTGRES_PASSWORD"
update_env "KRATOS_POSTGRES_PASSWORD" "$KRATOS_POSTGRES_PASSWORD"
update_env "CRUX_SECRET" "$CRUX_SECRET"
update_env "KRATOS_SECRET" "$KRATOS_SECRET"
# Print the configuration
echo "---- Domains -----" >>dyrectorio_marketplace_bootstrap.log
echo "DOMAIN: $DOMAIN" >>dyrectorio_marketplace_bootstrap.log
echo "EXTERNAL_URL: $ESCAPED_EXTERNAL_URL" >>dyrectorio_marketplace_bootstrap.log
echo "ACME_EMAIL: $ACME_EMAIL" >>dyrectorio_marketplace_bootstrap.log
echo "---- SMTP -----" >>dyrectorio_marketplace_bootstrap.log
echo "SMTP_URI: $ESCAPED_SMTP_URI" >>dyrectorio_marketplace_bootstrap.log
echo "FROM_EMAIL: $FROM_EMAIL" >>dyrectorio_marketplace_bootstrap.log
echo "FROM_NAME: $FROM_NAME" >>dyrectorio_marketplace_bootstrap.log
echo "---- ReCaptcha -----" >>dyrectorio_marketplace_bootstrap.log
echo "RECAPTCHA_SECRET_KEY: $RECAPTCHA_SECRET_KEY" >>dyrectorio_marketplace_bootstrap.log
echo "RECAPTCHA_SITE_KEY: $RECAPTCHA_SITE_KEY" >>dyrectorio_marketplace_bootstrap.log
echo "---- Secrets -----" >>dyrectorio_marketplace_bootstrap.log
echo "CRUX_POSTGRES_PASSWORD: $CRUX_POSTGRES_PASSWORD" >>dyrectorio_marketplace_bootstrap.log
echo "KRATOS_POSTGRES_PASSWORD: $KRATOS_POSTGRES_PASSWORD" >>dyrectorio_marketplace_bootstrap.log
echo "CRUX_SECRET: $CRUX_SECRET" >>dyrectorio_marketplace_bootstrap.log
echo "KRATOS_SECRET: $KRATOS_SECRET" >>dyrectorio_marketplace_bootstrap.log
echo "---- Starting docker compose up.... ----" >>dyrectorio_marketplace_bootstrap.log
docker compose up -d
echo "---- Bootstrap script done. ----" >>dyrectorio_marketplace_bootstrap.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment