#!/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 "============================================"