scripts/migration/migrate-wecheck-cyberchef.sh
2026-01-27 01:57:38 +00:00

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 "============================================"