2) Deploy telemporio server application with a few simple linux commands
As soon as you buy a VPS, within seconds you will receive an email with details for how to connect. The email will determine the IP address of your new VPS, say '141.94.27.72', the default user, say 'debian', and an initial password, say 'WrSWENx76xmP'. Therefore, assuming that you are sitting in front of a linux system, open a terminal and use ssh in order to connect to your new VPS for the first time. When prompted for password type 'WrSWENx76xmP'.
Now, just follow the simple instructions below but make sure you replace xyz.com with your own domain and the '141.94.27.72' IP address with the IP address of your own VPS.
$ ssh debian@141.94.27.72
The system will immediately ask you to change your password, so go ahead and do so.
Then, the first thing we need to do is set a root password:
$ sudo passwd root
Next, we'll create 'admin' user. Using the 'admin' username is an established convention in the Telemporio system, so stick with it and don't be tempted to change it to a different one.
$ sudo useradd -m admin -s /usr/bin/bash
Next, login as root and give admin user a password.
$ su
# passwd admin
Then, add admin in sudoers file.
# vi /etc/sudoers
...
root ALL=(ALL:ALL) ALL
admin ALL=(ALL:ALL) ALL
...
Next, change /etc/hostname to "emporio"
$ sudo vi /etc/hostname
Next, change the contents of /etc/hosts to the following:
$ sudo vi /etc/hosts
...
127.0.0.1 localhost
127.0.0.1 emporio.xyz.com emporio
141.94.27.72 emporio.xyz.com emporio
...
Copy /etc/hosts to /etc/hosts_orig:
$ sudo cp /etc/hosts /etc/hosts_orig
Reboot for the changes to take effect and log back in as admin user:
$ sudo shutdown -r now
Connection to 141.94.27.72 closed.
...
$ ssh admin@141.94.27.72
The Telemporio client/server application consists of three executable files that are available for download as a compressed archive. Let's create a bin directory where we will extract the three files from the compressed archive after we download it.
$ cd /home/admin
$ mkdir -p telemporio/bin
$ cd /home/admin/telemporio/bin
$ wget https://telemporio.com/i/telemporio.tar.gz
$ tar -xvf telemporio.tar.gz
You should now have three more files in /home/admin/telemporio/bin directory other than the downloaded telemporio.tar.gz (telemporio, telemporio.js and telemporio.wasm). Let's copy the 'telemporio' file to /usr/local/bin/ directory and execute it with the '-init' parameter in order to initialize everything. It doesn't hurt if you repeat the -init command a couple of times more, just in case. The second and third time it will immediately terminate indicating that everything has been installed and set.
$ sudo cp telemporio /usr/local/bin/
$ sudo telemporio -init
$ sudo telemporio -init
$ sudo telemporio -init
...
All packages are up to date.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
...
Upon completion of the '-init' command, all debian linux dependencies should have been installed and all necessary configuration should have been completed. As a final step, let's create some wildcard TSL certificates for xyz.com that are necessary for the server to operate securely. During this process you will need access to the DNS dashboard of the website where you registered your domain in order to add some necessary TXT records. If you have done it before, the process is very straightforward. Just follow the instructions but make sure you replace xyz.com with your own domain.
$ sudo certbot certonly --manual --preferred-challenges=dns --rsa-key-size 4096 -d "*.xyz.com" -d "xyz.com"
At the end of this process your public/private certificate files should be stored in /etc/letsencrypt/live/xyz.com directory. You only need to change their permissions so that your server can use them even after dropping the root priviliges at start-up.
$ sudo chmod -R 655 /etc/letsencrypt/live
Now finally, you can start your chat server.
$ sudo telemporio -start xyz.com
Let's test it. Open your browser and go to https://xyz.com Your chat server is up and running!
The next important step is to access the administrator's control panel and change the default passwords. (Telemorio uses two numeric passwords, up to nine digits each.) By convention, the initial default passwords for admin.xyz.com are '888' and '888'. Also by convention, the default administrator control panel is located at https://admin.xyz.com/x/a/888/888. You can now access your control panel and change the default passwords to some other more difficult to guess numbers.
A high level description of Telemporio's architecture and software design
In our days, many people have begun to think that it might be a good idea to start protecting their data exposed on the Internet. During the last decade, since the launch of the major social networks, people have openly posted photos and stories of even their most intimate personal lives, and have considered it reasonable and cool. Furthermore, they have chatted through messaging applications offered for free by their favorite social networks, and they never considered whether their private conversations remained private on those platforms that they did not control.
Those days are gone. With the advent of Artificial Intelligence, most people have realized how easy it is for AI agents to collect and exploit their data, and that global surveillance is no longer a conspiracy theory, but a harsh legal reality. International law does not protect individuals from AI-powered surveillance, and it's time to start protecting your data.
Telemporio is a software project that arose from the need to protect privacy in online conversations. The core idea is that privacy-conscious individuals would need secure and low-cost tools that will allow them to control their communication infrastructure. The most logical choice for a software product that meets this requirement is a lightweight and secure chat server that can be hosted on a low-end VPS. And this is what Telemporio project has been building since 2020.
Therefore, Telemporio is a secure, self-hosted chat platform that we designed and implemented from scratch on Debian Linux Operating System, with an architecture that emphasizes robust systems engineering, reliable operation, end-to-end security, and easy deployment.
The basic idea is that anyone who decides to use Telemporio will need two things: a domain name and a VPS. The domain name is necessary because a chat server needs a public URL, and the VPS is necessary because the servers must be hosted somewhere in order to be available.
For example, let's say Alice chooses the domain name 'xyz.com' for deploying her Telemporio chat server. After deployment, her public chat address will by convention be https://admin.xyz.com, and she can then share it with her contacts, family members, friends and colleagues; anyone who wants to chat with her must simply open a browser and type this address. In other words, the same way we own a mobile phone number and give it to our contacts so that they can call us, we can own a chat server address and give it to our contacts so that they can initiate chat sessions with us.
Therefore, during basic setup and deployment, the Telemporio chat server is configured with a single subdomain, the admin subdomain, which is always available in every deployment. However, if Telemporio owners wish, they can easily set up additional server instances. Returning to Alice's example, suppose she chats a lot with her mother and father and wants to set up two additional Telemporio server instances that will run alongside her admin instance. She can fo it. She can configure the public addresses of these two additional instances to be https://mama.xyz.com and https://papa.xyz.com. These three server instances, let's call them 'admin', 'papa', and 'mama' instances, will be completely independent Linux server processes with their own memory space, database, etc, but they will be interconnected in a mesh with each other, that is, they will be federated. Every time Alice logs in, she will be able to see if her mother or father has also logged in and she will be able to start a chat with them.
From what we've described, Alice has actually begun building her own private social network on a low-cost infrastructure that she controls herself. This is the core idea behind Telemporio. Now, let's delve deeper into the implementation and look at more details. Already during the early design phase of Telemporio's implementation, we decided to implement three features for enhanced privacy and security.
First, all conversations would be end-to-end encrypted by default. In practice, end-to-end encryption means that all conversations are encrypted by default and that the encryption keys would never leave the browser environment. In terms of security, this means that even if a server were compromised, the attacker would only find encrypted messages in there, messages that would be impossible to decrypt and read because the decryption keys would not be present.
Second, all server operations would be ephemeral and performed solely in RAM, meaning that the exchanged encrypted messages would not be stored on disk or in any database. This implies that, in Telemporio, conversations exist only while they are taking place, and as soon as someone ends the chat session or closes the browser, all messaging data disappear from the system and cannot be recovered.
And third, we would not use cookies for HTTP session management. This means no more annoying browser pop-ups asking us to accept the use of cookies, etc.
Given the requirement that Telemporio would be hosted and run on the most basic VPS nodes available, and that each VPS would need to start and manage multiple user process servers in parallel, the server process had to be as lightweight as possible in terms of its system resource requirements, i.e., CPU and RAM. For this reason, we decided to build the server using the very low-level C programming language in order to control every aspect of system resource utilization and achieve the necessary performance optimizations.
Furthermore, we wanted to reuse a significant portion of the system's data structures and improve the speed and performance of the web client as well. Therefore, we decided to develop the client using WebAssembly, compiled from the same C code that would run on the server. The fact that both the server and client would ran the same efficient and ultra-fast C code made the design a unique and stimulating challenge. The server and web client would communicate asynchronously using secure WebSockets and cooperate seamlessly in order to establish secure, end-to-end encrypted chat sessions between independent Telemporio users, who would use their own servers and identify themselves with a pseudonymous subdomain identity.