No description
Find a file
2025-10-17 19:35:19 +02:00
public all working 2025-10-17 19:35:19 +02:00
scripts all working 2025-10-17 19:35:19 +02:00
.gitignore all working 2025-10-17 19:35:19 +02:00
docker-compose.yml handle private docker registry 2025-10-16 12:08:18 +02:00
Dockerfile app starts 2025-10-16 09:50:36 +02:00
env.example all working 2025-10-17 19:35:19 +02:00
package-lock.json all working 2025-10-17 19:35:19 +02:00
package.json all working 2025-10-17 19:35:19 +02:00
README.md all working 2025-10-17 19:35:19 +02:00
server.js all working 2025-10-17 19:35:19 +02:00

ntfy emergency app - Message Webapp

A simple web application that allows users to send emergency messages through an ntfy server.

Installation

  1. Install dependencies:
npm install
  1. Configure environment variables:
export NTFY_URL="https://your-ntfy-server.com"
export NTFY_USER="your-username"
export NTFY_PASSWORD="your-password"
export PORT=3000  # optional, defaults to 3000
  1. Run the application:
npm start

Environment Variables

  • NTFY_URL: URL of your ntfy server (required)
  • NTFY_USER: Username for ntfy authentication (required)
  • NTFY_PASSWORD: Password for ntfy authentication (required)
  • NTFY_TOPIC: ntfy topic/channel to send messages to (optional, defaults to "emergencia")
  • PORT: Port to run the application on (optional, defaults to 3000)

Docker Registry Variables (Optional)

  • DOCKER_REGISTRY: Custom registry to publish the image to (optional)
  • DOCKER_USERNAME: Username/organization in the registry (optional)
  • DOCKER_TAG: Tag for the Docker image (optional, defaults to "latest")

Usage

  1. Open your browser to http://localhost:3000 (or the configured port)
  2. Fill out the form with your name and message
  3. Click "Send Message"
  4. You'll receive confirmation if the message was sent successfully

Deployment

  1. Create a .env file with your credentials:
NTFY_URL=https://your-ntfy-server.com
NTFY_USER=your-username
NTFY_PASSWORD=your-password
NTFY_TOPIC=emergencia
  1. Run with Docker Compose:
docker-compose up -d

The application will be available at http://localhost:3000

Option 2: Direct Installation

To deploy on a Linux server:

  1. Upload files to the server
  2. Install Node.js (version 14 or higher)
  3. Configure environment variables
  4. Run npm install to install dependencies
  5. Run npm start to start the application

systemd Example (optional)

Create file /etc/systemd/system/ntfy-emergency-app.service:

[Unit]
Description=NTFY Emergency App
After=network.target

[Service]
Type=simple
User=your-username
WorkingDirectory=/path/to/ntfy-emergency-app
Environment=NTFY_URL=https://your-ntfy-server.com
Environment=NTFY_USER=your-username
Environment=NTFY_PASSWORD=your-password
Environment=NTFY_TOPIC=emergencia
Environment=PORT=3000
ExecStart=/usr/bin/node server.js
Restart=always

[Install]
WantedBy=multi-user.target

Then:

sudo systemctl daemon-reload
sudo systemctl enable ntfy-emergency-app
sudo systemctl start ntfy-emergency-app

Docker Image Publishing

Manual Build and Publishing

Option 1: Without custom registry (Docker Hub)

# Build and publish
npm run docker:build-tag-push

Option 2: With custom registry

# Configure environment variables
export DOCKER_REGISTRY=your-registry.com
export DOCKER_USERNAME=your-username
export DOCKER_TAG=v1.0.0

# Build and publish
npm run docker:build-tag-push

Option 3: Manual

docker build -t ntfy-emergency-app .
docker tag ntfy-emergency-app your-registry/ntfy-emergency-app:latest
docker push your-registry/ntfy-emergency-app:latest

Using with Private Registry

To use the image from a private registry:

# Authenticate with the registry
docker login your-registry.com

# Run the image
docker run -d \
  --name ntfy-emergency-app \
  -p 3000:3000 \
  -e NTFY_URL=https://your-ntfy-server.com \
  -e NTFY_USER=your-username \
  -e NTFY_PASSWORD=your-password \
  -e NTFY_TOPIC=emergencia \
  your-registry.com/ntfy-emergency-app:latest

Project Structure

ntfy-emergency-app/
├── server.js                    # Main Express server
├── package.json                 # Dependencies and scripts
├── Dockerfile                   # Docker configuration
├── docker-compose.yml           # Docker Compose orchestration
├── scripts/                     # Helper scripts
│   ├── docker-tag.sh           # Script to tag images
│   └── docker-push.sh          # Script to publish images
├── public/
│   ├── index.html              # Main page
│   └── style.css               # CSS styles
└── README.md                   # This file

Notes

  • Messages are sent to the topic configured in NTFY_TOPIC (defaults to "emergencia")
  • Message format is: "Name: Message"
  • The application validates that both fields are complete before sending