forked from sagnik/Project_Velocity
Co-authored-by: Sagnik <sagnik7896@gmail.com> Reviewed-on: sagnik/Project_Velocity#19
73 lines
1.8 KiB
Bash
73 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
COMFY_DIR="/opt/dlami/nvme/ComfyUI"
|
|
SERVICE_NAME="comfyui"
|
|
LOG_DIR="/var/log/comfyui"
|
|
ENSURE_SCRIPT="/usr/local/bin/desineuron-ensure-comfyui.sh"
|
|
|
|
if ! command -v git >/dev/null 2>&1; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y git
|
|
fi
|
|
|
|
sudo tee "${ENSURE_SCRIPT}" >/dev/null <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
COMFY_DIR="/opt/dlami/nvme/ComfyUI"
|
|
|
|
sudo mkdir -p /opt/dlami/nvme
|
|
sudo chown -R ubuntu:ubuntu /opt/dlami/nvme
|
|
|
|
if [ ! -d "${COMFY_DIR}/.git" ]; then
|
|
rm -rf "${COMFY_DIR}"
|
|
git clone https://github.com/comfyanonymous/ComfyUI.git "${COMFY_DIR}"
|
|
else
|
|
git -C "${COMFY_DIR}" fetch --all --prune
|
|
git -C "${COMFY_DIR}" reset --hard origin/master
|
|
fi
|
|
|
|
python3 -m pip install -r "${COMFY_DIR}/requirements.txt"
|
|
|
|
if [ ! -f "${COMFY_DIR}/main.py" ]; then
|
|
echo "ComfyUI main.py missing after ensure step" >&2
|
|
exit 1
|
|
fi
|
|
EOF
|
|
sudo chmod 0755 "${ENSURE_SCRIPT}"
|
|
|
|
sudo -u ubuntu "${ENSURE_SCRIPT}"
|
|
|
|
sudo mkdir -p "${LOG_DIR}"
|
|
sudo chown -R ubuntu:ubuntu "${LOG_DIR}"
|
|
|
|
sudo tee /etc/systemd/system/${SERVICE_NAME}.service >/dev/null <<'EOF'
|
|
[Unit]
|
|
Description=ComfyUI GPU Service
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=ubuntu
|
|
Group=ubuntu
|
|
WorkingDirectory=/opt/dlami/nvme/ComfyUI
|
|
Environment=HOME=/home/ubuntu
|
|
Environment=PYTHONUNBUFFERED=1
|
|
ExecStartPre=/usr/local/bin/desineuron-ensure-comfyui.sh
|
|
ExecStart=/usr/bin/python3 /opt/dlami/nvme/ComfyUI/main.py --listen 0.0.0.0 --port 8188 --disable-auto-launch
|
|
Restart=always
|
|
RestartSec=5
|
|
StandardOutput=append:/var/log/comfyui/service.log
|
|
StandardError=append:/var/log/comfyui/service.log
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable --now "${SERVICE_NAME}.service"
|
|
sleep 5
|
|
sudo systemctl --no-pager --full status "${SERVICE_NAME}.service"
|