Introduction to Packetriot
Published at April 8, 2019 · 7 min read
Share on:Packetriot can take any HTTP or TCP service, on any network, particularly private ones, and expose it to the rest of the Internet. Developers that create applications want to share them, and with Packetriot they can enjoy lower costs, increased portability and productivity.
For technology enthusiasts that want to self-host their own services, their costs are reduced. Network configuration is simplified. Most importantly, their data is stored on their computers.
Using the public cloud is the typical method of making an applicaton available to the Internet. However, it includes some concerns such as the need to use their service indefinitely and the fact that all of your data is stored on their computer.
We’ve been living for some time with extremely cheap, powerful computers and expansive storage. We enjoy fast, reliable, and highly mobile networks.
When we use the cloud, we find it starts cheap but gets expensive quickly. The tendency is to move to another cloud, finding some savings initially, however, the growth begins again and this daunting cycle continues. I built Packetriot to be an alternative for low-to-medium tier cloud services, so we can skip this cycle entirely.
Cloud vs. Packetriot
Let’s create an example cloud deployment. We’ll need a virtual machine that can host a few web applications and some data. The table below includes examples of monthly pricing for the cheapest virtual machines with at least 2 vCPUs and SSD-backed block storage for 200Gb and 1Tb configurations.
Service | DigitalOcean | AWS | Google Cloud |
---|---|---|---|
2 vCPU | $15/mo | $37/mo | $15/mo |
200 Gb | $20/mo | $20/mo | $34/mo |
1 Tb | $100/mo | $100/mo | $170/mo |
These prices include sustained discounts or options that can make the service cheaper (and slower). It’s important to note that these cloud providers includes varying amounts of memory, so it’s not an apples-to-apples comparison, but it provides a reasonable range of options for us to draw some comparisons.
DigitalOcean is the cheapest provider at $420 for annual service. Is it reasonable to pay $420 each year, indefinitely? And is 200Gb of storage really enough?
For a comparison, you can purchase an 8th generation Intel NUC, that has 4 cores, 16Gb of RAM and a 1Tb M.2 NVME SSD for less than $600!
Any application will run much faster on this platform then the virtualized systems from these providers. You would be free to expand or repurpose it whenever you want, and it has resale value. In addition, you’re most likely enjoying 100mbps or higher Internet service at home, so why not make the most use out of it?
For those interested in privacy and security, it’s nice knowing the certificates and keys used to establish secure connections are stored and managed on your computer. In fact, when network services hosted on Packetriot use TLS, there are two layers on encryption performed: the reverse-tunnel that the Packetriot client creates, and the TLS session your services create.
So how does Packetriot compared to cloud providers? We provide several tiers of managed service, and there is no limit to the number of services or applications you want to host. You can use custom domains or create subdomains from the hostname we assign to your tunnel, saving you from having to buy your own domain.
Below is a table with features and pricing. One year of basic service is less than $60/year.
Free | Basic | Pro | Business | |
---|---|---|---|---|
HTTP | x | x | x | x |
HTTPS | x | x | x | |
Bandwidth | 1Gb | 750Gb | 1.5Tb | 3.0Tb |
TCP Port Forwarding | x | x | x | |
Firewall | x | x | ||
Access Logs & Metrics | x | x | ||
Service Checks | x | x | ||
Cost | Free | $4.95/mo | $9.95/mo | $19.95/mo |
What is Packetriot? How does it work?
Packetriot is an edge-network, tunneling protocol and client software that enables the quick and easy creation of globally accessible, secure HTTP & TCP endpoints. It uses secure reverse-tunnels, HTTP routing, TLS-SNI routing, and reverse-proxies, to steer network traffic from an edge-server on the Internet, to a locally running service on a variety of computing hardware (PC, server, single-board computer, etc..).
Users install the Packetriot client onto a local computer in their network. The client is used to create a tunnel, authenticate and connect to an edge-server. A persistent hostname is assigned to the tunnel, e.g. generated-host-123.pktriot.net.
When the DNS records for a custom domain, e.g. example.com, are updated to use the IP of the edge-server, or alias records (CNAME) pointing to the tunnel’s hostname, then the traffic to those custom domains will be sent to the edge-server.
The edge-servers’ job is to steer HTTP, TLS and TCP traffic to the correct tunnel. It will also prevent others from trying to hijack traffic by validating the ownership of a custom domain to a user and their tunnels. The incoming traffic is relayed across one of several reverse-tunnel connections established by Packetriot client to the edge-server. When the network traffic is received by the client, it is forwarded to a locally running service.
This operation will work behind any firewall or NAT. You can change networks too, and no host or router configuration changes are required. This is because we use reverse-tunnels. Network configuration is simplified and helps users from all levels of experience utilize this technology for sharing applications or content on the Internet.
Packetriot supports clients for all major platforms: Linux x86-64, Mac, and Windows 64-bit. Below is an example of the commands necessary to create a tunnel and verify its function.
# authenticate and choose a region for your server
[user@host] pktriot configure
Authenticate this client by visiting this URL:
https://packetriot.com/client/identauth/be63fcd2e1...
Identified and authenticated!
Choose the region for the edge-server to connect to:
+--------------------+
| # | Region |
+--------------------+
| 1 | us-east |
+--------------------+
| 2 | us-west |
+--------------------+
| 3 | eu-central |
+--------------------+
Input selection [#]: 1
# print info on the edge-server and your tunnel
[user@host] pktriot info
Client:
Hostname: small-dust-63699.pktriot.net
Server: us-east-65319.packetriot.net
IP: 159.203.126.35
# start the tunnel and check its function by visiting http://small-dust-63699.pktriot.net
# in your browser
[user@host] pktriot start
Connecting...
Running HTTP services:
+----------------------------------------------------------------------------------------------+
| Domain | Destination | HTTP | Secure | TLS | Document Root |
+----------------------------------------------------------------------------------------------+
| small-dust-63699.pktriot.net | | 0 | false | -- | -- |
+----------------------------------------------------------------------------------------------+
Alternatives
As we slowly introduced Packetriot we received questions about alternatives that provide similar functionality. These includes Ngrok, Argo, Serveo and a few others. I discovered some of these systems as I was developing Packetriot, and there are some features that exist because it was inspired by them, particularly the firewall support.
These are all great systems and can help you solve the problem of serving applications and data using local compute resources. But since it’s a common question, it’s helpful to highlight the similarities and differences.
Feature | Packetriot | Ngrok | Argo | Serveo |
---|---|---|---|---|
HTTP/HTTPS | x | x | x | x |
TCP Port Forwarding | x | x | x | |
Static File Serving | x | |||
IP Access Logs & Metrics | x | x | ||
Service Health Checks | x | |||
Lets-Encrypt | x | x | ||
Secure Redirect | x | x | ||
Firewall | x | x | x | |
Self-hosted Service | x | |||
Commercial License | x | x | ||
Open Protocol | *x | |||
Opensource Client | *x | x |
The goal for Packetriot is to provide a reliable option for developers, small businesses and individuals to host or build services and not rely soley on the cloud to make them available on the Internet. For this to happen more broadly, we need to take a more open approach than may have been taken by these other systems. *This is why we will be documenting and releasing the API for our edge-servers, tunneling protocol, and open sourcing our client software.
As Packetriot matures, and its community grows, we want to build integrations with popular frameworks and systems, specialized clients, more packaging methods, and support for other languages.
Our Roadmap
The infrastructure portion of Packetriot is ready and available today. We have several managed service plans available and if you would like to use Packetriot on your own equipment, you can license for personal or commercial use.
In the future we want to grow beyond substituting virtualized cloud resources, and work on new SDKs and APIs to enable developers to create desktop, mobile and web applications that dynamically create their own secure endpoints, advertise them, and communicate without the need of a centralized platforms.
If you want another option to exposes services to the Internet, beyond the cloud, please visit our homepage and give us a try. I invite you to subscribe to our sub-reddit for help with any questions on our services and software. Please follow us on twitter for updates and news. And if you’d like to correspond with us directly, you can email us too.
Cheers!
The Packetriot team