[INFRA-208] Reorganize deployment structure and update build workflows (#7391)
* refactor: reorganize deployment structure and update build workflows - Restructure deployment directories from deploy/ to deployments/ - Move selfhost files to deployments/cli/community/ - Add new AIO community deployment setup - Update GitHub Actions workflows for new directory structure - Add Caddy proxy configuration for CE deployment - Remove deprecated AIO build files and workflows - Update build context paths in install scripts * chore: update Dockerfile and supervisor configuration - Changed `apk add` command in Dockerfile to use `--no-cache` for better image size management. - Updated `build.sh` to ensure proper directory navigation with quotes around `dirname "$0"`. - Modified `supervisor.conf` to set `stderr_logfile_maxbytes` to 50MB and added `stderr_logfile_backups` for better log management across multiple services. * chore: consistent node and python version --------- Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
This commit is contained in:
parent
dff2f8ae12
commit
6d01622663
37 changed files with 958 additions and 1708 deletions
169
deployments/aio/community/start.sh
Normal file
169
deployments/aio/community/start.sh
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
print_header(){
|
||||
clear
|
||||
echo "------------------------------------------------"
|
||||
echo "Plane Community (All-In-One)"
|
||||
echo "------------------------------------------------"
|
||||
echo ""
|
||||
echo "You are required to pass below environment variables to the script"
|
||||
echo " DOMAIN_NAME, DATABASE_URL, REDIS_URL, AMQP_URL"
|
||||
echo " AWS_REGION, AWS_ACCESS_KEY_ID"
|
||||
echo " AWS_SECRET_ACCESS_KEY, AWS_S3_BUCKET_NAME"
|
||||
echo ""
|
||||
echo "Other optional environment variables: "
|
||||
echo " SITE_ADDRESS (default: ':80')"
|
||||
echo " FILE_SIZE_LIMIT (default: 5242880)"
|
||||
echo " APP_PROTOCOL (http or https)"
|
||||
echo " SECRET_KEY (default: 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5)"
|
||||
echo " LIVE_SERVER_SECRET_KEY (default: htbqvBJAgpm9bzvf3r4urJer0ENReatceh)"
|
||||
echo ""
|
||||
echo ""
|
||||
}
|
||||
|
||||
check_required_env(){
|
||||
echo "Checking required environment variables..."
|
||||
local keys=("DOMAIN_NAME" "DATABASE_URL" "REDIS_URL" "AMQP_URL"
|
||||
"AWS_REGION" "AWS_ACCESS_KEY_ID" "AWS_SECRET_ACCESS_KEY" "AWS_S3_BUCKET_NAME")
|
||||
|
||||
local missing_keys=()
|
||||
# Check if the environment variable is set and not empty
|
||||
for key in "${keys[@]}"; do
|
||||
if [ -z "${!key}" ]; then
|
||||
echo " ❌ '$key' is not set or is empty"
|
||||
missing_keys+=("$key")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#missing_keys[@]} -gt 0 ]; then
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
# add checkmark
|
||||
echo "✅ Required environment variables are available"
|
||||
echo ""
|
||||
}
|
||||
|
||||
update_env_value(){
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
|
||||
# check if the file exists
|
||||
if [ ! -f "plane.env" ]; then
|
||||
echo "plane.env file not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if the key exists and add it if it doesn't
|
||||
if ! grep -q "^$key=.*" plane.env; then
|
||||
echo "${key}=${value}" >> plane.env
|
||||
return 0
|
||||
fi
|
||||
|
||||
# if key and value are not empty, update the value
|
||||
if [ -n "$key" ] && [ -n "$value" ]; then
|
||||
sed -i "s|^$key=.*|$key=$value|" plane.env
|
||||
return 0
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
check_pre_requisites(){
|
||||
check_required_env
|
||||
|
||||
# check if the file exists
|
||||
if [ ! -f "plane.env" ]; then
|
||||
echo "plane.env file not found"
|
||||
exit 1
|
||||
fi
|
||||
# add a new line to the end of the file
|
||||
echo "" >> plane.env
|
||||
echo "" >> plane.env
|
||||
echo "✅ Pre-requisites checked"
|
||||
echo ""
|
||||
|
||||
}
|
||||
|
||||
validate_domain_name() {
|
||||
local domain="$1"
|
||||
|
||||
# Check if it's an IP address first
|
||||
if [[ "$domain" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "IP"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# FQDN validation regex
|
||||
local fqdn_regex='^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\.?$'
|
||||
|
||||
if [[ "$domain" =~ $fqdn_regex ]]; then
|
||||
# Additional checks
|
||||
if [[ ${#domain} -le 253 ]] && [[ ! "$domain" =~ \.\. ]] && [[ ! "$domain" =~ ^- ]] && [[ ! "$domain" =~ -\. ]]; then
|
||||
echo "FQDN"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "INVALID"
|
||||
return 1
|
||||
}
|
||||
|
||||
update_env_file(){
|
||||
echo "Updating environment file..."
|
||||
# check if DOMAIN_NAME is valid IP address
|
||||
local domain_type=$(validate_domain_name "$DOMAIN_NAME")
|
||||
if [ "$domain_type" == "INVALID" ]; then
|
||||
echo "DOMAIN_NAME is not a valid FQDN or IP address"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local app_protocol=${APP_PROTOCOL:-http}
|
||||
|
||||
update_env_value "APP_PROTOCOL" "$app_protocol"
|
||||
update_env_value "DOMAIN_NAME" "$DOMAIN_NAME"
|
||||
update_env_value "APP_DOMAIN" "$DOMAIN_NAME"
|
||||
if [ -n "$SITE_ADDRESS" ]; then
|
||||
update_env_value "SITE_ADDRESS" "$SITE_ADDRESS"
|
||||
else
|
||||
update_env_value "SITE_ADDRESS" ":80"
|
||||
fi
|
||||
update_env_value "WEB_URL" "$app_protocol://$DOMAIN_NAME"
|
||||
update_env_value "CORS_ALLOWED_ORIGINS" "http://$DOMAIN_NAME,https://$DOMAIN_NAME"
|
||||
|
||||
# update database url
|
||||
update_env_value "DATABASE_URL" "$DATABASE_URL"
|
||||
update_env_value "REDIS_URL" "$REDIS_URL"
|
||||
update_env_value "AMQP_URL" "$AMQP_URL"
|
||||
|
||||
# update aws credentials
|
||||
update_env_value "AWS_REGION" "$AWS_REGION"
|
||||
update_env_value "AWS_ACCESS_KEY_ID" "$AWS_ACCESS_KEY_ID"
|
||||
update_env_value "AWS_SECRET_ACCESS_KEY" "$AWS_SECRET_ACCESS_KEY"
|
||||
update_env_value "AWS_S3_BUCKET_NAME" "$AWS_S3_BUCKET_NAME"
|
||||
update_env_value "AWS_S3_ENDPOINT_URL" "${AWS_S3_ENDPOINT_URL:-https://s3.${AWS_REGION}.amazonaws.com}"
|
||||
update_env_value "BUCKET_NAME" "$AWS_S3_BUCKET_NAME"
|
||||
update_env_value "USE_MINIO" "0"
|
||||
|
||||
# Optional environment variables
|
||||
update_env_value "SECRET_KEY" "${SECRET_KEY:-60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5}"
|
||||
update_env_value "FILE_SIZE_LIMIT" "${FILE_SIZE_LIMIT:-5242880}"
|
||||
update_env_value "LIVE_SERVER_SECRET_KEY" "${LIVE_SERVER_SECRET_KEY:-htbqvBJAgpm9bzvf3r4urJer0ENReatceh}"
|
||||
|
||||
update_env_value "API_KEY_RATE_LIMIT" "${API_KEY_RATE_LIMIT:-60/minute}"
|
||||
|
||||
echo "✅ Environment file updated"
|
||||
echo ""
|
||||
}
|
||||
|
||||
main(){
|
||||
print_header
|
||||
check_pre_requisites
|
||||
update_env_file
|
||||
|
||||
# load plane.env as exported variables
|
||||
export $(grep -v '^#' plane.env | xargs)
|
||||
|
||||
/usr/local/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue