193 lines
5.2 KiB
Bash
Executable file
193 lines
5.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Web-Check + CyberChef Migration Script
|
|
# Target: replicant (.80)
|
|
# Run this on the control server (CT 127)
|
|
|
|
set -e
|
|
|
|
COMPOSE_BASE=~/clustered-fucks/compose-files/replicant
|
|
PLAYBOOK_DIR=~/clustered-fucks/playbooks
|
|
|
|
echo "=== Web-Check + CyberChef Migration Script ==="
|
|
echo "Target: replicant (.80)"
|
|
echo "Both are STATELESS - no data to rsync!"
|
|
echo ""
|
|
|
|
# Create directories
|
|
mkdir -p "$COMPOSE_BASE/web-check"
|
|
mkdir -p "$COMPOSE_BASE/cyberchef"
|
|
mkdir -p "$PLAYBOOK_DIR"
|
|
|
|
# ============================================
|
|
# WEB-CHECK
|
|
# ============================================
|
|
|
|
cat > "$COMPOSE_BASE/web-check/docker-compose.yml" << 'EOF'
|
|
services:
|
|
web-check:
|
|
image: lissy93/web-check:latest
|
|
container_name: web-check
|
|
ports:
|
|
- "6160:3000"
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
cpus: '0.5'
|
|
labels:
|
|
- "autoheal=true"
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
EOF
|
|
|
|
echo "✅ Created $COMPOSE_BASE/web-check/docker-compose.yml"
|
|
|
|
cat > "$PLAYBOOK_DIR/deploy-web-check.yml" << 'EOF'
|
|
---
|
|
- name: Deploy Web-Check to replicant
|
|
hosts: replicant
|
|
vars:
|
|
service_name: web-check
|
|
service_dir: "{{ docker_appdata }}/{{ service_name }}"
|
|
compose_src: "{{ playbook_dir }}/../compose-files/replicant/{{ service_name }}"
|
|
|
|
tasks:
|
|
- name: Create service directory
|
|
ansible.builtin.file:
|
|
path: "{{ service_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Copy docker-compose.yml
|
|
ansible.builtin.copy:
|
|
src: "{{ compose_src }}/docker-compose.yml"
|
|
dest: "{{ service_dir }}/docker-compose.yml"
|
|
mode: '0644'
|
|
|
|
- name: Pull latest image
|
|
community.docker.docker_image:
|
|
name: lissy93/web-check:latest
|
|
source: pull
|
|
force_source: yes
|
|
|
|
- name: Deploy container
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ service_dir }}"
|
|
state: present
|
|
pull: missing
|
|
EOF
|
|
|
|
echo "✅ Created $PLAYBOOK_DIR/deploy-web-check.yml"
|
|
|
|
# ============================================
|
|
# CYBERCHEF
|
|
# ============================================
|
|
|
|
cat > "$COMPOSE_BASE/cyberchef/docker-compose.yml" << 'EOF'
|
|
services:
|
|
cyberchef:
|
|
image: mpepping/cyberchef:latest
|
|
container_name: cyberchef
|
|
ports:
|
|
- "7318:8000"
|
|
restart: unless-stopped
|
|
networks:
|
|
- proxy
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 256M
|
|
cpus: '0.5'
|
|
labels:
|
|
- "autoheal=true"
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
EOF
|
|
|
|
echo "✅ Created $COMPOSE_BASE/cyberchef/docker-compose.yml"
|
|
|
|
cat > "$PLAYBOOK_DIR/deploy-cyberchef.yml" << 'EOF'
|
|
---
|
|
- name: Deploy CyberChef to replicant
|
|
hosts: replicant
|
|
vars:
|
|
service_name: cyberchef
|
|
service_dir: "{{ docker_appdata }}/{{ service_name }}"
|
|
compose_src: "{{ playbook_dir }}/../compose-files/replicant/{{ service_name }}"
|
|
|
|
tasks:
|
|
- name: Create service directory
|
|
ansible.builtin.file:
|
|
path: "{{ service_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Copy docker-compose.yml
|
|
ansible.builtin.copy:
|
|
src: "{{ compose_src }}/docker-compose.yml"
|
|
dest: "{{ service_dir }}/docker-compose.yml"
|
|
mode: '0644'
|
|
|
|
- name: Pull latest image
|
|
community.docker.docker_image:
|
|
name: mpepping/cyberchef:latest
|
|
source: pull
|
|
force_source: yes
|
|
|
|
- name: Deploy container
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ service_dir }}"
|
|
state: present
|
|
pull: missing
|
|
EOF
|
|
|
|
echo "✅ Created $PLAYBOOK_DIR/deploy-cyberchef.yml"
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo "=== Files Created ==="
|
|
echo "============================================"
|
|
echo " $COMPOSE_BASE/web-check/docker-compose.yml"
|
|
echo " $COMPOSE_BASE/cyberchef/docker-compose.yml"
|
|
echo " $PLAYBOOK_DIR/deploy-web-check.yml"
|
|
echo " $PLAYBOOK_DIR/deploy-cyberchef.yml"
|
|
echo ""
|
|
echo "============================================"
|
|
echo "=== Next Steps ==="
|
|
echo "============================================"
|
|
echo ""
|
|
echo "1. STOP OLD CONTAINERS ON ALIEN:"
|
|
echo " ssh alien 'docker stop web-check cyberchef'"
|
|
echo ""
|
|
echo "2. DEPLOY VIA ANSIBLE (no rsync needed - stateless!):"
|
|
echo " cd ~/clustered-fucks"
|
|
echo " ansible-playbook playbooks/deploy-web-check.yml"
|
|
echo " ansible-playbook playbooks/deploy-cyberchef.yml"
|
|
echo ""
|
|
echo "3. VERIFY:"
|
|
echo " curl -s -o /dev/null -w '%{http_code}' http://192.168.1.80:6160/"
|
|
echo " curl -s -o /dev/null -w '%{http_code}' http://192.168.1.80:7318/"
|
|
echo ""
|
|
echo "4. UPDATE TRAEFIK (on alien):"
|
|
echo " # Edit traefik config, change web-check URL to .80:6160"
|
|
echo " # Edit traefik config, change cyberchef URL to .80:7318"
|
|
echo ""
|
|
echo "5. CLEANUP ALIEN:"
|
|
echo " ssh alien 'docker rm web-check cyberchef'"
|
|
echo ""
|
|
echo "6. COMMIT TO GIT:"
|
|
echo " cd ~/clustered-fucks"
|
|
echo " git add -A && git commit -m 'Deploy web-check and cyberchef to replicant' && git push"
|
|
echo ""
|
|
echo "============================================"
|
|
echo "Done! Both services are stateless - no data migration needed."
|
|
echo "============================================"
|