94 lines
2.4 KiB
Bash
94 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# --- Cargar variables desde .env ---
|
|
if [ ! -f .env ]; then
|
|
echo "❌ No se encontró .env. Crea uno basado en .env.example."
|
|
exit 1
|
|
fi
|
|
|
|
export $(grep -v '^#' .env | xargs)
|
|
|
|
# --- VALIDACIÓN ---
|
|
: "${TARGET_USER:? ❌ Falta TARGET_USER en .env}"
|
|
: "${DAGU_PORT:? ❌ Falta DAGU_PORT en .env}"
|
|
: "${DAGU_USERNAME:? ❌ Falta DAGU_USERNAME en .env}"
|
|
: "${DAGU_PASSWORD:? ❌ Falta DAGU_PASSWORD en .env}"
|
|
|
|
# --- VARIABLES ---
|
|
USER_HOME="/home/$TARGET_USER"
|
|
BASHRC="$USER_HOME/.bashrc"
|
|
DAGU_CONFIG_DIR="$USER_HOME/.config/dagu"
|
|
DAGU_CONFIG_FILE="$DAGU_CONFIG_DIR/config.yaml"
|
|
SERVICE_FILE="/etc/systemd/system/dagu.service"
|
|
LOCAL_BIN="$USER_HOME/.local/bin"
|
|
|
|
# --- 1. INSTALAR DAGU ---
|
|
echo "🚀 Instalando Dagu..."
|
|
curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash
|
|
|
|
# --- 2. AÑADIR PATH AL BASHRC SI NO EXISTE ---
|
|
if ! grep -Fxq "export PATH=\"\$PATH:$LOCAL_BIN\"" "$BASHRC"; then
|
|
echo "🛠 Añadiendo $LOCAL_BIN al PATH en .bashrc..."
|
|
echo "export PATH=\"\$PATH:$LOCAL_BIN\"" >> "$BASHRC"
|
|
else
|
|
echo "✅ PATH ya contiene $LOCAL_BIN."
|
|
fi
|
|
|
|
# --- 3. CREAR CONFIGURACIÓN DE DAGU ---
|
|
echo "🧩 Creando archivo de configuración de Dagu..."
|
|
mkdir -p "$DAGU_CONFIG_DIR"
|
|
cat > "$DAGU_CONFIG_FILE" <<EOF
|
|
# ~/.config/dagu/config.yaml
|
|
host: 0.0.0.0
|
|
port: $DAGU_PORT
|
|
|
|
auth:
|
|
basic:
|
|
enabled: true
|
|
username: $DAGU_USERNAME
|
|
password: $DAGU_PASSWORD
|
|
|
|
paths:
|
|
dagsDir: ~/.dagu/workflows
|
|
logDir: /var/log/dagu
|
|
EOF
|
|
|
|
# Crear directorios
|
|
mkdir -p "$USER_HOME/.dagu/workflows"
|
|
sudo mkdir -p /var/log/dagu
|
|
sudo chown -R "$TARGET_USER":"$TARGET_USER" /var/log/dagu
|
|
|
|
# --- 4. RECARGAR BASHRC ---
|
|
echo "🔄 Recargando bashrc..."
|
|
source "$BASHRC"
|
|
|
|
# --- 5. CREAR SERVICIO SYSTEMD ---
|
|
echo "⚙️ Creando servicio systemd para Dagu..."
|
|
sudo bash -c "cat > $SERVICE_FILE" <<EOF
|
|
[Unit]
|
|
Description=Dagu Workflow Engine
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$TARGET_USER
|
|
WorkingDirectory=$USER_HOME
|
|
Environment=DAGU_PORT=$DAGU_PORT
|
|
ExecStart=$LOCAL_BIN/dagu start-all --port $DAGU_PORT
|
|
Restart=on-failure
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# --- ACTIVAR SERVICIO ---
|
|
echo "🧠 Activando servicio de Dagu..."
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable dagu.service
|
|
sudo systemctl restart dagu.service
|
|
|
|
echo "✅ Dagu instalado y ejecutándose en el puerto $DAGU_PORT"
|
|
echo "🌐 Accede a: http://localhost:$DAGU_PORT con usuario '$DAGU_USERNAME' y contraseña '$DAGU_PASSWORD'"
|