Last active
October 30, 2023 08:43
-
-
Save polaroi8d/c5caf0edd5837fe8587d541bc684353f to your computer and use it in GitHub Desktop.
Azure Marketplace: dyrector.io Platform
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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