setup.sh
#!/bin/bash
# Server setup script for hosting.readysite.org
# Run by launch tool on deployment
set -e
echo "==> Setting up Caddy reverse proxy"
# Create Caddy directories
mkdir -p /mnt/data/caddy/data
mkdir -p /mnt/data/caddy/config
mkdir -p /mnt/data/caddy/sites
# Write Caddyfile
cat > /mnt/data/caddy/Caddyfile <<'EOF'
readysite.org {
reverse_proxy readysite-org:5000
}
hosting.readysite.org {
reverse_proxy hosting:8080
}
import /etc/caddy/sites/*.caddy
EOF
echo "==> Caddy setup complete"
echo "==> Initializing Docker Swarm"
# Initialize Docker Swarm (idempotent)
docker info --format '{{.Swarm.LocalNodeState}}' | grep -q active || \
docker swarm init --advertise-addr $(hostname -I | awk '{print $1}')
# Open Swarm ports
ufw allow 2377/tcp # Cluster management
ufw allow 7946 # Inter-node communication (TCP+UDP)
ufw allow 4789/udp # Overlay network traffic
echo "==> Generating SSH key for Pro server access"
# Generate SSH key for Pro server access (if not exists)
mkdir -p /mnt/data/hosting/ssh
[ -f /mnt/data/hosting/ssh/id_ed25519 ] || \
ssh-keygen -t ed25519 -f /mnt/data/hosting/ssh/id_ed25519 -N ""
chmod 600 /mnt/data/hosting/ssh/id_ed25519
echo "==> Setup complete"