From 5740d1754ae521c969f424ba93b140909c199fcf Mon Sep 17 00:00:00 2001 From: gservicesbcn Date: Fri, 29 Aug 2025 02:12:13 +0200 Subject: [PATCH] try to install with coolify --- COOLIFY_DEPLOYMENT.md | 144 ++++++++++++++++++++++++++++++++++++++++++ coolify.env.example | 35 ++++++++++ coolify.yaml | 80 +++++++++++++++++++++++ setup-coolify.ps1 | 55 ++++++++++++++++ setup-coolify.sh | 73 +++++++++++++++++++++ 5 files changed, 387 insertions(+) create mode 100644 COOLIFY_DEPLOYMENT.md create mode 100644 coolify.env.example create mode 100644 coolify.yaml create mode 100644 setup-coolify.ps1 create mode 100644 setup-coolify.sh diff --git a/COOLIFY_DEPLOYMENT.md b/COOLIFY_DEPLOYMENT.md new file mode 100644 index 00000000..90ed5caa --- /dev/null +++ b/COOLIFY_DEPLOYMENT.md @@ -0,0 +1,144 @@ +# Despliegue de ERPNext con Coolify + +Esta guía explica cómo desplegar ERPNext en un VPS utilizando Coolify. + +## Requisitos Previos + +- Un VPS con Docker instalado +- Coolify instalado y configurado en el VPS +- Acceso SSH al servidor + +## Configuración para Coolify + +### Archivo de Configuración Principal + +El archivo `coolify.yaml` proporciona una configuración simplificada optimizada para Coolify que incluye: + +1. **Servicio ERPNext principal** con healthchecks +2. **Base de datos MariaDB** con configuración óptima +3. **Servicios Redis** para cache y colas +4. **Volúmenes persistentes** para datos +5. **Variables de entorno** configurables + +### Variables de Entorno + +Crea un archivo `.env` con las siguientes variables: + +```bash +# Versión de ERPNext +ERPNEXT_VERSION=v15.77.0 + +# Contraseña de la base de datos +DB_PASSWORD=tu_password_seguro + +# Puerto HTTP +HTTP_PORT=8080 + +# Configuración del host del sitio +FRAPPE_SITE_NAME_HEADER=$$host +``` + +## Pasos de Despliegue + +### 1. Preparar el Servidor + +```bash +# Clonar el repositorio +git clone https://github.com/frappe/frappe_docker +cd frappe_docker + +# Crear archivo .env +cp example.env .env +# Editar .env con tus configuraciones +``` + +### 2. Configurar en Coolify + +1. **Crear una nueva aplicación** en Coolify +2. **Seleccionar "Docker Compose"** como tipo de aplicación +3. **Conectar el repositorio** o subir los archivos manualmente +4. **Especificar el archivo compose**: `coolify.yaml` +5. **Configurar las variables de entorno** en la interfaz de Coolify + +### 3. Variables de Entorno en Coolify + +Configura las siguientes variables en la interfaz de Coolify: + +- `ERPNEXT_VERSION`: Versión de ERPNext (ej: v15.77.0) +- `DB_PASSWORD`: Contraseña segura para MariaDB +- `HTTP_PORT`: Puerto para acceder a la aplicación +- `FRAPPE_SITE_NAME_HEADER`: Configuración del host (dejar por defecto) + +### 4. Despliegue + +1. **Iniciar el despliegue** desde la interfaz de Coolify +2. **Monitorear los logs** durante el proceso +3. **Verificar que todos los servicios** estén saludables + +## Configuraciones Avanzadas + +### Usar Base de Datos Externa + +Si prefieres usar una base de datos externa: + +```bash +# En el archivo .env o variables de Coolify +DB_HOST=tu_host_de_bd_externa +DB_PORT=3306 +DB_PASSWORD=password_de_tu_bd +``` + +### Configurar Dominio Personalizado + +1. **Configurar DNS** apuntando a tu VPS +2. **Configurar reverse proxy** en Coolify +3. **Actualizar `FRAPPE_SITE_NAME_HEADER`** con tu dominio + +### Backup y Restauración + +Coolify proporciona herramientas integradas para: +- Backups automáticos de volúmenes +- Restauración desde snapshots +- Monitorización de recursos + +## Solución de Problemas + +### Errores Comunes + +1. **Healthcheck failures**: Verificar que todos los servicios estén ejecutándose +2. **Problemas de conexión a BD**: Verificar credenciales y configuración de red +3. **Problemas de permisos**: Asegurar que los volúmenes tengan los permisos correctos + +### Logs y Monitorización + +- Usar la interfaz de Coolify para ver logs en tiempo real +- Configurar alertas para servicios críticos +- Monitorizar uso de CPU, memoria y almacenamiento + +## Mantenimiento + +### Actualizaciones + +1. **Actualizar versión de ERPNext**: Cambiar `ERPNEXT_VERSION` en las variables +2. **Reiniciar aplicación**: Desde la interfaz de Coolify +3. **Verificar compatibilidad**: Antes de actualizar a versiones mayores + +### Escalado + +Coolify permite: +- Escalar horizontalmente los servicios +- Ajustar recursos (CPU, memoria) +- Configurar auto-scaling basado en métricas + +## Recursos Adicionales + +- [Documentación oficial de Coolify](https://coolify.io/docs) +- [Foro de la comunidad ERPNext](https://discuss.erpnext.com) +- [Repositorio frappe_docker](https://github.com/frappe/frappe_docker) + +## Soporte + +Para problemas específicos de: +- **Configuración de Coolify**: Consultar documentación de Coolify +- **Problemas de ERPNext**: Abrir issue en el repositorio frappe_docker +- **Problemas de base de datos**: Verificar logs de MariaDB/Redis diff --git a/coolify.env.example b/coolify.env.example new file mode 100644 index 00000000..abd5b315 --- /dev/null +++ b/coolify.env.example @@ -0,0 +1,35 @@ +# Archivo de ejemplo de variables de entorno para Coolify +# Copia este archivo a .env y modifica los valores según necesites + +# Versión de ERPNext a utilizar +ERPNEXT_VERSION=v15.77.0 + +# Contraseña para la base de datos MariaDB +# ¡Cambia esto por una contraseña segura! +DB_PASSWORD=cambiar_por_password_seguro + +# Puerto HTTP para acceder a la aplicación +HTTP_PORT=8080 + +# Configuración del host header para multi-tenant +# Dejar como $$host para comportamiento por defecto +FRAPPE_SITE_NAME_HEADER=$$host + +# Configuración para base de datos externa (opcional) +# DB_HOST=host_externo_de_bd +# DB_PORT=3306 + +# Configuración para Redis externo (opcional) +# REDIS_CACHE=redis_externo:6379 +# REDIS_QUEUE=redis_externo:6379 + +# Configuración de recursos (opcional) +# MEMORY_LIMIT=512M +# CPU_LIMIT=0.5 + +# Configuración de red (opcional) +# NETWORK_MODE=bridge + +# Variables para healthchecks (opcional) +# HEALTHCHECK_TIMEOUT=30s +# HEALTHCHECK_RETRIES=3 diff --git a/coolify.yaml b/coolify.yaml new file mode 100644 index 00000000..dc20ce34 --- /dev/null +++ b/coolify.yaml @@ -0,0 +1,80 @@ +# Coolify configuration for ERPNext deployment +# This file provides a simplified configuration for Coolify deployment + +version: "3.8" + +services: + erpnext: + image: frappe/erpnext:${ERPNEXT_VERSION:-v15.77.0} + restart: unless-stopped + environment: + - DB_HOST=${DB_HOST:-db} + - DB_PORT=${DB_PORT:-3306} + - DB_PASSWORD=${DB_PASSWORD:-123} + - REDIS_CACHE=${REDIS_CACHE:-redis-cache:6379} + - REDIS_QUEUE=${REDIS_QUEUE:-redis-queue:6379} + - SOCKETIO_PORT=9000 + - FRAPPE_SITE_NAME_HEADER=${FRAPPE_SITE_NAME_HEADER:-$$host} + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + depends_on: + - db + - redis-cache + - redis-queue + ports: + - "${HTTP_PORT:-8080}:8080" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/api/method/ping"] + interval: 30s + timeout: 10s + retries: 3 + + db: + image: mariadb:10.6 + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-123} + - MARIADB_ROOT_PASSWORD=${DB_PASSWORD:-123} + volumes: + - db-data:/var/lib/mysql + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + - --skip-character-set-client-handshake + - --skip-innodb-read-only-compressed + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "--password=$${DB_PASSWORD:-123}"] + interval: 10s + timeout: 5s + retries: 10 + + redis-cache: + image: redis:6.2-alpine + restart: unless-stopped + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + + redis-queue: + image: redis:6.2-alpine + restart: unless-stopped + volumes: + - redis-queue-data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + db-data: + redis-queue-data: + sites: + logs: + +networks: + default: + driver: bridge diff --git a/setup-coolify.ps1 b/setup-coolify.ps1 new file mode 100644 index 00000000..28463c11 --- /dev/null +++ b/setup-coolify.ps1 @@ -0,0 +1,55 @@ +# Script de configuración inicial para Coolify (PowerShell) +# Este script ayuda a preparar el entorno para el despliegue en VPS Ubuntu + +Write-Host "=== Configuración inicial para Coolify en VPS Ubuntu ===" -ForegroundColor Green + +# Verificar que estamos en el directorio correcto +if (-not (Test-Path "compose.yaml")) { + Write-Host "Error: Este script debe ejecutarse desde el directorio raíz de frappe_docker" -ForegroundColor Red + exit 1 +} + +# Crear archivo .env si no existe +if (-not (Test-Path ".env")) { + Write-Host "Creando archivo .env desde coolify.env.example..." -ForegroundColor Yellow + Copy-Item -Path "coolify.env.example" -Destination ".env" + Write-Host "¡Archivo .env creado!" -ForegroundColor Green + Write-Host "Por favor, edita el archivo .env y cambia los valores por defecto, especialmente DB_PASSWORD" -ForegroundColor Yellow +} else { + Write-Host "El archivo .env ya existe" -ForegroundColor Green +} + +# Verificar estructura de archivos +Write-Host "`n=== Verificación de archivos ===" -ForegroundColor Green + +$files = @( + @{Name = "coolify.yaml"; Description = "Configuración Docker Compose para Coolify"}, + @{Name = "COOLIFY_DEPLOYMENT.md"; Description = "Documentación de despliegue"}, + @{Name = "coolify.env.example"; Description = "Ejemplo de variables de entorno"}, + @{Name = ".env"; Description = "Variables de entorno (debes editarlo)"} +) + +foreach ($file in $files) { + if (Test-Path $file.Name) { + Write-Host "✅ $($file.Name) - $($file.Description)" -ForegroundColor Green + } else { + Write-Host "❌ $($file.Name) - No encontrado" -ForegroundColor Red + } +} + +Write-Host "`n=== Próximos pasos para VPS Ubuntu ===" -ForegroundColor Green +Write-Host "1. Sube este proyecto a tu repositorio Git (GitHub, GitLab, etc.)" -ForegroundColor Yellow +Write-Host "2. En tu VPS Ubuntu con Coolify:" -ForegroundColor Yellow +Write-Host " - Clona el repositorio: git clone " -ForegroundColor Yellow +Write-Host " - Navega al directorio: cd frappe_docker" -ForegroundColor Yellow +Write-Host " - Ejecuta: ./setup-coolify.sh (para configurar .env)" -ForegroundColor Yellow +Write-Host "3. En la interfaz web de Coolify:" -ForegroundColor Yellow +Write-Host " - Crea una nueva aplicación" -ForegroundColor Yellow +Write-Host " - Selecciona 'Docker Compose'" -ForegroundColor Yellow +Write-Host " - Configura la ruta al archivo: coolify.yaml" -ForegroundColor Yellow +Write-Host " - Establece las variables de entorno" -ForegroundColor Yellow +Write-Host "4. Inicia el despliegue" -ForegroundColor Yellow + +Write-Host "`n=== Configuración completada ===" -ForegroundColor Green +Write-Host "Tu proyecto está listo para desplegarse en Coolify en Ubuntu" -ForegroundColor Green +Write-Host "Consulta COOLIFY_DEPLOYMENT.md para instrucciones detalladas" -ForegroundColor Cyan diff --git a/setup-coolify.sh b/setup-coolify.sh new file mode 100644 index 00000000..b7d48f98 --- /dev/null +++ b/setup-coolify.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Script de configuración inicial para Coolify +# Este script ayuda a preparar el entorno para el despliegue + +echo "=== Configuración inicial para Coolify ===" + +# Verificar que estamos en el directorio correcto +if [ ! -f "compose.yaml" ]; then + echo "Error: Este script debe ejecutarse desde el directorio raíz de frappe_docker" + exit 1 +fi + +# Crear archivo .env si no existe +if [ ! -f ".env" ]; then + echo "Creando archivo .env desde coolify.env.example..." + cp coolify.env.example .env + echo "¡Archivo .env creado!" + echo "Por favor, edita el archivo .env y cambia los valores por defecto, especialmente DB_PASSWORD" +else + echo "El archivo .env ya existe" +fi + +# Verificar estructura de archivos +echo "" +echo "=== Verificación de archivos ===" +echo "Archivos creados para Coolify:" + +if [ -f "coolify.yaml" ]; then + echo "✅ coolify.yaml - Configuración Docker Compose para Coolify" +else + echo "❌ coolify.yaml - No encontrado" +fi + +if [ -f "COOLIFY_DEPLOYMENT.md" ]; then + echo "✅ COOLIFY_DEPLOYMENT.md - Documentación de despliegue" +else + echo "❌ COOLIFY_DEPLOYMENT.md - No encontrado" +fi + +if [ -f "coolify.env.example" ]; then + echo "✅ coolify.env.example - Ejemplo de variables de entorno" +else + echo "❌ coolify.env.example - No encontrado" +fi + +if [ -f ".env" ]; then + echo "✅ .env - Variables de entorno (debes editarlo)" +else + echo "❌ .env - No encontrado" +fi + +echo "" +echo "=== Próximos pasos ===" +echo "1. Edita el archivo .env y configura tus variables:" +echo " - Cambia DB_PASSWORD por una contraseña segura" +echo " - Ajusta otras variables según necesites" +echo "" +echo "2. Sube este proyecto a tu repositorio Git" +echo "" +echo "3. En Coolify:" +echo " - Crea una nueva aplicación" +echo " - Selecciona 'Docker Compose'" +echo " - Conecta tu repositorio" +echo " - Especifica 'coolify.yaml' como archivo compose" +echo " - Configura las variables de entorno" +echo "" +echo "4. Inicia el despliegue desde Coolify" +echo "" +echo "Para más detalles, consulta COOLIFY_DEPLOYMENT.md" + +echo "" +echo "=== Configuración completada ==="