msrcam commited on
Commit
96cd83c
Β·
verified Β·
1 Parent(s): 06f4c67

Upload installers/nudify/install_flux_ultimate_nudify_v0.21.sh with huggingface_hub

Browse files
installers/nudify/install_flux_ultimate_nudify_v0.21.sh ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # ═══════════════════════════════════════════════════════════════════════════════
3
+ # FLUX Ultimate Nudify - Installation Script v0.21
4
+ # ═══════════════════════════════════════════════════════════════════════════════
5
+ #
6
+ # Uses msrcam mirror repo for reliable downloads
7
+ #
8
+ # ═══════════════════════════════════════════════════════════════════════════════
9
+
10
+ set -e
11
+
12
+ # Colors
13
+ RED='\033[0;31m'
14
+ GREEN='\033[0;32m'
15
+ YELLOW='\033[1;33m'
16
+ MAGENTA='\033[0;35m'
17
+ CYAN='\033[0;36m'
18
+ NC='\033[0m'
19
+
20
+ # Configuration
21
+ COMFY_DIR="${COMFY_DIR:-/workspace/ComfyUI}"
22
+ CIVITAI_TOKEN="${CIVITAI_TOKEN:-eff2ba98a34d6fd7918164753e878bb9}"
23
+ HF_TOKEN="${HF_TOKEN:-}"
24
+
25
+ # Mirror repo
26
+ MIRROR="https://huggingface.co/msrcam/ComfyUI_Models/resolve/main"
27
+
28
+ # Banner
29
+ echo -e "${CYAN}═══════════════════════════════════════════════════════════════════════════════${NC}"
30
+ echo -e "${CYAN} FLUX ULTIMATE NUDIFY v0.21${NC}"
31
+ echo -e "${CYAN}═══════════════════════════════════════════════════════════════════════════════${NC}"
32
+ echo ""
33
+
34
+ # Install aria2c
35
+ apt-get update -qq && apt-get install -y -qq aria2 > /dev/null 2>&1 || true
36
+ echo -e "${GREEN}βœ“ aria2c ready${NC}"
37
+
38
+ # Download function
39
+ dl() {
40
+ local url="$1"
41
+ local dest="$2"
42
+ local desc="$3"
43
+
44
+ if [ -f "$dest" ]; then
45
+ echo -e "${GREEN}βœ“ Exists: ${desc}${NC}"
46
+ return 0
47
+ fi
48
+
49
+ mkdir -p "$(dirname "$dest")"
50
+ echo -e "${YELLOW}↓ ${desc}${NC}"
51
+
52
+ local headers=""
53
+ [[ "$url" == *"civitai.com"* ]] && url="${url}?token=${CIVITAI_TOKEN}"
54
+ [[ "$url" == *"huggingface.co"* ]] && [ -n "$HF_TOKEN" ] && headers="--header=Authorization: Bearer ${HF_TOKEN}"
55
+
56
+ aria2c -x 16 -s 16 -k 1M -c --console-log-level=warn $headers \
57
+ -d "$(dirname "$dest")" -o "$(basename "$dest")" "$url" 2>/dev/null && {
58
+ echo -e "${GREEN}βœ“ ${desc}${NC}"
59
+ return 0
60
+ }
61
+
62
+ echo -e "${RED}βœ— Failed: ${desc}${NC}"
63
+ return 1
64
+ }
65
+
66
+ # ═══════════════════════════════════════════════════════════════════════════════
67
+ # VERIFY & SETUP
68
+ # ═══════════════════════════════════════════════════════════════════════════════
69
+ echo -e "\n${YELLOW}[1/7] Setup...${NC}"
70
+ [ ! -d "$COMFY_DIR" ] && { echo -e "${RED}ComfyUI not found at $COMFY_DIR${NC}"; exit 1; }
71
+ echo -e "${GREEN}βœ“ ComfyUI found${NC}"
72
+
73
+ mkdir -p "$COMFY_DIR/models"/{checkpoints,unet,diffusion_models,vae,clip,text_encoders,loras}
74
+ mkdir -p "$COMFY_DIR/models"/{upscale_models,insightface/models/buffalo_l,facerestore_models}
75
+ mkdir -p "$COMFY_DIR/models"/{ultralytics/bbox,ultralytics/segm,sams,reactor}
76
+ mkdir -p "$COMFY_DIR/user/default/workflows"
77
+ echo -e "${GREEN}βœ“ Directories created${NC}"
78
+
79
+ # ═══════════════════════════════════════════════════════════════════════════════
80
+ # CUSTOM NODES
81
+ # ═══════════════════════════════════════════════════════════════════════════════
82
+ echo -e "\n${YELLOW}[2/7] Custom Nodes...${NC}"
83
+ cd "$COMFY_DIR/custom_nodes"
84
+
85
+ for repo in \
86
+ "https://github.com/ltdrdata/ComfyUI-Manager.git" \
87
+ "https://github.com/ltdrdata/ComfyUI-Impact-Pack.git" \
88
+ "https://github.com/ltdrdata/ComfyUI-Impact-Subpack.git" \
89
+ "https://github.com/Gourieff/ComfyUI-ReActor.git" \
90
+ "https://github.com/cubiq/ComfyUI_essentials.git" \
91
+ "https://github.com/rgthree/rgthree-comfy.git" \
92
+ "https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git" \
93
+ "https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git" \
94
+ "https://github.com/chrisgoringe/cg-use-everywhere.git"
95
+ do
96
+ name=$(basename "$repo" .git)
97
+ [ ! -d "$name" ] && { echo -e "${CYAN} β†’ ${name}${NC}"; git clone --depth 1 "$repo" 2>/dev/null || true; } || echo -e "${GREEN} βœ“ ${name}${NC}"
98
+ done
99
+
100
+ for dir in ComfyUI-Impact-Pack ComfyUI-ReActor; do
101
+ [ -f "$dir/requirements.txt" ] && pip install -r "$dir/requirements.txt" --break-system-packages -q 2>/dev/null || true
102
+ done
103
+
104
+ # ═══════════════════════════════════════════════════════════════════════════════
105
+ # FLUX MODELS (from mirror)
106
+ # ═══════════════════════════════════════════════════════════════════════════════
107
+ echo -e "\n${YELLOW}[3/7] FLUX Models...${NC}"
108
+
109
+ echo -e "\n${MAGENTA}═══ Checkpoints ═══${NC}"
110
+ dl "$MIRROR/checkpoints/flux/fluxed-up-7.1-fp16.safetensors" \
111
+ "$COMFY_DIR/models/checkpoints/fluxed-up-7.1-fp16.safetensors" \
112
+ "Fluxed Up 7.1"
113
+
114
+ echo -e "\n${MAGENTA}═══ FLUX.1 Kontext Dev ═══${NC}"
115
+ dl "https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev/resolve/main/flux1-kontext-dev.safetensors" \
116
+ "$COMFY_DIR/models/diffusion_models/flux1-kontext-dev.safetensors" \
117
+ "FLUX.1 Kontext Dev"
118
+
119
+ echo -e "\n${MAGENTA}═══ FLUX.2 Klein 9B ═══${NC}"
120
+ dl "https://huggingface.co/black-forest-labs/FLUX.2-klein-base-9b-fp8/resolve/main/flux-2-klein-base-9b-fp8.safetensors" \
121
+ "$COMFY_DIR/models/unet/flux-2-klein-base-9b-fp8.safetensors" \
122
+ "FLUX.2 Klein 9B"
123
+
124
+ dl "https://huggingface.co/Comfy-Org/flux2-klein-9B/resolve/main/split_files/text_encoders/qwen_3_8b_fp8mixed.safetensors" \
125
+ "$COMFY_DIR/models/text_encoders/qwen_3_8b_fp8mixed.safetensors" \
126
+ "Qwen 3 8B"
127
+
128
+ echo -e "\n${MAGENTA}═══ FLUX.2 Dev ═══${NC}"
129
+ dl "https://huggingface.co/black-forest-labs/FLUX.2-dev/resolve/main/flux2-dev.safetensors" \
130
+ "$COMFY_DIR/models/diffusion_models/flux2-dev.safetensors" \
131
+ "FLUX.2 Dev"
132
+
133
+ dl "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/text_encoders/mistral_3_small_flux2_bf16.safetensors" \
134
+ "$COMFY_DIR/models/text_encoders/mistral_3_small_flux2_bf16.safetensors" \
135
+ "Mistral 3 Small"
136
+
137
+ echo -e "\n${MAGENTA}═══ CLIP & VAE ═══${NC}"
138
+ dl "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors" \
139
+ "$COMFY_DIR/models/clip/clip_l.safetensors" \
140
+ "CLIP-L"
141
+
142
+ dl "https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors" \
143
+ "$COMFY_DIR/models/clip/t5xxl_fp8_e4m3fn.safetensors" \
144
+ "T5-XXL FP8"
145
+
146
+ dl "https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/ae.safetensors" \
147
+ "$COMFY_DIR/models/vae/ae.safetensors" \
148
+ "FLUX.1 VAE"
149
+
150
+ dl "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors" \
151
+ "$COMFY_DIR/models/vae/flux2-vae.safetensors" \
152
+ "FLUX.2 VAE"
153
+
154
+ # ═══════════════════════════════════════════════════════════════════════════════
155
+ # LORAS (from mirror)
156
+ # ═══════════════════════════════════════════════════════════════════════════════
157
+ echo -e "\n${YELLOW}[4/7] LoRAs...${NC}"
158
+
159
+ echo -e "${MAGENTA}═══ Flux.1 Dev LoRAs ═══${NC}"
160
+ for lora in flux1dev_nudity_female_v2 flux1dev_anatomy_female flux1dev_nipple_default flux1dev_pussy_default; do
161
+ dl "$MIRROR/loras/flux1dev/${lora}.safetensors" \
162
+ "$COMFY_DIR/models/loras/${lora}.safetensors" \
163
+ "$lora"
164
+ done
165
+
166
+ echo -e "\n${MAGENTA}═══ Flux.2 Klein LoRAs ═══${NC}"
167
+ for lora in flux2klein_nsfw flux2klein_nipple flux2klein_pussy flux2klein_body_version_a flux2klein_style_2000s; do
168
+ dl "$MIRROR/loras/flux2klein/${lora}.safetensors" \
169
+ "$COMFY_DIR/models/loras/${lora}.safetensors" \
170
+ "$lora"
171
+ done
172
+
173
+ echo -e "\n${MAGENTA}═══ Kontext LoRAs ═══${NC}"
174
+ dl "$MIRROR/loras/kontext/clothes_remover_v0.safetensors" \
175
+ "$COMFY_DIR/models/loras/clothes_remover_v0.safetensors" \
176
+ "Clothes Remover v0"
177
+
178
+ # ═══════════════════════════════════════════════════════════════════════════════
179
+ # REACTOR & DETECTORS (from mirror)
180
+ # ═══════════════════════════════════════════════════════════════════════════════
181
+ echo -e "\n${YELLOW}[5/7] ReActor & Detectors...${NC}"
182
+
183
+ echo -e "${MAGENTA}═══ Face Swap ═══${NC}"
184
+ dl "$MIRROR/swappers/reswapper_128.onnx" \
185
+ "$COMFY_DIR/models/insightface/inswapper_128.onnx" \
186
+ "Inswapper 128"
187
+
188
+ dl "$MIRROR/facerestore/GFPGANv1.4.pth" \
189
+ "$COMFY_DIR/models/facerestore_models/GFPGANv1.4.pth" \
190
+ "GFPGAN v1.4"
191
+
192
+ dl "$MIRROR/facerestore/codeformer.pth" \
193
+ "$COMFY_DIR/models/facerestore_models/codeformer.pth" \
194
+ "CodeFormer"
195
+
196
+ echo -e "\n${MAGENTA}═══ InsightFace buffalo_l ═══${NC}"
197
+ for f in 1k3d68.onnx 2d106det.onnx det_10g.onnx genderage.onnx w600k_r50.onnx; do
198
+ dl "$MIRROR/insightface/buffalo_l/$f" \
199
+ "$COMFY_DIR/models/insightface/models/buffalo_l/$f" \
200
+ "buffalo_l/$f"
201
+ done
202
+
203
+ echo -e "\n${MAGENTA}═══ Detectors ═══${NC}"
204
+ dl "$MIRROR/detection/face_yolov8m.pt" \
205
+ "$COMFY_DIR/models/ultralytics/bbox/face_yolov8m.pt" \
206
+ "Face YOLOv8m"
207
+
208
+ dl "$MIRROR/detection/hand_yolov8s.pt" \
209
+ "$COMFY_DIR/models/ultralytics/bbox/hand_yolov8s.pt" \
210
+ "Hand YOLOv8s"
211
+
212
+ dl "$MIRROR/detection/person_yolov8s-seg.pt" \
213
+ "$COMFY_DIR/models/ultralytics/segm/person_yolov8s-seg.pt" \
214
+ "Person YOLOv8s-seg"
215
+
216
+ dl "$MIRROR/detection/sam_vit_l_0b3195.pth" \
217
+ "$COMFY_DIR/models/sams/sam_vit_l_0b3195.pth" \
218
+ "SAM ViT-L"
219
+
220
+ echo -e "\n${MAGENTA}═══ Upscaler ═══${NC}"
221
+ dl "$MIRROR/upscalers/4x_NMKD-Siax_200k.pth" \
222
+ "$COMFY_DIR/models/upscale_models/4x_NMKD-Siax_200k.pth" \
223
+ "4x NMKD-Siax"
224
+
225
+ # ═══════════════════════════════════════════════════════════════════════════════
226
+ # WORKFLOW
227
+ # ═══════════════════════════════════════════════════════════════════════════════
228
+ echo -e "\n${YELLOW}[6/7] Workflow...${NC}"
229
+ dl "https://huggingface.co/msrcam/ComfyUI_AutoInstallers/resolve/main/installers/nudify/Flux_Ultimate_Nudify_v1.14.json" \
230
+ "$COMFY_DIR/user/default/workflows/Flux_Ultimate_Nudify.json" \
231
+ "Workflow v1.14"
232
+
233
+ # ═══════════════════════════════════════════════════════════════════════════════
234
+ # SYMLINKS for Impact Pack paths
235
+ # ═══════════════════════════════════════════════════════════════════════════════
236
+ echo -e "\n${YELLOW}[7/7] Creating symlinks...${NC}"
237
+ cd "$COMFY_DIR/models"
238
+
239
+ # SAM
240
+ [ ! -L "sams/sam_vit_l_0b3195.pth" ] && [ -f "sams/sam_vit_l_0b3195.pth" ] || true
241
+
242
+ # Ultralytics expects specific paths
243
+ ln -sf "$COMFY_DIR/models/ultralytics/bbox/face_yolov8m.pt" "$COMFY_DIR/models/ultralytics/face_yolov8m.pt" 2>/dev/null || true
244
+ ln -sf "$COMFY_DIR/models/ultralytics/bbox/hand_yolov8s.pt" "$COMFY_DIR/models/ultralytics/hand_yolov8s.pt" 2>/dev/null || true
245
+
246
+ echo -e "${GREEN}βœ“ Symlinks created${NC}"
247
+
248
+ # ═══════════════════════════════════════════════════════════════════════════════
249
+ # DONE
250
+ # ═══════════════════════════════════════════════════════════════════════════════
251
+ echo -e "\n${GREEN}═══════════════════════════════════════════════════════════════════════════════${NC}"
252
+ echo -e "${GREEN} βœ“ FLUX Ultimate Nudify v0.21 - Complete!${NC}"
253
+ echo -e "${GREEN}═══════════════════════════════════════════════════════════════════════════════${NC}"
254
+
255
+ echo -e "\n${CYAN}Start ComfyUI:${NC}"
256
+ echo " cd $COMFY_DIR && python main.py --listen 0.0.0.0 --port 8188"
257
+ echo ""