SkillAgentSearch skills...

Pagermon

Multimon-ng pager message parser and viewer

Install / Use

/learn @pagermon/Pagermon

README

PagerMon

Discord GitHub issues GitHub pull requests GitHub GitHub stars GitHub forks GitHub tag (latest SemVer) GitHub commit activity GitHub contributors GitHub Workflow Status (branch) GitHub Workflow Status (branch)

PagerMon is an API driven client/server framework for parsing and displaying pager messages from multimon-ng.

It is built around POCSAG messages, but should easily support other message types as required.

The UI is built around a Node/Express/Angular/Bootstrap stack, while the client scripts are Node scripts that receive piped input.

Features

  • Capcode aliasing with colors and FontAwesome icons
  • API driven extensible architecture
  • Multi-user support
  • SQLite or MySQL database backing
  • Configurable via UI
  • Pagination and searching
  • Filtering by capcode or agency
  • Duplicate message filtering
  • Native POCSAG / FLEX / EAS Client Support
  • Keyword highlighting
  • WebSockets support - messages are delivered to clients in near realtime
  • Pretty HTML5
  • Native browser notifications
  • Plugin Support - Current Plugins:
    • Pushover near realtime muti-device notification service
    • Prowl near realtime iOS notification service with Apple Watch support
    • Telegram near realtime cloud based multi-device messaging
    • Discord near realtime cloud based messaging service
    • Gotify Self-Hosted messaging service
    • Twitter
    • Microsoft Teams Team colaboration platform
    • Slack Team colabortation platform
    • SMTP Email Support for conventional SMTP email notifications
    • Regex Filters - Filter incoming messages via regex
    • Regex Replace - Modify incoming messages via regex
    • Message Repeat - Repeat incoming messages to another pagermon server
  • May or may not contain cute puppies

Planned Features

  • Horizontal scaling
  • Enhanced message filtering
  • Bootstrap 4 + Angular 2 support
  • Enhanced alias control
  • Graphing

Screenshots

main view

desktop view

alias edit

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • nodejs 12.x or higher
  • sqlite3
  • Probably some other stuff

Recommended

  • nvm
  • nginx or some kind of reverse proxy for SSL offloading

Running the server

Local setup

  1. Copy server/process-default.json to server/process.json and modify according to your environment
  2. Launch the app from the Terminal:
    $ sudo apt-get install npm sqlite3
    $ npm install npm@latest -g
    $ npm install pm2 -g
    $ cd server
    $ npm install
    $ export NODE_ENV=production
    $ pm2 start process.json
  1. To start on boot, let pm2 handle it:
    $ sudo pm2 startup
    $ pm2 save
  1. You probably want to rotate logs, too:
    $ pm2 install pm2-logrotate
    $ sudo pm2 logrotate -u user
  1. Now login via the website, default port is 3000, default credentials are 'admin' / 'changeme'
  2. Head to /admin, change your password, and generate some API keys
  3. Grab your API keys and drop them in the PagerMon client, then you're good to go!

Alternatively a production ready setup guide is available here https://github.com/pagermon/pagermon/wiki/Tutorial---Production-Ready-Ubuntu,-PM2,-Nginx-Reverse-Proxy,-Let's-Encrypt-SSL,-Pagermon-server

Docker

Manual build

You can use image already built for you or you can build it yourself:

# For PC
docker build -t pagermon/pagermon .

# For Raspberry Pi
docker build -t pagermon/pagermon:latest-armhf -f Dockerfile.armhf .

Running

docker create \
  --name=pagermon \
  -e APP_NAME=pagermon \
  -p 3000:3000 \
  -e TZ=Europe/London \
  -v </path/to/config-mount>:/config \
  --restart unless-stopped \
  pagermon/pagermon:<VERSION>
docker start pagermon

docker-compose

version: "2"
services:
  pagermon:
    #build: ./server # To build localy
    image: pagermon/pagermon:<VERSION>
    container_name: pagermon
    environment:
      - APP_NAME=pagermon
      - PUID=1000 # Not required since node user inside docker has UID 1000
      - PGID=1000 # Not required since node user inside docker has GID 1000
      - TZ=Europe/London
    ports:
      - "3000:3000"
    volumes:
      - </path/to/config-mount>:/config
    restart: unless-stopped

Then run:

# Building with compose file
docker-compose build

# Running from compose file in foreground
docker-compose up

# Running from compose file in background
docker-compose up -d

Parameters

|Parameter|Function| |:-------:|:-------| | -e APP_NAME=<name> | Application name | | -e HOSTNAME=<hostname> | Hostname | | -e USE_COOKIE_HOST=true | Use cookie host. | | -e NO_CHOWN=true| Disable fixing permissions. | | -e PUID=1000 | for UserID | | -e PGID=1000 | for GroupID | | -e SKIP_APP=true | Don't start app, useful for development. | | -e TZ=Europe/London | Specify a timezone to use eg. Europe/London. | | -v <path>:/config | Mount config diretory, so config persist during container restarts (option 1) | | -v <volumename>:/config | Create named volume for config diretory, so config persist during container restarts (option 2)| | -v /config | Create unnamed volume for config diretory, so config persist during container restarts (option 3)| | -p 3000:3000 | Expose container port |

Note:

  • Configuration is stored in /config inside container and it is owned by node user with UID/GID 1000. To fix config directory ownership use -e PUID=<UID> and -e PGID=<GID>. (Here are database and config file stored)
  • The local port 3000 will be forwarded to the docker container to port 3000 (by -p 3000:3000)
  • In case you would like to follow the logfile, run docker logs -f pagermon (by --name pagermon)
  • To shutdown and remove the container (if using compose), run docker-compose down
  • If you make changes to the app for testing, you will need to re-build the image, run docker-compose down && docker-compose up --build
  • To run on Raspberry Pi use armhf variant (add -armhf at the end of version), but be aware that OracleDB does not work there.

See additional parameters.

Tip: You probably want to setup docker log rotation before, more can be found here.

Running the client

Local setup

Prerequisites

These programs/libraries are required for Pagermon Client to work

  • RTL-SDR - RTL-SDR tools/libraries to access RTL-SDR dongle
  • RTL-SDR dongle - You can get these from Ebay, Amazon or other stores (Has to have RTL2832U chip)
  • nodejs - JavaScript Programming Language (Only if installing separate from server)
  • npm - Javascript Package Manager (Only if installing separate from server)
  • Git Client - Github.com client for getting source code (Only if installing separate from server)

To install the Prerequisites run sudo apt install nodejs npm git rtl-sdr

Installing Pagermon Client

Run the following commands from Terminal:

git clone https://github.com/pagermon/pagermon.git
cd pagermon/client
npm install

edit reader.sh and edit frequency and rtl_device number, Edit Multimon-ng command

rtl_fm -d 0 -E dc -F 0 -A fast -f 148.5875M -s22050 - |
multimon-ng -q -b1 -c -a POCSAG512 -f alpha -t raw /dev/stdin |
node reader.js

-d 0 - change this to your rtl_device number using rtl_test

-f 148.5875M - change this to the frequency you are decoding

Multimon-ng Command examples

POCSAG

multimon-ng -q -b1 -c -a POCSAG512 -f alpha -t raw /dev/stdin

FLEX

multimon-ng -a FLEX -t raw /dev/stdin

EAS

multimon-ng -a EAS -t raw /dev/stdin

Configuring Pagermon Client

Before running Pagermon Client you have to configure it to send the decoded info to the pagermon server.

copy default.json to config.json

cp config/default.json config/config.json 

Edit config.json with your favorite editor

{
  "apikey": "changeme",
  "hostname": "http://127.0.0.1:3000",
  "identifier": "TEST",
  "sendFunctionCode": false,
  "useTimestamp": true,
  "EAS": {
    "excludeEvents": [],
    "includeFIPS": [],
    "addressAddType": true
  }
}

Pager Options

apikey: This is the API key generate on the Pagermon Server ht

View on GitHub
GitHub Stars304
CategoryDevelopment
Updated17h ago
Forks90

Languages

JavaScript

Security Score

100/100

Audited on Apr 1, 2026

No findings