Herramientas Informaticas

Mes: mayo 2026

🔥 Error Fatal en CodeIgniter 4: Undefined property Config\Format::$jsonEncodeDepth

Entrada fija

Si después de actualizar CodeIgniter 4 te apareció un error como este:

PHP Fatal error:
Undefined property: Config\Format::$jsonEncodeDepth

y el stack trace apunta a:

system/Format/JSONFormatter.php

la causa casi siempre es la misma:
tu archivo app/Config/Format.php quedó desactualizado después de actualizar el framework.


📌 ¿Por qué sucede?

En versiones recientes de CodeIgniter 4 se agregaron nuevas propiedades para el manejo de JSON.

El problema ocurre cuando:

  • actualizas vendor/codeigniter4/framework
  • pero conservas un archivo viejo en:
app/Config/Format.php

Entonces el framework intenta acceder a propiedades que no existen.


⚠️ Error completo

Undefined property: Config\Format::$jsonEncodeDepth

Relacionado con:

CodeIgniter\Format\JSONFormatter.php

✅ Solución

Abrir:

app/Config/Format.php

y agregar las propiedades faltantes dentro de la clase Format.


✅ Configuración corregida

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;

class Format extends BaseConfig
{
    public array $supportedResponseFormats = [
        'application/json',
        'application/xml',
        'text/xml',
    ];

    public string $formatter = 'application/json';

    public array $formatters = [
        'application/json' => \CodeIgniter\Format\JSONFormatter::class,
        'application/xml'  => \CodeIgniter\Format\XMLFormatter::class,
        'text/xml'         => \CodeIgniter\Format\XMLFormatter::class,
    ];

    public int $jsonEncodeOptions =
        JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES;

    public bool $jsonDecodeAssociative = true;

    public int $jsonEncodeDepth = 512;

    public int $jsonDecodeDepth = 512;
}

🧹 Limpiar caché

Después de guardar cambios ejecutar:

php spark cache:clear

🔄 Reiniciar servicios

Si usas Apache, PHP-FPM o Docker:

sudo systemctl restart apache2

o el servicio correspondiente.


💡 Recomendación importante

Cada vez que actualices CodeIgniter 4:

  • ✅ compara tus archivos en:
app/Config/

contra los originales del framework:

vendor/codeigniter4/framework/app/Config/

porque muchas veces nuevas versiones agregan propiedades nuevas y los proyectos antiguos conservan configuraciones incompatibles.


🚀 Resultado

Después de agregar:

public int $jsonEncodeDepth = 512;

el error desaparece y las respuestas JSON vuelven a funcionar correctamente.


#CodeIgniter #PHP #CodeIgniter4 #PostgreSQL #MariaDB #Backend #WebDevelopment #Programacion #PHPDeveloper #OpenSource

Cómo instalar Openfire con Docker en Ubuntu y solucionar el error de “no carga la consola web”

Entrada fija

Guía definitiva paso a paso para tener tu servidor XMPP funcionando y accesible desde toda la red.

Introducción

Openfire es un potente servidor de mensajería XMPP (Jabber) muy utilizado en entornos empresariales y proyectos de comunicación interna. Instalarlo con Docker es rápido y limpio, pero es común encontrarse con un problema: la consola web no carga cuando intentas acceder desde otra computadora, aunque desde el propio servidor funcione con localhost.

En este artículo te mostraré cómo instalar Openfire usando Docker en Ubuntu, y cómo solucionar ese molesto error de conectividad, que normalmente está relacionado con el firewall (UFW) y la interfaz de escucha del contenedor.

Requisitos previos

  • Un servidor o máquina virtual con Ubuntu 20.04 / 22.04 / 24.04.
  • Docker y Docker Compose instalados (te muestro cómo).
  • Acceso root o usuario con sudo.
  • Puertos necesarios: 9090 (web admin), 9091 (admin seguro), 5222 (clientes), 5269 (federación).

Paso 1: Instalar Docker en Ubuntu

Si aún no tienes Docker, ejecuta:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce
sudo systemctl enable docker
sudo usermod -aG docker $USER   # (opcional, para no usar sudo)

Verifica: docker --version

Paso 2: Crear volúmenes persistentes

Los datos y logs de Openfire deben guardarse fuera del contenedor:

docker volume create openfire_data
docker volume create openfire_logs

Paso 3: Ejecutar Openfire con red bridge (RECOMENDADO)

No uses --network host si quieres acceder desde otras máquinas, a menos que sepas configurar el firewall. Usa mapeo de puertos explícito:

docker run -d \
  --name openfire \
  --restart unless-stopped \
  -p 9090:9090 -p 9091:9091 \
  -p 5222:5222 -p 5223:5223 -p 5269:5269 \
  -v openfire_data:/var/lib/openfire \
  -v openfire_logs:/var/log/openfire \
  ghcr.io/igniterealtime/openfire:latest

Verifica que esté corriendo:

docker ps

Paso 4: El problema típico – no accedo desde otra PC

Ejecutas curl http://localhost:9090 en el servidor y obtienes respuesta, pero desde tu ordenador personal http://IP_DEL_SERVIDOR:9090 no carga. ¿Por qué?

  • Causa principal: El firewall de Ubuntu (UFW) bloquea el tráfico externo hacia Docker.
  • Causa secundaria: Openfire podría estar escuchando solo en 127.0.0.1 dentro del contenedor.

Solución definitiva (UFW + Docker)

Instala el script ufw-docker que hace que Docker respete las reglas de UFW:

sudo wget -O /usr/local/bin/ufw-docker https://raw.githubusercontent.com/chaifeng/ufw-docker/master/ufw-docker
sudo chmod +x /usr/local/bin/ufw-docker
sudo ufw-docker install
sudo ufw allow 9090/tcp
sudo ufw allow 9091/tcp

Si tenías UFW desactivado, actívalo:

sudo ufw enable

¡Importante! Después de esto, reinicia Docker para aplicar los cambios de iptables:

sudo systemctl restart docker
docker start openfire

Ahora prueba de nuevo desde tu navegador: http://IP_DEL_SERVIDOR:9090 debería mostrar el asistente de configuración de Openfire.

Paso 5: Configuración inicial – poner la IP como dominio

Cuando accedas por primera vez, el asistente web te pedirá:

  • Idioma: Elige el tuyo.
  • Dominio del servidor XMPP: Aquí debes escribir la IP pública o privada de tu servidor (ej: 192.168.1.100). Si tienes un dominio real, úsalo. Esto es lo que llamamos “poner la IP en el dominio”.
  • Puertos de administración: Déjalos en 9090 y 9091.
  • Base de datos: Elige la embebida H2 (o configura una externa).
  • Contraseña de administrador: Elige una segura.

Completa los pasos y tendrás tu servidor Openfire listo.

Paso 6: Verificación final

Desde otra máquina en la misma red:

telnet IP_DEL_SERVIDOR 9090

O simplemente abre el navegador. Si todo está bien, verás la pantalla de login de la consola de administración.

Solución alternativa (si el problema persiste)

Si después de lo anterior sigues sin acceso, edita la configuración de Openfire para forzar la escucha en 0.0.0.0:

docker exec -it openfire bash
apt update && apt install -y nano
nano /var/lib/openfire/conf/openfire.xml

Dentro de <jive>, agrega o modifica:

<adminConsole>
    <interface>0.0.0.0</interface>
    <port>9090</port>
    <securePort>9091</securePort>
</adminConsole>

Guarda (Ctrl+O), sal (Ctrl+X) y reinicia el contenedor:

exit
docker restart openfire

Conclusión

Instalar Openfire con Docker es sencillo, pero el error de “no carga la consola web desde otra PC” es muy común debido a la interacción entre Docker y UFW. Con el script ufw-docker y usando la red bridge con mapeo de puertos, el problema se resuelve de raíz. Ahora ya puedes disfrutar de tu propio servidor XMPP accesible desde toda tu red local.

¿Te ha servido? Déjame un comentario y comparte este tutorial con otros administradores.

🎧 Cómo usar Ardour con batería electrónica en Linux Mint (sin errores y con sonido PRO)

Entrada fija

Si estás usando Ardour en Linux Mint con una interfaz Behringer y una batería electrónica por USB, seguramente ya te topaste con problemas como:

  • ❌ No se escucha nada
  • ❌ La batería sí detecta pero no suena
  • ❌ Error: JACK HALTED
  • ❌ El audio se “desconecta” solo

Aquí tienes la guía completa para dejar todo funcionando como estudio profesional 🔥


🧠 Entendiendo el sistema de audio en Linux

En Linux Mint moderno usamos PipeWire.

Este sistema reemplaza:

  • PulseAudio (audio normal)
  • JACK (audio profesional)

👉 Resultado: puedes usar Ardour con baja latencia SIN configuraciones complicadas.


🔌 Paso 1: conectar correctamente tu interfaz

  1. Conecta tu interfaz Behringer
  2. Conecta tu batería electrónica por USB
  3. Verifica que Linux la detecta:
aconnect -l

🎛️ Paso 2: abrir Ardour correctamente

pw-jack ardour

👉 Esto asegura compatibilidad con JACK dentro de PipeWire.


🔊 Paso 3: configurar la salida de audio (MUY IMPORTANTE)

pactl list short sinks

Busca algo como:

alsa_output.usb-BEHRINGER_UMC202HD...

⚠️ Error común

iec958-stereo

👉 Eso es salida DIGITAL ❌
👉 No se escucha en audífonos

✅ Solución: usar modo PRO

pactl set-card-profile alsa_card.usb-BEHRINGER_UMC202HD_192k_12345678-00.2 pro-audio
pactl set-default-sink alsa_output.usb-BEHRINGER_UMC202HD_192k_12345678-00.2.pro-output-0

💤 Paso 4: evitar que el audio se “apague”

mkdir -p ~/.config/pipewire/pipewire.conf.d
nano ~/.config/pipewire/pipewire.conf.d/disable-suspend.conf

Agrega:

context.properties = {
    session.suspend-timeout-seconds = 0
}
systemctl --user restart pipewire pipewire-pulse

🥁 Paso 5: configurar batería MIDI

aconnect -l

En Ardour:

  • Crea pista MIDI
  • Selecciona tu batería como input
  • Inserta MT Power Drum Kit 2
  • Activa Record y Monitor

🔊 Paso 6: ruteo de audio

En Ardour:

Window → Audio Connections

  • Pista → Master
  • Master → playback 1 y 2 (Behringer)

❌ Error común: JACK HALTED

JACK HALTED: JACK server has been closed

🔥 Causas:

  • Desconectar la interfaz
  • Cambiar configuración de audio
  • PipeWire reinicia

✅ Solución:

systemctl --user restart pipewire pipewire-pulse
pw-jack ardour

🧠 Regla de oro

Nunca conectes o desconectes la interfaz con Ardour abierto


🎚️ Bonus: editar batería MIDI

  • Mover golpes
  • Borrar errores
  • Ajustar velocidad (velocity)
  • Cuantizar

Doble clic en el clip MIDI para editar.


🥁 Bonus PRO: separar batería por pistas

  • Kick
  • Snare
  • Hi-hat
  • Toms

👉 Mezcla como en estudio real.


🚀 Resultado final

  • ✔ Audio estable
  • ✔ Baja latencia
  • ✔ Batería funcionando
  • ✔ Plugins activos
  • ✔ Flujo profesional

🎯 Recomendación final

Prueba también:

  • DrumGizmo (nativo Linux, nivel pro)
  • Plugins con Wine + Yabridge

💬 Si quieres, puedo ayudarte a optimizar latencia, mezcla o mapeo de tu batería.

🚀 Cómo montar tu propio “ChatGPT” local con LLaMA 3 + Open WebUI (Docker)

Entrada fija

¿Te imaginas tener tu propio ChatGPT funcionando en tu casa, sin depender de servicios externos? 😏
Con LLaMA 3 y Open WebUI puedes hacerlo en minutos usando Docker.


🧠 ¿Qué vamos a lograr?

  • 🤖 Un modelo IA local (LLaMA 3 con Ollama)
  • 🌐 Una interfaz web tipo ChatGPT
  • 📱 Acceso desde tu celular o cualquier PC en tu red
  • 🔒 Opcional: acceso desde internet

🧩 Requisitos

  • 🐧 Linux (Ubuntu recomendado)
  • 🐳 Docker instalado
  • ⚡ Ollama instalado con LLaMA 3
  • 🌐 Red local funcionando

⚙️ Paso 1: Verificar que Ollama está corriendo

curl http://localhost:11434

Si ves:

Ollama is running

👉 Todo bien, ya tienes el backend listo.


🌐 Paso 2: Levantar Open WebUI con Docker

docker run -d -p 8089:8080 \
--add-host=host.docker.internal:host-gateway \
ghcr.io/open-webui/open-webui:main

🔍 Esto hace:

  • 🔓 Expone la web en el puerto 8089
  • 🔗 Conecta el contenedor con Ollama
  • 🧠 Usa tu modelo local automáticamente

📱 Paso 3: Acceder desde navegador

Abre en tu navegador:

http://TU_IP:8089

Ejemplo:

http://192.168.1.50:8089

🎉 ¡Listo! Ya tienes tu ChatGPT local funcionando.


🧠 Primer uso

  • Crea una cuenta (solo local)
  • Selecciona el modelo (llama3)
  • Empieza a chatear 🤖

⚠️ Problemas comunes

❌ No conecta con Ollama

OLLAMA_HOST=0.0.0.0 ollama serve

❌ No abre desde celular

sudo ufw allow 8089

❌ Pantalla en blanco

docker restart $(docker ps -q --filter ancestor=ghcr.io/open-webui/open-webui)

🌍 Acceso desde internet (opcional)

  • 🌐 Port Forwarding
  • 🔐 Tailscale (recomendado)
  • ☁️ Cloudflare Tunnel
  • ⚡ Ngrok

🧠 Arquitectura del sistema

[ Navegador ]
      ↓
[ Open WebUI :8089 ]
      ↓
[ Ollama :11434 ]
      ↓
[ LLaMA 3 🤖 ]

🚀 ¿Qué puedes hacer con esto?

  • 📚 Chat IA privado
  • 🎤 Integración con voz
  • 📹 IA con cámaras
  • 💻 Integrarlo en tus apps PHP/Python
  • 🧪 Proyectos experimentales (👀)

💡 Tips PRO

  • 📶 Usa WiFi 5GHz para mejor rendimiento
  • ⚡ Usa GPU si tu equipo lo soporta
  • 🐳 Mantén Docker actualizado
  • 🧠 Puedes instalar más modelos en Ollama

🎯 Conclusión

Con esta configuración tienes:

  • ✅ IA local
  • ✅ Interfaz tipo ChatGPT
  • ✅ Sin depender de la nube
  • ✅ Control total de tus datos

🔥 Esto ya no es solo probar IA…
👉 es tener tu propio sistema inteligente corriendo en casa.


🚀 ¿Quieres más?

👉 Integrar voz (hablar con la IA)
👉 Crear tu propia web en PHP
👉 Acceso remoto seguro

Solo dímelo 😏

Cómo usar Iriun Webcam en Linux con OBS (y mejorar el rendimiento con WiFi 5 GHz)

Entrada fija

Si estás usando tu celular como cámara con Iriun Webcam en Linux, probablemente ya notaste que a veces se congela o se pausa cada pocos segundos. En muchos casos, el problema no es la app ni OBS, sino la red WiFi.

Aquí te explico cómo instalar todo correctamente y cómo usar WiFi 5 GHz para obtener una señal mucho más estable.


🧰 Requisitos

  • Linux (Ubuntu, Linux Mint, Debian, etc.)
  • OBS Studio instalado
  • Un celular
  • Iriun Webcam instalado en el celular y en la PC
  • Un router compatible con WiFi 5 GHz

📥 Instalación básica

1. Instalar OBS Studio

sudo apt update
sudo apt install obs-studio

2. Instalar Iriun Webcam en Linux

Descarga el cliente desde la página oficial, extrae el archivo y ejecuta:

chmod +x iriunwebcam*
./iriunwebcam*

3. Instalar la app en el celular

Busca Iriun Webcam en tu tienda de aplicaciones e instálalo.


🔗 Conectar con OBS

  1. Abre Iriun en la PC
  2. Abre la app en el celular
  3. Abre OBS Studio
  4. Ve a Fuentes → + → Dispositivo de captura de video
  5. Selecciona Iriun Webcam

📡 WiFi 2.4 GHz vs 5 GHz (CLAVE)

❌ WiFi 2.4 GHz

  • Más lento
  • Más interferencia
  • Causa pausas y cortes

✅ WiFi 5 GHz

  • Mayor velocidad
  • Menor latencia
  • Conexión más estable
  • Ideal para video en tiempo real

🚀 Cómo usar WiFi 5 GHz correctamente

1. Verifica tu red

Tu WiFi debería tener dos nombres:

  • MiWiFi (2.4 GHz)
  • MiWiFi_5G (5 GHz)

Conéctate siempre a la red 5G.

2. Usa la misma red en ambos dispositivos

  • PC → WiFi 5 GHz
  • Celular → WiFi 5 GHz

3. Acércate al router

El WiFi 5 GHz es más rápido, pero tiene menor alcance. Lo ideal es estar en la misma habitación.

4. Evita saturar la red

  • No descargues archivos grandes
  • No hagas streaming en otros dispositivos
  • Evita usar hotspot al mismo tiempo

⚙️ Configuración recomendada en OBS

  • Resolución: 1280×720
  • FPS: 30
  • Evita 60 FPS si tu PC no es potente

🔌 Alternativa más estable: USB

Si quieres eliminar completamente los cortes:

  • Conecta el celular por USB
  • Activa “tethering USB”

Ventajas:

  • Sin interferencias
  • Menor latencia
  • Mayor estabilidad

⚠️ Problemas comunes

Se pausa cada 2 segundos

  • Verifica que estás en WiFi 5 GHz
  • Acércate al router
  • Baja la resolución

Mucho retraso

  • Baja FPS
  • Usa conexión USB

⚡ Conclusión

Usar WiFi 5 GHz mejora muchísimo la estabilidad de Iriun Webcam:

  • Menos pausas
  • Video más fluido
  • Mejor calidad

Pero si buscas la mejor estabilidad posible, el USB sigue siendo la mejor opción.

Con esta configuración puedes grabar o hacer streaming en OBS con calidad profesional usando solo tu celular.

Creado con WordPress & Tema de Anders Norén