VoIPSuite 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.). The instructions at the end of this page allow optional calling features within the same application. 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 uninterrupted hour for this tutorial.

First, 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 unique "Database Name"
Enter a unique "Collection Name"
Click "Create"
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 (no special chars)
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"
Enable 2FA at https://account.mongodb.com/account/profile/security

Next, 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"
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"
If you do not see your app details, 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 (https://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 MongoDB "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"
Enable 2FA at https://dashboard.heroku.com/account

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
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)
Enable 2FA at https://github.com/settings/security

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"
Enter a "Profile" name as desired (ex: phone number) and "Save"
Make sure this profile is selected and displayed
Click the Settings icon in the upper-left
Click "Profile Settings"

For Telnyx numbers:
Select the Telnyx option
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:
Select the Twilio option
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. You can delete a profile by selecting the profile, clicking the settings icon, and clicking the trash can icon for that profile.

Calling (BETA): You can place calls within VoIPSuite by clicking the phone icon in the upper-left while in any profile. Incoming calls require the app to be open and ready to answer. This all requires your browser to have microphone permissions. We are aware of bugs with this, especially with Twilio. You may need to click "Save" again within each profile's "Profile Settings" for the calling feature to take effect within existing profiles. Updates coming soon.



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"

NOTE: If you installed the VoIPSuite application, it may have overridden your Linphone incoming call options. If this happens, repeat the Twilio or Telnyx incoming call steps to reconfigure those options.

Twilio:
Click "Phone Numbers" > "Manage" > "Active Numbers" in the left menu.
Click your telephone number.
Under "Voice & Fax", then "A Call Comes In", choose "TwiML Bin".
Select "incomingvoice" in the drop-down menu and click "Save".

Telnyx:
Select your number. Under routing, change to linphone or your previous option.

If you like this app and want to see the full roadmap become a reality, please consider donating to the project developer at https://www.operationprivacy.com/donate.

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.