Entendiendo RaspiSMS: Una solución de código abierto para transformar una Raspberry Pi en una pasarela SMS
RaspiSMS es una aplicación de código abierto diseñada específicamente para aprovechar la potencia de la Raspberry Pi y permitir el envío y la recepción de mensajes SMS a través de una interfaz web o una API dedicada. Esta solución se integra perfectamente en un entorno Linux, utilizando tecnologías robustas como Symfony para el framework web y MariaDB para la gestión de datos. Como pasarela SMS, RaspiSMS permite a particulares, empresas y entusiastas de la domótica configurar fácilmente un centro SMS independiente sin depender de servicios de pago de operadores externos como Twilio o Free Mobile.
- Entre las principales ventajas de RaspiSMS se encuentra la posibilidad de utilizar la Raspberry Pi no solo como un simple módem GSM, sino también como un centro de automatización capaz de interactuar con sistemas de domótica como Jeedom o Domoticz. Esta capacidad abre interesantes posibilidades, especialmente para enviar alertas SMS personalizadas, gestionar campañas masivas de SMS o activar acciones remotas mediante PiSMS o PlaySMS, dos alternativas similares dentro del mismo ecosistema.
- Las principales características de RasppiSMS incluyen:
- Gestión multiusuario basada en un sistema seguro con clave API.
Creación y gestión de grupos de contactos para listas de correo dinámicas.
Programación de mensajes SMS personalizados o masivos.
- Compatibilidad nativa con módems 3G/4G compatibles con Gammu, lo que permite la integración directa mediante el puerto USB.
- Una interfaz web intuitiva accesible desde cualquier equipo de la red local o de área extensa.
Esta versatilidad convierte a RaspiSMS en una herramienta esencial para administradores de sistemas Linux que desean automatizar el envío de notificaciones sin depender de servicios externos. También resulta útil en entornos profesionales donde es imprescindible un control total de los datos SMS. A diferencia de herramientas como SMSTools3, que suelen requerir una configuración compleja, RaspiSMS prioriza la accesibilidad sin sacrificar la profundidad de su funcionalidad, ideal para usuarios avanzados.
Gracias a su arquitectura modular, RaspiSMS se adapta fácilmente a diferentes versiones de Raspberry Pi, desde el modelo 4 hasta los más recientes como Raspberry Pi 5, e incluso a otras distribuciones de Linux compatibles. Su activa comunidad en GitHub garantiza un desarrollo continuo con actualizaciones periódicas para mejorar la seguridad y la compatibilidad con los nuevos módems GSM. Instalación y configuración de RaspiSMS en Raspberry Pi OS: guía detallada y buenas prácticas Instalar RaspiSMS en una Raspberry Pi requiere una preparación minuciosa, especialmente en la selección del hardware y la instalación de las dependencias de software necesarias. Para garantizar un rendimiento óptimo, se recomienda usar una Raspberry Pi 4 o superior, con Raspberry Pi OS basado en Debian Bookworm, que garantiza la compatibilidad con PHP 8.4 y MariaDB, esenciales para RaspiSMS. Antes de la instalación, asegúrese de que: la Raspberry Pi tenga una tarjeta SD de al menos 32 GB, preferiblemente de 64 GB para un amplio almacenamiento de registros y datos; esté conectado un módem 3G/4G compatible con Gammu con una tarjeta SIM activa, idealmente un plan empresarial para garantizar una transmisión fiable; el usuario que realiza la instalación tenga privilegios de administrador (sudo) y el equipo esté configurado con una dirección IP estática para facilitar el acceso SSH. La instalación comienza actualizando los paquetes del sistema con `apt-get update`, seguida de la instalación de los componentes necesarios como Apache2 para el servidor web, MariaDB para la base de datos, Gammu y gammu-smsd para la gestión del módem, y PHP 8.4 con sus extensiones. Un paso fundamental es la creación de la base de datos dedicada específicamente a RaspiSMS, protegiendo MariaDB mediante `mysql_secure_installation` para establecer una contraseña segura para el usuario root.
La base de datos debe crearse con el juego de caracteres utf8mb4 para garantizar una óptima gestión de los caracteres especiales en los mensajes SMS. El usuario MySQL de RaspiSMS se configura con privilegios específicos para limitar la superficie de ataque, lo que contribuye a la seguridad general del sistema SMS.
- A continuación, se descarga el código fuente de RaspiSMS directamente de su repositorio de GitHub. La configuración requiere la adaptación de varios archivos:
phinx.yml
para la conexión a la base de datos,
env.phppara el entorno de ejecución de la aplicación y la clave secreta, y
env.prod.php
para la configuración de red, el servidor de correo y la gestión de URL. La generación de una clave secreta robusta mediante el comando de Linux asigna una clave criptográfica esencial para la seguridad de la interfaz.
Los paquetes PHP necesarios se instalan mediante Composer y la base de datos se inicializa con las migraciones proporcionadas en el proyecto. La adición de un usuario administrador se realiza mediante la línea de comandos, lo que garantiza una gestión de acceso simplificada a la interfaz. Finalmente, la configuración del servidor Apache se realiza importando un archivo específico para RaspiSMS, habilitando el host virtual y el módulo de reescritura para garantizar una navegación fluida y segura. La estricta gestión de permisos de archivos y carpetas evita cualquier problema de permisos, principalmente asignando la propiedad al usuario raspisms y al grupo www-data. Se crea un servicio systemd personalizado de raspisms para garantizar el inicio y la monitorización automáticos.
- La rotación de registros se implementa mediante logrotate para limitar el tamaño y el historial de los archivos de registro.
- Los servicios se reinician para aplicar todos los cambios y validar la configuración.
- Esta instalación meticulosa garantiza una base estable para utilizar plenamente las funciones de RaspiSMS de forma segura.
Un paso clave para el uso fiable de RaspiSMS es la configuración del módem 3G o 4G que actuará como puerta de enlace SMS. El software Gammu es fundamental para esta integración, gestionando la comunicación con el módem USB mediante el protocolo AT. La detección inicial se realiza mediante el comando `gammu-detect`, que identifica automáticamente el puerto USB del módem, generalmente `/dev/ttyUSB0`. La configuración posterior implica la creación del archivo `~/.gammurc`, donde se especifican el puerto, el tipo de conexión (AT), los parámetros de codificación Unicode y los registros. Es importante usar la configuración regional `en_GB.utf8`, ya que Gammu espera respuestas en inglés, especialmente para gestionar los códigos PIN/PUK de la tarjeta SIM.
La configuración del demonio gammu-smsd, encargado de gestionar la cola de SMS, se realiza en /etc/gammu-smsdrc. Este archivo especifica las rutas a las carpetas de entrada, salida, enviados y errores. También permite definir los códigos PIN y PUK, esenciales para desbloquear la tarjeta SIM al inicio.
- Una vez configurado y en funcionamiento el demonio, RaspiSMS detecta el módem 3G a través de su interfaz, donde el usuario puede crear un “teléfono” especificando el modelo, el archivo de configuración gammu-smsdrc y el código PIN. Esta abstracción simplifica el envío y la recepción de mensajes a través de la interfaz web.
- Para los entusiastas de la domótica, RaspiSMS se puede integrar con plataformas como Domoticz o Jeedom, utilizando SMS para activar acciones automatizadas: por ejemplo, enviar alertas de seguridad por SMS en caso de intrusión detectada o recibir comandos SMS para controlar la red doméstica de forma remota. Puntos clave para una integración exitosa: Confirmación de la correcta detección del módem 3G mediante Gammu.
Configuración precisa de los archivos gammurc y gammu-smsdrc, incluyendo las rutas de las carpetas de mensajes.
<!– wp:code {"content":"curl -X POST http://192.168.1.101/raspisms/api/scheduled/ -H "X-Api-Key: VOTRE_CLE_API" -d "text=Message depuis RaspiSMS" -d "numbers=%2B33123456789"“} –>Pruebas de envío y recepción de SMS con el comando gammu para validar la comunicación del hardware antes de usar RaspiSMS.
Configuración del usuario de RaspiSMS en la interfaz gráfica para la gestión de múltiples teléfonos.
- Integración con plataformas de domótica mediante scripts personalizados para automatizar las interacciones. Gracias a este enfoque técnico perfectamente estructurado, la Raspberry Pi se convierte en un verdadero centro de comunicación SMS, programable y escalable para satisfacer las necesidades de cualquier usuario de Linux.
Tras su instalación y configuración, la funcionalidad principal de RaspiSMS reside en su capacidad para enviar y recibir mensajes SMS, ya sea a través de su interfaz gráfica web o mediante una API de línea de comandos, ofreciendo así una amplia gama de usos para diversos perfiles de usuario.
La interfaz web proporciona una experiencia de usuario simplificada para el envío de nuevos mensajes:
- Acceda al menú “Nuevo SMS” desde la consola.
- Introduzca el texto del mensaje, un número o un contacto guardado con gestión dinámica de listas.
- Seleccione el número del remitente entre varias claves 3G configuradas.
- Envíe inmediatamente o programe los mensajes para su entrega posterior.
- Consulte los mensajes SMS enviados para gestionar el historial y el estado de cada mensaje (enviado, pendiente, error).
- La API REST de RaspiSMS también se adapta a las necesidades de desarrolladores y administradores de sistemas en Linux o Windows. La autenticación se basa en una clave API única por usuario, accesible en su perfil a través de la interfaz. Esta clave garantiza el acceso seguro a los endpoints de la API, permitiendo la automatización completa del envío.
- Ejemplo de uso común en Linux con cURL:
- `curl -X POST http://192.168.1.101/raspisms/api/scheduled/ -H “X-Api-Key: YOUR_API_KEY” -d “text=Mensaje de RaspiSMS” -d “numbers=%2B33123456789″`
En Windows, se dispone de un comando similar de PowerShell mediante `Invoke-WebRequest`, lo que facilita la integración en scripts o herramientas de administración.