Any modern 64 bit CPU
4GB RAM
60 GB of disk space
Linux kernel version 3.10 or higher
Our VoIP Push Notification Server is supplied as a Docker image which allows the widest deployment options. You can install it on any platform which can run Docker.
Access to our Docker repository is required. When you create a SessionCloud project and specify Private Push, we will send you an email invitation to our AWS docker repository.
Install Docker Community Edition for your platform
https://docs.docker.com/engine/installation/
Following commands are for a Ubuntu Linux image
1. git clone https://github.com/sessiontalk/sessionpush_docker.git
2. cd sessionpush_docker
3. mkdir certs
4. An SSL certificate is required to allow encrypted communication between the softphones and your Push server. The SSL cert needs to be tied to a domain address not IP address. Name the SSL cert 'push_bundle.crt' and place it in the certs directory. The SSL certificate should include the private key and entire trust chain in ASCII PEM format. Below is an example of how it should look like.
-----BEGIN CERTIFICATE-----
MIIFdDCCBFygAwJBAgIRJ2buVutJ846r14Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
PUsE2JOAWVrgQSQdso8AYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
pu/xO28QOG8=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsExXZ5M8jfmId/blXNfKCcHogsU3imJJPF7RqFlFV7P1gsUk
3k8pDTpenT4WAQq9Zck4gC7ZddiVSIbdYMEJNuVwUVM58Vd5+s8dHC2EjjO9ElPX
ZLtOsDo6aqDYUBHziB2uMTZ2yqaIKa/W7v1O1/YPQlbYlIaAlkwO
-----END RSA PRIVATE KEY-----
Environment variables are specified in the .env file under the sessionpush_docker directory. Please note there is already a .env file, there is no need to create a new one, please edit the existing one.
5. Create an Apple Push Notifcation key in your Apple developer account
https://help.apple.com/developer-account/#/deva05921840
Rename the key file to 'pushvoip.p8' and place it in the certs directory.
6. Fill in Docker Environment Variables
export PUSH_TOKEN_IOS_KEYID=your_push_token_key_id
export PUSH_IOS_TEAMID=your_team_id
export PUSH_TOPIC=com.softphone.yourapp.voip
export PUSH_JWT_TOPIC=com.softphone.yourapp
export SESSIONPUSH_APP_ID=bZy8HdeNT7V1x60KPcvYOJi3VQsWz0slXGTe2CX7
export SESSIONPUSH_MASTER_KEY=your_master_key
export SESSIONPUSH_MONGOLAB_URI=mongodb://mongo:27017
export PUSH_HOST=your_pushfqdn
export FIREBASE_DATABASE_URL=https://softphone.firebaseio.com
export SERVER_IP=your_server_ip
export PUSH_EXPIRY=120
export PUSH_PRODUCTION=yes
export USE_TUNNEL=false
export FCM_SERVER_KEY=your_fcm_server_key
export FCM_SENDER_ID=your_fcm_sender_id
export RABBITMQ_HOST=rabbitmq
export PUSH_TOKEN_IOS_KEY=certs/pushvoip.p8
export ASPNETCORE_URLS="http://0.0.0.0:5000;http://0.0.0.0:5004"
Push Token Key. Use this to set the 'PUSH_TOKEN_IOS_KEYID' in the .env file.
To obtain your Team ID .. from your Apple Developer Account main page select the 'Membership' tab
The PUSH_TOPIC is your iOS Application Id with '.voip' postfix. Your iOS Application Id is what you specified in the SessionCloud portal under App Store -> Application Identifier and is also your Bundle Id in App Store Connect.
PUSH_HOST.. This is the Fully Qualified Domain name of your Private Push server
SESSIONPUSH_MASTER_KEY.. Set a long password here
7. To support Android Push you need to create a Firebase Project https://firebase.google.com/
Navigate to the console. Tap 'Add Project'. Give your project a name and optionally rename the project Id. Tap 'Create Project' to finish.
Once you have a project you need to add an Android application to the project. Tap 'Add Firebase to Your Android App'.
Enter the Application Id of your app in the Android Package Name field. Then tap 'Register App'. Skip the next few dialogs that are shown by tapping 'Next' to complete setup of the project.
Some of the following settings are not specifically required for the Push server but are required for us to build your Android app so it supports receiving Push notifications. Browse to Project settings -> General Tab. Here note the Web API key shown. This needs to be entered in your SessionCloud portal settings under Provisioning-> Incoming Calls -> Push -> Firebase Web API.
The Firebase Application Id value shown below needs to be set in the portal.
Provisioning-> Incoming Calls -> Push -> Firebase Application Id.
In your Firebase Project -> Project Settings -> Service Accounts tab
Note the Firebase Database Url, enter this in your SessionCloud portal. This will also be used to set the FIREBASE_DATABASE_URL environment variable. Tap 'Generate new Private key' and rename the downloaded file to 'firebase.json' and place it in the certs directory on your Push server.
All should be ready to start your Push server now...
On your platform, ensure Docker is running.
service docker start
Inside the directory that contains the docker-compose.yml file there is a setup file. First initialize Docker Swarm. Then run the setup file. This will start the containers in Swarm mode.
docker swarm init
. setup.sh
8. Set Firewall Rules on your Push server. Incoming TCP ports 443 and 6000 need to be open. Port 6000 is for encrypted SIP call signalling to the softphone. Port 443 is how the softphone sends user credentials and settings to the Push notification server.
If the server starts successfully you should see a flood of logging messages. Your Push server is now ready. Ensure the apps are correctly configured to receive Push notifications.
With Private Push selected you have fields to enter Firebase Web API Key, Firebase Application Id and Firebase Database Url as described above. If your apps are not receiving incoming calls, please contact us at support@sessiontalk.co.uk and we will be happy to help you get up and running.