|
| 1 | +#!/usr/bin/env bash |
| 2 | +# |
| 3 | +# Start the webgenie admin interface |
| 4 | +# |
| 5 | + |
| 6 | +function monitor() { |
| 7 | + [[ -z ${MONITOR} ]] && return |
| 8 | + # Run the monitor script to check project health |
| 9 | + |
| 10 | + while true; do |
| 11 | + date |
| 12 | + python database/manager.py -m |
| 13 | + sleep 250 |
| 14 | + done |
| 15 | +} |
| 16 | + |
| 17 | +function start_dev() { |
| 18 | + [[ -z ${VITE_DEV} ]] && return |
| 19 | + # Start the web dev server |
| 20 | + cd /opt/webgenai/simple-spa |
| 21 | + if [[ ! -e node_modules ]]; then |
| 22 | + echo "$PWD/node_modules does not exist" |
| 23 | + |
| 24 | + read -p "Do you want to continue? (y/n): " answer |
| 25 | + if [ "$answer" != "${answer#[Nn]}" ] ;then |
| 26 | + return |
| 27 | + fi |
| 28 | + npm i |
| 29 | + fi |
| 30 | + VITE_PORT=5174 npm run dev & |
| 31 | +} |
| 32 | + |
| 33 | +function update_schema() { |
| 34 | + # Update the schema |
| 35 | + set +e |
| 36 | + cd /opt/webgenai |
| 37 | + bash database/update_schema.sh "${DB_URI}" |
| 38 | + set -e |
| 39 | +} |
| 40 | + |
| 41 | +function start_nginx() { |
| 42 | + NGINX_PORT=${WG_NGINX_PORT:-80} |
| 43 | + sed -i "s/80 default_server/${NGINX_PORT} default_server/" /etc/nginx/sites-available/default |
| 44 | + sed -i "s/80 default_server/${NGINX_PORT} default_server/" /etc/nginx/wg.conf |
| 45 | + set +e |
| 46 | + rm /opt/projects/wgadmin/nginx/*conf |
| 47 | + set -e |
| 48 | + # Start the nginx server |
| 49 | + nginx -g 'daemon off;' & |
| 50 | + echo "Nginx started" |
| 51 | +} |
| 52 | + |
| 53 | +set -e |
| 54 | +set -x |
| 55 | +cd /opt/webgenai |
| 56 | +[[ -f extra_scripts.sh ]] && source extra_scripts.sh |
| 57 | + |
| 58 | +export APILOGICPROJECT_SWAGGER_PORT=${APILOGICPROJECT_SWAGGER_PORT:-8282} |
| 59 | +export APILOGICPROJECT_EXTERNAL_PORT=${APILOGICPROJECT_EXTERNAL_PORT:-8282} |
| 60 | + |
| 61 | +export APILOGICPROJECT_SWAGGER_HOST=${APILOGICPROJECT_EXTERNAL_HOST:-localhost} |
| 62 | +export APILOGICPROJECT_PORT=${APILOGICPROJECT_PORT:-5657} |
| 63 | +export PROJ_ROOT="/opt/projects" |
| 64 | +export UPLOAD_FOLDER="${PROJ_ROOT}/wgupload" |
| 65 | + |
| 66 | +mkdir -p "${UPLOAD_FOLDER}" "${PROJ_ROOT}/wgadmin/nginx" |
| 67 | + |
| 68 | +RED='\033[0;31m' |
| 69 | +GREEN='\033[0;32m' |
| 70 | +NC='\033[0m' # No Color |
| 71 | + |
| 72 | +start_nginx |
| 73 | + |
| 74 | + |
| 75 | +start_dev & |
| 76 | + |
| 77 | +# Enable security if password is set in container environment |
| 78 | +[[ -n "${ADMIN_PASSWORD}" ]] && export SECURITY_ENABLED="true" |
| 79 | + |
| 80 | +if [[ -z ${SECURITY_ENABLED} || ${SECURITY_ENABLED} == "false" || ${SECURITY_ENABLED} == "no" ]] ; then |
| 81 | + echo -e "${RED}Authentication disabled (\$SECURITY_ENABLED=${SECURITY_ENABLED}) ${NC}" |
| 82 | + export SECURITY_ENABLED="false" |
| 83 | +else |
| 84 | + echo -e "${GREEN}Authentication enabled ${NC}" |
| 85 | + export JWT_SECRET_KEY=${JWT_SECRET_KEY:-$(openssl rand -hex 32)} |
| 86 | +fi |
| 87 | + |
| 88 | +if [[ -z ${APILOGICSERVER_CHATGPT_APIKEY} ]]; then |
| 89 | + echo 'No $APILOGICSERVER_CHATGPT_APIKEY, Please provide a valid key if you want to use GenAI' |
| 90 | + echo -n '> ' |
| 91 | + read APILOGICSERVER_CHATGPT_APIKEY |
| 92 | + export APILOGICSERVER_CHATGPT_APIKEY |
| 93 | +fi |
| 94 | + |
| 95 | +export PYTHONPATH=$PWD |
| 96 | +# Database |
| 97 | +export DB_URI=${DB_URI:-"${PROJ_ROOT}/wgadmin/db.sqlite"} |
| 98 | +export SQLALCHEMY_DATABASE_URI="sqlite:///${DB_URI}" |
| 99 | +export WG_SQLALCHEMY_DATABASE_URI="${SQLALCHEMY_DATABASE_URI}" |
| 100 | +( update_schema ${DB_URI} ) |
| 101 | +# if [[ ! -e "${DB_URI}" ]]; then |
| 102 | +# echo "Creating database at ${DB_URI}" |
| 103 | +# python database/manager.py -c 2>/dev/null |
| 104 | +# fi |
| 105 | + |
| 106 | +python database/manager.py -c 2>/dev/null |
| 107 | +# Kill any running project / set "running" to false |
| 108 | +python database/manager.py -K & |
| 109 | +ln -sfr /opt/projects/by-ulid ~ |
| 110 | + |
| 111 | +# Temp fix - ignore optlocking |
| 112 | +export OPT_LOCKING=${OPT_LOCKING:-ignored} |
| 113 | +#> /home/api_logic_server/api_logic_server_cli/templates/opt_locking.txt |
| 114 | + |
| 115 | + |
| 116 | +monitor & |
| 117 | + |
| 118 | +echo WG BUILD: $(cat build_ts.txt) |
| 119 | +export GUNICORN_CMD_ARGS=" --worker-tmp-dir=/dev/shm -b 0.0.0.0:${APILOGICPROJECT_PORT} --timeout 60 --workers 3 --threads 2 --reload" |
| 120 | +gunicorn api_logic_server_run:flask_app |
0 commit comments