2025-10-16 12:08:18 +02:00
|
|
|
# NTFY Emergency App - Webapp de Mensajes
|
2025-10-16 09:50:36 +02:00
|
|
|
|
|
|
|
|
Una aplicación web simple que permite a los usuarios enviar mensajes de emergencia a través de un servidor ntfy.
|
|
|
|
|
|
|
|
|
|
## Características
|
|
|
|
|
|
|
|
|
|
- Formulario simple con campos "Tu nombre" y "Mensaje"
|
|
|
|
|
- Envío automático a servidor ntfy con autenticación
|
|
|
|
|
- Interfaz minimalista y responsive
|
|
|
|
|
- Confirmación de envío al usuario
|
|
|
|
|
|
|
|
|
|
## Instalación
|
|
|
|
|
|
|
|
|
|
1. Instalar dependencias:
|
|
|
|
|
```bash
|
|
|
|
|
npm install
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Configurar variables de entorno:
|
|
|
|
|
```bash
|
|
|
|
|
export NTFY_URL="https://tu-servidor-ntfy.com"
|
|
|
|
|
export NTFY_USER="tu-usuario"
|
|
|
|
|
export NTFY_PASSWORD="tu-password"
|
|
|
|
|
export PORT=3000 # opcional, por defecto 3000
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Ejecutar la aplicación:
|
|
|
|
|
```bash
|
|
|
|
|
npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Variables de Entorno
|
|
|
|
|
|
|
|
|
|
- `NTFY_URL`: URL de tu servidor ntfy (requerido)
|
|
|
|
|
- `NTFY_USER`: Usuario para autenticación en ntfy (requerido)
|
|
|
|
|
- `NTFY_PASSWORD`: Contraseña para autenticación en ntfy (requerido)
|
2025-10-16 09:55:32 +02:00
|
|
|
- `NTFY_TOPIC`: Topic/canal de ntfy donde enviar mensajes (opcional, por defecto "emergencia")
|
2025-10-16 09:50:36 +02:00
|
|
|
- `PORT`: Puerto donde correr la aplicación (opcional, por defecto 3000)
|
|
|
|
|
|
2025-10-16 12:08:18 +02:00
|
|
|
### Variables para Docker Registry (Opcionales)
|
|
|
|
|
|
|
|
|
|
- `DOCKER_REGISTRY`: Registro personalizado para publicar la imagen (opcional)
|
|
|
|
|
- `DOCKER_TAG`: Tag para la imagen Docker (opcional, por defecto "latest")
|
|
|
|
|
|
2025-10-16 09:50:36 +02:00
|
|
|
## Uso
|
|
|
|
|
|
|
|
|
|
1. Abre tu navegador en `http://localhost:3000` (o el puerto configurado)
|
|
|
|
|
2. Completa el formulario con tu nombre y mensaje
|
|
|
|
|
3. Haz clic en "Enviar Mensaje"
|
|
|
|
|
4. Recibirás confirmación si el mensaje se envió correctamente
|
|
|
|
|
|
|
|
|
|
## Despliegue
|
|
|
|
|
|
2025-10-16 10:02:25 +02:00
|
|
|
### Opción 1: Docker Compose (Recomendado)
|
2025-10-16 09:50:36 +02:00
|
|
|
|
|
|
|
|
1. Crea un archivo `.env` con tus credenciales:
|
|
|
|
|
```bash
|
|
|
|
|
NTFY_URL=https://tu-servidor-ntfy.com
|
|
|
|
|
NTFY_USER=tu-usuario
|
|
|
|
|
NTFY_PASSWORD=tu-password
|
2025-10-16 09:55:32 +02:00
|
|
|
NTFY_TOPIC=emergencia
|
2025-10-16 09:50:36 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Ejecuta con Docker Compose:
|
|
|
|
|
```bash
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
La aplicación estará disponible en `http://localhost:3000`
|
|
|
|
|
|
|
|
|
|
### Opción 2: Instalación directa
|
|
|
|
|
|
|
|
|
|
Para desplegar en un servidor Linux:
|
|
|
|
|
|
|
|
|
|
1. Sube los archivos al servidor
|
|
|
|
|
2. Instala Node.js (versión 14 o superior)
|
|
|
|
|
3. Configura las variables de entorno
|
|
|
|
|
4. Ejecuta `npm install` para instalar dependencias
|
|
|
|
|
5. Ejecuta `npm start` para iniciar la aplicación
|
|
|
|
|
|
|
|
|
|
### Ejemplo con systemd (opcional)
|
|
|
|
|
|
2025-10-16 12:08:18 +02:00
|
|
|
Crear archivo `/etc/systemd/system/ntfy-emergency-app.service`:
|
2025-10-16 09:50:36 +02:00
|
|
|
|
|
|
|
|
```ini
|
|
|
|
|
[Unit]
|
2025-10-16 12:08:18 +02:00
|
|
|
Description=NTFY Emergency App
|
2025-10-16 09:50:36 +02:00
|
|
|
After=network.target
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
Type=simple
|
|
|
|
|
User=tu-usuario
|
2025-10-16 12:08:18 +02:00
|
|
|
WorkingDirectory=/ruta/a/ntfy-emergency-app
|
2025-10-16 09:50:36 +02:00
|
|
|
Environment=NTFY_URL=https://tu-servidor-ntfy.com
|
|
|
|
|
Environment=NTFY_USER=tu-usuario
|
|
|
|
|
Environment=NTFY_PASSWORD=tu-password
|
2025-10-16 09:55:32 +02:00
|
|
|
Environment=NTFY_TOPIC=emergencia
|
2025-10-16 09:50:36 +02:00
|
|
|
Environment=PORT=3000
|
|
|
|
|
ExecStart=/usr/bin/node server.js
|
|
|
|
|
Restart=always
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
WantedBy=multi-user.target
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Luego:
|
|
|
|
|
```bash
|
|
|
|
|
sudo systemctl daemon-reload
|
2025-10-16 12:08:18 +02:00
|
|
|
sudo systemctl enable ntfy-emergency-app
|
|
|
|
|
sudo systemctl start ntfy-emergency-app
|
2025-10-16 09:50:36 +02:00
|
|
|
```
|
|
|
|
|
|
2025-10-16 10:02:25 +02:00
|
|
|
## Publicación de Imagen Docker
|
|
|
|
|
|
|
|
|
|
### Construcción y Publicación Manual
|
|
|
|
|
|
2025-10-16 12:08:18 +02:00
|
|
|
#### Opción 1: Sin registro personalizado (Docker Hub)
|
2025-10-16 10:02:25 +02:00
|
|
|
```bash
|
|
|
|
|
# Construir y publicar
|
|
|
|
|
npm run docker:build-push
|
2025-10-16 12:08:18 +02:00
|
|
|
```
|
2025-10-16 10:02:25 +02:00
|
|
|
|
2025-10-16 12:08:18 +02:00
|
|
|
#### Opción 2: Con registro personalizado
|
|
|
|
|
```bash
|
|
|
|
|
# Configurar variables de entorno
|
|
|
|
|
export DOCKER_REGISTRY=tu-registro.com
|
|
|
|
|
export DOCKER_TAG=v1.0.0
|
|
|
|
|
|
|
|
|
|
# Construir y publicar
|
|
|
|
|
npm run docker:build-push
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Opción 3: Manual
|
|
|
|
|
```bash
|
|
|
|
|
docker build -t ntfy-emergency-app .
|
|
|
|
|
docker tag ntfy-emergency-app tu-registro/ntfy-emergency-app:latest
|
|
|
|
|
docker push tu-registro/ntfy-emergency-app:latest
|
2025-10-16 10:02:25 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Uso con Registro Privado
|
|
|
|
|
|
|
|
|
|
Para usar la imagen desde un registro privado:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Autenticarse con el registro
|
|
|
|
|
docker login tu-registro.com
|
|
|
|
|
|
|
|
|
|
# Ejecutar la imagen
|
|
|
|
|
docker run -d \
|
2025-10-16 12:08:18 +02:00
|
|
|
--name ntfy-emergency-app \
|
2025-10-16 10:02:25 +02:00
|
|
|
-p 3000:3000 \
|
|
|
|
|
-e NTFY_URL=https://tu-servidor-ntfy.com \
|
|
|
|
|
-e NTFY_USER=tu-usuario \
|
|
|
|
|
-e NTFY_PASSWORD=tu-password \
|
|
|
|
|
-e NTFY_TOPIC=emergencia \
|
2025-10-16 12:08:18 +02:00
|
|
|
tu-registro.com/ntfy-emergency-app:latest
|
2025-10-16 10:02:25 +02:00
|
|
|
```
|
|
|
|
|
|
2025-10-16 09:50:36 +02:00
|
|
|
## Estructura del Proyecto
|
|
|
|
|
|
|
|
|
|
```
|
2025-10-16 12:08:18 +02:00
|
|
|
ntfy-emergency-app/
|
2025-10-16 10:02:25 +02:00
|
|
|
├── server.js # Servidor Express principal
|
|
|
|
|
├── package.json # Dependencias y scripts
|
|
|
|
|
├── Dockerfile # Configuración de Docker
|
|
|
|
|
├── docker-compose.yml # Orquestación con Docker Compose
|
2025-10-16 09:50:36 +02:00
|
|
|
├── public/
|
2025-10-16 10:02:25 +02:00
|
|
|
│ ├── index.html # Página principal
|
|
|
|
|
│ └── style.css # Estilos CSS
|
|
|
|
|
└── README.md # Este archivo
|
2025-10-16 09:50:36 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Notas
|
|
|
|
|
|
2025-10-16 09:55:32 +02:00
|
|
|
- Los mensajes se envían al topic configurado en `NTFY_TOPIC` (por defecto "emergencia")
|
2025-10-16 09:50:36 +02:00
|
|
|
- El formato del mensaje es: "Nombre: Mensaje"
|
|
|
|
|
- La aplicación valida que ambos campos estén completos antes de enviar
|
2025-10-16 12:08:18 +02:00
|
|
|
|