VOIP SMS App Guide

If you have been following the steps in Extreme Privacy, you might possess VOIP telephone service through Twilio or Telnyx. In the book, I offer ways to push SMS text messages to email, but that does not allow you to send messages. The following steps create your own self-hosted SMS web app which allows you to send and receive SMS text messages through unlimited Telnyx and/or Twilio telephone numbers within any platform (Windows, Mac, Linux, iOS, Android, browser, etc.). You will need to obtain access to Twilio and/or Telnyx as explained within Extreme Privacy, 3rd Edition. Once your accounts are created, verified, and configured for VOICE as explained in the book (but not configured for SMS!), conduct the following. The process is lengthy, but only needs completed once. You will need to dedicate an uninterupted hour for this tutorial.

First, you need a host for your web app. For this, you can use a free version of Heroku. Think of this as the website which will execute the software for your daily use.

Navigate to https://www.heroku.com/
Click "Sign up for free"
Enter mandatory details
Click "Create free account"
Confirm verification email
Click "Accept"
Optional: Click profile icon in upper-right
Optional: Click "Account Settings"
Optional: Click "Setup multi-factor authentication"
Optional: Follow prompts to enable software or hardware 2FA
Click profile icon in upper-right
Click "Account Settings"
Click "Billing"
Click "Add credit card" (no charge made, just provides additional credits)
Enter credit card or Privacy.com card
Provide any random billing details if using Privacy.com
Click "Save Details"
Pause card if using Privacy.com (prevents any future charges)
Click the upper-left icon to return to the "Dashboard"
Click "Create New App"
Provide any "App name", which must be unique
Click "Create App"

Next, you need to create a database which will hold all of the message content. You can use the free version of MongoDB for this. Think of this as the storage for your text messages to which only you have access.

Open a new tab and navigate to http://www.mongodb.com/
Click "Start Free"
Enter email, name, and password
Confirm verification email
Begin the onboarding process
Leave "Organization" information as-is
Enter "VOIP" as the "Project Name"
Click "Continue"
Select the "Free Basic" tier and click "Create"
Accept all default options
Click "Create Cluster"
Allow cluster to be created (1-3 minutes)
Click "Browse Collections"
Click "Add My Own Data"
Enter a "Database Name" as "VOIPDB"
Enter a "Collection Name" as "VOIPCollection"
Click "Create"
Optional: Navigate to https://account.mongodb.com/account/profile/security
Optional: Configure 2FA
Click the leaf in the upper-left to return to your dashboard
Click on your project
Click "Connect"
Click "Allow Access From Anywhere"
Click "Add IP Address"
Enter a username and password for the database
Click "Create Database User"
Click "Choose a Connection Method"
Click "Connect using MongoDB Compass
Click "I have MongoDB Compass"
Copy the "connection string" into a text document or password manager
Click "Close"

Return to the Heroku browser tab
If you do not see your app, click the logo in the upper-left and select your app
Click the "Settings" tab
Click "Reveal Config Vars"
Enter "BASE_URL" in the "KEY" field
Scroll down and copy the URL in the "Domains" section (xxx.herokuapp.com)
Paste the URL in the "VALUE" field under the "Config Vars" section
Click "Add"
Enter "DB" in the "KEY" field
Paste the "connection string" copied previously into the "VALUE" field
Replace "password" with the password created for the database in the previous MongoDB steps
Be sure to remove the brackets (< >) around the password!
Click "Add"
Enter "COOKIE_KEY" in the empty "KEY" field
Enter 20 random characters in the "VALUE" field
Click "Add"

Next, you need a free Github account which you can copy or "fork" the app itself into. This will synchronize with the app host.

Open a new tab and navigate to https://github.com/
Click "Sign up for Github" (or log into your account)
Follow any prompts to enter email, password, and username
Confirm verification email
Optional: Navigate to https://github.com/settings/security and enable 2FA
Navigate to https://github.com/0perationPrivacy/VoIP
Click "Fork" in the upper right
If prompted, create a new repository called "VoIP" Click "Fetch upstream" in upper-right
If available, click "Fetch and merge" (this is a redundant step)

Return to the Heroku browser tab
Click the "Deploy" tab
Click the Github option (middle)
Make sure you are logged into your Github account
Click "Connect to Github"
Click "Authorize Heroku"
Click the "Deploy" tab
In the Github section enter "VoIP" (case-sensitive) and click "Search"
Click "Connect" next to the result
Click "Enable Automatic Deploys"
Click "Deploy Branch"
Click the "Settings" tab
Scroll to "Domains"
Copy the URL, such as https://xxx.herokuapp.com
Navigate to that URL, which is the link you will access for this app
Optional: Bookmark it on desktop for future use
Optional: Create a mobile "home screen" shortcut

You can now launch your new web app within any browser by navigating to the URL mentioned above (https://xxx.herokuapp.com). If necessary, refresh the browser until you see the login page. Next, you must configure each Telnyx or Twilio number you wish to use within this app.

Click "Sign Up" to create a new account
Enter a unique username
Enter a secure password
Click "Sign Up"
Log into your new account
Click the dropdown menu and select "Add New Profile"

For Telnyx numbers:
Click the Telnyx option
Enter a "Profile" name as desired (ex: the phone number being used)
Enter your Telnyx API key available within the Telnyx Dashboard
Click "Get Number"
Choose the desired number within the dropdown menu
Click "Save" then "OK"

For Twilio numbers:
Click the Twilio option
Enter a "Profile" name as desired (ex: the phone number being used)
Enter your Twilio SID and Token available within the Twilio Dashboard
Click "Get Number"
Choose the desired number within the dropdown menu
Click "Save" then "OK"

Repeat the process of creating a new profile for each number you own.

Once you have your account created, you should consider disabling new accounts. This prevents someone from creating an account within your app and using your online resources. This is optional, but encouraged.

Return to https://dashboard.heroku.com/apps
Select your app
Click "Settings"
Click "Reveal Config Vars"
In the "KEY" field enter "SIGNUPS"
In the "VALUE" field enter "off"
Click "Add"

Next, you need to make sure your new web app does not "sleep" after inactivity. You can use a free version of Uptime Robot to ping your new web app every 20 minutes with the following steps.

Navigate to https://uptimerobot.com/
Click "Register for Free"
Provide any name, email, and password
Confirm verification email
Optional: Navigate to https://uptimerobot.com/dashboard.php#mySettings
Optional: Select the 2FA checkbox and enable 2FA
Return to the dashboard
Click "Add New Monitor"
Change "Monitor Type" to "HTTP(S)"
Apply "Friendly Name" of "VOIP"
Provide URL of your Heroku App used previously
Change "Monitoring Interval" to "20 minutes"
Click "Create Monitor"
Click the "Create..." button again

Finally, you should apply updates every week, especially while bugs are fixed and features are added, with the following steps.

Navigate to https://github.com/
Sign into your account
Select your app (fork of the original)
Click "Fetch upstream" in upper-right
If available, click "Fetch and merge"

Privacy Guide

My latest book on Extreme Privacy is now available. Click HERE for details.

Weekly Podcast

The weekly podcast presents ideas to help you become digitally invisible, stay secure from cyber threats, and make you a better online investigator. All book updates will be presented on the show. Click HERE to listen or subscribe.