161 lines
4.2 KiB
Bash
Executable file
161 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# SilverBullet Migration Script
|
|
# Target: databases (.81)
|
|
# Run this on the control server (CT 127)
|
|
|
|
set -e
|
|
|
|
COMPOSE_DIR=~/clustered-fucks/compose-files/databases/silverbullet
|
|
PLAYBOOK_DIR=~/clustered-fucks/playbooks
|
|
|
|
# Create directories
|
|
mkdir -p "$COMPOSE_DIR"
|
|
mkdir -p "$PLAYBOOK_DIR"
|
|
|
|
# Create docker-compose.yml
|
|
cat > "$COMPOSE_DIR/docker-compose.yml" << 'EOF'
|
|
services:
|
|
silverbullet:
|
|
image: ghcr.io/silverbulletmd/silverbullet
|
|
container_name: silverbullet
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- ./space:/space
|
|
ports:
|
|
- "53510:3000"
|
|
networks:
|
|
- proxy
|
|
labels:
|
|
- "autoheal=true"
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
cpus: '0.5'
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl --fail http://localhost:3000/.ping || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
EOF
|
|
|
|
# Create .env file
|
|
cat > "$COMPOSE_DIR/.env" << 'EOF'
|
|
SB_USER=maddox:./sk8nh8
|
|
SB_HOSTNAME=0.0.0.0
|
|
SB_FOLDER=/space
|
|
EOF
|
|
|
|
# Create Ansible playbook
|
|
cat > "$PLAYBOOK_DIR/deploy-silverbullet.yml" << 'EOF'
|
|
---
|
|
- name: Deploy SilverBullet to databases
|
|
hosts: databases
|
|
become: yes
|
|
vars:
|
|
appdata_path: /home/docker/appdata/silverbullet
|
|
compose_src: ~/clustered-fucks/compose-files/databases/silverbullet
|
|
|
|
tasks:
|
|
- name: Create appdata directory
|
|
file:
|
|
path: "{{ appdata_path }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Copy docker-compose.yml
|
|
copy:
|
|
src: "{{ compose_src }}/docker-compose.yml"
|
|
dest: "{{ appdata_path }}/docker-compose.yml"
|
|
mode: '0644'
|
|
|
|
- name: Copy .env file
|
|
copy:
|
|
src: "{{ compose_src }}/.env"
|
|
dest: "{{ appdata_path }}/.env"
|
|
mode: '0600'
|
|
|
|
- name: Pull latest image
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ appdata_path }}"
|
|
pull: always
|
|
state: present
|
|
|
|
- name: Start SilverBullet
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ appdata_path }}"
|
|
state: present
|
|
|
|
- name: Wait for container to be healthy
|
|
shell: |
|
|
for i in {1..30}; do
|
|
status=$(docker inspect --format='{{.State.Health.Status}}' silverbullet 2>/dev/null || echo "not_found")
|
|
if [ "$status" = "healthy" ]; then
|
|
echo "Container is healthy"
|
|
exit 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
echo "Timeout waiting for healthy status"
|
|
exit 1
|
|
register: health_check
|
|
changed_when: false
|
|
|
|
- name: Show container status
|
|
shell: docker ps --filter name=silverbullet --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
register: container_status
|
|
changed_when: false
|
|
|
|
- name: Display status
|
|
debug:
|
|
var: container_status.stdout_lines
|
|
EOF
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " SilverBullet Migration - Next Steps"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "1. RSYNC DATA FROM ALIEN"
|
|
echo " SSH to databases and pull the space directory:"
|
|
echo ""
|
|
echo " ssh databases"
|
|
echo " sudo mkdir -p /home/docker/appdata/silverbullet"
|
|
echo " sudo rsync -avP maddox@alien:/home/maddox/docker/appdata/silverbullet/space/ /home/docker/appdata/silverbullet/space/"
|
|
echo " exit"
|
|
echo ""
|
|
echo "2. DEPLOY VIA ANSIBLE"
|
|
echo " cd ~/clustered-fucks"
|
|
echo " ansible-playbook playbooks/deploy-silverbullet.yml"
|
|
echo ""
|
|
echo "3. VERIFY"
|
|
echo " curl -u maddox:./sk8nh8 http://192.168.1.81:53510/.ping"
|
|
echo " # Should return: OK"
|
|
echo ""
|
|
echo "4. UPDATE TRAEFIK ON ALIEN"
|
|
echo " Edit Traefik dynamic config to point silverbullet to:"
|
|
echo " http://192.168.1.81:53510"
|
|
echo ""
|
|
echo "5. TEST VIA DOMAIN"
|
|
echo " Access via your SilverBullet domain"
|
|
echo " Verify Authentik auth + SilverBullet loads"
|
|
echo ""
|
|
echo "6. CLEANUP ALIEN"
|
|
echo " ssh alien"
|
|
echo " cd /home/maddox/docker/appdata/silverbullet"
|
|
echo " docker compose down"
|
|
echo ""
|
|
echo "7. COMMIT TO GIT"
|
|
echo " cd ~/clustered-fucks"
|
|
echo " git add -A"
|
|
echo " git commit -m 'Add SilverBullet migration to databases'"
|
|
echo " git push"
|
|
echo ""
|
|
echo "=========================================="
|