You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.8 KiB
97 lines
2.8 KiB
#!/bin/bash
|
|
|
|
# this is the install script
|
|
# install_script = "/opt/swarms/api/rundocker.sh"
|
|
# called on boot.
|
|
|
|
# this is the refresh script called from ssm for a refresh
|
|
# #refresh_script = "/opt/swarms/api/docker-boot.sh"
|
|
|
|
# file not found
|
|
#
|
|
pwd
|
|
ls -latr
|
|
. ./.env # for secrets
|
|
set -e # stop on any error
|
|
#export ROOT="" # empty
|
|
export WORKSOURCE="/opt/swarms/api"
|
|
|
|
adduser --disabled-password --gecos "" swarms --home "/home/swarms" || echo ignore
|
|
git config --global --add safe.directory "/opt/swarms"
|
|
git config --global --add safe.directory "/opt/swarms-memory"
|
|
|
|
cd "/opt/swarms/" || exit 1 # "we need swarms"
|
|
git log -2 --patch | head -1000
|
|
|
|
mkdir -p "/var/swarms/agent_workspace/"
|
|
mkdir -p "/home/swarms"
|
|
|
|
|
|
cd "/opt/swarms/" || exit 1 # "we need swarms"
|
|
|
|
mkdir -p "/var/swarms/logs"
|
|
chown -R swarms:swarms "/var/swarms/" "/home/swarms" "/opt/swarms"
|
|
|
|
if [ -f "/var/swarms/agent_workspace/boot_fast.sh" ];
|
|
then
|
|
chmod +x "/var/swarms/agent_workspace/boot_fast.sh" || echo faild
|
|
|
|
# user install but do not start
|
|
su -c "bash -e -x /var/swarms/agent_workspace/boot_fast.sh" swarms
|
|
fi
|
|
cd "/opt/swarms/" || exit 1 # "we need swarms"
|
|
|
|
mkdir -p "/var/run/swarms/secrets/"
|
|
mkdir -p "/home/swarms/.cache/huggingface/hub"
|
|
|
|
set +x
|
|
OPENAI_KEY=$(aws ssm get-parameter --name "swarms_openai_key" | jq .Parameter.Value -r )
|
|
export OPENAI_KEY
|
|
echo "OPENAI_KEY=${OPENAI_KEY}" > "/var/run/swarms/secrets/env"
|
|
set -x
|
|
|
|
## append new homedir
|
|
# check if the entry exists already before appending pls
|
|
if ! grep -q "HF_HOME" "/var/run/swarms/secrets/env"; then
|
|
echo "HF_HOME=/home/swarms/.cache/huggingface/hub" >> "/var/run/swarms/secrets/env"
|
|
fi
|
|
|
|
if ! grep -q "^HOME" "/var/run/swarms/secrets/env"; then
|
|
echo "HOME=/home/swarms" >> "/var/run/swarms/secrets/env"
|
|
fi
|
|
|
|
if ! grep -q "^HOME" "/var/run/swarms/secrets/env"; then
|
|
# attempt to move the workspace
|
|
echo "WORKSPACE_DIR=\${STATE_DIRECTORY}" >> "/var/run/swarms/secrets/env"
|
|
fi
|
|
|
|
# setup the systemd service again
|
|
sed -e "s!ROOT!!g" > /etc/nginx/sites-enabled/default < "${WORKSOURCE}/nginx/site.conf"
|
|
sed -e "s!ROOT!!g" > /etc/systemd/system/swarms-docker.service < "${WORKSOURCE}/systemd/swarms-docker.service"
|
|
grep . -h -n /etc/systemd/system/swarms-docker.service
|
|
|
|
chown -R swarms:swarms /var/run/swarms/
|
|
mkdir -p /opt/swarms/api/agent_workspace/try_except_wrapper/
|
|
chown -R swarms:swarms /opt/swarms/api/
|
|
|
|
# always reload
|
|
systemctl daemon-reload
|
|
systemctl start swarms-docker || journalctl -xeu swarms-docker
|
|
systemctl enable swarms-docker || journalctl -xeu swarms-docker
|
|
systemctl enable nginx
|
|
systemctl start nginx
|
|
|
|
journalctl -xeu swarms-docker | tail -200 || echo oops
|
|
systemctl status swarms-docker || echo oops2
|
|
|
|
# now after swarms is up, we restart nginx
|
|
HOST="localhost"
|
|
PORT=8000
|
|
while ! nc -z $HOST $PORT; do
|
|
sleep 1
|
|
echo -n "."
|
|
done
|
|
echo "Port ${PORT} is now open!"
|
|
|
|
systemctl restart nginx
|