Herramientas Informaticas

Autor: juliocesar20200413 Página 1 de 143

Desarrollador web apasionado y gusto por la buena musica

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.

🚀 Apache NetBeans 29: ¿Qué mejoras trae en Git y vale la pena actualizar? 🤔

Entrada fija

Si eres desarrollador 👨‍💻 y trabajas todos los días con Git, seguramente te interesa saber qué cambió en Apache NetBeans 29.

Aunque a simple vista no parece una actualización “wow” ✨, sí trae mejoras importantes que hacen que trabajar con repositorios sea más rápido, estable y menos frustrante 😌.

Aquí te lo explico fácil y directo 👇

🔧 1. Mejor compatibilidad con Git moderno

Git ha cambiado bastante con los años.

Antes era común ver repositorios con la rama principal llamada:

master

Ahora la mayoría usa:

main

NetBeans 29 mejora la compatibilidad con estas configuraciones modernas ✅

¿Qué mejora?

  • ✔ Detecta mejor las ramas nuevas
  • ✔ Menos errores con repositorios recientes
  • ✔ Mejor soporte para nuevas configuraciones

👉 Si clonas proyectos modernos, todo funciona más fluido.


🔐 2. Mejor autenticación con GitHub (HTTPS y SSH)

GitHub ya no permite usar usuario y contraseña para hacer push o pull por HTTPS ❌

Ahora se usa:

  • 🔹 Token personal (PAT)
  • 🔹 Llave SSH

NetBeans 29 mejora ambos métodos 👇

📌 HTTPS con Token

Más estabilidad al hacer:

  • ✅ Push
  • ✅ Pull
  • ✅ Clone
  • ✅ Fetch

Menos errores de credenciales 🙌

🔑 SSH más confiable

Mejor soporte para llaves como:

id_rsa
id_ed25519

👉 Si ya configuraste tu carpeta .ssh, todo debería funcionar mejor.


⚡ 3. Más rápido en proyectos grandes

Si trabajas con proyectos pesados en:

  • 🐘 PHP
  • ☕ Java
  • 🟨 JavaScript

Seguro has notado lentitud al revisar cambios.

NetBeans 29 optimiza:

  • ✅ Status
  • ✅ Diff
  • ✅ Commit
  • ✅ Historial

👉 Menos tiempo esperando ⏳


🔍 4. Mejor comparación de archivos (Diff)

La herramienta para comparar archivos ahora es más confiable.

Te ayuda a ver mejor:

  • 🟢 líneas agregadas
  • 🔴 líneas eliminadas
  • 🟡 líneas modificadas

Y también mejora la resolución de conflictos 🔥

Ideal si trabajas en equipo 👥


🌐 5. Mejor soporte para otras plataformas Git

No todos usan GitHub.

Ahora NetBeans 29 trabaja mejor con:

  • 🦊 GitLab
  • 🏔 Codeberg
  • 🏢 servidores privados

👉 Más compatibilidad con repos remotos.


❌ Lo que NO cambió

Para no vender humo 😅

NetBeans 29 todavía NO tiene:

  • ❌ Login directo con GitHub tipo VS Code
  • ❌ Panel para Pull Requests
  • ❌ Integración con Issues
  • ❌ Marketplace de extensiones como VS Code

Sigue siendo una experiencia más clásica.


🤔 Entonces… ¿vale la pena actualizar?

Si usas Git diario:

✅ Sí vale la pena.

Porque aunque no se vea “bonito”, sí mejora lo importante:

  • 🚀 Más rápido
  • 🔐 Más estable
  • ⚡ Menos errores
  • 🌐 Mejor compatibilidad

Si vienes de NetBeans 26 o menor, sí notarás diferencia.


🧠 Conclusión

Apache NetBeans 29 no reinventa Git…

Pero sí hace que trabajar con repositorios sea:

  • ✔ más sólido
  • ✔ más confiable
  • ✔ más rápido

Y muchas veces eso vale más que una interfaz bonita 😎

Cómo usar Composer con symlinks para desarrollo local en CodeIgniter 4

Entrada fija

Cuando trabajas con múltiples paquetes en PHP (como módulos propios), llega un punto donde necesitas debuggear directamente el código del paquete y no una copia dentro de vendor.

Si alguna vez terminaste debuggeando en vendor/ en lugar de tu proyecto real… esto es para ti.


🔥 El problema

Por defecto, Composer:

  • Descarga paquetes desde GitHub
  • Los copia en vendor/
  • Xdebug trabaja sobre esa copia

Resultado:

  • Código duplicado
  • Cambios no se reflejan
  • Debug incómodo

🧠 La solución: usar type: path

{
  "repositories": [
    {
      "type": "path",
      "url": "../boilerplateproducts",
      "options": {
        "symlink": true
      }
    }
  ]
}

⚙️ ¿Qué hace esto?

  • Usa tu carpeta local
  • No descarga desde GitHub
  • Crea un symlink en vendor

🔍 Verificar que funciona

composer update

Debes ver:

Installing julio101290/boilerplateproducts: Symlinking from ../boilerplateproducts

Y luego:

ls -l vendor/julio101290/boilerplateproducts

Resultado esperado:

boilerplateproducts -> ../../../boilerplateproducts

🚀 Beneficios

  • Debug directo en tu código
  • Cambios en tiempo real
  • Sin duplicación
  • Flujo más rápido

⚠️ Error común

No mezcles path y vcs:

{
  "type": "path",
  "url": "../boilerplateproducts"
},
{
  "type": "vcs",
  "url": "https://github.com/usuario/boilerplateproducts"
}

Composer puede ignorar el local y usar GitHub.


✅ Desarrollo correcto

rm -rf vendor composer.lock
composer update

🟢 Desarrollo vs Producción

Desarrollo

  • path
  • symlink
  • debug directo

Producción

  • vcs
  • descarga desde GitHub
  • entorno limpio

⚡ Scripts útiles

dev.sh

#!/bin/bash
rm -rf vendor composer.lock
COMPOSER=composer.local.json composer update

prod.sh

#!/bin/bash
rm -rf vendor composer.lock
composer update

🧠 Tip PRO

{
  "repositories": [
    {
      "type": "path",
      "url": "../boilerplateproducts",
      "options": { "symlink": true }
    }
  ],
  "config": {
    "preferred-install": "source"
  }
}

Ejecutar:

COMPOSER=composer.local.json composer update

💡 IDE

Puedes integrar esto con NetBeans usando scripts o herramientas externas.


✅ Conclusión

  • No debuggees código en vendor
  • Usa symlink
  • Automatiza tu flujo

Resultado: desarrollo más rápido y limpio 🚀

🚀 Solución definitiva al error “ONLYOFFICE Document Server is unavailable” en Nextcloud (Snap + Docker)

Entrada fija

¿Tu integración de ONLYOFFICE en Nextcloud se desconecta sola y tienes que estar guardando la configuración a cada rato? 😤
Tranquilo, no eres el único. Después de muchas pruebas, encontré un script automático que simula hacer clic en “Guardar” y mantiene la conexión viva. Y lo mejor: se ejecuta solo a la medianoche para no molestar a los usuarios. 🌙

🔍 ¿Qué causa el error?

Si usas Nextcloud instalado como Snap y el ONLYOFFICE Document Server en Docker (con dominio DDNS y puerto personalizado), el problema suele ser que el servidor de documentos no puede descargar los archivos desde la URL pública. Al guardar manualmente la configuración, todo vuelve a funcionar… hasta que falla otra vez.

✅ La solución: un script + cron nocturno

Este script hace exactamente lo mismo que tú harías en la interfaz web: establece la URL del Document Server, la URL interna (StorageUrl), desactiva la verificación SSL y verifica la conexión. Lo programamos con cron para que se ejecute cada noche a las 12:00 AM, cuando nadie está usando el sistema.

📝 Paso 1: Crear el script

Abre una terminal en tu servidor Ubuntu y crea el archivo:

sudo nano /usr/local/bin/onlyoffice_refresh.sh

Copia y pega este contenido (ajusta las URLs a las tuyas):

#!/bin/bash

# Script para guardar la configuración de ONLYOFFICE exactamente como en la interfaz web
# Esto simula hacer clic en "Save"

NEXTCLOUD_OCC="/snap/bin/nextcloud.occ"

# Valores según tu configuración (¡cámbialos si es necesario!)
DOCUMENT_SERVER_URL="https://tudominio.dyndns.org:4445/"
STORAGE_URL="https://tudominio.dyndns.org:444/"   # O usa la IP interna si funciona mejor
VERIFY_PEER_OFF="true"

# Establecer DocumentServerUrl
$NEXTCLOUD_OCC config:app:set onlyoffice DocumentServerUrl --value="$DOCUMENT_SERVER_URL"

# Establecer StorageUrl (dirección para peticiones internas desde ONLYOFFICE Docs)
$NEXTCLOUD_OCC config:app:set onlyoffice StorageUrl --value="$STORAGE_URL"

# Desactivar verificación de certificados
$NEXTCLOUD_OCC config:app:set onlyoffice verify_peer_off --value="$VERIFY_PEER_OFF"

# Limpiar InternalServerUrl (lo dejamos vacío)
$NEXTCLOUD_OCC config:app:delete onlyoffice InternalServerUrl >/dev/null 2>&1

# Verificar conexión
echo "Configuración aplicada. Verificando conexión..."
$NEXTCLOUD_OCC onlyoffice:documentserver --check

echo "Listo. Configuración guardada."

⚠️ Importante: Reemplaza tudominio.dyndns.org y los puertos por los tuyos. Si tu Nextcloud usa HTTP, cambia https por http. Si no usas puerto 444, ajústalo.

🔧 Paso 2: Dar permisos de ejecución

sudo chmod +x /usr/local/bin/onlyoffice_refresh.sh

🧪 Paso 3: Probar manualmente

sudo /usr/local/bin/onlyoffice_refresh.sh

Deberías ver un mensaje como Document Server is reachable. Si falla, revisa las URLs.

⏲️ Paso 4: Programar la tarea nocturna (cron)

sudo crontab -e

Agrega esta línea para que se ejecute todos los días a las 12:00 AM:

0 0 * * * /usr/local/bin/onlyoffice_refresh.sh >> /var/log/onlyoffice_refresh.log 2>&1

Con esto, cada medianoche el script se ejecutará y dejará la conexión lista para el día siguiente. Además, guarda un log en /var/log/onlyoffice_refresh.log por si quieres revisar que todo vaya bien.

🎯 ¿Por qué funciona?

El script fuerza la reescritura de los parámetros clave (DocumentServerUrl, StorageUrl, verify_peer_off) exactamente como lo harías desde el panel de administración de Nextcloud. Al ejecutarse una vez al día, evita que la conexión se caiga durante la jornada laboral. Es una solución sencilla, automática y sin impacto en el rendimiento.

🧠 Consejos adicionales

  • Si la conexión se sigue cayendo varias veces al día, puedes aumentar la frecuencia del cron a cada hora (0 * * * *) o cada 30 minutos (*/30 * * * *). El script es muy liviano.
  • Para una solución definitiva (sin cron), configura correctamente la variable StorageUrl apuntando a la IP interna de tu servidor (ej. http://192.168.0.1). Pero este script es un gran parche mientras encuentras la IP perfecta.
  • Mantén actualizados Nextcloud Snap, el conector ONLYOFFICE y el contenedor Docker del Document Server.

📢 ¿Te funcionó?
Si este tutorial te ayudó, comparte y comenta. Entre todos podemos hacer que Nextcloud + ONLYOFFICE funcione de maravilla. 💪


Etiquetas SEO sugeridas: Nextcloud ONLYOFFICE error, Document Server unavailable, Snap Nextcloud, Docker ONLYOFFICE, cron job, solución Nextcloud

Meta descripción: ¿El ONLYOFFICE de Nextcloud se desconecta solo? Aprende a crear un script automático que guarda la configuración cada noche y olvídate del error. Paso a paso para Snap y Docker.

🔧 Arquitectura híbrida con Composer + Git: desarrollo profesional de módulos en CodeIgniter 4

Entrada fija

En el desarrollo moderno de aplicaciones PHP con CodeIgniter 4, uno de los mayores retos es mantener un flujo de trabajo eficiente entre desarrollo local, control de versiones y gestión de dependencias.

Este artículo explica una arquitectura híbrida usando Composer + Git + symlinks que permite trabajar módulos de forma profesional sin depender del directorio vendor.


🧠 El problema clásico

Cuando trabajamos con módulos reutilizables (inventarios, CFDI, pagos, etc.), normalmente terminamos instalando todo en vendor/, lo que genera problemas:

  • No se puede editar código fácilmente
  • Debug complicado
  • Cambios se pierden con composer update
  • Duplicación de código
  • Dificultad para mantener múltiples proyectos

💡 La solución: arquitectura híbrida

La solución moderna combina tres herramientas:

  • Composer como gestor de dependencias
  • Git como control de versiones
  • Symlinks para desarrollo en vivo

Estructura típica:

~/fuentes/
   ci4-project/
   boilerplateInventory/
   boilerplateProducts/

⚙️ Configuración en Composer

En el composer.json del proyecto principal:

"repositories": [
  {
    "type": "path",
    "url": "../boilerplateInventory",
    "options": {
      "symlink": true
    }
  },
  {
    "type": "vcs",
    "url": "https://github.com/julio101290/boilerplateInventory"
  }
]

📁 Path repository (desarrollo local)

Este tipo de repositorio indica a Composer que use una carpeta local en lugar de descargar el paquete.

Beneficios:

  • Cambios en tiempo real
  • Debug directo
  • No depende de vendor

🌐 VCS repository (GitHub)

Sirve como respaldo cuando el path no existe o en servidores de producción.


🔥 El problema de versiones

Muchos módulos requieren:

^1.0.0

Pero en desarrollo usamos:

dev-main

Esto genera conflictos.


🛠️ Solución: alias de versión

La solución correcta es:

"julio101290/boilerplateinventory": "dev-main as 1.2.6"

Esto le dice a Composer que trate el código local como versión estable.


⚡ Resultado del sistema

  • ✔ Desarrollo en vivo
  • ✔ Debug funcional
  • ✔ Compatibilidad con dependencias
  • ✔ Sin tocar vendor
  • ✔ Respaldo en GitHub

🧪 Flujo de trabajo real

cd ~/fuentes/boilerplateInventory
git add .
git commit -m "cambios"
git push

Los cambios se reflejan automáticamente en el proyecto principal.


⚠️ Buenas prácticas

  • Usar nombres consistentes en minúsculas
  • No trabajar dentro de vendor
  • Versionar módulos con tags
git tag v1.2.6
git push origin v1.2.6

🚀 Conclusión

Esta arquitectura permite construir sistemas modulares profesionales con:

  • Desarrollo rápido
  • Debug en vivo
  • Control de versiones limpio
  • Escalabilidad real

Es una forma moderna de trabajar con Composer sin depender de vendor como entorno de desarrollo.

🔥 Cómo configurar ONLYOFFICE en Docker con SSL y Nextcloud Snap (guía práctica sin errores) 🔥

Entrada fija

Después de varios intentos y errores típicos (puertos, certificados, Docker, etc.), finalmente logré dejar funcionando ONLYOFFICE Document Server en Docker con acceso HTTPS y listo para integrarse con Nextcloud instalado vía Snap. Aquí te dejo el proceso completo con datos genéricos 👇


🚧 Problemas comunes

  • Error de conexión (connection refused o connection reset)
  • Certificados SSL no detectados
  • Confusión entre Apache, Nginx y Docker
  • Intentar usar HTTPS dentro del contenedor (mala idea 😅)

🧠 Lo importante que debes entender

  • ONLYOFFICE usa Nginx interno, no Apache
  • Docker debe correr en HTTP interno
  • El SSL se maneja mejor fuera del contenedor
  • Nextcloud Snap ya trae su propio Apache (aislado)

👉 La solución correcta: usar Apache HTTP Server del sistema como proxy inverso


⚙️ Configuración final

🐳 1. Ejecutar ONLYOFFICE en HTTP

docker run -d -p 8080:80 onlyoffice/documentserver

🔐 2. Generar certificado SSL con Certbot

sudo snap stop nextcloud
sudo certbot certonly --standalone -d tudominio.com
sudo snap start nextcloud

👉 Los certificados quedarán en algo como:

/etc/letsencrypt/live/tudominio.com-0001/

🌐 3. Configurar Apache como proxy SSL

Archivo:

/etc/apache2/sites-available/onlyoffice.conf

Contenido:

<VirtualHost *:4443>
    ServerName tudominio.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/tudominio.com-0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/tudominio.com-0001/privkey.pem

    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

🔌 4. Habilitar el puerto en Apache

Editar:

/etc/apache2/ports.conf

Agregar:

Listen 4443

⚡ 5. Activar módulos necesarios

sudo a2enmod ssl proxy proxy_http headers

🚀 6. Activar sitio y reiniciar

sudo a2ensite onlyoffice.conf
sudo apachectl configtest
sudo systemctl restart apache2

🔥 7. Abrir firewall

sudo ufw allow 4443

✅ Resultado

Acceso funcionando en:

👉 https://tudominio.com:4443

✔ SSL válido
✔ Proxy funcionando
✔ Docker respondiendo correctamente
✔ Listo para integrarse con Nextcloud


🧪 Pruebas clave

curl http://localhost:8080/healthcheck   # → true
curl -k https://localhost:4443           # → 302 (correcto)

🧠 Conclusión

  • ❌ No uses SSL dentro de Docker
  • ✅ Usa proxy inverso en el host
  • ✅ Mantén servicios separados
  • ✅ Evita conflictos con Snap

🚀 Siguiente paso

Integrar ONLYOFFICE con Nextcloud usando JWT correctamente 🔐


Si estás montando tu propio entorno, esta arquitectura te va a ahorrar horas de debugging 💻🔥

Apóyame

Si esta guía te fue útil y quieres apoyar más contenido como este:

👉 https://www.patreon.com/u74078772?

Cómo instalar OnlyOffice en Nextcloud (instalado con Snap) – Guía completa

Entrada fija

Si ya tienes Nextcloud instalado con Snap, el siguiente paso lógico es convertirlo en una suite completa tipo Google Workspace. Para eso, puedes integrar OnlyOffice, una poderosa herramienta que permite editar documentos Word, Excel y PowerPoint directamente desde tu nube.


¿Qué es OnlyOffice?

OnlyOffice es una suite ofimática online que se integra perfectamente con Nextcloud, permitiendo editar documentos en tiempo real, colaborar con otros usuarios y mantener compatibilidad con formatos de Microsoft Office.

  • 📝 Editor de documentos (Word)
  • 📊 Hojas de cálculo (Excel)
  • 📽️ Presentaciones (PowerPoint)
  • 👥 Edición colaborativa en tiempo real

Requisitos

  • Nextcloud instalado vía Snap
  • Servidor Ubuntu (recomendado 2GB RAM mínimo)
  • Acceso SSH con sudo

Instalar OnlyOffice Document Server con Docker

1. Instalar Docker


sudo apt update
sudo apt install docker.io -y
sudo systemctl enable --now docker
  

2. Ejecutar OnlyOffice


sudo docker run -i -t -d -p 8080:80 \
--restart=always \
onlyoffice/documentserver
  

Esto levantará OnlyOffice en:

http://TU_IP:8080

Instalar la aplicación en Nextcloud

  1. Entra a tu panel de Nextcloud
  2. Ve a Apps (Aplicaciones)
  3. Busca: ONLYOFFICE
  4. Instala ONLYOFFICE Docs

Configurar conexión con OnlyOffice

Ve a:

Configuración → Administración → ONLYOFFICE

En “Document Editing Service”, coloca:

http://TU_IP:8080

Configurar seguridad con JWT (recomendado)

Para mayor seguridad, puedes activar autenticación JWT.


sudo docker stop $(sudo docker ps -q)

sudo docker run -i -t -d -p 8080:80 \
-e JWT_ENABLED=true \
-e JWT_SECRET=mi_clave_super_segura \
--restart=always \
onlyoffice/documentserver
  

Luego en Nextcloud:

  • Activa JWT
  • Introduce la misma clave

Solución de problemas (Nextcloud Snap)

Si Nextcloud no se conecta correctamente:


sudo snap set nextcloud ports.http=80
sudo snap set nextcloud ports.https=443
sudo ufw allow 8080
  

Recomendaciones

  • 🔒 Usa HTTPS (Let’s Encrypt)
  • ⚡ Usa mínimo 2GB de RAM
  • 🌐 Configura dominio si lo usarás fuera de red local
  • 📦 Usa Docker para mayor estabilidad

Conclusión

Integrar OnlyOffice con Nextcloud transforma tu servidor en una plataforma completa de productividad, similar a Google Drive o Microsoft 365, pero con control total sobre tus datos.


Apóyame

Si esta guía te fue útil y quieres apoyar más contenido como este:

👉 https://www.patreon.com/u74078772?

Página 1 de 143

Creado con WordPress & Tema de Anders Norén