
Plataforma ligera de gestión de dispositivos OpenWRT para redes pequeñas. Configuración centralizada, monitoreo y gestión WiFi para 2–20 dispositivos con implementación sencilla y compatibilidad con OpenWISP.
*Advertencia: esta es una versión preliminar, por favor lea las notas de la versión de TODAS las versiones hasta ahora*
# <img src="https://raw.githubusercontent.com/rubenbe/opensoho/HEAD/logo.svg" alt="OpenSOHO logo" width="40" /> OpenSOHO
¡Gracias por considerar apoyar el proyecto!
<a href="https://www.buymeacoffee.com/rubenbe" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/9350/485b634752d0d832ed936de61544bf16e5e54dc05146ccca080333c15097d455.png" alt="Buy Me A Coffee" height="41" width="174"></a>
[Documentación](https://opensoho.github.io/docs)
OpenSOHO está diseñado para gestionar un pequeño número de dispositivos de red basados en OpenWRT. De ahí el nombre SOHO de Small Office Home Office (SOHO) Networks.
* De 2 a 20 dispositivos (no hay un límite estricto)
* Sin multi-tenencia
* Compatible con openwisp-config y openwisp-monitoring.
* Fácil de desplegar
Está inspirado en OpenWISP, pero apunta a redes que son demasiado pequeñas para ser mantenidas con OpenWISP.
Como mencionó OpenWisp:
> Sin embargo, OpenWISP puede no ser la mejor opción para redes muy pequeñas (menos de 20 dispositivos), organizaciones que carecen de experiencia en TI, o empresas que buscan alternativas de código abierto únicamente con fines de ahorro de costos.
<p align="center">
<a href="https://raw.githubusercontent.com/opensoho/assets/074a4c5c353fcbb295e2da84fb3490869c6c4de0/devices.png" target="_blank">
<img src="https://assets.kitploit.com/production/public/readmes/9350/5d363839ee3d28ed044c4de8249f4944be3e18ef8cb2e13d7b1c1a6a487fa1ce.png" width="80%" />
</a>
</p>
Se han probado las siguientes versiones
* OpenWRT 24.10.x DSA (soporte heredado)
* OpenWRT 25.12.x DSA
# Primeros pasos con OpenSOHO
## Descripción general
Configurar OpenSOHO requiere unos pocos pasos simples, cada uno detallado en las secciones a continuación:
* Instalar OpenSOHO en su servidor.
* Instalar los paquetes de OpenWisp en sus dispositivos OpenWRT.
* Configurar OpenWisp en cada uno de sus dispositivos OpenWRT para conectarse a OpenSOHO.
* ¡Comenzar a configurar en OpenSOHO!
## Instalar OpenSOHO
* Descargue la última versión de OpenSOHO (o use un contenedor docker)
[Versiones](https://github.com/rubenbe/opensoho/releases)
[Configuración con Docker, Podman o Kubernetes](https://opensoho.github.io/docs/containers/)
* Iniciar OpenSOHO
Primero, elija un secreto compartido que permita a los dispositivos OpenWRT (usando openwisp-config) registrarse con OpenSOHO.
Elija una cadena aleatoria larga para una seguridad óptima.
Debe coincidir con lo que configure en LuCI en los siguientes pasos.
```sh
OPENSOHO_SHARED_SECRET=randompassphrase ./opensoho serve --http 0.0.0.0:8090
```
Ahora, OpenSOHO muestra una URL en la línea de comandos que te permite crear la cuenta de administrador.
Simplemente abre la URL en tu navegador.
Alternativamente, crea la cuenta de administrador mediante la línea de comandos:
```sh
./opensoho superuser upsert EMAIL PASS
```
## Configuración (adopción) de los dispositivos OpenWRT
### Instalar los paquetes de OpenWISP
```sh
opkg install openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 24.10
apk add openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 25.12+
```
Si quieres usar el direccionamiento de clientes 802.11v, es necesario el paquete completo wpad-mbedtls.
En OpenWRT 24.10
```sh
opkg remove wpad-basic-mbedtls && \
opkg install wpad-mbedtls && \
service wpad restart
```
En OpenWRT 25.12+
```sh
apk del wpad-basic-mbedtls && \
apk add wpad-mbedtls && \
service wpad restart
```
Después de instalar wpad-mbedtls, intente primero `service restart wpad`; de lo contrario, es posible que se requiera un reinicio para cambiar al nuevo binario de wpad. Si no, puede obtener un error como `daemon.notice netifd: radio1 (28210): WARNING (wireless_add_process): executable path /usr/sbin/wpad does not match process 1842 path (/usr/sbin/wpad (deleted))`.
(Tenga en cuenta que el direccionamiento de clientes 802.11v aún está en desarrollo)
### Configurar OpenWISP en LuCI:
* Establezca únicamente la `Server URL` y el `Shared secret`.
* *NO* añada una barra al final de la `Server URL`. Un ejemplo de URL: `http://192.168.1.1:8090`
* El secreto compartido es el valor que eligió previamente (`OPENSOHO_SHARED_SECRET`).
* Opcionalmente, reduzca el `Update Interval` a 30 segundos para actualizaciones más rápidas. (OpenSOHO hace esto por usted si no lo hace)
* OpenSOHO también habilita la monitorización y reduce el intervalo de monitorización a 15 segundos para actualizaciones más rápidas del estado de la red.
Se recomienda encarecidamente habilitar la monitorización, ya que OpenSOHO deduce gran parte de la configuración actual de OpenWRT y la rellena para facilitar la configuración.
## Configurar OpenSOHO
* Espere a que el/los dispositivo(s) OpenWrt se autorregistren usando el secreto compartido.
* Establezca el indicador `Enabled` del dispositivo en true.
* Establezca `numradios` en el valor correcto. Por ejemplo, para un dispositivo de 2.4 + 5GHz, este valor sería 2.
* Configure un punto de acceso Wifi (SSID+KEY). Este procedimiento permite a OpenSOHO detectar correctamente la configuración de radio al registrar el dispositivo.
* Adjunte el punto de acceso Wifi configurado a un dispositivo para que se configure.
* Actualmente cada red se configurará automáticamente en todas las radios (configuradas usando `numradios`).
* Opcionalmente, también se pueden encender o apagar los leds (solo configuración estática por ahora).
* Ahora se admite la configuración de frecuencias de radio. OpenSOHO lee la configuración actual de radio una vez y la pone a disposición en la configuración de radios. Puede tardar uno o dos minutos antes de que aparezca la configuración de radio (los pasos de configuración y monitorización necesitan algo de tiempo para completarse).
## Panel de control
OpenSOHO incluye un panel de control básico. Es accesible mediante el botón en la barra lateral más a la izquierda, justo debajo del logotipo de OpenSOHO.
<p align="center">
<a href="https://raw.githubusercontent.com/opensoho/assets/636c6966e5bb33f6ef1fc0a7b0188307ad6865b6/dashboard.png" target="_blank">
<img src="https://assets.kitploit.com/production/public/readmes/9350/3b8f95d6bd1a3860d0aac83aa3e54eccb115aef24273ab9ba6d5d9a7591304e1.png" width="70%" />
</a>
</p>
Tenga en cuenta que esto no está pensado como un reemplazo de herramientas de gráficos más avanzadas; es y se mantendrá básico a propósito.
## Configurar
Ahora se puede acceder a OpenSoho mediante http://ipaddress:8090/_/
Hay varias colecciones de configuración:
### Clientes
Estos son los clientes conectados a Wifi. Esta tabla es de solo lectura, excepto por el alias.
Se puede usar para dar a los dispositivos un nombre legible por humanos. Esto solo funciona correctamente cuando el cliente no aleatoriza su dirección mac.
#### Clientes conectados
Contiene la lista de clientes que están conectados actualmente a su wifi. Para mostrar la dirección IP del dispositivo, OpenSOHO necesita acceso a sus concesiones DHCP. Para ello, debe tener el demonio de monitorización de openwisp ejecutándose en el dispositivo que contiene el servidor DHCP. Los dispositivos con IP estática no obtendrán una IP. Esta es una limitación conocida a partir de la 0.12.0.
### Dispositivos
Estos son los dispositivos conectados.
* Use habilitar/deshabilitar para desactivar las actualizaciones de configuración. Esto es útil para evitar actualizar todos los dispositivos a la vez. La monitorización permanece activa.
* El estado de salud es un campo de solo lectura. `healthy` significa que el dispositivo se ha comunicado en el último minuto. Si no lo ha hecho, el estado de salud pasa a ser `unhealthy` y puede haber algo mal con el dispositivo o su conexión.
* Leds permite elegir configuraciones de led
* Numradios permite establecer el número de radios en el dispositivo. OpenWisp no lo envía inicialmente, por lo que el usuario debe establecerlo.
* Wifis permite seleccionar SSIDs para aplicar en este dispositivo.
### Reservas DHCP
Cree una reserva con un nombre de host, dirección MAC, dirección IPv4 y uno o
más servidores DHCP. OpenSOHO añade la misma sección nombrada `config host` a
`/etc/config/dhcp` en cada servidor seleccionado. Borre la selección del servidor DHCP para
deshabilitar la reserva sin eliminarla. Los nombres, las direcciones MAC y las direcciones IP
son únicos en toda la lista de reservas.
### Leds
* Configuración básica de LED (más una POC en este momento)
### Radios
* Permite establecer la frecuencia de cada radio.
* La banda no debe modificarse, ya que esto permite a OpenSOHO verificar la configuración de frecuencia. Esto es necesario debido a limitaciones dentro de PocketBase.
### Wifi
* Permite configurar varios SSID. La selección de modos de cifrado está actualmente limitada. WEP o Open no son compatibles por diseño.
## Monitoreo
### Monitoreo de dispositivos
Verifique si el estado del dispositivo es `healthy`.
### Clientes conectados
Esta vista muestra todos los clientes wifi que siguen conectados dentro de los últimos 30 segundos.
### Integración con Home Assistant
El monitoreo de OpenSOHO se puede integrar con Home Assistant. [(Más información)](https://opensoho.github.io/docs/home-assistant/)
Esta API REST está diseñada para usarse con Home Assistant, pero también se puede integrar con otras herramientas.
## Solución de problemas
### Volver a registrar un dispositivo
Cuando se cambia la `Server URL` de OpenWISP en LuCI, parece que no se registra correctamente con el nuevo controlador.
Para solucionarlo:
```sh
uci delete openwisp.http.uuid
uci delete openwisp.http.key
/etc/init.d/openwisp-config restart
```
### El primer SSID no se habilita
Parece haber un problema en OpenWRT por el cual el primer SSID configurado en un dispositivo Wifi no se habilita automáticamente.
Solución alternativa: haga clic en el botón de habilitar en LuCI.
# Desarrolladores
* Instalar las dependencias
```sh
go mod tidy
```
* Iniciar OpenSOHO
El secreto compartido lo utiliza openwisp-config para registrarse. Elija una cadena aleatoria larga para una seguridad óptima.
Ejecución de las pruebas unitarias:
```sh
go test -cover -v -coverprofile=coverage.out
go tool cover -html=coverage.out
```
## Alcance
### Características
Algunas características de OpenWISP se consideran (actualmente) fuera del alcance de OpenSOHO
* Actualizaciones de firmware: OpenWRT no necesita actualizaciones frecuentes; utilice la función Attended sysupgrade en cada dispositivo manualmente.
* Multi-tenencia
* Plantillas: OpenWISP tiene un mecanismo de plantillas potente y versátil, que se sustituye por un subconjunto de características más opinado para proporcionar una experiencia de configuración más sencilla.
### Desarrollo
El objetivo es aprovechar al máximo pocketbase. Se pueden realizar pequeñas modificaciones, ya que el back-end de pocketbase carece actualmente de un sistema de plugins. Pero no es el objetivo crear un fork de pocketbase, de modo que la fusión de los cambios upstream siga siendo sencilla.
### Publicación
```sh
GITHUB_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa goreleaser release
```