handle private docker registry

This commit is contained in:
counterweight 2025-10-16 12:08:18 +02:00
parent c3adce644c
commit 5222330ed7
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
4 changed files with 43 additions and 19 deletions

View file

@ -1,4 +1,4 @@
# Emergencia Pablo - Webapp de Mensajes # 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. Una aplicación web simple que permite a los usuarios enviar mensajes de emergencia a través de un servidor ntfy.
@ -37,6 +37,11 @@ npm start
- `NTFY_TOPIC`: Topic/canal de ntfy donde enviar mensajes (opcional, por defecto "emergencia") - `NTFY_TOPIC`: Topic/canal de ntfy donde enviar mensajes (opcional, por defecto "emergencia")
- `PORT`: Puerto donde correr la aplicación (opcional, por defecto 3000) - `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 ## Uso
1. Abre tu navegador en `http://localhost:3000` (o el puerto configurado) 1. Abre tu navegador en `http://localhost:3000` (o el puerto configurado)
@ -75,17 +80,17 @@ Para desplegar en un servidor Linux:
### Ejemplo con systemd (opcional) ### Ejemplo con systemd (opcional)
Crear archivo `/etc/systemd/system/emergenciapablo.service`: Crear archivo `/etc/systemd/system/ntfy-emergency-app.service`:
```ini ```ini
[Unit] [Unit]
Description=Emergencia Pablo Webapp Description=NTFY Emergency App
After=network.target After=network.target
[Service] [Service]
Type=simple Type=simple
User=tu-usuario User=tu-usuario
WorkingDirectory=/ruta/a/emergenciapablo WorkingDirectory=/ruta/a/ntfy-emergency-app
Environment=NTFY_URL=https://tu-servidor-ntfy.com Environment=NTFY_URL=https://tu-servidor-ntfy.com
Environment=NTFY_USER=tu-usuario Environment=NTFY_USER=tu-usuario
Environment=NTFY_PASSWORD=tu-password Environment=NTFY_PASSWORD=tu-password
@ -101,22 +106,35 @@ WantedBy=multi-user.target
Luego: Luego:
```bash ```bash
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable emergenciapablo sudo systemctl enable ntfy-emergency-app
sudo systemctl start emergenciapablo sudo systemctl start ntfy-emergency-app
``` ```
## Publicación de Imagen Docker ## Publicación de Imagen Docker
### Construcción y Publicación Manual ### Construcción y Publicación Manual
#### Opción 1: Sin registro personalizado (Docker Hub)
```bash ```bash
# Construir y publicar # Construir y publicar
npm run docker:build-push npm run docker:build-push
```
# O manualmente #### Opción 2: Con registro personalizado
docker build -t emergenciapablo . ```bash
docker tag emergenciapablo tu-registro/emergenciapablo:latest # Configurar variables de entorno
docker push tu-registro/emergenciapablo:latest 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
``` ```
### Uso con Registro Privado ### Uso con Registro Privado
@ -129,19 +147,19 @@ docker login tu-registro.com
# Ejecutar la imagen # Ejecutar la imagen
docker run -d \ docker run -d \
--name emergenciapablo \ --name ntfy-emergency-app \
-p 3000:3000 \ -p 3000:3000 \
-e NTFY_URL=https://tu-servidor-ntfy.com \ -e NTFY_URL=https://tu-servidor-ntfy.com \
-e NTFY_USER=tu-usuario \ -e NTFY_USER=tu-usuario \
-e NTFY_PASSWORD=tu-password \ -e NTFY_PASSWORD=tu-password \
-e NTFY_TOPIC=emergencia \ -e NTFY_TOPIC=emergencia \
tu-registro.com/emergenciapablo:latest tu-registro.com/ntfy-emergency-app:latest
``` ```
## Estructura del Proyecto ## Estructura del Proyecto
``` ```
emergenciapablo/ ntfy-emergency-app/
├── server.js # Servidor Express principal ├── server.js # Servidor Express principal
├── package.json # Dependencias y scripts ├── package.json # Dependencias y scripts
├── Dockerfile # Configuración de Docker ├── Dockerfile # Configuración de Docker
@ -157,3 +175,4 @@ emergenciapablo/
- Los mensajes se envían al topic configurado en `NTFY_TOPIC` (por defecto "emergencia") - Los mensajes se envían al topic configurado en `NTFY_TOPIC` (por defecto "emergencia")
- El formato del mensaje es: "Nombre: Mensaje" - El formato del mensaje es: "Nombre: Mensaje"
- La aplicación valida que ambos campos estén completos antes de enviar - La aplicación valida que ambos campos estén completos antes de enviar

View file

@ -1,7 +1,7 @@
services: services:
emergenciapablo: ntfy-emergency-app:
build: . build: .
container_name: emergenciapablo container_name: ntfy-emergency-app
ports: ports:
- "3000:3000" - "3000:3000"
environment: environment:

View file

@ -3,3 +3,7 @@ NTFY_URL=https://tu-servidor-ntfy.com
NTFY_USER=tu-usuario NTFY_USER=tu-usuario
NTFY_PASSWORD=tu-password NTFY_PASSWORD=tu-password
NTFY_TOPIC=emergencia NTFY_TOPIC=emergencia
# Variables opcionales para Docker registry
# DOCKER_REGISTRY=tu-registro.com
# DOCKER_TAG=latest

View file

@ -1,14 +1,15 @@
{ {
"name": "emergenciapablo", "name": "ntfy-emergency-app",
"version": "1.0.0", "version": "1.0.0",
"description": "Simple webapp to send messages via ntfy", "description": "Simple webapp to send messages via ntfy",
"main": "server.js", "main": "server.js",
"scripts": { "scripts": {
"start": "node server.js", "start": "node server.js",
"dev": "node server.js", "dev": "node server.js",
"docker:build": "docker build -t emergenciapablo .", "docker:build": "docker build -t ntfy-emergency-app .",
"docker:push": "docker push emergenciapablo", "docker:tag": "docker tag ntfy-emergency-app ${DOCKER_REGISTRY:-}${DOCKER_REGISTRY:+/}ntfy-emergency-app:${DOCKER_TAG:-latest}",
"docker:build-push": "npm run docker:build && npm run docker:push" "docker:push": "docker push ${DOCKER_REGISTRY:-}${DOCKER_REGISTRY:+/}ntfy-emergency-app:${DOCKER_TAG:-latest}",
"docker:build-tag-push": "npm run docker:build && npm run docker:tag && npm run docker:push"
}, },
"dependencies": { "dependencies": {
"express": "^4.18.2", "express": "^4.18.2",