173 lines
5.1 KiB
Bash
Executable File
173 lines
5.1 KiB
Bash
Executable File
#!/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 🚀" |