adbrasi commited on
Commit
e6acb78
·
verified ·
1 Parent(s): c735244

Upload comfyui_setup_script.sh

Browse files
Files changed (1) hide show
  1. comfyui_setup_script.sh +112 -32
comfyui_setup_script.sh CHANGED
@@ -23,11 +23,26 @@ readonly NC='\033[0m' # No Color
23
  # Configurações
24
  readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
  readonly LOG_FILE="${SCRIPT_DIR}/setup.log"
26
- readonly COMFY_DIR="/root/comfy"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  readonly TOKEN="0b698de03658fb8df2eeef90bad3ab9a"
28
  readonly LISTEN_PORT="8818"
29
 
30
- # URLs dos arquivos
31
  declare -A DOWNLOADS=(
32
  ["checkpoint"]="https://civitai.com/api/download/models/1761560?type=Model&format=SafeTensor&size=pruned&fp=fp16&token=${TOKEN}"
33
  ["lora1"]="https://civitai.com/api/download/models/1426079?type=Model&format=SafeTensor&token=${TOKEN}"
@@ -46,6 +61,13 @@ declare -A DOWNLOAD_PATHS=(
46
  ["ultralytics_bbox_99coins"]="${COMFY_DIR}/ComfyUI/models/ultralytics/bbox"
47
  )
48
 
 
 
 
 
 
 
 
49
  # =============================================================================
50
  # FUNÇÕES UTILITÁRIAS
51
  # =============================================================================
@@ -102,12 +124,34 @@ install_system_packages() {
102
  log "STEP" "Instalando pacotes do sistema..."
103
 
104
  if command -v apt-get &> /dev/null; then
105
- apt-get update -qq
106
- apt-get install -y -qq aria2 wget curl
107
- log "SUCCESS" "Pacotes do sistema instalados com sucesso"
108
- else
109
- log "WARN" "apt-get não encontrado, pulando instalação de pacotes do sistema"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  fi
 
 
 
 
 
 
 
 
111
  }
112
 
113
  install_comfy_cli() {
@@ -161,13 +205,16 @@ create_directories() {
161
  local dirs=(
162
  "${COMFY_DIR}/ComfyUI/models/checkpoints"
163
  "${COMFY_DIR}/ComfyUI/models/loras"
164
- "${COMFY_DIR}/ComfyUI/models/upscale_models" # Diretório adicionado
165
- "${COMFY_DIR}/ComfyUI/models/ultralytics/bbox" # Diretório adicionado
166
  )
167
 
168
  for dir in "${dirs[@]}"; do
169
- mkdir -p "$dir"
170
- log "INFO" "Diretório criado: $dir"
 
 
 
171
  done
172
  }
173
 
@@ -185,32 +232,60 @@ download_files() {
185
 
186
  log "INFO" "Baixando $name..."
187
 
188
- if [[ "$name" == "snapshot" ]]; then
189
- # Usar wget para o snapshot
190
- if wget --quiet --show-progress --progress=bar:force:noscroll \
191
- --timeout=30 --tries=3 \
192
- "$url" -P "$path"; then
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  log "SUCCESS" "Download concluído: $name"
194
  return 0
195
  else
196
- log "ERROR" "Falha no download: $name"
197
- return 1
 
 
 
 
 
 
 
 
 
 
198
  fi
199
  else
200
- # Usar aria2c para modelos grandes
201
- if aria2c --console-log-level=warn \
202
- --summary-interval=10 \
203
- --download-result=hide \
204
- -c -s 16 -x 16 -k 1M \
205
- --timeout=60 --retry-wait=5 --max-tries=3 \
206
- -d "$path" "$url"; then
207
- log "SUCCESS" "Download concluído: $name"
208
  return 0
209
- else
210
- log "ERROR" "Falha no download: $name"
211
- return 1
212
  fi
213
  fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  }
215
 
216
  # Iniciar downloads em paralelo
@@ -347,6 +422,9 @@ main() {
347
  fi
348
  fi
349
 
 
 
 
350
  # Executar etapas da instalação
351
  local steps=(
352
  "check_dependencies"
@@ -398,10 +476,12 @@ trap 'log "ERROR" "Script interrompido pelo usuário"; exit 1' INT TERM
398
  # EXECUÇÃO
399
  # =============================================================================
400
 
401
- # Verificar se está sendo executado como root (recomendado para RunPod/VastAI)
402
  if [[ $EUID -ne 0 ]]; then
403
- log "WARN" "Script não está sendo executado como root"
404
- log "WARN" "Algumas operações podem falhar"
 
 
405
  fi
406
 
407
  # Executar função principal
 
23
  # Configurações
24
  readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
  readonly LOG_FILE="${SCRIPT_DIR}/setup.log"
26
+
27
+ # Detectar diretório base automaticamente
28
+ detect_base_dir() {
29
+ if [[ -d "/teamspace/studios" ]]; then
30
+ echo "/teamspace/studios/this_studio"
31
+ elif [[ -d "/workspace" ]]; then
32
+ echo "/workspace"
33
+ elif [[ $EUID -eq 0 ]]; then
34
+ echo "/root"
35
+ else
36
+ echo "$HOME"
37
+ fi
38
+ }
39
+
40
+ readonly BASE_DIR="$(detect_base_dir)"
41
+ readonly COMFY_DIR="${BASE_DIR}/comfy"
42
  readonly TOKEN="0b698de03658fb8df2eeef90bad3ab9a"
43
  readonly LISTEN_PORT="8818"
44
 
45
+ # URLs dos arquivos com nomes específicos
46
  declare -A DOWNLOADS=(
47
  ["checkpoint"]="https://civitai.com/api/download/models/1761560?type=Model&format=SafeTensor&size=pruned&fp=fp16&token=${TOKEN}"
48
  ["lora1"]="https://civitai.com/api/download/models/1426079?type=Model&format=SafeTensor&token=${TOKEN}"
 
61
  ["ultralytics_bbox_99coins"]="${COMFY_DIR}/ComfyUI/models/ultralytics/bbox"
62
  )
63
 
64
+ # Nomes específicos para os arquivos
65
+ declare -A DOWNLOAD_NAMES=(
66
+ ["snapshot"]="snapshotBRABEX.json"
67
+ ["upscaler_animesharpv3"]="2x-AnimeSharpV3.pth"
68
+ ["ultralytics_bbox_99coins"]="99coins_anime_girl_face_m_seg.pt"
69
+ )
70
+
71
  # =============================================================================
72
  # FUNÇÕES UTILITÁRIAS
73
  # =============================================================================
 
124
  log "STEP" "Instalando pacotes do sistema..."
125
 
126
  if command -v apt-get &> /dev/null; then
127
+ # Tentar instalar com sudo se não for root
128
+ if [[ $EUID -ne 0 ]]; then
129
+ if command -v sudo &> /dev/null; then
130
+ log "INFO" "Tentando instalar com sudo..."
131
+ if sudo apt-get update -qq && sudo apt-get install -y -qq aria2 wget curl; then
132
+ log "SUCCESS" "Pacotes do sistema instalados com sucesso (com sudo)"
133
+ return 0
134
+ else
135
+ log "WARN" "Falha ao instalar com sudo, tentando sem privilégios elevados..."
136
+ fi
137
+ else
138
+ log "WARN" "sudo não disponível, pulando instalação de pacotes do sistema"
139
+ fi
140
+ else
141
+ apt-get update -qq
142
+ apt-get install -y -qq aria2 wget curl
143
+ log "SUCCESS" "Pacotes do sistema instalados com sucesso"
144
+ return 0
145
+ fi
146
  fi
147
+
148
+ # Verificar se aria2c já está disponível
149
+ if command -v aria2c &> /dev/null; then
150
+ log "SUCCESS" "aria2c já está disponível"
151
+ return 0
152
+ fi
153
+
154
+ log "WARN" "aria2c não está disponível, usando apenas wget/curl para downloads"
155
  }
156
 
157
  install_comfy_cli() {
 
205
  local dirs=(
206
  "${COMFY_DIR}/ComfyUI/models/checkpoints"
207
  "${COMFY_DIR}/ComfyUI/models/loras"
208
+ "${COMFY_DIR}/ComfyUI/models/upscale_models"
209
+ "${COMFY_DIR}/ComfyUI/models/ultralytics/bbox"
210
  )
211
 
212
  for dir in "${dirs[@]}"; do
213
+ if mkdir -p "$dir" 2>/dev/null; then
214
+ log "INFO" "Diretório criado: $dir"
215
+ else
216
+ log "WARN" "Não foi possível criar: $dir (pode já existir)"
217
+ fi
218
  done
219
  }
220
 
 
232
 
233
  log "INFO" "Baixando $name..."
234
 
235
+ # Determinar nome do arquivo
236
+ local filename=""
237
+ if [[ -n "${DOWNLOAD_NAMES[$name]:-}" ]]; then
238
+ filename="${DOWNLOAD_NAMES[$name]}"
239
+ fi
240
+
241
+ # Escolher método de download baseado na disponibilidade
242
+ if command -v aria2c &> /dev/null && [[ "$name" != "snapshot" ]]; then
243
+ # Usar aria2c para modelos grandes (exceto snapshot)
244
+ local aria_opts=("--console-log-level=warn" "--summary-interval=10" "--download-result=hide"
245
+ "-c" "-s" "16" "-x" "16" "-k" "1M" "--timeout=60" "--retry-wait=5" "--max-tries=3"
246
+ "-d" "$path")
247
+
248
+ if [[ -n "$filename" ]]; then
249
+ aria_opts+=("-o" "$filename")
250
+ fi
251
+
252
+ if aria2c "${aria_opts[@]}" "$url"; then
253
  log "SUCCESS" "Download concluído: $name"
254
  return 0
255
  else
256
+ log "WARN" "aria2c falhou para $name, tentando com wget..."
257
+ fi
258
+ fi
259
+
260
+ # Fallback para wget
261
+ local wget_opts=("--quiet" "--show-progress" "--progress=bar:force:noscroll"
262
+ "--timeout=30" "--tries=3" "--continue")
263
+
264
+ if [[ -n "$filename" ]]; then
265
+ if wget "${wget_opts[@]}" "$url" -O "${path}/${filename}"; then
266
+ log "SUCCESS" "Download concluído: $name (wget)"
267
+ return 0
268
  fi
269
  else
270
+ if wget "${wget_opts[@]}" "$url" -P "$path"; then
271
+ log "SUCCESS" "Download concluído: $name (wget)"
 
 
 
 
 
 
272
  return 0
 
 
 
273
  fi
274
  fi
275
+
276
+ # Último recurso: curl
277
+ log "WARN" "wget falhou para $name, tentando com curl..."
278
+ local output_file="${path}/${filename:-$(basename "$url" | cut -d'?' -f1)}"
279
+
280
+ if curl -L --fail --silent --show-error --retry 3 --retry-delay 5 \
281
+ --connect-timeout 30 --max-time 1800 \
282
+ -o "$output_file" "$url"; then
283
+ log "SUCCESS" "Download concluído: $name (curl)"
284
+ return 0
285
+ else
286
+ log "ERROR" "Falha no download: $name"
287
+ return 1
288
+ fi
289
  }
290
 
291
  # Iniciar downloads em paralelo
 
422
  fi
423
  fi
424
 
425
+ log "INFO" "Diretório base detectado: $BASE_DIR"
426
+ log "INFO" "ComfyUI será instalado em: $COMFY_DIR"
427
+
428
  # Executar etapas da instalação
429
  local steps=(
430
  "check_dependencies"
 
476
  # EXECUÇÃO
477
  # =============================================================================
478
 
479
+ # Verificar se está sendo executado como root (informativo apenas)
480
  if [[ $EUID -ne 0 ]]; then
481
+ log "INFO" "Script sendo executado como usuário não-root (normal para Lightning AI)"
482
+ log "INFO" "Usando diretório base: $BASE_DIR"
483
+ else
484
+ log "INFO" "Script sendo executado como root"
485
  fi
486
 
487
  # Executar função principal