portal alternatives and similar packages
Based on the "Other Software" category.
Alternatively, view portal alternatives based on common mentions on social networks and blogs.
-
Seaweed File System
DISCONTINUED. SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding. [Moved to: https://github.com/seaweedfs/seaweedfs] -
Gor
GoReplay is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes. -
rkt
DISCONTINUED. An App Container runtime that integrates with init systems, is compatible with other container formats like Docker, and supports alternative execution engines like KVM. -
toxiproxy
:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing -
scc
Sloc, Cloc and Code: scc is a very fast accurate code counter with complexity calculations and COCOMO estimates written in pure Go -
Juju
Orchestration engine that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure (Kubernetes or otherwise). -
Documize
Modern Confluence alternative designed for internal & external docs, built with Go + EmberJS -
GoDNS
A dynamic DNS client tool that supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go. -
Guora
🖖🏻 A self-hosted Quora like web application written in Go 基于 Golang 类似知乎的私有部署问答应用 包含问答、评论、点赞、管理后台等功能 -
mockingjay
Fake server, Consumer Driven Contracts and help with testing performance from one configuration file with zero system dependencies and no coding whatsoever -
ipe
DISCONTINUED. An open source Pusher server implementation compatible with Pusher client libraries written in GO
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of portal or a related project?
Popular Comparisons
README
portal
Installation
Homebrew
brew install ZinoKader/homebrew-portal/portal
Manual
Either get the latest release and install it manually, or run
curl -s https://raw.githubusercontent.com/ZinoKader/portal/master/scripts/install.sh | bash
if permission denied for moving the files to /../bin, replace " | bash" with " | sudo bash" (the script is in the repo, so you can check it out before you blindly trust in it!)
The application
portal
is a fast and secure file transfer utility for sending files from one computer to any other computer. All communication beyond the initial client handshake is encrypted. If the sender and receiver can reach each other directly, the file transfer involves no servers. Otherwise the file transfer goes through a relay server which facilitates the connection, but sees none of the data.
Sending files and folders
The file transfer starts by invoking the command from the sender side:
portal send <file1> <file2> <folder1> <folder2> ...
The application will output a temporary password on the format 1-inertia-elliptical-celestial
.
The sender will communicate this password to the receiver over some secure channel.
Receiving files and folders
The receiver would then issue the command:
portal receive 1-intertia-elliptical-celestial
The two clients will connect to each other and transfer the file(s)/folder(s).
Extra: hosting your own rendezvous/relay server
To make connection establishment possible, portal makes use of a rendezvous server. By default, a rendezvous server hosted at Digital Ocean is preconfigured, so you do not need to do anything. If you would like to host one on your own, build the server and start it with:
# specify port with -p or --port
portal-rendezvous --port 80
Demo
[demo](./assets/demo.gif)
Features
portal
provides:
- End-to-end encryption using PAKE2 to negotiate a shared session-key
- Direct transfer of files if possible (e.g. sender and receiver are in the same local network)
- Fallback to a TURN-server (rendezvous-relay) for file transfer if the sender and receiver are behind NATs in different network
- Parallel gzip compression of files for faster and more efficient transfer
Technical details
The connection between the sender and the server is negotiated using a intermediary server called portal-rendezvous
. The portal-rendezvous
server is used to negotiate a secure encrypted channel while never seeing the contents of files nor the temporary password.
The communication works as follows:
sender
application connects torendezvous-server
rendezvous-server
allocates an id to the sender and sends over websocket to thesender
sender
outputs the password to the terminal, hashes the password and sends it to therendezvous-server
receiver
hashes the password (which has been communicated over some secure channel) and the sends it to therendezvous-server
- When both the
sender
and thereceiver
has sent the hashed password to therendezvous-server
the cryptographic exchange starts, during which therendezvous-server
relays messages from thesender
to thereceiver
or vice versa - Once the cryptographic exchange is done, every message sent by the
sender
andreceiver
is encrypted, and therendezvous-server
cannot decrypt them - Now two things can happen:
- Either the
sender
andreceiver
are behind the same NAT, in which case the file transfer will be directly between thesender
andreceiver
. In this case, the connection to therendezvous-server
will be closed - If they are not behind the same
NAT
, the transfer will fallback to go through therendezvous-server
which will continue to relay encrypted messages until the file transfer is completed
- Either the
Motivation, team
This was initially a project made for the course IK2218 Protocols and Principles of the Internet. We often used similar tools in our day-to-day and wanted to make our own!
Project members:
- Zino Kader
- Arvid Gotthard
- Anton Sederlin