Initial commit: 4 deploy packs (Open WebUI, WordPress, Hermes Agent, OpenClaw)

This commit is contained in:
devops
2026-08-07 23:51:57 +02:00
commit cebeaa5069
10 changed files with 851 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# Hermes Agent — Tu agente de IA
Agente de IA que automatiza tareas desde el terminal o por mensajería (Telegram, etc.).
## Qué es
Hermes Agent es un agente de IA que vive en tu terminal. Ejecuta tareas, escribe código, gestiona archivos, automatiza workflows — todo desde la línea de comandos o conectado a Telegram. Usa modelos locales (Ollama) o remotos.
## Prueba local (gratis)
```bash
./deploy.sh local
```
El script instala Ollama (IA local) y Hermes Agent. Luego ejecuta:
```bash
hermes setup # Configuración interactiva
hermes model # Elige modelo (Ollama ya está corriendo)
hermes gateway setup # Conecta mensajería (Telegram, etc.)
```
## Despliega en VPS
```bash
./deploy.sh vps
```
Solo pagas el servidor. El agente es tuyo.
**¿No tienes VPS?** Consigue uno con descuento:
- [Hetzner Cloud](https://d0a1.es/go/hetzner/) — desde ~4€/mes
- [Clouding.io](https://d0a1.es/go/clouding/) — servidor en España
## Requisitos
- Docker instalado (para Ollama)
- 4 GB RAM mínimo
## Comandos
```bash
./deploy.sh local # Arrancar en local
./deploy.sh vps # Arrancar en VPS
./deploy.sh stop # Parar Ollama
```
+137
View File
@@ -0,0 +1,137 @@
#!/bin/bash
# ──────────────────────────────────────────────
# d0a1 pack — Hermes Agent
# Agente de IA que automatiza tareas desde el terminal.
# ──────────────────────────────────────────────
# Local: ./deploy.sh local → terminal + http://localhost:11434 (Ollama)
# VPS: ./deploy.sh vps → + gateway accesible desde fuera
# Stop: ./deploy.sh stop → para Ollama
# ──────────────────────────────────────────────
set -e
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
MODE="${1:-local}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo ""
echo -e "${BOLD}${CYAN}╔══════════════════════════════════════════╗${NC}"
echo -e "${BOLD}${CYAN}║ d0a1 pack — Hermes Agent ║${NC}"
echo -e "${BOLD}${CYAN}║ Tu agente de IA. Automatiza todo. ║${NC}"
echo -e "${BOLD}${CYAN}╚══════════════════════════════════════════╝${NC}"
echo ""
# ── Stop mode ───────────────────────────────
if [ "$MODE" = "stop" ]; then
if docker ps --format '{{.Names}}' | grep -q d0a1-hermes-ollama; then
docker stop d0a1-hermes-ollama && docker rm d0a1-hermes-ollama
echo -e "${GREEN}✓ Ollama parado.${NC}"
else
echo "Ollama no está corriendo."
fi
exit 0
fi
# ── Check Docker (for Ollama) ────────────────
if ! command -v docker &>/dev/null; then
echo -e "${RED}✗ Docker no está instalado (necesario para Ollama).${NC}"
echo "Instálalo: curl -fsSL https://get.docker.com | sh"
exit 1
fi
echo -e "${GREEN}${NC} Docker: $(docker --version 2>/dev/null | awk '{print $3}' | tr -d ',')"
# ── Check RAM ───────────────────────────────
TOTAL_RAM_KB=$(grep MemTotal /proc/meminfo 2>/dev/null | awk '{print $2}' || echo "0")
TOTAL_RAM_GB=$((TOTAL_RAM_KB / 1024 / 1024))
if [ "$TOTAL_RAM_GB" -lt 3 ]; then
echo -e "${RED}✗ Se necesitan 4 GB de RAM mínimo (detectado: ${TOTAL_RAM_GB} GB).${NC}"
exit 1
fi
echo -e "${GREEN}${NC} RAM: ${TOTAL_RAM_GB} GB"
# ── Mode info ───────────────────────────────
if [ "$MODE" = "vps" ]; then
echo -e "${YELLOW}Modo:${NC} VPS"
echo ""
echo -e " ${BOLD}¿No tienes VPS?${NC} Consigue uno con descuento:"
echo -e " ${CYAN}https://d0a1.es/go/hetzner/${NC} — Hetzner Cloud"
echo -e " ${CYAN}https://d0a1.es/go/clouding/${NC} — Clouding.io"
echo ""
elif [ "$MODE" != "local" ]; then
echo -e "${RED}Modo desconocido: $MODE${NC}"
echo "Usa: ./deploy.sh local | vps | stop"
exit 1
fi
echo ""
# ── 1. Arrancar Ollama (Docker) ──────────────
echo -e "${YELLOW}[1/3]${NC} Arrancando Ollama (IA local)..."
if ! docker ps --format '{{.Names}}' | grep -q d0a1-hermes-ollama; then
docker run -d --name d0a1-hermes-ollama \
-p 11434:11434 \
-v d0a1_hermes_ollama:/root/.ollama \
-e OLLAMA_HOST=0.0.0.0 \
--restart unless-stopped \
ollama/ollama:0.30.8
fi
# Wait for Ollama
echo -e " Esperando a que Ollama arranque..."
MAX_WAIT=60
WAITED=0
until docker exec d0a1-hermes-ollama ollama ps &>/dev/null; do
sleep 2
WAITED=$((WAITED + 2))
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
echo -e "${RED}✗ Ollama no arrancó. Revisa: docker logs d0a1-hermes-ollama${NC}"
exit 1
fi
done
echo -e "${YELLOW} Descargando modelo (llama3.2:3b, ~2 GB)...${NC}"
docker exec d0a1-hermes-ollama ollama pull llama3.2:3b
echo -e "${GREEN}${NC} Ollama corriendo en http://localhost:11434"
# ── 2. Instalar Hermes Agent ────────────────
echo -e "${YELLOW}[2/3]${NC} Instalando Hermes Agent..."
if command -v hermes &>/dev/null; then
echo -e "${GREEN}${NC} Hermes Agent ya instalado: $(hermes --version 2>/dev/null || echo 'OK')"
else
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
if ! command -v hermes &>/dev/null; then
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
fi
if command -v hermes &>/dev/null; then
echo -e "${GREEN}${NC} Hermes Agent instalado: $(hermes --version 2>/dev/null || echo 'OK')"
else
echo -e "${RED}✗ Hermes Agent no se instaló. Instálalo manualmente:${NC}"
echo " curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash"
echo " source ~/.bashrc"
exit 1
fi
fi
# ── 3. Configurar ───────────────────────────
echo -e "${YELLOW}[3/3]${NC} Configurando..."
echo ""
echo -e "${BOLD}Ejecuta estos comandos para terminar:${NC}"
echo ""
echo -e " ${CYAN}hermes setup${NC} — configuración interactiva"
echo -e " ${CYAN}hermes model${NC} — elige modelo (Ollama ya está corriendo)"
echo -e " ${CYAN}hermes gateway setup${NC} — conecta mensajería (Telegram, etc.)"
echo ""
if [ "$MODE" = "vps" ]; then
echo -e " ${BOLD}Para VPS:${NC} configura el gateway para acceso remoto:"
echo -e " ${CYAN}hermes gateway setup --portal${NC}"
echo ""
fi
echo -e " ${BOLD}Parar:${NC} ./deploy.sh stop"
echo -e " ${BOLD}¿Quieres más?${NC} ${CYAN}https://d0a1.es/precios/${NC}"
echo ""
+50
View File
@@ -0,0 +1,50 @@
# OpenClaw — Asistente en tus chats
Asistente personal de IA que responde desde tus apps de chat (WhatsApp, Telegram, Signal, etc.).
## Qué es
OpenClaw es un asistente de IA open-source que corre en tu equipo o servidor y se conecta a tus apps de mensajería. Le escribes por WhatsApp o Telegram y te responde, ejecuta tareas, busca información — todo con IA local, sin que tus conversaciones salgan de tu servidor.
## Prueba local (gratis)
```bash
./deploy.sh local
```
El script instala Ollama (IA local) y OpenClaw. Luego ejecuta:
```bash
openclaw onboard --install-daemon # Configuración inicial
openclaw gateway status # Verifica el gateway
openclaw dashboard # Abre la UI
# Conecta tus chats:
openclaw channel add whatsapp
openclaw channel add telegram
```
## Despliega en VPS
```bash
./deploy.sh vps
```
Solo pagas el servidor. El asistente es tuyo.
**¿No tienes VPS?** Consigue uno con descuento:
- [Hetzner Cloud](https://d0a1.es/go/hetzner/) — desde ~4€/mes
- [Clouding.io](https://d0a1.es/go/clouding/) — servidor en España
## Requisitos
- Docker instalado (para Ollama)
- 4 GB RAM mínimo
## Comandos
```bash
./deploy.sh local # Arrancar en local
./deploy.sh vps # Arrancar en VPS
./deploy.sh stop # Parar Ollama
```
+140
View File
@@ -0,0 +1,140 @@
#!/bin/bash
# ──────────────────────────────────────────────
# d0a1 pack — OpenClaw
# Asistente personal de IA en tus apps de chat.
# ──────────────────────────────────────────────
# Local: ./deploy.sh local → terminal + http://localhost:11434 (Ollama)
# VPS: ./deploy.sh vps → + gateway accesible desde fuera
# Stop: ./deploy.sh stop → para Ollama
# ──────────────────────────────────────────────
set -e
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
MODE="${1:-local}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo ""
echo -e "${BOLD}${CYAN}╔══════════════════════════════════════════╗${NC}"
echo -e "${BOLD}${CYAN}║ d0a1 pack — OpenClaw ║${NC}"
echo -e "${BOLD}${CYAN}║ Tu asistente. En tus chats. ║${NC}"
echo -e "${BOLD}${CYAN}╚══════════════════════════════════════════╝${NC}"
echo ""
# ── Stop mode ───────────────────────────────
if [ "$MODE" = "stop" ]; then
if docker ps --format '{{.Names}}' | grep -q d0a1-openclaw-ollama; then
docker stop d0a1-openclaw-ollama && docker rm d0a1-openclaw-ollama
echo -e "${GREEN}✓ Ollama parado.${NC}"
else
echo "Ollama no está corriendo."
fi
exit 0
fi
# ── Check Docker (for Ollama) ────────────────
if ! command -v docker &>/dev/null; then
echo -e "${RED}✗ Docker no está instalado (necesario para Ollama).${NC}"
echo "Instálalo: curl -fsSL https://get.docker.com | sh"
exit 1
fi
echo -e "${GREEN}${NC} Docker: $(docker --version 2>/dev/null | awk '{print $3}' | tr -d ',')"
# ── Check RAM ───────────────────────────────
TOTAL_RAM_KB=$(grep MemTotal /proc/meminfo 2>/dev/null | awk '{print $2}' || echo "0")
TOTAL_RAM_GB=$((TOTAL_RAM_KB / 1024 / 1024))
if [ "$TOTAL_RAM_GB" -lt 3 ]; then
echo -e "${RED}✗ Se necesitan 4 GB de RAM mínimo (detectado: ${TOTAL_RAM_GB} GB).${NC}"
exit 1
fi
echo -e "${GREEN}${NC} RAM: ${TOTAL_RAM_GB} GB"
# ── Mode info ───────────────────────────────
if [ "$MODE" = "vps" ]; then
echo -e "${YELLOW}Modo:${NC} VPS"
echo ""
echo -e " ${BOLD}¿No tienes VPS?${NC} Consigue uno con descuento:"
echo -e " ${CYAN}https://d0a1.es/go/hetzner/${NC} — Hetzner Cloud"
echo -e " ${CYAN}https://d0a1.es/go/clouding/${NC} — Clouding.io"
echo ""
elif [ "$MODE" != "local" ]; then
echo -e "${RED}Modo desconocido: $MODE${NC}"
echo "Usa: ./deploy.sh local | vps | stop"
exit 1
fi
echo ""
# ── 1. Arrancar Ollama (Docker) ──────────────
echo -e "${YELLOW}[1/3]${NC} Arrancando Ollama (IA local)..."
if ! docker ps --format '{{.Names}}' | grep -q d0a1-openclaw-ollama; then
docker run -d --name d0a1-openclaw-ollama \
-p 11434:11434 \
-v d0a1_openclaw_ollama:/root/.ollama \
-e OLLAMA_HOST=0.0.0.0 \
--restart unless-stopped \
ollama/ollama:0.30.8
fi
# Wait for Ollama
echo -e " Esperando a que Ollama arranque..."
MAX_WAIT=60
WAITED=0
until docker exec d0a1-openclaw-ollama ollama ps &>/dev/null; do
sleep 2
WAITED=$((WAITED + 2))
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
echo -e "${RED}✗ Ollama no arrancó. Revisa: docker logs d0a1-openclaw-ollama${NC}"
exit 1
fi
done
echo -e "${YELLOW} Descargando modelo (llama3.2:3b, ~2 GB)...${NC}"
docker exec d0a1-openclaw-ollama ollama pull llama3.2:3b
echo -e "${GREEN}${NC} Ollama corriendo en http://localhost:11434"
# ── 2. Instalar OpenClaw ─────────────────────
echo -e "${YELLOW}[2/3]${NC} Instalando OpenClaw..."
if command -v openclaw &>/dev/null; then
echo -e "${GREEN}${NC} OpenClaw ya instalado: $(openclaw --version 2>/dev/null || echo 'OK')"
else
curl -fsSL https://openclaw.ai/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
if ! command -v openclaw &>/dev/null; then
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
fi
if command -v openclaw &>/dev/null; then
echo -e "${GREEN}${NC} OpenClaw instalado: $(openclaw --version 2>/dev/null || echo 'OK')"
else
echo -e "${RED}✗ OpenClaw no se instaló. Instálalo manualmente:${NC}"
echo " curl -fsSL https://openclaw.ai/install.sh | bash"
echo " source ~/.bashrc"
exit 1
fi
fi
# ── 3. Configurar ───────────────────────────
echo -e "${YELLOW}[3/3]${NC} Configurando..."
echo ""
echo -e "${BOLD}Ejecuta estos comandos para terminar:${NC}"
echo ""
echo -e " ${CYAN}openclaw onboard --install-daemon${NC} — configuración inicial"
echo -e " ${CYAN}openclaw gateway status${NC} — verifica el gateway"
echo -e " ${CYAN}openclaw dashboard${NC} — abre la UI"
echo ""
echo -e " ${BOLD}Conecta tus chats (WhatsApp, Telegram, etc.):${NC}"
echo -e " ${CYAN}openclaw channel add whatsapp${NC}"
echo -e " ${CYAN}openclaw channel add telegram${NC}"
echo ""
if [ "$MODE" = "vps" ]; then
echo -e " ${BOLD}Para VPS:${NC} configura el gateway para acceso remoto."
echo ""
fi
echo -e " ${BOLD}Parar:${NC} ./deploy.sh stop"
echo -e " ${BOLD}¿Quieres más?${NC} ${CYAN}https://d0a1.es/precios/${NC}"
echo ""
+49
View File
@@ -0,0 +1,49 @@
# Open WebUI — Chat con IA
Chat con IA en tu navegador. Como ChatGPT, pero privado y gratis.
## Qué es
Open WebUI es una interfaz web para chatear con modelos de IA que corren en tu propio equipo o servidor. Tus conversaciones no salen de tu máquina. Sin cuenta, sin API key, sin cuota mensual.
## Prueba local (gratis, 1 comando)
```bash
./deploy.sh local
```
Abre http://localhost:3000 y empieza a chatear.
## Despliega en VPS
```bash
./deploy.sh vps
```
Solo pagas el servidor. La IA es tuya.
**¿No tienes VPS?** Consigue uno con descuento:
- [Hetzner Cloud](https://d0a1.es/go/hetzner/) — desde ~4€/mes
- [Clouding.io](https://d0a1.es/go/clouding/) — servidor en España
## Requisitos
- Docker instalado
- 4 GB RAM mínimo
## Modelos
El modelo por defecto es `llama3.2:3b` (2 GB, corre en 4 GB RAM).
```bash
docker exec d0a1-ollama ollama pull qwen2.5:7b # Mejor en español (5 GB RAM)
docker exec d0a1-ollama ollama pull llama3.1:8b # Más calidad (6 GB RAM)
```
## Comandos
```bash
./deploy.sh local # Arrancar en local
./deploy.sh vps # Arrancar en VPS
./deploy.sh stop # Parar todo
```
+112
View File
@@ -0,0 +1,112 @@
#!/bin/bash
# ──────────────────────────────────────────────
# d0a1 pack — Open WebUI
# Chat con IA en tu navegador. Como ChatGPT, pero privado.
# ──────────────────────────────────────────────
# Local: ./deploy.sh local → http://localhost:3000
# VPS: ./deploy.sh vps → http://TU_IP:3000
# Stop: ./deploy.sh stop
# ──────────────────────────────────────────────
set -e
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
MODE="${1:-local}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
COMPOSE_FILE="$SCRIPT_DIR/docker-compose.yml"
echo ""
echo -e "${BOLD}${CYAN}╔══════════════════════════════════════════╗${NC}"
echo -e "${BOLD}${CYAN}║ d0a1 pack — Open WebUI ║${NC}"
echo -e "${BOLD}${CYAN}║ Chat con IA. Privado. Sin cuotas. ║${NC}"
echo -e "${BOLD}${CYAN}╚══════════════════════════════════════════╝${NC}"
echo ""
# ── Stop mode ───────────────────────────────
if [ "$MODE" = "stop" ]; then
echo -e "${YELLOW}Parando...${NC}"
docker compose -f "$COMPOSE_FILE" down
echo -e "${GREEN}✓ Parado.${NC}"
exit 0
fi
# ── Check Docker ────────────────────────────
if ! command -v docker &>/dev/null; then
echo -e "${RED}✗ Docker no está instalado.${NC}"
echo ""
echo "Instálalo: curl -fsSL https://get.docker.com | sh"
exit 1
fi
if ! docker compose version &>/dev/null; then
echo -e "${RED}✗ Docker Compose v2 no disponible.${NC}"
exit 1
fi
echo -e "${GREEN}${NC} Docker: $(docker compose version --short 2>/dev/null || echo 'OK')"
# ── Check RAM ───────────────────────────────
TOTAL_RAM_KB=$(grep MemTotal /proc/meminfo 2>/dev/null | awk '{print $2}' || echo "0")
TOTAL_RAM_GB=$((TOTAL_RAM_KB / 1024 / 1024))
if [ "$TOTAL_RAM_GB" -lt 3 ]; then
echo -e "${RED}✗ Se necesitan 4 GB de RAM mínimo (detectado: ${TOTAL_RAM_GB} GB).${NC}"
exit 1
fi
echo -e "${GREEN}${NC} RAM: ${TOTAL_RAM_GB} GB"
# ── Mode info ───────────────────────────────
if [ "$MODE" = "local" ]; then
echo -e "${YELLOW}Modo:${NC} local (tu ordenador)"
echo -e " URL: ${CYAN}http://localhost:3000${NC}"
elif [ "$MODE" = "vps" ]; then
echo -e "${YELLOW}Modo:${NC} VPS (accesible desde fuera)"
echo -e " URL: ${CYAN}http://$(hostname -I 2>/dev/null | awk '{print $1}' || echo 'TU_IP'):3000${NC}"
echo ""
echo -e " ${BOLD}¿No tienes VPS?${NC} Consigue uno con descuento:"
echo -e " ${CYAN}https://d0a1.es/go/hetzner/${NC} — Hetzner Cloud"
echo -e " ${CYAN}https://d0a1.es/go/clouding/${NC} — Clouding.io"
else
echo -e "${RED}Modo desconocido: $MODE${NC}"
echo "Usa: ./deploy.sh local | vps | stop"
exit 1
fi
echo ""
# ── Deploy ──────────────────────────────────
echo -e "${YELLOW}Descargando contenedores (2-3 min la primera vez)...${NC}"
docker compose -f "$COMPOSE_FILE" up -d
# ── Pull model ───────────────────────────────
echo -e "${YELLOW}Descargando modelo de IA (llama3.2:3b, ~2 GB)...${NC}"
MAX_WAIT=60
WAITED=0
until docker exec d0a1-ollama ollama ps &>/dev/null; do
sleep 2
WAITED=$((WAITED + 2))
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
echo -e "${RED}✗ Ollama no arrancó. Revisa: docker logs d0a1-ollama${NC}"
exit 1
fi
done
docker exec d0a1-ollama ollama pull llama3.2:3b
# ── Done ────────────────────────────────────
echo ""
echo -e "${BOLD}${GREEN}¡Listo! Tu IA está corriendo.${NC}"
echo ""
if [ "$MODE" = "local" ]; then
echo -e " ${BOLD}Abre:${NC} ${CYAN}http://localhost:3000${NC}"
else
echo -e " ${BOLD}Abre:${NC} ${CYAN}http://$(hostname -I 2>/dev/null | awk '{print $1}' || echo 'TU_IP'):3000${NC}"
fi
echo ""
echo -e " ${BOLD}Modelos alternativos:${NC}"
echo " docker exec d0a1-ollama ollama pull qwen2.5:7b # Mejor en español"
echo " docker exec d0a1-ollama ollama pull llama3.1:8b # Más calidad"
echo ""
echo -e " ${BOLD}Parar:${NC} ./deploy.sh stop"
echo -e " ${BOLD}¿Quieres más?${NC} ${CYAN}https://d0a1.es/precios/${NC}"
echo ""
+58
View File
@@ -0,0 +1,58 @@
# d0a1 pack — Open WebUI
# Chat con IA en tu navegador. Como ChatGPT, pero privado.
#
# Local: ./deploy.sh local → http://localhost:3000
# VPS: ./deploy.sh vps → http://TU_IP:3000
#
# Requisitos: Docker + 4 GB RAM mínimo
# Incluye: Ollama (IA local) + Open WebUI (interfaz web)
# Modelo por defecto: llama3.2:3b (~2 GB, corre en 4 GB RAM)
services:
ollama:
container_name: d0a1-ollama
image: ollama/ollama:0.30.8
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
environment:
OLLAMA_HOST: "0.0.0.0"
OLLAMA_KEEP_ALIVE: "5m"
OLLAMA_NUM_PARALLEL: "1"
healthcheck:
test: ["CMD", "ollama", "ps"]
interval: 15s
timeout: 5s
retries: 10
start_period: 30s
openwebui:
container_name: d0a1-openwebui
image: ghcr.io/open-webui/open-webui:0.6.15
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- openwebui_data:/app/backend/data
environment:
OLLAMA_BASE_URL: "http://ollama:11434"
WEBUI_NAME: "d0a1"
WEBUI_AUTH: "false"
DEFAULT_LOCALE: "es"
ENABLE_SIGNUP: "true"
ENABLE_WEB_SEARCH: "false"
ENABLE_DIRECT_CONNECTIONS: "false"
depends_on:
ollama:
condition: service_healthy
deploy:
resources:
limits:
memory: 2G
volumes:
ollama_data:
driver: local
openwebui_data:
driver: local
+50
View File
@@ -0,0 +1,50 @@
# WordPress Agéntico — WP + IA local
Tu WordPress con IA local conectada. Posts SEO, moderación, backups — automatizado.
## Qué es
WordPress corriendo en tu servidor con Ollama (IA local) y Open WebUI conectados. Instalas el plugin AI Agent Bridge y tienes un WordPress que genera contenido, optimiza SEO, modera comentarios y hace backups — todo con IA local, sin API de terceros.
## Prueba local (gratis, 1 comando)
```bash
./deploy.sh local
```
- WordPress: http://localhost:8080
- IA (chat): http://localhost:3000
Sigue el asistente de instalación de WordPress (2 minutos), luego instala el plugin AI Agent Bridge desde el panel.
## Despliega en VPS
```bash
./deploy.sh vps
```
Solo pagas el servidor. WordPress y la IA son tuyos.
**¿No tienes VPS?** Consigue uno con descuento:
- [Hetzner Cloud](https://d0a1.es/go/hetzner/) — desde ~4€/mes
- [Clouding.io](https://d0a1.es/go/clouding/) — servidor en España
## Requisitos
- Docker instalado
- 6 GB RAM mínimo
## Qué incluye
- WordPress 6.9 + PHP 8.3
- MariaDB 11.4
- Ollama (IA local, modelo llama3.2:3b por defecto)
- Open WebUI (interfaz de chat)
## Comandos
```bash
./deploy.sh local # Arrancar en local
./deploy.sh vps # Arrancar en VPS
./deploy.sh stop # Parar todo
```
+117
View File
@@ -0,0 +1,117 @@
#!/bin/bash
# ──────────────────────────────────────────────
# d0a1 pack — WordPress Agéntico
# Tu WordPress con IA local. Posts SEO, moderación, backups.
# ──────────────────────────────────────────────
# Local: ./deploy.sh local → http://localhost:8080
# VPS: ./deploy.sh vps → http://TU_IP:8080
# Stop: ./deploy.sh stop
# ──────────────────────────────────────────────
set -e
GREEN='\033[0;32m'
CYAN='\033[0;36m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
MODE="${1:-local}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
COMPOSE_FILE="$SCRIPT_DIR/docker-compose.yml"
echo ""
echo -e "${BOLD}${CYAN}╔══════════════════════════════════════════╗${NC}"
echo -e "${BOLD}${CYAN}║ d0a1 pack — WordPress Agéntico ║${NC}"
echo -e "${BOLD}${CYAN}║ WP + IA local. Sin cuotas. ║${NC}"
echo -e "${BOLD}${CYAN}╚══════════════════════════════════════════╝${NC}"
echo ""
# ── Stop mode ───────────────────────────────
if [ "$MODE" = "stop" ]; then
echo -e "${YELLOW}Parando...${NC}"
docker compose -f "$COMPOSE_FILE" down
echo -e "${GREEN}✓ Parado.${NC}"
exit 0
fi
# ── Check Docker ────────────────────────────
if ! command -v docker &>/dev/null; then
echo -e "${RED}✗ Docker no está instalado.${NC}"
echo "Instálalo: curl -fsSL https://get.docker.com | sh"
exit 1
fi
if ! docker compose version &>/dev/null; then
echo -e "${RED}✗ Docker Compose v2 no disponible.${NC}"
exit 1
fi
echo -e "${GREEN}${NC} Docker: $(docker compose version --short 2>/dev/null || echo 'OK')"
# ── Check RAM ───────────────────────────────
TOTAL_RAM_KB=$(grep MemTotal /proc/meminfo 2>/dev/null | awk '{print $2}' || echo "0")
TOTAL_RAM_GB=$((TOTAL_RAM_KB / 1024 / 1024))
if [ "$TOTAL_RAM_GB" -lt 5 ]; then
echo -e "${RED}✗ Se necesitan 6 GB de RAM mínimo (detectado: ${TOTAL_RAM_GB} GB).${NC}"
exit 1
fi
echo -e "${GREEN}${NC} RAM: ${TOTAL_RAM_GB} GB"
# ── Mode info ───────────────────────────────
if [ "$MODE" = "local" ]; then
echo -e "${YELLOW}Modo:${NC} local (tu ordenador)"
echo -e " WordPress: ${CYAN}http://localhost:8080${NC}"
echo -e " IA (chat): ${CYAN}http://localhost:3000${NC}"
elif [ "$MODE" = "vps" ]; then
IP=$(hostname -I 2>/dev/null | awk '{print $1}' || echo 'TU_IP')
echo -e "${YELLOW}Modo:${NC} VPS (accesible desde fuera)"
echo -e " WordPress: ${CYAN}http://${IP}:8080${NC}"
echo -e " IA (chat): ${CYAN}http://${IP}:3000${NC}"
echo ""
echo -e " ${BOLD}¿No tienes VPS?${NC} Consigue uno con descuento:"
echo -e " ${CYAN}https://d0a1.es/go/hetzner/${NC} — Hetzner Cloud"
echo -e " ${CYAN}https://d0a1.es/go/clouding/${NC} — Clouding.io"
else
echo -e "${RED}Modo desconocido: $MODE${NC}"
echo "Usa: ./deploy.sh local | vps | stop"
exit 1
fi
echo ""
# ── Deploy ──────────────────────────────────
echo -e "${YELLOW}Descargando contenedores (3-5 min la primera vez)...${NC}"
docker compose -f "$COMPOSE_FILE" up -d
# ── Pull model ───────────────────────────────
echo -e "${YELLOW}Descargando modelo de IA (llama3.2:3b, ~2 GB)...${NC}"
MAX_WAIT=60
WAITED=0
until docker exec d0a1-wp-ollama ollama ps &>/dev/null; do
sleep 2
WAITED=$((WAITED + 2))
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
echo -e "${RED}✗ Ollama no arrancó. Revisa: docker logs d0a1-wp-ollama${NC}"
exit 1
fi
done
docker exec d0a1-wp-ollama ollama pull llama3.2:3b
# ── Done ────────────────────────────────────
echo ""
echo -e "${BOLD}${GREEN}¡Listo! Tu WordPress con IA está corriendo.${NC}"
echo ""
if [ "$MODE" = "local" ]; then
echo -e " ${BOLD}WordPress:${NC} ${CYAN}http://localhost:8080${NC}"
echo -e " ${BOLD}IA (chat):${NC} ${CYAN}http://localhost:3000${NC}"
else
echo -e " ${BOLD}WordPress:${NC} ${CYAN}http://${IP}:8080${NC}"
echo -e " ${BOLD}IA (chat):${NC} ${CYAN}http://${IP}:3000${NC}"
fi
echo ""
echo -e " ${BOLD}Configurar WordPress:${NC}"
echo " 1. Abre la URL de WordPress en tu navegador"
echo " 2. Sigue el asistente de instalación (2 minutos)"
echo " 3. Instala el plugin 'AI Agent Bridge' desde el panel"
echo ""
echo -e " ${BOLD}Parar:${NC} ./deploy.sh stop"
echo -e " ${BOLD}¿Quieres más?${NC} ${CYAN}https://d0a1.es/precios/${NC}"
echo ""
+92
View File
@@ -0,0 +1,92 @@
# d0a1 pack — WordPress Agéntico
# Tu WordPress con IA local conectada. Posts SEO, moderación, backups — automatizado.
#
# Local: ./deploy.sh local → http://localhost:8080
# VPS: ./deploy.sh vps → http://TU_IP:8080
#
# Requisitos: Docker + 6 GB RAM mínimo
# Incluye: WordPress + MariaDB + Ollama + Open WebUI
services:
db:
container_name: d0a1-wp-db
image: mariadb:11.4
restart: unless-stopped
volumes:
- wp_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-d0a1root}
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-d0a1pass}
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 15s
timeout: 5s
retries: 10
start_period: 20s
wordpress:
container_name: d0a1-wp
image: wordpress:6.9-php8.3-apache
restart: unless-stopped
ports:
- "8080:80"
volumes:
- wp_data:/var/www/html
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD:-d0a1pass}
depends_on:
db:
condition: service_healthy
ollama:
container_name: d0a1-wp-ollama
image: ollama/ollama:0.30.8
restart: unless-stopped
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_data:/root/.ollama
environment:
OLLAMA_HOST: "0.0.0.0"
OLLAMA_KEEP_ALIVE: "5m"
healthcheck:
test: ["CMD", "ollama", "ps"]
interval: 15s
timeout: 5s
retries: 10
start_period: 30s
openwebui:
container_name: d0a1-wp-openwebui
image: ghcr.io/open-webui/open-webui:0.6.15
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- openwebui_data:/app/backend/data
environment:
OLLAMA_BASE_URL: "http://ollama:11434"
WEBUI_NAME: "d0a1"
WEBUI_AUTH: "false"
DEFAULT_LOCALE: "es"
depends_on:
ollama:
condition: service_healthy
deploy:
resources:
limits:
memory: 2G
volumes:
wp_db:
driver: local
wp_data:
driver: local
ollama_data:
driver: local
openwebui_data:
driver: local