No description
| public | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| env.example | ||
| package.json | ||
| README.md | ||
| server.js | ||
NTFY Emergency App - Webapp de Mensajes
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
- Instalar dependencias:
npm install
- Configurar variables de entorno:
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
- Ejecutar la aplicación:
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)NTFY_TOPIC: Topic/canal de ntfy donde enviar mensajes (opcional, por defecto "emergencia")PORT: Puerto donde correr la aplicación (opcional, por defecto 3000)
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")
Uso
- Abre tu navegador en
http://localhost:3000(o el puerto configurado) - Completa el formulario con tu nombre y mensaje
- Haz clic en "Enviar Mensaje"
- Recibirás confirmación si el mensaje se envió correctamente
Despliegue
Opción 1: Docker Compose (Recomendado)
- Crea un archivo
.envcon tus credenciales:
NTFY_URL=https://tu-servidor-ntfy.com
NTFY_USER=tu-usuario
NTFY_PASSWORD=tu-password
NTFY_TOPIC=emergencia
- Ejecuta con Docker Compose:
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:
- Sube los archivos al servidor
- Instala Node.js (versión 14 o superior)
- Configura las variables de entorno
- Ejecuta
npm installpara instalar dependencias - Ejecuta
npm startpara iniciar la aplicación
Ejemplo con systemd (opcional)
Crear archivo /etc/systemd/system/ntfy-emergency-app.service:
[Unit]
Description=NTFY Emergency App
After=network.target
[Service]
Type=simple
User=tu-usuario
WorkingDirectory=/ruta/a/ntfy-emergency-app
Environment=NTFY_URL=https://tu-servidor-ntfy.com
Environment=NTFY_USER=tu-usuario
Environment=NTFY_PASSWORD=tu-password
Environment=NTFY_TOPIC=emergencia
Environment=PORT=3000
ExecStart=/usr/bin/node server.js
Restart=always
[Install]
WantedBy=multi-user.target
Luego:
sudo systemctl daemon-reload
sudo systemctl enable ntfy-emergency-app
sudo systemctl start ntfy-emergency-app
Publicación de Imagen Docker
Construcción y Publicación Manual
Opción 1: Sin registro personalizado (Docker Hub)
# Construir y publicar
npm run docker:build-push
Opción 2: Con registro personalizado
# 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
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
Uso con Registro Privado
Para usar la imagen desde un registro privado:
# Autenticarse con el registro
docker login tu-registro.com
# Ejecutar la imagen
docker run -d \
--name ntfy-emergency-app \
-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 \
tu-registro.com/ntfy-emergency-app:latest
Estructura del Proyecto
ntfy-emergency-app/
├── server.js # Servidor Express principal
├── package.json # Dependencias y scripts
├── Dockerfile # Configuración de Docker
├── docker-compose.yml # Orquestación con Docker Compose
├── public/
│ ├── index.html # Página principal
│ └── style.css # Estilos CSS
└── README.md # Este archivo
Notas
- Los mensajes se envían al topic configurado en
NTFY_TOPIC(por defecto "emergencia") - El formato del mensaje es: "Nombre: Mensaje"
- La aplicación valida que ambos campos estén completos antes de enviar