Releases: Akilan1999/p2p-rendering-computation
No more gambling with cloud providers
Description
This is a P2PRC release after around a year. We would like to welcome @xecarlox94 as a main member to the P2PRC team!
@xecarlox94 has done a major contribution to the project which includes supporting Nix Flakes to easily to build P2PRC from source in
most Unix based machines which support Nix (alias p2prc='env P2PRC=<path you want the configs to exist in> nix run github:akilan1999/p2p-rendering-computation --
and then just run p2prc -h
. If this works you are fully setup!).
Another exiting bit contributed from @xecarlox94 is the Haskell bindings which allows the possibilities to orchestrate workloads (A custom process to deploy a server as an example) on P2PRC nodes (Which can be machines behind NAT for instance) in a functional manner (Something no one should touch in Go. If you do here are the nearest therapy centres).
Other mainline features include the possibility for a P2PRC processes to be linked to a domain name while switching nodes behind NAT without having to change the A name entry on your DNS provider. We have also designed a p2p based system to share public keys with
all the nodes in the network. This will allow public-private key authentication by default for users to SSH or deploy processes into P2PRC nodes.
The P2PRC documentation has been as well fully ported over to ORG mode allowing us to use a single text file to generate the docs webpage.
The scam we are protecting people from:
What's Changed
- Polishes up the Documentation by @cr2007 in #100
- Updates the
CITATION.cff
file by @cr2007 in #101 - adding nix shell development environment by @xecarlox94 in #106
- modifying nix config by @xecarlox94 in #107
- Adds Alerts Markdown Support by @cr2007 in #111
- Added possibility to add domain name for nodes on P2PRC by @Akilan1999 in #112
- Setup baremetal by @Akilan1999 in #115
- Initial integration of Haskell orchestration module bindings by @xecarlox94 in #116
- Nix Flake development environment by @xecarlox94 in #118
- Nix Flake development and build environment upgrade by @xecarlox94 in #121
- P2PRC docs by @Akilan1999 in #122
New Contributors
- @xecarlox94 made their first contribution in #106
Future work:
-
To support heterogeneous set of Nodes that cannot run P2PRC: This stems from a personal issue I have when doing research on CheriBSD kernel. For my research I am using the ARM morello which is a 128bit ARMv8 processor. At the moment Go programs can cannot compile and run inside the CPU. This means I cannot run P2PRC at the moment inside the ARM morello to remotely access it when it's behind NAT using P2PRC. This would indeed be a common problem when running against various Architectures that do not support running P2PRC. We intend to use the implementations similar to socat to ensure we can bind addresses of local nodes to a node running P2PRC and the node running P2PRC can do a local map port function call to escape NAT.
-
Formalising a P2PRC process: To design a data structure that can represent current set of properties:
Example:- IP address (string)
- Port no (int)
- Task name (string)
- Task id (int)
- Encoded deployment script (multi-line string)
- Command to run deployment script (multi line string)
- Command to kill deployment script (multi line string)
- Status (boolean)
- Domain name (string)
Sample implementation being worked on: https://github.com/p2prc/p2prc-home-server/blob/main/python/library.py
Formal document: https://github.com/p2prc/p2prc-home-server/blob/main/docs/p2prc-home-server.pdf
Full Changelog: v2.0.0...v3.0.0
Server says "I want to be with you"
Description
This release focuses on easier deployment for self hosting nodes. We should roll back in time with a modern twist.
Changes
- Appropriate abstractions @Akilan1999 (#97)
- few small fixes @farhansolodev (#95)
- Documentation nat tarversal @Akilan1999 (#94)
- modified server specs @Akilan1999 (#93)
- changes to configuration @Akilan1999 (#92)
- Flexible server @Akilan1999 (#91)
- Added mutex to avoid race condition when writing to iptable file @Akilan1999 (#88)
- NAT Traversal with FRP and IPTables resolved @Akilan1999 (#87)
- Created a pure HTML implementation of the p2prc Logo (Squashed 'artwork/' content from commit 21e1ad5) @Gaurav-Gosain (#85)
- Adds CI/CD workflow for website generation from the README Documentation @Gaurav-Gosain (#83)
- P2PRC Website - Adds Dark Mode Support @cr2007 (#80)
v2.0.0-beta
Changes
- Appropriate abstractions @Akilan1999 (#97)
- few small fixes @farhansolodev (#95)
- Documentation nat tarversal @Akilan1999 (#94)
- modified server specs @Akilan1999 (#93)
- changes to configuration @Akilan1999 (#92)
- Flexible server @Akilan1999 (#91)
- Added mutex to avoid race condition when writing to iptable file @Akilan1999 (#88)
- NAT Traversal with FRP and IPTables resolved @Akilan1999 (#87)
- Created a pure HTML implementation of the p2prc Logo (Squashed 'artwork/' content from commit 21e1ad5) @Gaurav-Gosain (#85)
- Adds CI/CD workflow for website generation from the README Documentation @Gaurav-Gosain (#83)
- P2PRC Website - Adds Dark Mode Support @cr2007 (#80)
MWAAHAAAHAAA
MWAAHAAAHAAA
Changes
- [Feature] Added new feature mapped ports taken are mentioned @Akilan1999 (#77)
- Added automated install for windows @farhansolodev (#76)
- Implemented remove plugin functionality and added docs @farhansolodev (#75)
- Setting automatic ports @Akilan1999 (#73)
- added the possiblility to add custom varaibles @Akilan1999 (#70)
- Extension p2prc you create your own modification @Akilan1999 (#69)
- Adds a Discord Banner for more vivid display @cr2007 (#68)
- Changes to
index.html
@cr2007 (#67) - Update README.md @FarazzShaikh (#65)
- Execute groups when running plugins @Akilan1999 (#64)
- Creates CITATION.cff file @cr2007 (#63)
- Group @Akilan1999 (#61)
- Added possibility to execute plugin from Cli @Akilan1999 (#59)
- Update release-drafter.yml @Akilan1999 (#56)
- added github action for draft creating a release @Akilan1999 (#55)
- Updated website with new ip address @Akilan1999 (#54)
- changed back tfault print when using IP tables @Akilan1999 (#53)
- Added possibility to run server on any port @Akilan1999 (#52)
- Reading default port information from a json file @Akilan1999 (#51)
- Plugin module implementation @Akilan1999 (#50)
- Detection of plugins @Akilan1999 (#48)
Stable release v1.0.0
First official release for P2PRC
Major features
- Connect to other machines using IPV6 or Public IPV4 address
- Possibility to create and remove containers on any server using CLI commands
- Docker API implemented
- Able to decide which container to use based on Server specs and Latency
- IP table implemented to store basic information about the server
- Possibility to traverse network based on Servers IP tables
First Beta release
Beta Release P2PRC
Major changes from alpha-v1.0.0
- IPV6 address will have to be manually added to the config file
- Bugs fixed regarding flag
--as
- ip_table.json will be generated in a separate folder and used there as it's in the .gitignore
- Error fixed regarding traversing the network
FIrst alpha release
Alpha release p2prc
This is the first alpha release of the p2prc project. Currently tested in Linux distributions and MacOS.
How to set it up
- unzip the tarball file
tar -xvf p2prc-alpha-v1.0.0.tar.gz
- Enter into directory
cd p2prc-alpha-v1.0.0
- Run installation command
sh install.sh
- Do as per printed instruction
# Add the following paths to .bashrc or .zshrc based on the configuration you have set
export P2PRC=/<path>/p2prc-alpha-v1.0.0
export PATH=/<path>/p2prc-alpha-v1.0.0:${PATH}
- Check if Cli command works
p2prc -h
NAME:
p2p-rendering-computation - p2p cli application to create and access VMs in other servers
USAGE:
p2prc [global options] command [command options] [arguments...]
VERSION:
1.0.0
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--Server, -s Starts server (default: false) [$SERVER]
--UpdateServerList, --us Update List of Server available based on servers iptables (default: false) [$UPDATE_SERVER_LIST]
--ListServers, --ls List servers which can render tasks (default: false) [$LIST_SERVERS]
--AddServer value, --as value Adds server IP address to iptables [$ADD_SERVER]
--ViewImages value, --vi value View images available on the server IP address [$VIEW_IMAGES]
--CreateVM value, --touch value Creates Docker container on the selected server [$CREATE_VM]
--ContainerName value, --cn value Specifying the container run on the server side [$CONTAINER_NAME]
--RemoveVM value, --rm value Stop and Remove Docker container [$REMOVE_VM]
--ID value, --id value Docker Container ID [$ID]
--Ports value, -p value Number of ports to open for the Docker Container [$NUM_PORTS]
--GPU, --gpu Create Docker Containers to access GPU (default: false) [$USE_GPU]
--Specification value, --specs value Specs of the server node [$SPECS]
--SetDefaultConfig, --dc Sets a default configuration file (default: false) [$SET_DEFAULT_CONFIG]
--NetworkInterfaces, --ni Shows the network interface in your computer (default: false) [$NETWORK_INTERFACE]
--help, -h show help (default: false)
--version, -v print the version (default: false)
- Check if the paths are correct in the config file
cat config.json
{
"defaultdockerfile": "/<path>/p2prc-alpha-v1.0.0/server/docker/containers/docker-ubuntu-sshd/",
"dockercontainers": "/<path>/p2prc-alpha-v1.0.0/server/docker/containers/",
"iptable": "/<path>/p2prc-alpha-v1.0.0/p2p/ip_table.json",
"networkinterface": "wlp0s20f3",
"networkinterfaceipv6index": "2",
"speedtestfile": "/<path>/p2prc-alpha-v1.0.0/p2p/50.bin"
}