VoIP Softphone Push Server Setup
Any modern 64 bit CPU
4 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. In order for us to do this you will need a Docker Id. Docker Ids can be obtained at https://hub.docker.com/ when you sign up.
Install Docker Community Edition for your platform
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 RSA PRIVATE KEY-----
-----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
Rename the key file to 'pushvoip.p8' and place it in the certs directory.
6. Fill in Docker Environment Variables
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 notificaitons. 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 initialise Docker Swarm. Then run the setup file. This will start the containers in Swarm mode.
docker swarm init
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 shoud 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 firstname.lastname@example.org and we will be happy to help you get up and running.