feat: pack wordpress con IA nativa de WP 7.1 — fuera Open WebUI (#26)
Co-authored-by: Hermes Agent <hermes@d0a1.es>
This commit was merged in pull request #26.
This commit is contained in:
1 parent
9438b75c9f
commit
b3c2098d10
10 files changed
+144
-71
No files matched your search
+63
-15
@@ -137,15 +137,13 @@ if (-not $HasGpu) {
|
||||
cmd /c docker compose -f $ComposeFile down '>' NUL '2>&1'
|
||||
Info 'Deploy previo detenido (down; volumenes con el modelo intactos).'
|
||||
|
||||
$OllamaPort = Find-FreePort 11434
|
||||
$OllamaPort = $null # Ollama ya no publica puerto: solo lo usa WP por la red interna
|
||||
$WpPort = Find-FreePort 8080
|
||||
$WebUiPort = Find-FreePort 3000
|
||||
|
||||
# --- Mode info ------------------------------------------------------------
|
||||
if ($Mode -eq 'local') {
|
||||
Warn 'Modo: local (tu ordenador)'
|
||||
Write-Host " WordPress: ${Cyan}http://localhost:${WpPort}${NC}"
|
||||
Write-Host " IA (chat): ${Cyan}http://localhost:${WebUiPort}${NC}"
|
||||
} else {
|
||||
Warn 'Modo: VPS (accesible desde fuera)'
|
||||
# IP real de LAN: la de la interfaz con la ruta por defecto (evita
|
||||
@@ -157,24 +155,19 @@ if ($Mode -eq 'local') {
|
||||
Select-Object -First 1).IPAddress
|
||||
if (-not $Ip) { $Ip = 'TU_IP' }
|
||||
Write-Host " WordPress: ${Cyan}http://${Ip}:${WpPort}${NC}"
|
||||
Write-Host " IA (chat): ${Cyan}http://${Ip}:${WebUiPort}${NC}"
|
||||
Write-Host ''
|
||||
Write-Host " ${Bold}¿No tienes VPS?${NC} Consigue uno con descuento:"
|
||||
Write-Host " ${Cyan}https://d0a1.es/go/vultr/${NC} - Vultr"
|
||||
Write-Host " ${Cyan}https://d0a1.es/go/digitalocean/${NC} - DigitalOcean (`$200 credit)"
|
||||
}
|
||||
|
||||
if ($OllamaPort -ne 11434) { Warn "Puerto 11434 ocupado, usando $OllamaPort" }
|
||||
if ($WpPort -ne 8080) { Warn "Puerto 8080 ocupado, usando $WpPort" }
|
||||
if ($WebUiPort -ne 3000) { Warn "Puerto 3000 ocupado, usando $WebUiPort" }
|
||||
if ($WpPort -ne 8080) { Warn "Puerto 8080 ocupado, usando $WpPort" }
|
||||
Write-Host ''
|
||||
|
||||
# --- Deploy ----------------------------------------------------------------
|
||||
Warn 'Descargando contenedores (3-5 min la primera vez)...'
|
||||
cmd /c docker compose -f $ComposeFile down '>' NUL '2>&1'
|
||||
$env:OLLAMA_PORT = "$OllamaPort"
|
||||
$env:WP_PORT = "$WpPort"
|
||||
$env:WEBUI_PORT = "$WebUiPort"
|
||||
$ComposeArgs = @('-f', $ComposeFile)
|
||||
if ($HasGpu) {
|
||||
$OverrideFile = Join-Path $ScriptDir 'docker-compose.gpu.yml'
|
||||
@@ -258,19 +251,74 @@ cmd /c docker exec d0a1-wp-ollama sh -c 'ollama run qwen3:4b ""' '>' NUL '2>&1'
|
||||
# --- Done -------------------------------------------------------------------
|
||||
Write-Host ''
|
||||
Info 'Listo! Tu WordPress con IA esta corriendo.'
|
||||
Write-Host ''
|
||||
|
||||
# --- Auto-config WordPress: plugins IA + conexion a Ollama -------------------
|
||||
# EAP=Continue: los 2>$null sobre nativos con EAP=Stop provocan NativeCommandError
|
||||
# terminante (PS #4002, ver nota arriba). El bloque nuevo maneja errores por rc.
|
||||
$PrevEap = $ErrorActionPreference
|
||||
$ErrorActionPreference = 'Continue'
|
||||
# El contenedor wordpress:7.1 no trae WP-CLI; usar el contenedor wordpress:cli.
|
||||
Info 'Configurando los plugins de IA en WordPress (1-2 min la primera vez)...'
|
||||
cmd /c "docker pull wordpress:cli >NUL 2>&1"
|
||||
|
||||
# Red real del compose (el nombre depende del directorio, no es fijo):
|
||||
$WpNet = docker inspect d0a1-wp --format '{{range $k,$_ := .NetworkSettings.Networks}}{{$k}}{{end}}' 2>$null
|
||||
if (-not $WpNet) {
|
||||
Warn 'No se detecto la red del compose (d0a1-wp no corre). Saltando autoconfig.'
|
||||
$ErrorActionPreference = $PrevEap
|
||||
exit 1
|
||||
}
|
||||
$EnvFileContent = Get-Content $EnvFile -ErrorAction SilentlyContinue
|
||||
$WpDbPass = ($EnvFileContent | Where-Object { $_ -like 'MYSQL_PASSWORD=*' }) -replace '^MYSQL_PASSWORD=', '' | Select-Object -First 1
|
||||
if (-not $WpDbPass) { $WpDbPass = 'change-me-to-a-strong-password' }
|
||||
|
||||
function Invoke-WpCli {
|
||||
# docker run con --volumes-from (mismo patron env que usa el compose).
|
||||
$ArgsList = @('run', '--rm', '--network', $WpNet, '--volumes-from', 'd0a1-wp',
|
||||
'--env', "WORDPRESS_DB_HOST=db:3306",
|
||||
'--env', 'WORDPRESS_DB_NAME=wordpress',
|
||||
'--env', 'WORDPRESS_DB_USER=wordpress',
|
||||
'--env', "WORDPRESS_DB_PASSWORD=$WpDbPass",
|
||||
'wordpress:cli') + $Args + @('--allow-root')
|
||||
& docker @ArgsList 2>$null
|
||||
return $LASTEXITCODE
|
||||
}
|
||||
|
||||
# Esperar a que WP este instalado (asistente del navegador opcional: si el
|
||||
# usuario aun no instalo WP, la autoconfig se salta y puede repetir deploy).
|
||||
$WpReady = $false
|
||||
for ($i = 0; $i -lt 15; $i++) {
|
||||
if ((Invoke-WpCli 'core' 'is-installed') -eq 0) { $WpReady = $true; break }
|
||||
Start-Sleep -Seconds 4
|
||||
}
|
||||
|
||||
if ($WpReady) {
|
||||
$Rc = Invoke-WpCli 'plugin' 'install' 'ai' 'ai-provider-for-ollama' '--activate'
|
||||
if ($Rc -eq 0) {
|
||||
$Rc = Invoke-WpCli 'option' 'update' 'ai_provider_for_ollama_settings' '{"host":"http://ollama:11434"}' '--format=json'
|
||||
}
|
||||
if ($Rc -eq 0) {
|
||||
Ok 'Plugins de IA activados y conectados a Ollama (IA local)'
|
||||
} else {
|
||||
Warn 'No se pudo auto-configurar. Re-ejecuta .\deploy.ps1 tras el asistente de WordPress.'
|
||||
}
|
||||
} else {
|
||||
Warn 'WordPress aun no esta instalado. Tras el asistente del navegador,'
|
||||
Warn 'vuelve a ejecutar .\deploy.ps1 y los plugins de IA se configuran solos.'
|
||||
}
|
||||
$ErrorActionPreference = $PrevEap
|
||||
|
||||
Write-Host ''
|
||||
if ($Mode -eq 'local') {
|
||||
Write-Host " ${Bold}WordPress:${NC} ${Cyan}http://localhost:${WpPort}${NC}"
|
||||
Write-Host " ${Bold}IA (chat):${NC} ${Cyan}http://localhost:${WebUiPort}${NC}"
|
||||
} else {
|
||||
Write-Host " ${Bold}WordPress:${NC} ${Cyan}http://${Ip}:${WpPort}${NC}"
|
||||
Write-Host " ${Bold}IA (chat):${NC} ${Cyan}http://${Ip}:${WebUiPort}${NC}"
|
||||
}
|
||||
Write-Host ''
|
||||
Write-Host " ${Bold}Configurar WordPress:${NC}"
|
||||
Write-Host ' 1. Abre la URL de WordPress en tu navegador'
|
||||
Write-Host ' 2. Sigue el asistente de instalacion (2 minutos)'
|
||||
Write-Host " 3. Instala el plugin 'AI Agent Bridge' desde el panel"
|
||||
Write-Host " ${Bold}IA integrada en el editor:${NC} titulos sugeridos, extractos, alt text"
|
||||
Write-Host ' y moderacion de comentarios con tu modelo local (qwen3:4b).'
|
||||
Write-Host " Configuracion en ${Bold}Ajustes - Connectors${NC} dentro de WordPress."
|
||||
Write-Host ''
|
||||
Write-Host " ${Bold}Parar:${NC} .\deploy.ps1 stop"
|
||||
Write-Host " ${Bold}¿Quieres mas?${NC} ${Cyan}https://d0a1.es/packs/${NC}"
|
||||
|
||||
Reference in new issue
Block a user