MongoosePush is an simple Elixir REST service allowing to send push notification via FCM and/or APNS.

Programming language: Elixir
License: Apache License 2.0
Tags: Third Party APIs     Push Notifications     APNS     FCM     Elixir    
Latest version: v2.1.0

MongoosePush alternatives and similar packages

Based on the "Third Party APIs" category.
Alternatively, view MongoosePush alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of MongoosePush or a related project?

Add another 'Third Party APIs' Package



Build Status Coverage Status Ebert

MongoosePush is a simple, RESTful service written in Elixir, providing the ability to send push notifications to FCM (Firebase Cloud Messaging) and/or APNS (Apple Push Notification Service) via their HTTP/2 API.


Documentation is available at: https://esl.github.io/MongoosePush

Quick start

Running from DockerHub

We provide prebuilt MongoosePush images. Configuration requires either an FCM token, APNS certificates or an APNS token. Depending on your usecase, you can have some or all of them in a standalone MongoosePush instance or using a docker container. For the full configuration you need to set the following directory structure up:

  • priv/
    • ssl/
      • rest_cert.pem - The HTTP endpoint certificate
      • rest_key.pem - private key for the HTTP endpoint certificate (has to be unencrypted)
    • apns/
      • prod_cert.pem - Production APNS app certificate
      • prod_key.pem - Production APNS app certificate's private key (has to be unencrypted)
      • dev_cert.pem - Development APNS app certificate
      • dev_key.pem - Development APNS app certificate's private key (has to be unencrypted)
      • token.p8 - APNS authentication token
    • fcm/
      • token.json - FCM service account JSON file

If you want to use APNS token authentication you need to provide token and set key_id and team_id environment variables. To see how to obtain token and key_id read this. To see how to obtain team_id read this.

FCM JSON file can be generated by Firebase console (https://console.firebase.google.com). Go to your project -> Project Settings -> Service accounts -> Generate new private key Assuming that you have the priv directory with all certificates and fcm token in current directory, then you may start MongoosePush with the following command:

docker run -v `pwd`/priv:/opt/app/priv \
  -e PUSH_HTTPS_CERTFILE="/opt/app/priv/ssl/rest_cert.pem" \
  -e PUSH_HTTPS_KEYFILE="/opt/app/priv/ssl/rest_key.pem" \
  -it --rm mongooseim/mongoose-push:latest

Local build prerequisites

  • Elixir 1.5+ (http://elixir-lang.org/install.html)
  • Erlang/OTP 19.3+ > NOTE: Some Erlang/OTP 20.x releases / builds contain TLS bug that prevents connecting to APNS servers. > When building with this Erlang version, please make sure that MongoosePushRuntimeTest test suite passes. > It is however highly recommended to build MongoosePush with Erlang/OTP 21.x.
  • Rebar3 (just enter mix local.rebar)