Files
calendario_contactos/setup.sh
T
2025-11-13 01:11:01 +01:00

173 lines
5.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -e
echo "🚀 Inicializando servidor CalDAV/CardDAV con Radicale + InfCloud"
echo "================================================================"
# Colores para output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Función para mostrar mensajes
info() { echo -e "${BLUE}$1${NC}"; }
success() { echo -e "${GREEN}$1${NC}"; }
warning() { echo -e "${YELLOW}⚠️ $1${NC}"; }
error() { echo -e "${RED}$1${NC}"; }
# Verificar dependencias
info "Verificando dependencias..."
# Verificar Docker
if ! command -v docker >/dev/null 2>&1; then
error "Docker no encontrado. Instálalo primero: https://docs.docker.com/get-docker/"
exit 1
fi
# Verificar Docker Compose
if ! docker compose version >/dev/null 2>&1; then
error "Docker Compose no encontrado o no funciona"
exit 1
fi
# Verificar htpasswd
if ! command -v htpasswd >/dev/null 2>&1; then
warning "htpasswd no encontrado. Instalando apache2-utils..."
if command -v apt >/dev/null 2>&1; then
sudo apt update && sudo apt install -y apache2-utils
elif command -v yum >/dev/null 2>&1; then
sudo yum install -y httpd-tools
elif command -v pacman >/dev/null 2>&1; then
sudo pacman -S apache-tools
else
error "No se pudo instalar htpasswd automáticamente"
echo "Instala manualmente: apache2-utils (Ubuntu/Debian) o httpd-tools (RHEL/CentOS)"
exit 1
fi
fi
success "Dependencias verificadas"
# 1. Crear estructura de directorios
info "Creando estructura de directorios..."
mkdir -p data config infcloud_config
success "Directorios creados"
# 2. Copiar configuración de Radicale
info "Configurando Radicale..."
if [ ! -f "config/config" ]; then
cp config_example/config config/config
success "Configuración de Radicale creada"
else
warning "Ya existe config/config, no se sobrescribirá"
fi
# 3. Copiar configuración de InfCloud
info "Configurando InfCloud..."
if [ ! -f "infcloud_config/config.js" ]; then
cp infcloud_config_example/config.js infcloud_config/config.js
success "Configuración de InfCloud creada"
else
warning "Ya existe infcloud_config/config.js, no se sobrescribirá"
fi
# 4. Crear archivo de usuarios vacío
if [ ! -f "config/users" ]; then
touch config/users
success "Archivo de usuarios creado"
else
warning "Ya existe config/users"
fi
# 5. Crear usuario administrador
info "Configurando usuario administrador..."
read -p "¿Quieres crear un usuario admin ahora? (s/n): " create_admin
if [[ "$create_admin" =~ ^[sS]$ ]]; then
htpasswd -B config/users admin
success "Usuario admin creado"
else
info "Puedes crear el usuario admin más tarde con: ./create_admin.sh"
fi
# 6. Verificar y parar servicios existentes si están corriendo
info "Verificando servicios existentes..."
if docker ps --format 'table {{.Names}}' | grep -E 'radicale|infcloud' >/dev/null 2>&1; then
warning "Servicios ya corriendo. Reiniciando..."
docker compose down
fi
# 7. Levantar servicios
info "Levantando servicios..."
docker compose up -d
# Esperar a que los servicios se inicien
info "Esperando a que los servicios se inicien..."
sleep 5
# 8. Verificar que los servicios están corriendo
info "Verificando servicios..."
# Verificar contenedores
if docker ps --format 'table {{.Names}}\t{{.Status}}' | grep -E 'radicale|infcloud' | grep -q 'Up'; then
success "Contenedores corriendo correctamente"
else
error "Problema con los contenedores"
docker ps --format 'table {{.Names}}\t{{.Status}}' | grep -E 'radicale|infcloud'
exit 1
fi
# 9. Verificar conectividad
info "Verificando conectividad..."
# Verificar Radicale
if curl -s -f http://localhost:5232/ >/dev/null 2>&1; then
success "Radicale responde en http://localhost:5232"
else
error "Radicale no responde"
echo "Logs de Radicale:"
docker logs radicale --tail 10
fi
# Verificar InfCloud
if curl -s -f http://localhost:8090/ >/dev/null 2>&1; then
success "InfCloud responde en http://localhost:8090"
else
warning "InfCloud puede estar iniciándose aún..."
echo "Logs de InfCloud:"
docker logs infcloud --tail 10
fi
echo ""
echo "🎉 ¡Inicialización completada!"
echo "============================================="
echo ""
echo "📱 Servicios disponibles:"
echo " • Radicale (servidor): http://localhost:5232"
echo " • InfCloud (cliente web): http://localhost:8090"
echo ""
echo "🔑 Credenciales:"
if [[ "$create_admin" =~ ^[sS]$ ]]; then
echo " • Usuario: admin"
echo " • Contraseña: (la que configuraste)"
else
echo " • Ejecuta: ./create_admin.sh para crear usuario admin"
fi
echo ""
echo "📚 Gestión:"
echo " • Usuarios: ./radicale_users.sh"
echo " • Parar: docker compose down"
echo " • Reiniciar: docker compose restart"
echo ""
echo "🧪 Prueba de conexión:"
echo " • Abre http://localhost:8090 en tu navegador"
echo " • Usa las credenciales configuradas"
echo ""
# Mostrar estado final
info "Estado actual de los servicios:"
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}' | grep -E 'NAMES|radicale|infcloud'
echo ""
success "Setup completado exitosamente 🚀"