2025-05-31 14:00:12 -03:00
|
|
|
#!/bin/bash
|
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
HOST_BASE="/opt/gbo/tenants/$PARAM_TENANT/bot"
|
2025-05-31 14:00:12 -03:00
|
|
|
HOST_DATA="$HOST_BASE/data"
|
|
|
|
HOST_CONF="$HOST_BASE/conf"
|
|
|
|
HOST_LOGS="$HOST_BASE/logs"
|
|
|
|
|
|
|
|
mkdir -p "$HOST_DATA" "$HOST_CONF" "$HOST_LOGS"
|
|
|
|
chmod -R 750 "$HOST_BASE"
|
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
lxc launch images:debian/12 "$PARAM_TENANT"-bot -c security.privileged=true
|
2025-05-31 14:00:12 -03:00
|
|
|
sleep 15
|
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
lxc exec "$PARAM_TENANT"-bot -- bash -c "
|
2025-05-31 14:00:12 -03:00
|
|
|
apt-get update && apt-get install -y \
|
|
|
|
build-essential cmake git pkg-config libjpeg-dev libtiff-dev \
|
|
|
|
libpng-dev libavcodec-dev libavformat-dev libswscale-dev \
|
|
|
|
libv4l-dev libatlas-base-dev gfortran python3-dev cpulimit \
|
|
|
|
expect libxtst-dev libpng-dev
|
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
sudo apt-get install -y libcairo2-dev libpango1.0-dev libgif-dev librsvg2-dev
|
|
|
|
sudo apt install xvfb -y
|
|
|
|
|
|
|
|
sudo apt install -y \
|
|
|
|
libnss3 \
|
|
|
|
libatk1.0-0 \
|
|
|
|
libatk-bridge2.0-0 \
|
|
|
|
libcups2 \
|
|
|
|
libdrm2 \
|
|
|
|
libxkbcommon0 \
|
|
|
|
libxcomposite1 \
|
|
|
|
libxdamage1 \
|
|
|
|
libxfixes3 \
|
|
|
|
libxrandr2 \
|
|
|
|
libgbm1 \
|
|
|
|
libasound2 \
|
|
|
|
libpangocairo-1.0-0
|
|
|
|
|
2025-05-31 14:00:12 -03:00
|
|
|
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
|
|
|
|
export OPENCV_LIB_DIR=/usr/lib/x86_64-linux-gnu
|
|
|
|
|
2025-06-08 21:12:27 -03:00
|
|
|
useradd --system --no-create-home --shell /bin/false gbuser
|
2025-05-31 14:00:12 -03:00
|
|
|
"
|
|
|
|
|
2025-06-08 21:12:27 -03:00
|
|
|
BOT_UID=$(lxc exec "$PARAM_TENANT"-bot -- id -u gbuser)
|
|
|
|
BOT_GID=$(lxc exec "$PARAM_TENANT"-bot -- id -g gbuser)
|
2025-05-31 14:00:12 -03:00
|
|
|
HOST_BOT_UID=$((100000 + BOT_UID))
|
|
|
|
HOST_BOT_GID=$((100000 + BOT_GID))
|
|
|
|
chown -R "$HOST_BOT_UID:$HOST_BOT_GID" "$HOST_BASE"
|
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
lxc config device add "$PARAM_TENANT"-bot botdata disk source="$HOST_DATA" path=/opt/gbo/data
|
|
|
|
lxc config device add "$PARAM_TENANT"-bot botconf disk source="$HOST_CONF" path=/opt/gbo/conf
|
|
|
|
lxc config device add "$PARAM_TENANT"-bot botlogs disk source="$HOST_LOGS" path=/opt/gbo/logs
|
|
|
|
|
2025-06-07 21:36:49 -03:00
|
|
|
lxc exec "$PARAM_TENANT"-bot -- bash -c '
|
2025-06-03 23:51:27 -03:00
|
|
|
mkdir -p /opt/gbo/data /opt/gbo/conf /opt/gbo/logs
|
2025-06-07 21:36:49 -03:00
|
|
|
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install -y curl gnupg ca-certificates git
|
2025-05-31 14:00:12 -03:00
|
|
|
|
2025-06-07 21:36:49 -03:00
|
|
|
# Install Node.js 22.x
|
2025-06-03 23:51:27 -03:00
|
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
|
|
|
|
sudo apt install -y nodejs
|
2025-06-07 21:36:49 -03:00
|
|
|
|
|
|
|
# Install Xvfb and other dependencies
|
|
|
|
sudo apt install -y xvfb libgbm-dev
|
|
|
|
|
|
|
|
# Clone and setup bot server
|
2025-06-03 23:51:27 -03:00
|
|
|
cd /opt/gbo/data
|
|
|
|
git clone https://alm.pragmatismo.com.br/generalbots/botserver.git
|
|
|
|
cd botserver
|
2025-06-07 21:36:49 -03:00
|
|
|
npm install
|
|
|
|
npx puppeteer browsers install chrome
|
2025-06-03 23:51:27 -03:00
|
|
|
./node_modules/.bin/tsc
|
2025-06-08 21:12:27 -03:00
|
|
|
cd packages/default.gbui
|
|
|
|
npm install
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
chown -R gbuser:gbuser /opt/gbo
|
2025-05-31 14:00:12 -03:00
|
|
|
|
2025-06-07 21:36:49 -03:00
|
|
|
# Create systemd service
|
|
|
|
sudo tee /etc/systemd/system/bot.service > /dev/null <<EOF
|
2025-05-31 14:00:12 -03:00
|
|
|
[Unit]
|
|
|
|
Description=Bot Server
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
[Service]
|
2025-06-08 21:12:27 -03:00
|
|
|
User=gbuser
|
|
|
|
Group=gbuser
|
2025-06-03 23:51:27 -03:00
|
|
|
Environment="DISPLAY=:99"
|
|
|
|
ExecStartPre=/bin/bash -c "/usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset &"
|
|
|
|
WorkingDirectory=/opt/gbo/data/botserver
|
|
|
|
ExecStart=/usr/bin/node /opt/gbo/data/botserver/boot.mjs
|
2025-05-31 14:00:12 -03:00
|
|
|
Restart=always
|
2025-06-07 21:36:49 -03:00
|
|
|
RestartSec=5
|
2025-06-03 23:51:27 -03:00
|
|
|
StandardOutput=append:/opt/gbo/logs/stdout.log
|
|
|
|
StandardError=append:/opt/gbo/logs/stderr.log
|
2025-05-31 14:00:12 -03:00
|
|
|
|
|
|
|
[Install]
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
EOF
|
|
|
|
|
2025-06-07 21:36:49 -03:00
|
|
|
# Reload and start service
|
|
|
|
sudo systemctl daemon-reload
|
|
|
|
sudo systemctl enable bot.service
|
|
|
|
sudo systemctl start bot.service
|
|
|
|
'
|
2025-05-31 14:00:12 -03:00
|
|
|
|
2025-06-03 23:51:27 -03:00
|
|
|
lxc config device remove "$PARAM_TENANT"-bot bot-proxy 2>/dev/null || true
|
|
|
|
lxc config device add "$PARAM_TENANT"-bot bot-proxy proxy \
|
2025-05-31 14:00:12 -03:00
|
|
|
listen=tcp:0.0.0.0:"$PARAM_BOT_PORT" \
|
|
|
|
connect=tcp:127.0.0.1:"$PARAM_BOT_PORT"
|