P2P VPS aspires to create a peer-to-peer (P2P) marketplace offering Virtal Private Servers (VPS), similar to Digital Ocean or Vultr. This would also be similar to co-location services like Raspberry Pi Hosting or Mythic Beasts. However, instead of using a data center, the marketplace would use an array of psudo-anonymous IoT devices (like the Raspberry Pi) hosted by people participating in the marketplace. Anyone with an internet connection and a device capable of running Docker can rent that device in the P2P VPS marketplace.
While the applications of such a network are similar, the P2P VPS marketplace will never have the speed or reliabilityof the commercial outfits linked above. Instead, the focus of P2P VPS is to create a decentralized network of anonymous web servers, capable of delivering websites or web apps, in order to prevent censorship and promote free speech.
Members participating in the marketplace can earn cryptocurrency by renting out their device, while helping to create a more decentralized internet at the same time. That's the focus of the P2P VPS network. In this way, the P2P VPS software is censorship-fighting software similar to, but very different from, TOR.
This repository is the server-side software needed to host a P2P VPS marketplace on your own server. The repository was customized from a forked copy of the vue-connextcms-site-template repository. The P2P VPS software is composed of three software packages:
- The Client software runs on the IoT device and allows the device to be rented.
- The Server software includes the database models, REST APIs, and website content.
- The Marketplace which a Vue.js client-side application which facilitates transactions and administration of devices.
The Client software can be found here. This repository contains The Server and The Marketplace software.
-
The
site-template-connextcms/directory contains the ConnextCMS site template files needed to create database models and REST APIs required for the Clients and Marketplace to coordinate and persist data. For more information, see the Readme for ConnextCMS Site Templates. -
The rest of this readme describes the build options for developing The Marketplace, which is a Vue.js application bundled through Webpack. The code for this application lives in the
srcdirectory. For additional details, see the vue-connextcms-site-template repository. -
The specifications directory contains specification documents illustrating how the P2P VPS server works.
-
The docs directory contains miscellaneousdocumentation.
For detailed explanation on how the build commands work, checkout the guide and docs for vue-loader.
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# build as a site template for ConnextCMS
npm run connextcms
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm testFollow the instructions below to generate a ConnextCMS site template and serve your new site template through ConnextCMS. It is assumed you are building on a server running Ubuntu Linux.
-
Install docker-connextcms. The scripts in this repository assume that the
docker-connextcmsrepository is cloned in your non-root user home directory, e.g.~ -
Install Node.js and NPM on your machine. This tutorial shows how to install it on a Digital Ocean Droplet. The code in this repository has been tested against Node v6.x LTS.
-
After cloning this repository, run
npm installto install dependencies and thennpm run connextcmsto build the ConnextCMS site template. -
Generate your site template by running the following script:
./generateSiteTemplate -
Copy the site template into the
~/docker-connextcms/themedirectory by running the following script:./uploadToConnextCMS -
If the ConnextCMS docker container is running, bring it down by chaning directory into
~/docker-connextcmsand running the commanddocker-compose down. After that completes, bring it back up withdocker-compose up -d. ConnextCMS will boot. The standard site template is available at port 3000. The Vue app is available at path/appdashboard. To bring it up in a webbrowser navigate tohttp://xxx.xxx.xxx.xxx:3000/appdashboard. Replace the x's with the IP address of your server.
(The MIT License)
Copyright (c) 2017 Chris Troutner and RPiOVN
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.