migrated core_nest to mainroom
This commit is contained in:
217
mainroom/ctrl/server/setup.sh
Executable file
217
mainroom/ctrl/server/setup.sh
Executable file
@@ -0,0 +1,217 @@
|
||||
#!/bin/bash
|
||||
# Setup - Apply configuration to system
|
||||
# Must run with sudo/as root
|
||||
#
|
||||
# Usage:
|
||||
# sudo ./setup.sh
|
||||
#
|
||||
# Prerequisites:
|
||||
# - Run ./configure.sh first (as appuser)
|
||||
#
|
||||
# This script:
|
||||
# - Installs system packages (docker, nginx, certbot)
|
||||
# - Applies generated nginx config to /etc/nginx/
|
||||
# - Manages nginx service
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
GEN_DIR="$SCRIPT_DIR/.generated"
|
||||
|
||||
echo "=== Core Nest Setup (System Configuration) ==="
|
||||
echo ""
|
||||
|
||||
# Must run as root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "ERROR: This script must be run with sudo"
|
||||
echo "Usage: sudo ./setup.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the actual user who ran sudo
|
||||
if [ -z "$SUDO_USER" ]; then
|
||||
echo "ERROR: SUDO_USER not set"
|
||||
echo "Run with: sudo ./setup.sh (not as root directly)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ACTUAL_USER="$SUDO_USER"
|
||||
ACTUAL_HOME=$(eval echo ~$ACTUAL_USER)
|
||||
|
||||
echo "Running as: root (via sudo)"
|
||||
echo "Actual user: $ACTUAL_USER"
|
||||
echo "User home: $ACTUAL_HOME"
|
||||
echo ""
|
||||
|
||||
# Check that configure was run first
|
||||
if [ ! -d "$GEN_DIR" ] || [ ! -f "$GEN_DIR/core_nest.nginx.conf" ]; then
|
||||
echo "ERROR: Configuration files not found"
|
||||
echo ""
|
||||
echo "Run ./configure.sh first (as $ACTUAL_USER):"
|
||||
echo " su - $ACTUAL_USER"
|
||||
echo " cd $(dirname $SCRIPT_DIR)"
|
||||
echo " ./server/configure.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Found generated configuration files"
|
||||
echo ""
|
||||
|
||||
# =============================================================================
|
||||
# 1. Install System Dependencies
|
||||
# =============================================================================
|
||||
echo "Step 1: Installing system dependencies..."
|
||||
echo ""
|
||||
|
||||
# Docker
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo " Installing Docker..."
|
||||
curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
|
||||
sh /tmp/get-docker.sh
|
||||
rm /tmp/get-docker.sh
|
||||
echo " ✓ Docker installed"
|
||||
else
|
||||
echo " ✓ Docker already installed"
|
||||
fi
|
||||
|
||||
# Add user to docker group
|
||||
if ! groups "$ACTUAL_USER" | grep -q docker; then
|
||||
echo " Adding $ACTUAL_USER to docker group..."
|
||||
usermod -aG docker "$ACTUAL_USER"
|
||||
echo " ✓ $ACTUAL_USER added to docker group"
|
||||
echo " (User must log out and back in for this to take effect)"
|
||||
else
|
||||
echo " ✓ $ACTUAL_USER already in docker group"
|
||||
fi
|
||||
|
||||
# Docker Compose
|
||||
if ! docker compose version &> /dev/null; then
|
||||
echo " Installing Docker Compose plugin..."
|
||||
apt-get update
|
||||
apt-get install -y docker-compose-plugin
|
||||
echo " ✓ Docker Compose installed"
|
||||
else
|
||||
echo " ✓ Docker Compose already installed"
|
||||
fi
|
||||
|
||||
# Nginx
|
||||
if ! command -v nginx &> /dev/null; then
|
||||
echo " Installing Nginx..."
|
||||
apt-get update
|
||||
apt-get install -y nginx
|
||||
echo " ✓ Nginx installed"
|
||||
else
|
||||
echo " ✓ Nginx already installed"
|
||||
fi
|
||||
|
||||
# Certbot
|
||||
if ! command -v certbot &> /dev/null; then
|
||||
echo " Installing Certbot..."
|
||||
apt-get update
|
||||
apt-get install -y certbot python3-certbot-nginx
|
||||
echo " ✓ Certbot installed"
|
||||
else
|
||||
echo " ✓ Certbot already installed"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 2. Install Nginx Configuration
|
||||
# =============================================================================
|
||||
echo ""
|
||||
echo "Step 2: Installing nginx configuration..."
|
||||
|
||||
NGINX_AVAILABLE="/etc/nginx/sites-available/core_nest.conf"
|
||||
NGINX_ENABLED="/etc/nginx/sites-enabled/core_nest.conf"
|
||||
SOURCE_CONFIG="$GEN_DIR/core_nest.nginx.conf"
|
||||
|
||||
# Copy generated config
|
||||
cp "$SOURCE_CONFIG" "$NGINX_AVAILABLE"
|
||||
echo " ✓ Copied to: $NGINX_AVAILABLE"
|
||||
|
||||
# Enable site
|
||||
ln -sf "$NGINX_AVAILABLE" "$NGINX_ENABLED"
|
||||
echo " ✓ Enabled site: $NGINX_ENABLED"
|
||||
|
||||
# Remove default site if exists
|
||||
if [ -f "/etc/nginx/sites-enabled/default" ]; then
|
||||
rm "/etc/nginx/sites-enabled/default"
|
||||
echo " ✓ Removed default site"
|
||||
fi
|
||||
|
||||
# Test nginx config
|
||||
echo " Testing nginx configuration..."
|
||||
if nginx -t; then
|
||||
echo " ✓ Nginx configuration valid"
|
||||
else
|
||||
echo " ERROR: Nginx configuration test failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 3. Manage Nginx Service
|
||||
# =============================================================================
|
||||
echo ""
|
||||
echo "Step 3: Managing nginx service..."
|
||||
|
||||
if systemctl is-active --quiet nginx; then
|
||||
echo " Reloading nginx..."
|
||||
systemctl reload nginx
|
||||
echo " ✓ Nginx reloaded"
|
||||
else
|
||||
echo " Starting nginx..."
|
||||
systemctl start nginx
|
||||
systemctl enable nginx
|
||||
echo " ✓ Nginx started and enabled"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# 4. SSL Certificate Information
|
||||
# =============================================================================
|
||||
echo ""
|
||||
echo "Step 4: SSL certificates..."
|
||||
|
||||
SSL_CERTS=(
|
||||
"/etc/letsencrypt/live/nest.mcrn.ar"
|
||||
"/etc/letsencrypt/live/mcrn.ar"
|
||||
)
|
||||
|
||||
ALL_EXIST=true
|
||||
for cert_dir in "${SSL_CERTS[@]}"; do
|
||||
if [ -d "$cert_dir" ]; then
|
||||
echo " ✓ Certificate exists: $(basename $cert_dir)"
|
||||
else
|
||||
echo " ⚠️ Certificate missing: $(basename $cert_dir)"
|
||||
ALL_EXIST=false
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$ALL_EXIST" = false ]; then
|
||||
echo ""
|
||||
echo " To generate missing certificates:"
|
||||
echo " certbot certonly --manual --preferred-challenges dns -d '*.nest.mcrn.ar'"
|
||||
echo " certbot certonly --manual --preferred-challenges dns -d '*.mcrn.ar'"
|
||||
echo ""
|
||||
echo " After generating, reload nginx:"
|
||||
echo " systemctl reload nginx"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# Done
|
||||
# =============================================================================
|
||||
echo ""
|
||||
echo "=== Setup Complete ==="
|
||||
echo ""
|
||||
echo "System configuration applied successfully."
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. If $ACTUAL_USER was added to docker group, they must:"
|
||||
echo " - Log out and log back in"
|
||||
echo " - Or run: newgrp docker"
|
||||
echo ""
|
||||
echo " 2. Generate SSL certificates if missing (see above)"
|
||||
echo ""
|
||||
echo " 3. Deploy application:"
|
||||
echo " su - $ACTUAL_USER"
|
||||
echo " cd $ACTUAL_HOME/core_nest/ctrl"
|
||||
echo " ./deploy.sh"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user