184 lines
5.8 KiB
Bash
Executable File
184 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Uni-Wizard v4 Production Setup Script
|
|
# Run this on a fresh VPS to deploy the Uni-Wizard architecture
|
|
|
|
set -e
|
|
|
|
echo "╔═══════════════════════════════════════════════════════════════╗"
|
|
echo "║ Uni-Wizard v4 — Production Setup ║"
|
|
echo "╚═══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
# Configuration
|
|
TIMMY_HOME="/opt/timmy"
|
|
UNI_WIZARD_DIR="$TIMMY_HOME/uni-wizard"
|
|
SERVICE_USER="timmy"
|
|
|
|
# Check if running as root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "❌ Please run as root (use sudo)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "📦 Step 1: Installing dependencies..."
|
|
apt-get update
|
|
apt-get install -y python3 python3-pip python3-venv sqlite3 curl git
|
|
|
|
echo "👤 Step 2: Creating timmy user..."
|
|
if ! id "$SERVICE_USER" &>/dev/null; then
|
|
useradd -m -s /bin/bash "$SERVICE_USER"
|
|
echo "✅ User $SERVICE_USER created"
|
|
else
|
|
echo "✅ User $SERVICE_USER already exists"
|
|
fi
|
|
|
|
echo "📁 Step 3: Setting up directories..."
|
|
mkdir -p "$TIMMY_HOME"
|
|
mkdir -p "$TIMMY_HOME/logs"
|
|
mkdir -p "$TIMMY_HOME/config"
|
|
mkdir -p "$TIMMY_HOME/data"
|
|
chown -R "$SERVICE_USER:$SERVICE_USER" "$TIMMY_HOME"
|
|
|
|
echo "🐍 Step 4: Creating Python virtual environment..."
|
|
python3 -m venv "$TIMMY_HOME/venv"
|
|
source "$TIMMY_HOME/venv/bin/activate"
|
|
pip install --upgrade pip
|
|
|
|
echo "📥 Step 5: Cloning timmy-home repository..."
|
|
if [ -d "$TIMMY_HOME/repo" ]; then
|
|
echo "✅ Repository already exists, pulling latest..."
|
|
cd "$TIMMY_HOME/repo"
|
|
sudo -u "$SERVICE_USER" git pull
|
|
else
|
|
sudo -u "$SERVICE_USER" git clone http://143.198.27.163:3000/Timmy_Foundation/timmy-home.git "$TIMMY_HOME/repo"
|
|
fi
|
|
|
|
echo "🔗 Step 6: Linking Uni-Wizard..."
|
|
ln -sf "$TIMMY_HOME/repo/uni-wizard/v4/uni_wizard" "$TIMMY_HOME/uni_wizard"
|
|
|
|
echo "⚙️ Step 7: Installing Uni-Wizard package..."
|
|
cd "$TIMMY_HOME/repo/uni-wizard/v4"
|
|
pip install -e .
|
|
|
|
echo "📝 Step 8: Creating configuration..."
|
|
cat > "$TIMMY_HOME/config/uni-wizard.yaml" << 'EOF'
|
|
# Uni-Wizard v4 Configuration
|
|
house: timmy
|
|
mode: intelligent
|
|
enable_learning: true
|
|
|
|
# Database
|
|
pattern_db: /opt/timmy/data/patterns.db
|
|
|
|
# Telemetry
|
|
telemetry_enabled: true
|
|
telemetry_buffer_size: 1000
|
|
|
|
# Circuit breaker
|
|
circuit_breaker:
|
|
failure_threshold: 5
|
|
recovery_timeout: 60
|
|
|
|
# Logging
|
|
log_level: INFO
|
|
log_dir: /opt/timmy/logs
|
|
|
|
# Gitea integration
|
|
gitea:
|
|
url: http://143.198.27.163:3000
|
|
repo: Timmy_Foundation/timmy-home
|
|
poll_interval: 300 # 5 minutes
|
|
|
|
# Hermes bridge
|
|
hermes:
|
|
db_path: /root/.hermes/state.db
|
|
stream_enabled: true
|
|
EOF
|
|
|
|
chown "$SERVICE_USER:$SERVICE_USER" "$TIMMY_HOME/config/uni-wizard.yaml"
|
|
|
|
echo "🔧 Step 9: Creating systemd services..."
|
|
|
|
# Uni-Wizard service
|
|
cat > /etc/systemd/system/uni-wizard.service << EOF
|
|
[Unit]
|
|
Description=Uni-Wizard v4 - Self-Improving Intelligence
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$SERVICE_USER
|
|
WorkingDirectory=$TIMMY_HOME
|
|
Environment=PYTHONPATH=$TIMMY_HOME/venv/lib/python3.12/site-packages
|
|
ExecStart=$TIMMY_HOME/venv/bin/python -m uni_wizard daemon
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Health daemon
|
|
cat > /etc/systemd/system/timmy-health.service << EOF
|
|
[Unit]
|
|
Description=Timmy Health Check Daemon
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$SERVICE_USER
|
|
WorkingDirectory=$TIMMY_HOME
|
|
ExecStart=$TIMMY_HOME/venv/bin/python -m uni_wizard health_daemon
|
|
Restart=always
|
|
RestartSec=30
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Task router
|
|
cat > /etc/systemd/system/timmy-task-router.service << EOF
|
|
[Unit]
|
|
Description=Timmy Gitea Task Router
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$SERVICE_USER
|
|
WorkingDirectory=$TIMMY_HOME
|
|
ExecStart=$TIMMY_HOME/venv/bin/python -m uni_wizard task_router
|
|
Restart=always
|
|
RestartSec=60
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
echo "🚀 Step 10: Enabling services..."
|
|
systemctl daemon-reload
|
|
systemctl enable uni-wizard timmy-health timmy-task-router
|
|
|
|
echo ""
|
|
echo "╔═══════════════════════════════════════════════════════════════╗"
|
|
echo "║ Setup Complete! ║"
|
|
echo "╠═══════════════════════════════════════════════════════════════╣"
|
|
echo "║ ║"
|
|
echo "║ Next steps: ║"
|
|
echo "║ 1. Configure Gitea API token: ║"
|
|
echo "║ edit $TIMMY_HOME/config/uni-wizard.yaml ║"
|
|
echo "║ ║"
|
|
echo "║ 2. Start services: ║"
|
|
echo "║ systemctl start uni-wizard ║"
|
|
echo "║ systemctl start timmy-health ║"
|
|
echo "║ systemctl start timmy-task-router ║"
|
|
echo "║ ║"
|
|
echo "║ 3. Check status: ║"
|
|
echo "║ systemctl status uni-wizard ║"
|
|
echo "║ ║"
|
|
echo "╚═══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
echo "Installation directory: $TIMMY_HOME"
|
|
echo "Logs: $TIMMY_HOME/logs/"
|
|
echo "Config: $TIMMY_HOME/config/"
|
|
echo ""
|