Files
scopone/.github/skills/deploy-app/setup-wizard.sh
2026-04-10 22:35:01 +02:00

140 lines
4.1 KiB
Bash

#!/bin/bash
# Quick setup script for deployment configuration
set -e
echo "==================================="
echo "Deployment Skill Setup Wizard"
echo "==================================="
echo ""
# Function to read input with default
read_input() {
local prompt="$1"
local default="$2"
local var_name="$3"
if [ -n "$default" ]; then
read -p "$prompt [$default]: " input
eval "$var_name=\"${input:-$default}\""
else
read -p "$prompt: " input
eval "$var_name=\"$input\""
fi
}
# Target name
read_input "Enter deployment target name (e.g., PRODUCTION, STAGING)" "" TARGET
TARGET=$(echo "$TARGET" | tr '[:lower:]' '[:upper:]')
echo ""
echo "--- Gitea Configuration ---"
read_input "Gitea registry URL (without https://)" "gitea.example.com" GITEA_URL
read_input "Gitea username" "" GITEA_USER
echo "Gitea token (will be hidden): "
read -s GITEA_TOKEN
echo ""
read_input "Gitea namespace (org or username)" "$GITEA_USER" GITEA_NAMESPACE
echo ""
echo "--- Remote Server Configuration ---"
read_input "SSH host alias (from ~/.ssh/config)" "" SSH_HOST
read_input "Stacks directory on remote server" "/srv/docker/stacks" STACKS_DIR
echo ""
echo "--- Webapp Configuration (optional, press Enter to skip) ---"
read_input "Root domain (e.g., sal.giize.com - app served as subdomain)" "" DOMAIN
# Conditional NPM fields
if [ -n "$DOMAIN" ]; then
read_input "Nginx Proxy Manager URL" "https://npm.example.com" NPM_URL
read_input "NPM admin email" "admin@example.com" NPM_USER
echo "NPM password (will be hidden): "
read -s NPM_PASS
echo ""
fi
echo ""
echo "--- Network Configuration (optional, press Enter for defaults) ---"
read_input "Proxy network name" "proxy" PROXY_NETWORK
read_input "Ollama network name (for AI/LLM apps)" "ollama" OLLAMA_NETWORK
read_input "Ollama container name (for deriving connection URL)" "ollama" OLLAMA_CONTAINER
# Generate JSON config
if [ -n "$DOMAIN" ]; then
JSON_CONFIG=$(cat <<EOF
{
"gitea_registry_url": "$GITEA_URL",
"gitea_username": "$GITEA_USER",
"gitea_token": "$GITEA_TOKEN",
"gitea_namespace": "$GITEA_NAMESPACE",
"ssh_host": "$SSH_HOST",
"stacks_dir": "$STACKS_DIR",
"domain": "$DOMAIN",
"npm_url": "$NPM_URL",
"npm_username": "$NPM_USER",
"npm_password": "$NPM_PASS",
"proxy_network": "$PROXY_NETWORK",
"ollama_network": "$OLLAMA_NETWORK",
"ollama_container_name": "$OLLAMA_CONTAINER"
}
EOF
)
else
JSON_CONFIG=$(cat <<EOF
{
"gitea_registry_url": "$GITEA_URL",
"gitea_username": "$GITEA_USER",
"gitea_token": "$GITEA_TOKEN",
"gitea_namespace": "$GITEA_NAMESPACE",
"ssh_host": "$SSH_HOST",
"stacks_dir": "$STACKS_DIR",
"proxy_network": "$PROXY_NETWORK",
"ollama_network": "$OLLAMA_NETWORK",
"ollama_container_name": "$OLLAMA_CONTAINER"
}
EOF
)
fi
echo ""
echo "==================================="
echo "Configuration generated!"
echo "==================================="
echo ""
echo "Add this to your shell configuration file (~/.bashrc, ~/.zshrc, etc.):"
echo ""
echo "export DEPLOY_CONFIG_$TARGET='$JSON_CONFIG'"
echo ""
echo "Then restart your terminal or run:"
echo "source ~/.bashrc # or ~/.zshrc"
echo ""
# Optionally write to file
read -p "Save to file? (y/n): " SAVE_FILE
if [ "$SAVE_FILE" = "y" ] || [ "$SAVE_FILE" = "Y" ]; then
CONFIG_FILE="deploy_config_${TARGET}.env"
echo "export DEPLOY_CONFIG_$TARGET='$JSON_CONFIG'" > "$CONFIG_FILE"
echo ""
echo "✓ Saved to $CONFIG_FILE"
echo "Load it with: source $CONFIG_FILE"
fi
echo ""
echo "==================================="
echo "Next Steps:"
echo "==================================="
echo ""
echo "1. Set the environment variable (see above)"
echo "2. Verify SSH access: ssh $SSH_HOST \"echo 'Test OK'\""
echo "3. Create Docker networks on remote server (run once per server):"
echo " ssh $SSH_HOST \"docker network create $PROXY_NETWORK\""
if [ -n "$OLLAMA_NETWORK" ]; then
echo " ssh $SSH_HOST \"docker network create $OLLAMA_NETWORK\" # For AI/LLM apps"
fi
echo "4. Navigate to your application directory"
echo "5. Tell the agent: 'deploy $TARGET'"
echo ""
echo "The agent will auto-detect your app's configuration and ask for confirmation!"
echo ""